public static Class<?> compileAndLoad(final File sourceFile, final String fullyQualifiedName) throws IOException { final String packageName = getPackageFromFQCN(fullyQualifiedName); final String className = getNameFromFQCN(fullyQualifiedName); return compileAndLoad(sourceFile, packageName, className); }
public static void generateClassFileInTmpDir(final String packageName, final String simpleClassName, final String source, final String tmpDirPath) { final String classFilePath = ClassChangeUtil.generateClassFile(packageName, simpleClassName, tmpDirPath, source, tmpDirPath); try { ClassChangeUtil.loadClassDefinition(classFilePath, packageName, simpleClassName); } catch (final IOException e) { throw new RuntimeException("Could not load " + packageName + "." + simpleClassName, e); } }
public static Class<?> compileAndLoad(final String sourcePath, final String packageName, final String className, final String outputPath) throws IOException { final String outputLocation = compileClass(sourcePath, packageName, className, outputPath); return loadClassDefinition(outputLocation, packageName, className); }
@SuppressWarnings("unchecked") public static Class<? extends MarshallerFactory> getGeneratedMarshallerFactoryForServer() { final String packageName = MarshallersGenerator.SERVER_MARSHALLER_PACKAGE_NAME; final String simpleClassName = MarshallersGenerator.SERVER_MARSHALLER_CLASS_NAME; final String fullyQualifiedClassName = packageName + "." + simpleClassName; final Optional<Class<?>> generatedMarshaller = ClassChangeUtil.loadClassIfPresent(packageName, simpleClassName); if (generatedMarshaller.isPresent()) { return (Class<? extends MarshallerFactory>) generatedMarshaller.get(); } else if (!MarshallingGenUtil.isForceStaticMarshallers()) { return null; } else { log.info("couldn't find {} class, attempting to generate ...", fullyQualifiedClassName); final String classStr = MarshallerGeneratorFactory.getFor(null, MarshallerOutputTarget.Java) .generate(packageName, simpleClassName); return (Class<? extends MarshallerFactory>) ClassChangeUtil.compileAndLoadFromSource(packageName, simpleClassName, classStr); } } }
final Set<String> locations = getClassLocations(packageName, simpleClassName); final Optional<File> newest = getNewest(locations); return Optional.of(loadClassDefinition(newest.get().getAbsolutePath(), packageName, simpleClassName));
public static Class<?> compileAndLoad(final File sourceFile, final String packageName, final String className) throws IOException { return compileAndLoad(sourceFile.getParentFile().getAbsolutePath(), packageName, className); }
private void generateAndWriteToDir(final String classOutputDir, final String source) { ClassChangeUtil.generateClassFile(SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME, SOURCE_OUTPUT_TMP, source, classOutputDir); }
final File file = getFileIfExists(url.getFile()); if (file != null) { classpathElements.add(file); sb.append(findAllJarsByManifest());
@SuppressWarnings("unchecked") public static Class<? extends EventQualifierSerializer> generateAndLoad() { logger.info("Generating source for {}.{}...", SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME); final String source = generateSource(CDIAnnotationUtils.getQualifiers()); logger.info("Successfully generated source for {}.{}", SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME); logger.info("Attempting to compile and load {}.{}", SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME); return (Class<? extends EventQualifierSerializer>) ClassChangeUtil .compileAndLoadFromSource(SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME, source); }
public static void loadAndSetEventQualifierSerializer() { logger.info("Attempting to load {}.{}", SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME); final Optional<Class<?>> loadedImpl = ClassChangeUtil.loadClassIfPresent( SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME); if (loadedImpl.isPresent()) { logger.info("Successfully loaded {}.{}", SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME); final Class<?> clazz = loadedImpl.get(); instantiateAndSetEventQualifierSerializer(clazz); } else { logger.warn("No {}.{} found on the classpath. Attempting to generate and load.", SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME); final Class<? extends EventQualifierSerializer> clazz; try { clazz = Assert.notNull(generateAndLoad()); } catch (final Throwable t) { throw new RuntimeException("Could not generate " + EventQualifierSerializer.SERIALIZER_CLASS_NAME, t); } logger.info("Successfully generated and loaded {}.{}", SERIALIZER_PACKAGE_NAME, SERIALIZER_CLASS_NAME); instantiateAndSetEventQualifierSerializer(clazz); } }
public static Optional<File> getNewest(final Set<String> locations) { return locations.stream() .map(url -> getFileIfExists(url)) .filter(f -> f != null) .max(Comparator.comparingLong(f -> f.lastModified())); }
public static String generateClassFile(final String packageName, final String simpleClassName, final String sourceDir, final String source, final String outputPath) { final File outputDir = new File(sourceDir + File.separator + RebindUtils.packageNameToDirName(packageName) + File.separator); final File classOutputPath = new File(outputPath); //noinspection ResultOfMethodCallIgnored outputDir.mkdirs(); final File sourceFile = new File(outputDir.getAbsolutePath() + File.separator + simpleClassName + ".java"); RebindUtils.writeStringToFile(sourceFile, source); return compileClass(outputDir.getAbsolutePath(), packageName, simpleClassName, classOutputPath.getAbsolutePath()); }
@SuppressWarnings("unchecked") public static Class<? extends MarshallerFactory> getGeneratedMarshallerFactoryForServer() { final String packageName = MarshallersGenerator.SERVER_MARSHALLER_PACKAGE_NAME; final String simpleClassName = MarshallersGenerator.SERVER_MARSHALLER_CLASS_NAME; final String fullyQualifiedClassName = packageName + "." + simpleClassName; final Optional<Class<?>> generatedMarshaller = ClassChangeUtil.loadClassIfPresent(packageName, simpleClassName); if (generatedMarshaller.isPresent()) { return (Class<? extends MarshallerFactory>) generatedMarshaller.get(); } else if (!MarshallingGenUtil.isForceStaticMarshallers()) { return null; } else { log.info("couldn't find {} class, attempting to generate ...", fullyQualifiedClassName); final String classStr = MarshallerGeneratorFactory.getFor(null, MarshallerOutputTarget.Java) .generate(packageName, simpleClassName); return (Class<? extends MarshallerFactory>) ClassChangeUtil.compileAndLoadFromSource(packageName, simpleClassName, classStr); } } }
final Set<String> locations = getClassLocations(packageName, simpleClassName); final Optional<File> newest = getNewest(locations); return Optional.of(loadClassDefinition(newest.get().getAbsolutePath(), packageName, simpleClassName));
public static Class<?> compileAndLoad(final File sourceFile, final String packageName, final String className) throws IOException { return compileAndLoad(sourceFile.getParentFile().getAbsolutePath(), packageName, className); }
public static void generateClassFileInDiscoveredDirs(final GeneratorContext context, final String packageName, final String simpleClassName, final String sourceOutputTemp, final String source) { forEachDiscoveredOutputDir(context, outputDirCdt -> { try { final String classFilePath = ClassChangeUtil.generateClassFile(packageName, simpleClassName, sourceOutputTemp, source, outputDirCdt.getAbsolutePath()); log.info("** Wrote {}.{} class to {}", packageName, simpleClassName, classFilePath); } catch (final Throwable t) { log.warn("Encountered error while trying to generate {}.{} class in {}", packageName, simpleClassName, outputDirCdt.getAbsolutePath()); } }); }
final File file = getFileIfExists(url.getFile()); if (file != null) { classpathElements.add(file); sb.append(findAllJarsByManifest());
public static Optional<File> getNewest(final Set<String> locations) { return locations.stream() .map(url -> getFileIfExists(url)) .filter(f -> f != null) .max(Comparator.comparingLong(f -> f.lastModified())); }
public static String generateClassFile(final String packageName, final String simpleClassName, final String sourceDir, final String source, final String outputPath) { final File outputDir = new File(sourceDir + File.separator + RebindUtils.packageNameToDirName(packageName) + File.separator); final File classOutputPath = new File(outputPath); //noinspection ResultOfMethodCallIgnored outputDir.mkdirs(); final File sourceFile = new File(outputDir.getAbsolutePath() + File.separator + simpleClassName + ".java"); RebindUtils.writeStringToFile(sourceFile, source); return compileClass(outputDir.getAbsolutePath(), packageName, simpleClassName, classOutputPath.getAbsolutePath()); }
public static Class<?> compileAndLoad(final String sourcePath, final String packageName, final String className, final String outputPath) throws IOException { final String outputLocation = compileClass(sourcePath, packageName, className, outputPath); return loadClassDefinition(outputLocation, packageName, className); }