/** * */ package org.minnal.instrument; import org.activejpa.enhancer.ActiveJpaAgentLoader; import org.minnal.core.Application; import org.minnal.core.Bundle; import org.minnal.core.Container; import org.minnal.core.ContainerAdapter; import org.minnal.core.config.ApplicationConfiguration; import org.minnal.instrument.filter.ResponseTransformationFilter; import org.minnal.instrument.util.MinnalModule; /** * @author ganeshs * */ public class InstrumentationBundle extends ContainerAdapter implements Bundle<InstrumentationBundleConfiguration> { private NamingStrategy namingStrategy = new UnderscoreNamingStrategy(); public void init(Container container, InstrumentationBundleConfiguration configuration) { getActiveJpaAgentLoader().loadAgent(); container.registerListener(this); } protected ActiveJpaAgentLoader getActiveJpaAgentLoader() { return ActiveJpaAgentLoader.instance(); } public void start() { } public void stop() { } @Override public void postMount(Application<ApplicationConfiguration> application) { application.addFilter(new ResponseTransformationFilter(application.getConfiguration().getResponsePropertiesToExclude(), namingStrategy)); application.getObjectMapper().registerModule(new MinnalModule()); if (application.getConfiguration().isInstrumentationEnabled()) { createApplicationEnhancer(application).enhance(); } } protected ApplicationEnhancer createApplicationEnhancer(Application<ApplicationConfiguration> application) { return new MinnalApplicationEnhancer(application, namingStrategy); } @Override public int getOrder() { return Integer.MIN_VALUE; } }