Revert "Revert optimization removal (#1352)" (#1533)
* Revert "Revert optimization removal (#1352)"
This reverts commit 263e92e2da1a0e934510a61f7525b1f310d13924.
diff --git a/jaxb-ri/pom.xml b/jaxb-ri/pom.xml
index 2adfc55..57ce5cd 100644
--- a/jaxb-ri/pom.xml
+++ b/jaxb-ri/pom.xml
@@ -328,11 +328,6 @@
</dependency>
</dependencies>
</plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <version>3.0.0-M5</version>
- </plugin>
</plugins>
</pluginManagement>
diff --git a/jaxb-ri/runtime/impl/pom.xml b/jaxb-ri/runtime/impl/pom.xml
index 71532da..3553a3d 100644
--- a/jaxb-ri/runtime/impl/pom.xml
+++ b/jaxb-ri/runtime/impl/pom.xml
@@ -157,37 +157,6 @@
<reuseForks>true</reuseForks>
</configuration>
</plugin>
-
- <!-- Run tests on multi-release jar -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-failsafe-plugin</artifactId>
- <executions>
- <execution>
- <goals>
- <goal>integration-test</goal>
- <goal>verify</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <trimStackTrace>false</trimStackTrace>
- <systemProperties>
- <property>
- <name>java.util.logging.config.file</name>
- <value>logging.properties</value>
- </property>
- </systemProperties>
- <argLine>
- --add-opens java.base/java.lang=org.glassfish.runtime
- --add-opens org.glassfish.jaxb.runtime/org.glassfish.jaxb.runtime.v2=jakarta.xml.bind
- --add-opens org.glassfish.jaxb.runtime/org.glassfish.jaxb.runtime.v2.schemagen=jakarta.xml.bind
- </argLine>
- <includes>
- <include>**/*TestMultiRelease.java</include>
- </includes>
- </configuration>
- </plugin>
</plugins>
</build>
</project>
diff --git a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java b/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java
deleted file mode 100644
index 03615f4..0000000
--- a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-/**
- * Stub version of {@link AccessorInjector} for java versions >= 9
- *
- * @author Daniel Kec
- */
-class AccessorInjector {
-
- protected static final boolean noOptimize = true;
-
- public static Class<?> prepare(
- Class beanClass, String templateClassName, String newClassName, String... replacements) {
- return null;
- }
-
-}
diff --git a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/Injector.java b/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/Injector.java
deleted file mode 100644
index d7fcaed..0000000
--- a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/Injector.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-/**
- * Stub version of {@link Injector} for java versions >= 9
- *
- * @author Daniel Kec
- */
-final class Injector {
-
- /**
- * Injects a new class into the given class loader.
- *
- * @return null
- * if it fails to inject.
- */
- static Class inject(ClassLoader cl, String className, byte[] image) {
- return null;
- }
-
- /**
- * Returns the already injected class, or null.
- */
- static Class find(ClassLoader cl, String className) {
- return null;
- }
-}
diff --git a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java b/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java
deleted file mode 100644
index 84b4213..0000000
--- a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.Accessor;
-
-import java.util.logging.Logger;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Field;
-
-/**
- * Stub version of {@link org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedAccessorFactory} for java versions >= 9
- *
- * @author Daniel Kec
- */
-public abstract class OptimizedAccessorFactory {
- private OptimizedAccessorFactory() {} // no instantiation please
-
- private static final Logger logger = Logger.getLogger(org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedAccessorFactory.class.getName());
-
-
- public static <B, V> Accessor<B, V> get(Method param1, Method param2) {
- return getStub();
- }
-
- public static <B, V> Accessor<B, V> get(Field param) {
- return getStub();
- }
-
- private static <B, V> Accessor<B, V> getStub(){
- logger.finer("Optimization is not available since java 9");
- return null;
- }
-
-}
diff --git a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java b/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java
deleted file mode 100644
index dabb5f7..0000000
--- a/jaxb-ri/runtime/impl/src/main/java-mr/9/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimePropertyInfo;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.TransducedAccessor;
-
-import java.util.logging.Logger;
-
-/**
- * Stub version of {@link org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedTransducedAccessorFactory} for java versions >= 9
- *
- * @author Daniel Kec
- */
-public abstract class OptimizedTransducedAccessorFactory {
- private OptimizedTransducedAccessorFactory() {} // no instantiation please
-
- private static final Logger logger = Logger.getLogger(org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedTransducedAccessorFactory.class.getName());
-
- public static final TransducedAccessor get(RuntimePropertyInfo prop) {
- logger.finer("Optimization is not available since java 9");
- return null;
- }
-}
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java
index 45826e6..760ac58 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeBuiltinLeafInfoImpl.java
@@ -95,10 +95,6 @@
return false;
}
- public final boolean isDefault() {
- return true;
- }
-
public void declareNamespace(T o, XMLSerializer w) throws AccessorException {
}
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeClassInfoImpl.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeClassInfoImpl.java
index 7e87f84..fb85e4c 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeClassInfoImpl.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeClassInfoImpl.java
@@ -330,10 +330,6 @@
return xacc.useNamespace();
}
- public boolean isDefault() {
- return false;
- }
-
public void declareNamespace(BeanT bean, XMLSerializer w) throws AccessorException {
try {
xacc.declareNamespace(bean,w);
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeEnumLeafInfoImpl.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeEnumLeafInfoImpl.java
index 9ddb376..11f7af1 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeEnumLeafInfoImpl.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/model/impl/RuntimeEnumLeafInfoImpl.java
@@ -93,10 +93,6 @@
return new QName[]{getTypeName()};
}
- public boolean isDefault() {
- return false;
- }
-
@Override
public Class getClazz() {
return clazz;
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/FilterTransducer.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/FilterTransducer.java
index 8ac3ab4..5b2ee93 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/FilterTransducer.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/FilterTransducer.java
@@ -1,5 +1,9 @@
/*
+<<<<<<< HEAD:jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/FilterTransducer.java
* Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
+=======
+ * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
+>>>>>>> parent of 263e92e (Revert optimization removal (#1352)):jaxb-ri/runtime/impl/src/main/java/com/sun/xml/bind/v2/runtime/FilterTransducer.java
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Distribution License v. 1.0, which is available at
@@ -30,12 +34,6 @@
this.core = core;
}
- public final boolean isDefault() {
- // this must be used as a decorating transducer,
- // so it may never be default.
- return false;
- }
-
public boolean useNamespace() {
return core.useNamespace();
}
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/Transducer.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/Transducer.java
index ce6c54b..12c382f 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/Transducer.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/Transducer.java
@@ -12,8 +12,7 @@
import com.sun.istack.NotNull;
import org.glassfish.jaxb.runtime.api.AccessorException;
-import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimePropertyInfo;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedTransducedAccessorFactory;
+
import jakarta.xml.bind.annotation.XmlValue;
import org.xml.sax.SAXException;
@@ -22,7 +21,6 @@
import javax.xml.stream.XMLStreamException;
import java.io.IOException;
-
/**
* Responsible for converting a Java object to a lexical representation
* and vice versa.
@@ -38,14 +36,6 @@
public interface Transducer<ValueT> {
/**
- * If this {@link Transducer} is the default transducer for the <code>ValueT</code>,
- * this method returns true.
- *
- * Used exclusively by {@link OptimizedTransducedAccessorFactory#get(RuntimePropertyInfo)}
- */
- boolean isDefault();
-
- /**
* If true, this {@link Transducer} doesn't declare any namespace,
* and therefore {@link #declareNamespace(Object, XMLSerializer)} is no-op.
*
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/Accessor.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/Accessor.java
index 48df4fc..60a7f1a 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/Accessor.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/Accessor.java
@@ -16,7 +16,6 @@
import org.glassfish.jaxb.core.v2.model.core.Adapter;
import org.glassfish.jaxb.runtime.v2.model.impl.RuntimeModelBuilder;
import org.glassfish.jaxb.runtime.v2.runtime.JAXBContextImpl;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedAccessorFactory;
import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Loader;
import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Receiver;
import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallingContext;
@@ -242,14 +241,6 @@
@Override
public Accessor<BeanT, ValueT> optimize(JAXBContextImpl context) {
- if (context != null && context.fastBoot) {
- // let's not waste time on doing this for the sake of faster boot.
- return this;
- }
- Accessor<BeanT, ValueT> acc = OptimizedAccessorFactory.get(f);
- if (acc != null) {
- return acc;
- }
return this;
}
}
@@ -356,20 +347,6 @@
@Override
public Accessor<BeanT, ValueT> optimize(JAXBContextImpl context) {
- if (getter == null || setter == null) {
- // if we aren't complete, OptimizedAccessor won't always work
- return this;
- }
- if (context != null && context.fastBoot) {
- // let's not waste time on doing this for the sake of faster boot.
- return this;
- }
-
- Accessor<BeanT, ValueT> acc = OptimizedAccessorFactory.get(getter, setter);
- if (acc != null) {
- return acc;
- }
-
return this;
}
}
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/TransducedAccessor.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/TransducedAccessor.java
index 12927ab..0cce148 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/TransducedAccessor.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/TransducedAccessor.java
@@ -23,7 +23,6 @@
import org.glassfish.jaxb.runtime.v2.runtime.Name;
import org.glassfish.jaxb.runtime.v2.runtime.Transducer;
import org.glassfish.jaxb.runtime.v2.runtime.XMLSerializer;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedTransducedAccessorFactory;
import org.glassfish.jaxb.core.v2.runtime.unmarshaller.LocatorEx;
import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.Patcher;
import org.glassfish.jaxb.runtime.v2.runtime.unmarshaller.UnmarshallingContext;
@@ -132,13 +131,6 @@
if(prop.id()==ID.IDREF)
return new IDREFTransducedAccessorImpl(prop.getAccessor());
- if (xducer.isDefault() && context != null && !context.fastBoot) {
- TransducedAccessor xa = OptimizedTransducedAccessorFactory.get(prop);
- if (xa != null) {
- return xa;
- }
- }
-
if(xducer.useNamespace())
return new CompositeContextDependentTransducedAccessorImpl( context, xducer, prop.getAccessor() );
else
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java
index 4447c10..c3f72b0 100644
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java
+++ b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/AccessorInjector.java
@@ -14,7 +14,6 @@
import org.glassfish.jaxb.runtime.v2.bytecode.ClassTailor;
import java.io.InputStream;
-import java.util.logging.Level;
import java.util.logging.Logger;
/**
@@ -33,41 +32,6 @@
}
/**
- * Loads the optimized class and returns it.
- *
- * @return null
- * if it fails for some reason.
- */
- public static Class<?> prepare(
- Class beanClass, String templateClassName, String newClassName, String... replacements ) {
-
- if(noOptimize)
- return null;
-
- try {
- ClassLoader cl = SecureLoader.getClassClassLoader(beanClass);
- if(cl==null) return null; // how do I inject classes to this "null" class loader? for now, back off.
-
- Class c = Injector.find(cl,newClassName);
- if (c==null) {
- byte[] image = tailor(templateClassName,newClassName,replacements);
- if (image==null) {
- return null;
- }
- c = Injector.inject(cl,newClassName,image);
- if (c == null) {
- Injector.find(cl, newClassName);
- }
- }
- return c;
- } catch(SecurityException e) {
- // we don't have enough permission to do this
- logger.log(Level.INFO,"Unable to create an optimized TransducedAccessor ",e);
- return null;
- }
- }
-
- /**
* Customizes a class file by replacing constant pools.
*
* @param templateClassName
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java
deleted file mode 100644
index 39c6cf4..0000000
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedAccessorFactory.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 1997, 2021 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.glassfish.jaxb.core.v2.runtime.RuntimeUtil;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.Accessor;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import static org.glassfish.jaxb.runtime.v2.bytecode.ClassTailor.toVMClassName;
-import static org.glassfish.jaxb.runtime.v2.bytecode.ClassTailor.toVMTypeName;
-
-/**
- * @author Kohsuke Kawaguchi
- */
-public abstract class OptimizedAccessorFactory {
- private OptimizedAccessorFactory() {} // no instanciation please
-
- public static final boolean noOptimization = Boolean.getBoolean(OptimizedAccessorFactory.class.getName()+".noOptimization");
-
- private static final Logger logger = Logger.getLogger(OptimizedAccessorFactory.class.getName());
-
- private static final String fieldTemplateName;
- private static final String methodTemplateName;
-
- static {
- String s = FieldAccessor_Byte.class.getName();
- fieldTemplateName = s.substring(0,s.length()-"Byte".length()).replace('.','/');
-
- s = MethodAccessor_Byte.class.getName();
- methodTemplateName = s.substring(0,s.length()-"Byte".length()).replace('.','/');
- }
-
- /**
- * Gets the optimized {@link Accessor} that accesses the given getter/setter.
- *
- * @return null
- * if for some reason it fails to create an optimized version.
- */
- public static final <B,V> Accessor<B,V> get(Method getter, Method setter) {
- if(noOptimization){
- return null;
- }
-
- // make sure the method signatures are what we expect
- if(getter.getParameterTypes().length!=0)
- return null;
- Class<?>[] sparams = setter.getParameterTypes();
- if(sparams.length!=1)
- return null;
- if(sparams[0]!=getter.getReturnType())
- return null;
- if(setter.getReturnType()!=Void.TYPE)
- return null;
- if(getter.getDeclaringClass()!=setter.getDeclaringClass())
- return null;
- if(Modifier.isPrivate(getter.getModifiers()) || Modifier.isPrivate(setter.getModifiers()))
- // we can't access private fields
- return null;
-
- Class t = sparams[0];
- String typeName = t.getName().replace('.','_');
- if (t.isArray()) {
- typeName = "AOf_";
- String compName = t.getComponentType().getName().replace('.','_');
- while (compName.startsWith("[L")) {
- compName = compName.substring(2);
- typeName += "AOf_";
- }
- typeName = typeName + compName;
- }
-
- String newClassName = toVMClassName(getter.getDeclaringClass())+"$JaxbAccessorM_"+getter.getName()+'_'+setter.getName()+'_'+typeName;
- Class opt;
-
- if(t.isPrimitive())
- opt = AccessorInjector.prepare( getter.getDeclaringClass(),
- methodTemplateName+RuntimeUtil.primitiveToBox.get(t).getSimpleName(),
- newClassName,
- toVMClassName(Bean.class),
- toVMClassName(getter.getDeclaringClass()),
- "get_"+t.getName(),
- getter.getName(),
- "set_"+t.getName(),
- setter.getName());
- else
- opt = AccessorInjector.prepare( getter.getDeclaringClass(),
- methodTemplateName+"Ref",
- newClassName,
- toVMClassName(Bean.class),
- toVMClassName(getter.getDeclaringClass()),
- toVMClassName(Ref.class),
- toVMClassName(t),
- "()"+toVMTypeName(Ref.class),
- "()"+toVMTypeName(t),
- '('+toVMTypeName(Ref.class)+")V",
- '('+toVMTypeName(t)+")V",
- "get_ref",
- getter.getName(),
- "set_ref",
- setter.getName());
-
- if(opt==null)
- return null;
-
- Accessor<B,V> acc = instanciate(opt);
- if (acc!=null) {
- if (logger.isLoggable(Level.FINE)) {
- logger.log(Level.FINE, "Using optimized Accessor for {0} and {1}", new Object[]{getter, setter});
- }
- }
- return acc;
- }
-
-
- /**
- * Gets the optimized {@link Accessor} that accesses the given field.
- *
- * @return null
- * if for some reason it fails to create an optimized version.
- */
- public static final <B,V> Accessor<B,V> get(Field field) {
- if(noOptimization){
- return null;
- }
-
- int mods = field.getModifiers();
- if(Modifier.isPrivate(mods) || Modifier.isFinal(mods))
- // we can't access private fields
- return null;
-
- String newClassName = toVMClassName(field.getDeclaringClass())+"$JaxbAccessorF_"+field.getName();
-
- Class opt;
-
- if(field.getType().isPrimitive())
- opt = AccessorInjector.prepare( field.getDeclaringClass(),
- fieldTemplateName+RuntimeUtil.primitiveToBox.get(field.getType()).getSimpleName(),
- newClassName,
- toVMClassName(Bean.class),
- toVMClassName(field.getDeclaringClass()),
- "f_"+field.getType().getName(),
- field.getName() );
- else
- opt = AccessorInjector.prepare( field.getDeclaringClass(),
- fieldTemplateName+"Ref",
- newClassName,
- toVMClassName(Bean.class),
- toVMClassName(field.getDeclaringClass()),
- toVMClassName(Ref.class),
- toVMClassName(field.getType()),
- toVMTypeName(Ref.class),
- toVMTypeName(field.getType()),
- "f_ref",
- field.getName() );
-
- if(opt==null)
- return null;
-
- Accessor<B,V> acc = instanciate(opt);
- if (acc!=null) {
- if (logger.isLoggable(Level.FINE)) {
- logger.log(Level.FINE, "Using optimized Accessor for {0}", field);
- }
- }
- return acc;
- }
-
- private static <B,V> Accessor<B,V> instanciate(Class opt) {
- try {
- return (Accessor<B,V>)opt.newInstance();
- } catch (InstantiationException e) {
- logger.log(Level.INFO,"failed to load an optimized Accessor",e);
- } catch (IllegalAccessException e) {
- logger.log(Level.INFO,"failed to load an optimized Accessor",e);
- } catch (SecurityException e) {
- logger.log(Level.INFO,"failed to load an optimized Accessor",e);
- } catch (ClassCastException e) {
- logger.log(Level.FINE,"failed to cast optimized Accessor " +
- "created by repackaged jaxb "+opt,e);
- }
- return null;
- }
-}
diff --git a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java b/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java
deleted file mode 100644
index e66a891..0000000
--- a/jaxb-ri/runtime/impl/src/main/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizedTransducedAccessorFactory.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.glassfish.jaxb.core.v2.model.core.TypeInfo;
-import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimeClassInfo;
-import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimePropertyInfo;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.Accessor;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.TransducedAccessor;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import static org.glassfish.jaxb.runtime.v2.bytecode.ClassTailor.toVMClassName;
-
-/**
- * Prepares optimized {@link TransducedAccessor} from templates.
- *
- * @author Kohsuke Kawaguchi
- */
-public abstract class OptimizedTransducedAccessorFactory {
- private OptimizedTransducedAccessorFactory() {} // no instantiation please
-
- // http://java.sun.com/docs/books/vmspec/2nd-edition/html/ConstantPool.doc.html#75929
- // "same runtime package"
-
- private static final Logger logger = Logger.getLogger(OptimizedTransducedAccessorFactory.class.getName());
-
- private static final String fieldTemplateName;
- private static final String methodTemplateName;
-
- static {
- String s = TransducedAccessor_field_Byte.class.getName();
- fieldTemplateName = s.substring(0,s.length()-"Byte".length()).replace('.','/');
-
- s = TransducedAccessor_method_Byte.class.getName();
- methodTemplateName = s.substring(0,s.length()-"Byte".length()).replace('.','/');
- }
-
- /**
- * Gets the optimized {@link TransducedAccessor} if possible.
- *
- * @return null
- * if for some reason it fails to create an optimized version.
- */
- public static final TransducedAccessor get(RuntimePropertyInfo prop) {
- if(OptimizedAccessorFactory.noOptimization){
- return null;
- }
-
- Accessor acc = prop.getAccessor();
-
- // consider using an optimized TransducedAccessor implementations.
- Class opt=null;
-
- TypeInfo<Type,Class> parent = prop.parent();
- if(!(parent instanceof RuntimeClassInfo))
- return null;
-
- Class dc = ((RuntimeClassInfo)parent).getClazz();
- String newClassName = toVMClassName(dc)+"_JaxbXducedAccessor_"+prop.getName();
-
-
- if(acc instanceof Accessor.FieldReflection) {
- // TODO: we also need to make sure that the default xducer is used.
- Accessor.FieldReflection racc = (Accessor.FieldReflection) acc;
- Field field = racc.f;
-
- int mods = field.getModifiers();
- if(Modifier.isPrivate(mods) || Modifier.isFinal(mods))
- // we can't access private fields.
- // TODO: think about how to improve this case
- return null;
-
- Class<?> t = field.getType();
- if(t.isPrimitive())
- opt = AccessorInjector.prepare( dc,
- fieldTemplateName+suffixMap.get(t),
- newClassName,
- toVMClassName(Bean.class),
- toVMClassName(dc),
- "f_"+t.getName(),
- field.getName() );
- }
-
- if(acc.getClass()==Accessor.GetterSetterReflection.class) {
- Accessor.GetterSetterReflection gacc = (Accessor.GetterSetterReflection) acc;
-
- if(gacc.getter==null || gacc.setter==null)
- return null; // incomplete
-
- Class<?> t = gacc.getter.getReturnType();
-
- if(Modifier.isPrivate(gacc.getter.getModifiers())
- || Modifier.isPrivate(gacc.setter.getModifiers()))
- // we can't access private methods.
- return null;
-
-
- if(t.isPrimitive())
- opt = AccessorInjector.prepare( dc,
- methodTemplateName+suffixMap.get(t),
- newClassName,
- toVMClassName(Bean.class),
- toVMClassName(dc),
- "get_"+t.getName(),
- gacc.getter.getName(),
- "set_"+t.getName(),
- gacc.setter.getName());
- }
-
- if(opt==null)
- return null;
-
- logger.log(Level.FINE,"Using optimized TransducedAccessor for "+prop.displayName());
-
-
- try {
- return (TransducedAccessor)opt.newInstance();
- } catch (InstantiationException e) {
- logger.log(Level.INFO,"failed to load an optimized TransducedAccessor",e);
- } catch (IllegalAccessException e) {
- logger.log(Level.INFO,"failed to load an optimized TransducedAccessor",e);
- } catch (SecurityException e) {
- logger.log(Level.INFO,"failed to load an optimized TransducedAccessor",e);
- }
- return null;
- }
-
- private static final Map<Class,String> suffixMap = new HashMap<Class, String>();
-
- static {
- suffixMap.put(Byte.TYPE,"Byte");
- suffixMap.put(Short.TYPE,"Short");
- suffixMap.put(Integer.TYPE,"Integer");
- suffixMap.put(Long.TYPE,"Long");
- suffixMap.put(Boolean.TYPE,"Boolean");
- suffixMap.put(Float.TYPE,"Float");
- suffixMap.put(Double.TYPE,"Double");
- }
-
-}
diff --git a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/AbstractTestMultiRelease.java b/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/AbstractTestMultiRelease.java
deleted file mode 100644
index 7dee033..0000000
--- a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/AbstractTestMultiRelease.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.test;
-
-import org.junit.Assume;
-import org.junit.Rule;
-import org.junit.rules.TestWatcher;
-import org.junit.runner.Description;
-
-/**
- * Tools for testing multi-release jar, makes possible to skip tests marked for java version above current one.
- *
- * @author Daniel Kec
- * @see SinceJava9
- */
-public abstract class AbstractTestMultiRelease {
-
- @Rule
- public TestWatcher javaVersionWatcher = new TestWatcher() {
- @Override
- protected void starting(Description description) {
- if (description.getAnnotation(SinceJava9.class) != null) {
- if (!isAboveOrEqualJava9()) {
- Assume.assumeTrue("Skipping, test is applicable since java 9 and higher.", false);
- }
- }
- super.starting(description);
- }
- };
-
- protected boolean isAboveOrEqualJava9() {
- try {
- //Runtime#version is available since java 9
- Runtime.class.getMethod("version");
- } catch (NoSuchMethodException e) {
- return false;
- }
- return true;
- }
-}
diff --git a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/SinceJava9.java b/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/SinceJava9.java
deleted file mode 100644
index 6cd66ad..0000000
--- a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/test/SinceJava9.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (c) 2019, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.test;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Marker for test methods which are assumed to be tested only on Java 9 and higher
- *
- * @see AbstractTestMultiRelease
- * @author Daniel Kec
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.METHOD})
-public @interface SinceJava9 {
-
-}
diff --git a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/ForeignAccessorTest.java b/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/ForeignAccessorTest.java
deleted file mode 100644
index a718754..0000000
--- a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/ForeignAccessorTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2021 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-
-import jakarta.xml.bind.annotation.XmlAccessType;
-import jakarta.xml.bind.annotation.XmlAccessorType;
-import jakarta.xml.bind.annotation.XmlRootElement;
-import org.glassfish.jaxb.runtime.v2.bytecode.ClassTailor;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.Accessor;
-import org.junit.Test;
-
-public class ForeignAccessorTest {
-
- /**
- * Foreign accessor shouldn't throw ClassCastException, just skip optimization.
- */
- @Test
- public void foreignAccessor() throws NoSuchFieldException{
- String newClassName = EntityWithForeignAccessor.class.getName().replace('.','/') + "$JaxbAccessorF_author";
- Class<?> foreignAccessor = AccessorInjector.prepare(EntityWithForeignAccessor.class,
- ClassTailor.toVMClassName(ForeignAccessorTest.FieldAccessor_Ref.class),
- newClassName);
- assertNotNull(foreignAccessor);
-
- Accessor<Object, Object> accessor = OptimizedAccessorFactory.get(EntityWithForeignAccessor.class.getDeclaredField("author"));
- assertNull(accessor);
- }
-
- @Test
- public void knownAccessor() throws NoSuchFieldException {
- Accessor<Object, Object> accessor = OptimizedAccessorFactory.get(EntityWithKnownAccessor.class.getDeclaredField("author"));
- assertNotNull(accessor);
- }
-
- @XmlRootElement
- @XmlAccessorType(XmlAccessType.FIELD)
- static class EntityWithKnownAccessor {
- String author;
- }
-
- @XmlRootElement
- @XmlAccessorType(XmlAccessType.FIELD)
- static class EntityWithForeignAccessor {
- String author;
- }
-
- /**
- * Test template doesn't extend accessor intentionally.
- */
- public static class FieldAccessor_Ref /*extends Accessor*/ {
- public FieldAccessor_Ref() {
- // super(Ref.class);
- }
-
- public Object get(Object bean) {
- return ((Bean)bean).f_ref;
- }
-
- public void set(Object bean, Object value) {
- ((Bean)bean).f_ref = (Ref)value;
- }
- }
-}
diff --git a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTest.java b/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTest.java
deleted file mode 100644
index e8cda9a..0000000
--- a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (c) 2019, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-import jakarta.xml.bind.JAXBContext;
-import jakarta.xml.bind.JAXBException;
-import jakarta.xml.bind.Unmarshaller;
-import jakarta.xml.bind.annotation.XmlRootElement;
-import jakarta.xml.bind.annotation.XmlTransient;
-import java.io.StringReader;
-import java.lang.invoke.MethodHandles;
-import java.lang.invoke.VarHandle;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-
-/**
- * Test flag for disabling optimization
- * org.glassfish.jaxb.runtime.v2.runtime.reflect.opt.OptimizedAccessorFactory.noOptimization=true/false
- *
- * @author Daniel Kec
- */
-public class OptimizationTest {
-
- private static final String EXPECTED_ACCESSOR_CLASS_REF = Book.class.getName() + "$JaxbAccessorM_getAuthor_setAuthor_java_lang_String";
- private static final String OPTIMIZATION_ON = "AUTHOR_EXPECTING_OPTIMIZATION_ON";
- private static final String OPTIMIZATION_OFF = "AUTHOR_EXPECTING_OPTIMIZATION_OFF";
- private static final VarHandle MODIFIERS;
-
- static {
- try {
- MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(Field.class, MethodHandles.lookup());
- MODIFIERS = lookup.findVarHandle(Field.class, "modifiers", int.class);
- } catch (IllegalAccessException | NoSuchFieldException ex) {
- throw new RuntimeException(ex);
- }
- }
-
- @Test
- public void checkNoOptimizationFlagFalse() throws JAXBException {
- Book book = unmarshal(OPTIMIZATION_ON);
- Assert.assertTrue(book.errorMessage, book.errorMessage == null);
- Assert.assertEquals(OPTIMIZATION_ON, book.getAuthor());
- }
-
- @Test
- public void checkNoOptimizationFlagTrue() throws JAXBException, NoSuchFieldException, IllegalAccessException {
- try {
- setNoOptimizationFlag(true);
- Book book = unmarshal(OPTIMIZATION_OFF);
- Assert.assertTrue(book.errorMessage, book.errorMessage == null);
- Assert.assertEquals(OPTIMIZATION_OFF, book.getAuthor());
- } finally {
- setNoOptimizationFlag(false);
- }
- }
-
- private Book unmarshal(String autor) throws JAXBException {
- JAXBContext context = JAXBContext.newInstance(Book.class);
- Unmarshaller unmarshaller = context.createUnmarshaller();
- return (Book) unmarshaller.unmarshal(new StringReader(
- String.format("<book><author>%s</author></book>", autor)));
- }
-
- private void setNoOptimizationFlag(boolean flag) throws NoSuchFieldException, IllegalAccessException {
- Field noOptimizationField = OptimizedAccessorFactory.class.getField("noOptimization");
- noOptimizationField.setAccessible(true);
- if (Modifier.isFinal(noOptimizationField.getModifiers())) {
- MODIFIERS.set(noOptimizationField, noOptimizationField.getModifiers() & ~Modifier.FINAL);
- }
- noOptimizationField.setBoolean(OptimizedAccessorFactory.class, true);
- }
-
- @XmlRootElement
- static class Book {
- private String author;
-
- @XmlTransient
- String errorMessage = null;
-
- public String getAuthor() {
- return author;
- }
-
- public void setAuthor(String author) {
- String artificialInnerClass = null;
- StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
- for (StackTraceElement el : stackTrace) {
- System.out.println(el.toString());
- if (el.getClassName().equals(EXPECTED_ACCESSOR_CLASS_REF)) {
- artificialInnerClass = el.getClassName();
- break;
- }
- }
-
- if (author.equals(OPTIMIZATION_OFF) && artificialInnerClass != null) {
- this.errorMessage = String.format("Artificial accessor class detected %s", artificialInnerClass);
- } else if (author.equals(OPTIMIZATION_ON) && artificialInnerClass == null) {
- this.errorMessage = String.format("Expected artificial accessor class not found: %s", EXPECTED_ACCESSOR_CLASS_REF);
- }
- this.author = author;
- }
- }
-}
diff --git a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTestMultiRelease.java b/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTestMultiRelease.java
deleted file mode 100644
index 39931fc..0000000
--- a/jaxb-ri/runtime/impl/src/test/java/org/glassfish/jaxb/runtime/v2/runtime/reflect/opt/OptimizationTestMultiRelease.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2019, 2020 Oracle and/or its affiliates. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Distribution License v. 1.0, which is available at
- * http://www.eclipse.org/org/documents/edl-v10.php.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-package org.glassfish.jaxb.runtime.v2.runtime.reflect.opt;
-
-import org.glassfish.jaxb.runtime.test.AbstractTestMultiRelease;
-import org.glassfish.jaxb.runtime.test.SinceJava9;
-import org.glassfish.jaxb.runtime.v2.model.runtime.RuntimePropertyInfo;
-import org.glassfish.jaxb.runtime.v2.runtime.reflect.TransducedAccessor;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.lang.reflect.Field;
-
-/**
- * Test multi release for optimization feature,
- * Feature needs to be disabled since java 9.
- *
- * @author Daniel Kec
- */
-public class OptimizationTestMultiRelease extends AbstractTestMultiRelease {
-
- @SuppressWarnings("WeakerAccess")
- public static String TEST_FIELD = "TEST_FIELD";
-
- @Test
- @SinceJava9
- public void testStubbedAccessorInjector() {
- //Stubbed version doesn't mind null param
- Assert.assertNull("Injector should always return null since Java 9",
- AccessorInjector.prepare(null, null, null, null));
- }
-
- @Test
- @SinceJava9
- public void testStubbedInjector() {
- //Stubbed version doesn't mind null param
- Assert.assertNull("Injector should always return null since Java 9",
- Injector.find(null, null));
- }
-
- @Test
- @SinceJava9
- public void testStubbedOptimizedAccessorFactory() throws NoSuchFieldException {
- Field field = this.getClass().getDeclaredField(TEST_FIELD);
- Assert.assertNull("OptimizedAccessorFactory should always return null since Java 9", OptimizedAccessorFactory.get(field));
- }
-
- @Test
- @SinceJava9
- @SuppressWarnings("ConstantConditions")
- public void testStubbedOptimizedTransducedAccessorFactory() throws NoSuchFieldException {
- final String errMessage = "OptimizedTransducedAccessorFactory should always return null since Java 9";
- try {
- //Stubbed version doesn't mind null param
- TransducedAccessor accessor = OptimizedTransducedAccessorFactory.get((RuntimePropertyInfo) null);
- Assert.assertNull(errMessage, accessor);
- } catch (NullPointerException npe) {
- Assert.fail(errMessage);
- }
- }
-
-}
diff --git a/jaxb-ri/tools/config/copyright-exclude b/jaxb-ri/tools/config/copyright-exclude
index 79c07a7..eed5c68 100644
--- a/jaxb-ri/tools/config/copyright-exclude
+++ b/jaxb-ri/tools/config/copyright-exclude
@@ -1,7 +1,6 @@
/MANIFEST.MF
/META-INF/services/
/README
-.iml
.gif
.jpg
.png