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); } }
@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); } } }
@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); } } }