public byte[] read(String resourceName) { return store.read(resourceName); } public void remove(String resourceName) {
public void remove(String resourceName) { store.remove(resourceName); } public void write(String resourceName, byte[] resourceData) {
public JavaflowResourceStore() { this(new MemoryResourceStore()); }
public static Class<?> compile(String javaClassName, String javaClassContent) { MemoryResourceReader src = new MemoryResourceReader(); MemoryResourceStore dst = new MemoryResourceStore(); ClassLoader parentClassLoader = Thread.currentThread().getContextClassLoader(); if (parentClassLoader == null) { parentClassLoader = JCIUtil.class.getClassLoader(); ResourceStoreClassLoader classLoader = new ResourceStoreClassLoader(parentClassLoader, new ResourceStore[] { dst }); src.add(javaClassName.replace('.', '/') + ".java", javaClassContent.getBytes()); String[] fileNames = { javaClassName }; return classLoader.loadClass(javaClassName); } catch (Exception e) { return null;
public void write(String resourceName, byte[] resourceData) { byte[] out = resourceData; // FIXME: make the matching configurable //if (resourceName.endsWith(".class")) { byte[] in = resourceData; for(int i=0; i<transformers.length; i++) { out = transformers[i].transform(in); in = out; } //} store.write(resourceName, out); }
private Class<?> loadClass(final String qualifiedClassName, final MemoryResourceStore pStore) { try { final ClassLoader resourceStoreClassLoader = new ResourceStoreClassLoader(this.classLoader, new ResourceStore[] { pStore }); return resourceStoreClassLoader.loadClass(qualifiedClassName); } catch (ClassNotFoundException e) { log.error("No Class exists with name: " + qualifiedClassName, e); return null; } }
public void onStart() { super.onStart(); newClasses = new HashSet(); newServletsByClassname = new HashMap(servletsByClassname); }
public void write(String pResourceName, byte[] pResourceData) { super.write(pResourceName, pResourceData); if (pResourceName.endsWith(".class")) { // compiler writes a new class, remember the classes to reload newClasses.add(pResourceName.replace('/', '.').substring(0, pResourceName.length() - ".class".length())); } }
public void onStop() { super.onStop(); boolean reload = false; for (Iterator it = newClasses.iterator(); it.hasNext();) { final String clazzName = (String) it.next(); try { final Class clazz = classloader.loadClass(clazzName); if (!HttpServlet.class.isAssignableFrom(clazz)) { log(clazzName + " is not a servlet"); continue; } // create new instance of jsp page final HttpServlet servlet = (HttpServlet) clazz.newInstance(); newServletsByClassname.put(clazzName, servlet); reload = true; } catch(Exception e) { log("", e); } } if (reload) { log("Activating new map of servlets "+ newServletsByClassname); servletsByClassname = newServletsByClassname; } }
final ResourceStore store = new FileResourceStore(targetpath);
JavaCompiler compiler = new JavaCompilerFactory().createCompiler("eclipse"); MemoryResourceReader mrr = new MemoryResourceReader(); mrr.add("resource name string", yourJavaSourceString.getBytes()); MemoryResourceStore mrs = new MemoryResourceStore(); CompilationResult result = compiler.compile(sources, mrr, mrs); // don't need the result, unless you care for errors/warnings // the class should have been compiled to your destination dir
final byte[] clazzBytes = pStore.read(resourceName); if (clazzBytes != null) { log.debug("loading from store " + pClazzName);
public void acceptResult( final CompilationResult pResult ) { if (pResult.hasProblems()) { for (IProblem iproblem : pResult.getProblems()) { final CompilationProblem problem = new EclipseCompilationProblem(iproblem); if (problemHandler != null) { problemHandler.handle(problem); } problems.add(problem); } } if (!pResult.hasErrors()) { final ClassFile[] clazzFiles = pResult.getClassFiles(); for (ClassFile clazzFile : clazzFiles) { final char[][] compoundName = clazzFile.getCompoundName(); final StringBuilder clazzName = new StringBuilder(); for (int j = 0; j < compoundName.length; j++) { if (j != 0) { clazzName.append('.'); } clazzName.append(compoundName[j]); } pStore.write(clazzName.toString().replace('.', '/') + ".class", clazzFile.getBytes()); } } } };
@Override public List<Class<?>> load(final List<Path> sourceFiles) { final FileResourceReader sourceFolderResource = new FileResourceReader(sourceBaseDir.toFile()); final MemoryResourceStore pStore = new MemoryResourceStore(); compiler.compile(resourcePathOf(sourceFiles), sourceFolderResource, pStore, classLoader, compilerSettings); return loadClassesFor(sourceFiles, pStore); }
final TransactionalResourceStore store = new TransactionalResourceStore(new MemoryResourceStore()) {