For IntelliJ IDEA,
Android Studio or Eclipse



public static void readRuntimeDefinedClasses( Header _header, ProjectClassLoader pcl ) throws IOException, ClassNotFoundException { if ( _header.getRuntimeClassDefinitionsCount() > 0 ) { for ( ProtobufMessages.RuntimeClassDef def : _header.getRuntimeClassDefinitionsList() ) { String resourceName = def.getClassFqName(); byte[] byteCode = def.getClassDef().toByteArray(); if ( ! pcl.getStore().containsKey( resourceName ) ) { pcl.getStore().put(resourceName, byteCode); } } } }
private void shareStoreWithMap(KieProject kieProject) { Optional<Map<String, Object>> optionalKieMap = getKieMap(); if (optionalKieMap.isPresent() && kieProject.getClassLoader() instanceof ProjectClassLoader) { ProjectClassLoader projectClassloder = (ProjectClassLoader) kieProject.getClassLoader(); Map<String, byte[]> types = projectClassloder.getStore(); if (projectClassloder.getStore() != null) { StringBuilder sbTypes = new StringBuilder(compilationID).append(".").append("ProjectClassloaderStore"); optionalKieMap.get().put(sbTypes.toString(), types); getLog().info("ProjectClassloader Store available in the map shared with the Maven Embedder"); } } }
@Test public void testClassLoaderStore() throws Exception { // DROOLS-1766 String drl = "package org; declare Person name : String end"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", drl ); ks.newKieBuilder( kfs ).buildAll(); KieContainer kcontainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId()); KieProject kieProject = (( KieContainerImpl ) kcontainer).getKieProject(); ResultsImpl messages = kieProject.verify(); assertSame( kieProject.getClassLoader(), kcontainer.getClassLoader() ); ProjectClassLoader pcl = (( ProjectClassLoader ) kieProject.getClassLoader()); assertNotNull( pcl.getStore().get("org/Person.class") ); }
private List<JavaFileObject> findCompiledClassInPackage(String packageName) { List<JavaFileObject> compiledList = new ArrayList<JavaFileObject>(); if (classLoader instanceof ProjectClassLoader) { Map<String, byte[]> store = ((ProjectClassLoader) classLoader).getStore(); if (store != null) { for (Map.Entry<String, byte[]> entry : store.entrySet()) { String className = convertResourceToClassName(entry.getKey()); if (className.startsWith(packageName) && className.substring(packageName.length()+1).indexOf('.') < 0) { compiledList.add(new CompilationInput(entry.getKey(), new ByteArrayInputStream(entry.getValue()))); } } } } return compiledList; }
private XStream getXStream() { XStream xstream = createXStream(); if (classLoader != null) { xstream.setClassLoader(classLoader); if (classLoader instanceof ProjectClassLoader ) { Map<String, byte[]> store = ((ProjectClassLoader) classLoader).getStore(); if (store != null) { String[] classes = store.keySet().stream() .map( s -> s.replace( '/', '.' ) ) .map( s -> s.endsWith( ".class" ) ? s.substring( 0, s.length() - ".class".length() ) : s ) .toArray( String[]::new ); xstream.addPermission( new ExplicitTypePermission( classes ) ); } } } return xstream; }
public static void readRuntimeDefinedClasses( Header _header, ProjectClassLoader pcl ) throws IOException, ClassNotFoundException { if ( _header.getRuntimeClassDefinitionsCount() > 0 ) { for ( ProtobufMessages.RuntimeClassDef def : _header.getRuntimeClassDefinitionsList() ) { String resourceName = def.getClassFqName(); byte[] byteCode = def.getClassDef().toByteArray(); if ( ! pcl.getStore().containsKey( resourceName ) ) { pcl.getStore().put(resourceName, byteCode); } } } }
public static void readRuntimeDefinedClasses( Header _header, ProjectClassLoader pcl ) throws IOException, ClassNotFoundException { if ( _header.getRuntimeClassDefinitionsCount() > 0 ) { for ( ProtobufMessages.RuntimeClassDef def : _header.getRuntimeClassDefinitionsList() ) { String resourceName = def.getClassFqName(); byte[] byteCode = def.getClassDef().toByteArray(); if ( ! pcl.getStore().containsKey( resourceName ) ) { pcl.getStore().put(resourceName, byteCode); } } } }
public static void readRuntimeDefinedClasses( Header _header, ProjectClassLoader pcl ) throws IOException, ClassNotFoundException { if ( _header.getRuntimeClassDefinitionsCount() > 0 ) { for ( ProtobufMessages.RuntimeClassDef def : _header.getRuntimeClassDefinitionsList() ) { String resourceName = def.getClassFqName(); byte[] byteCode = def.getClassDef().toByteArray(); if ( ! pcl.getStore().containsKey( resourceName ) ) { pcl.getStore().put(resourceName, byteCode); } } } }
private void shareStoreWithMap(KieProject kieProject) { Optional<Map<String, Object>> optionalKieMap = getKieMap(); if (optionalKieMap.isPresent() && kieProject.getClassLoader() instanceof ProjectClassLoader) { ProjectClassLoader projectClassloder = (ProjectClassLoader) kieProject.getClassLoader(); Map<String, byte[]> types = projectClassloder.getStore(); if (projectClassloder.getStore() != null) { StringBuilder sbTypes = new StringBuilder(compilationID).append(".").append("ProjectClassloaderStore"); optionalKieMap.get().put(sbTypes.toString(), types); getLog().info("ProjectClassloader Store available in the map shared with the Maven Embedder"); } } }
@Test public void testClassLoaderStore() throws Exception { // DROOLS-1766 String drl = "package org; declare Person name : String end"; KieServices ks = KieServices.Factory.get(); KieFileSystem kfs = ks.newKieFileSystem().write( "src/main/resources/r1.drl", drl ); ks.newKieBuilder( kfs ).buildAll(); KieContainer kcontainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId()); KieProject kieProject = (( KieContainerImpl ) kcontainer).getKieProject(); ResultsImpl messages = kieProject.verify(); assertSame( kieProject.getClassLoader(), kcontainer.getClassLoader() ); ProjectClassLoader pcl = (( ProjectClassLoader ) kieProject.getClassLoader()); assertNotNull( pcl.getStore().get("org/Person.class") ); }
private List<JavaFileObject> findCompiledClassInPackage(String packageName) { List<JavaFileObject> compiledList = new ArrayList<JavaFileObject>(); if (classLoader instanceof ProjectClassLoader) { Map<String, byte[]> store = ((ProjectClassLoader) classLoader).getStore(); if (store != null) { for (Map.Entry<String, byte[]> entry : store.entrySet()) { String className = convertResourceToClassName(entry.getKey()); if (className.startsWith(packageName) && className.substring(packageName.length()+1).indexOf('.') < 0) { compiledList.add(new CompilationInput(entry.getKey(), new ByteArrayInputStream(entry.getValue()))); } } } } return compiledList; }
private List<JavaFileObject> findCompiledClassInPackage(String packageName) { List<JavaFileObject> compiledList = new ArrayList<JavaFileObject>(); if (classLoader instanceof ProjectClassLoader) { Map<String, byte[]> store = ((ProjectClassLoader) classLoader).getStore(); if (store != null) { for (Map.Entry<String, byte[]> entry : store.entrySet()) { String className = convertResourceToClassName(entry.getKey()); if (className.startsWith(packageName) && className.substring(packageName.length()+1).indexOf('.') < 0) { compiledList.add(new CompilationInput(entry.getKey(), new ByteArrayInputStream(entry.getValue()))); } } } } return compiledList; }
private List<JavaFileObject> findCompiledClassInPackage(String packageName) { List<JavaFileObject> compiledList = new ArrayList<JavaFileObject>(); if (classLoader instanceof ProjectClassLoader) { Map<String, byte[]> store = ((ProjectClassLoader) classLoader).getStore(); if (store != null) { for (Map.Entry<String, byte[]> entry : store.entrySet()) { String className = convertResourceToClassName(entry.getKey()); if (className.startsWith(packageName) && className.substring(packageName.length()+1).indexOf('.') < 0) { compiledList.add(new CompilationInput(entry.getKey(), new ByteArrayInputStream(entry.getValue()))); } } } } return compiledList; }
private XStream getXStream() { XStream xstream = createXStream(); if (classLoader != null) { xstream.setClassLoader(classLoader); if (classLoader instanceof ProjectClassLoader ) { Map<String, byte[]> store = ((ProjectClassLoader) classLoader).getStore(); if (store != null) { String[] classes = store.keySet().stream() .map( s -> s.replace( '/', '.' ) ) .map( s -> s.endsWith( ".class" ) ? s.substring( 0, s.length() - ".class".length() ) : s ) .toArray( String[]::new ); xstream.addPermission( new ExplicitTypePermission( classes ) ); } } } return xstream; }
private XStream getXStream() { XStream xstream = createXStream(); if (classLoader != null) { xstream.setClassLoader(classLoader); if (classLoader instanceof ProjectClassLoader ) { Map<String, byte[]> store = ((ProjectClassLoader) classLoader).getStore(); if (store != null) { String[] classes = store.keySet().stream() .map( s -> s.replace( '/', '.' ) ) .map( s -> s.endsWith( ".class" ) ? s.substring( 0, s.length() - ".class".length() ) : s ) .toArray( String[]::new ); xstream.addPermission( new ExplicitTypePermission( classes ) ); } } } return xstream; }