You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by da...@apache.org on 2019/08/16 15:39:22 UTC
svn commit: r1865310 -
/felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java
Author: davidb
Date: Fri Aug 16 15:39:22 2019
New Revision: 1865310
URL: http://svn.apache.org/viewvc?rev=1865310&view=rev
Log:
FELIX-6157 Converter build fails with Java 12
No additional unit tests needed as the existing unit tests already cover
this when run under Java 12
Modified:
felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java
Modified: felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java?rev=1865310&r1=1865309&r2=1865310&view=diff
==============================================================================
--- felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java (original)
+++ felix/trunk/converter/converter/src/main/java/org/osgi/util/converter/ConvertingImpl.java Fri Aug 16 15:39:22 2019
@@ -91,11 +91,23 @@ class ConvertingImpl extends AbstractSpe
Set<Class< ? >> nmv = new HashSet<>(cim.keySet());
nmv.addAll(Arrays.<Class< ? >> asList(String.class, Class.class,
Comparable.class, CharSequence.class, Map.Entry.class));
+ // The following classes are only available from Java 12 onwards
+ addClassIfAvailable("java.lang.constant.Constable", nmv);
+ addClassIfAvailable("java.lang.constant.ConstantDesc", nmv);
INTERFACE_IMPLS = Collections.unmodifiableMap(iim);
NO_MAP_VIEW_TYPES = Collections.unmodifiableSet(nmv);
}
+ private static void addClassIfAvailable(String cls, Collection<Class<?>> collection) {
+ try {
+ Class<?> clazz = ConvertingImpl.class.getClassLoader().loadClass(cls);
+ collection.add(clazz);
+ } catch (Exception ex) {
+ // Class not available, to nothing
+ }
+ }
+
private final InternalConverter converter;
private volatile Object object;
private volatile Class< ? > sourceClass;
@@ -831,7 +843,7 @@ class ConvertingImpl extends AbstractSpe
i++;
componentType = componentType.getComponentType();
}
-
+
if(i == 1) {
return Array.newInstance(componentType, 0);
} else {