All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.jhipster.loaded.JHipsterPluginManagerReloadPlugin Maven / Gradle / Ivy

package io.github.jhipster.loaded;

import io.github.jhipster.loaded.reloader.Reloader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.ConfigurableApplicationContext;
import org.springsource.loaded.Plugins;
import org.springsource.loaded.ReloadEventProcessorPlugin;

import java.util.Collection;

/**
 * Automatically re-configures classes when Spring Loaded triggers a hot reload event.
 *
 * 

* Supported technologies are *

    *
  • Spring: dependency injection and the post-construct hook are triggered
  • *
  • Jackson: the serializer and deserializer caches are invalidated on JPA beans and DTOs
  • *
*

*

* To have Spring Loaded working, run your Application class with these VM options: * "-javaagent:spring_loaded/springloaded-jhipster.jar -noverify " *

*/ public class JHipsterPluginManagerReloadPlugin implements ReloadEventProcessorPlugin { private final Logger log = LoggerFactory.getLogger(JHipsterPluginManagerReloadPlugin.class); private static JHipsterReloaderThread jHipsterReloaderThread; private String projectPackageName; public JHipsterPluginManagerReloadPlugin(ConfigurableApplicationContext ctx) { projectPackageName = ctx.getEnvironment().getProperty("hotReload.package.project"); } @Override public boolean shouldRerunStaticInitializer(String typename, Class aClass, String encodedTimestamp) { return true; } public void reloadEvent(String typename, Class clazz, String encodedTimestamp) { if (!typename.startsWith(projectPackageName)) { log.trace("This class is not in the application package, nothing to do"); return; } if (typename.contains("$$EnhancerBy") || typename.contains("$$FastClassBy")) { log.trace("This is a CGLIB proxy, nothing to do"); return; } jHipsterReloaderThread.reloadEvent(typename, clazz); } public static void register(ConfigurableApplicationContext ctx, Collection reloaders, ClassLoader classLoader) { jHipsterReloaderThread = new JHipsterReloaderThread(ctx, reloaders); JHipsterReloaderThread.register(jHipsterReloaderThread); JHipsterFileSystemWatcher.register(classLoader, ctx); Plugins.registerGlobalPlugin(new JHipsterPluginManagerReloadPlugin(ctx)); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy