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 {