blob: 3100e222da03489027116aa19b09a457c1dc1412 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
<<<<<<< Updated upstream
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
=======
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
>>>>>>> Stashed changes
* limitations under the License.
*/
package javax.jdo;
import static javax.jdo.Constants.PROPERTY_ENHANCER_VENDOR_NAME;
import static javax.jdo.Constants.PROPERTY_ENHANCER_VERSION_NUMBER;
import java.lang.instrument.IllegalClassFormatException;
import java.security.ProtectionDomain;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
import javax.jdo.metadata.JDOMetadata;
/**
* Tests class javax.jdo.Enhancer (main class).
*
* <p>
*/
public class MockEnhancer implements JDOEnhancer {
static final Properties props = new Properties();
static {
props.put(PROPERTY_ENHANCER_VENDOR_NAME, "Mock Enhancer");
props.put(PROPERTY_ENHANCER_VERSION_NUMBER, "2.3.0");
props.put("MockKey", "MockValue");
}
@SuppressWarnings("unused")
private boolean verbose;
private int numberOfElements;
private final List<String> classNames = new ArrayList<>();
private final List<String> jarNames = new ArrayList<>();
private final List<String> jdoNames = new ArrayList<>();
private final List<String> puNames = new ArrayList<>();
@SuppressWarnings("unused")
private String outputDirectory = null;
public MockEnhancer() {}
public Properties getProperties() {
return props;
}
public JDOEnhancer setVerbose(boolean flag) {
this.verbose = flag;
return this;
}
public JDOEnhancer setOutputDirectory(String dirName) {
outputDirectory = dirName;
return this;
}
public JDOEnhancer setClassLoader(ClassLoader loader) {
// check to see if JDOHelper is loadable from the loader
try {
loader.loadClass("javax.jdo.JDOHelper");
} catch (ClassNotFoundException ex) {
// bad
throw new JDOFatalInternalException("Should be able to load JDOHelper from the class loader");
}
return this;
}
public JDOEnhancer addPersistenceUnit(String persistenceUnit) {
numberOfElements++;
this.puNames.add(persistenceUnit);
return this;
}
public JDOEnhancer addClass(String className, byte[] bytes) {
throw new UnsupportedOperationException("Not supported yet.");
}
public JDOEnhancer addClasses(String... classNames) {
numberOfElements += classNames.length;
this.classNames.addAll(Arrays.asList(classNames));
return this;
}
public JDOEnhancer addFiles(String... metadataFiles) {
numberOfElements += metadataFiles.length;
this.jdoNames.addAll(Arrays.asList(metadataFiles));
return this;
}
public JDOEnhancer addJar(String jarFileName) {
numberOfElements++;
this.jarNames.add(jarFileName);
return this;
}
public int enhance() {
return numberOfElements;
}
public int validate() {
return numberOfElements;
}
public byte[] getEnhancedBytes(String className) {
throw new UnsupportedOperationException("Not supported yet.");
}
public void registerMetadata(JDOMetadata metadata) {
throw new UnsupportedOperationException("Not supported yet.");
}
public JDOMetadata newMetadata() {
throw new UnsupportedOperationException("Not supported yet.");
}
public byte[] transform(
ClassLoader loader,
String className,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] classfileBuffer)
throws IllegalClassFormatException {
throw new UnsupportedOperationException("Not supported yet.");
}
}