-
- static Map<TCon,Class<?>> typeMap = new HashMap<TCon, Class<?>>();
- // copied from org.simantics.scl.db.SCLFunctions
- public static Class<?> possibleFromDynamic(Type expectedType, String moduleName) {
-
- try {
+
+ static Map<TCon,Class<?>> typeMap = new HashMap<TCon, Class<?>>();
+ // copied from org.simantics.scl.db.SCLFunctions
+ public static Class<?> possibleFromDynamic(Type expectedType, String moduleName) {
+
+ try {
-
- Failable<Module> failable = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);
- Module module = failable.getResult();
-
- RuntimeEnvironment env = SCLOsgi.MODULE_REPOSITORY.createRuntimeEnvironment(
- EnvironmentSpecification.of(moduleName, ""), module.getParentClassLoader());
+
+ Failable<Module> failable = SCLOsgi.MODULE_REPOSITORY.getModule(moduleName);
+ Module module = failable.getResult();
+
+ RuntimeEnvironment env = SCLOsgi.MODULE_REPOSITORY.createRuntimeEnvironment(
+ EnvironmentSpecification.of(moduleName, ""), module.getParentClassLoader());
- JavaTypeTranslator tr = new JavaTypeTranslator(env.getEnvironment());
- TypeDesc desc = tr.toTypeDesc(expectedType);
- String className = desc.getFullName();
- Class<?> clazz = env.getMutableClassLoader().loadClass(className);
- return clazz;
- } catch (ImportFailureException e) {
- return null;
- } catch (ClassNotFoundException e) {
- return null;
- }
- }
-
- public static Class<?> possibleClass(TCon type) {
- Class<?> clazz = typeMap.get(type);
- if (clazz == null) {
- clazz = possibleFromDynamic(type, type.module);
- typeMap.put(type, clazz);
- }
- return clazz;
- }
-
- public static boolean javaIsInstanceOf(org.simantics.scl.compiler.types.Type t, Object o) {
- if (t instanceof TCon) {
- Class<?> clazz = possibleClass((TCon)t);
- if (clazz == null)
- return false;
- if (!clazz.isAssignableFrom(o.getClass()))
- return false;
-
- return true;
- }
- return false;
- }
-
- public static Object javaSafeCoerce(org.simantics.scl.compiler.types.Type t, Object o) {
- if (t instanceof TCon) {
- Class<?> clazz = possibleClass((TCon)t);
- if (clazz == null)
- return null;
- if (!clazz.isAssignableFrom(o.getClass()))
- return null;
-
- return o;
- }
- return null;
- }
+ JavaTypeTranslator tr = new JavaTypeTranslator(env.getEnvironment());
+ TypeDesc desc = tr.toTypeDesc(expectedType);
+ String className = desc.getFullName();
+ Class<?> clazz = env.getMutableClassLoader().loadClass(className);
+ return clazz;
+ } catch (ImportFailureException e) {
+ return null;
+ } catch (ClassNotFoundException e) {
+ return null;
+ }
+ }
+
+ public static Class<?> possibleClass(TCon type) {
+ Class<?> clazz = typeMap.get(type);
+ if (clazz == null) {
+ clazz = possibleFromDynamic(type, type.module);
+ typeMap.put(type, clazz);
+ }
+ return clazz;
+ }
+
+ public static boolean javaIsInstanceOf(org.simantics.scl.compiler.types.Type t, Object o) {
+ if (t instanceof TCon) {
+ Class<?> clazz = possibleClass((TCon)t);
+ if (clazz == null)
+ return false;
+ if (!clazz.isAssignableFrom(o.getClass()))
+ return false;
+
+ return true;
+ }
+ return false;
+ }
+
+ public static Object javaSafeCoerce(org.simantics.scl.compiler.types.Type t, Object o) {
+ if (t instanceof TCon) {
+ Class<?> clazz = possibleClass((TCon)t);
+ if (clazz == null)
+ return null;
+ if (!clazz.isAssignableFrom(o.getClass()))
+ return null;
+
+ return o;
+ }
+ return null;
+ }