Lukasz, why were you removing the logging gates, aka the if blocks around log statements? I agree that for simple String parameters (without concatenation) they might be left out, but for everything else they really help a lot for performance - that's why I use them in general.
We should even consider reviewing S2 code if there are more unguarded log statements, to squeeze out the last bit of performance :) See also http://logging.apache.org/log4j/1.2/faq.html#a2.3 - René On 01.05.11 16:29, lukaszlen...@apache.org wrote: > Author: lukaszlenart > Date: Sun May 1 14:29:02 2011 > New Revision: 1098322 > > URL: http://svn.apache.org/viewvc?rev=1098322&view=rev > Log: > Removes unnecessary checking for log level and uses ConcurrentHashMap instead > of HashMap > > Modified: > > struts/sandbox/trunk/struts2-cdi-plugin/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java > > Modified: > struts/sandbox/trunk/struts2-cdi-plugin/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java > URL: > http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-cdi-plugin/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java?rev=1098322&r1=1098321&r2=1098322&view=diff > ============================================================================== > --- > struts/sandbox/trunk/struts2-cdi-plugin/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java > (original) > +++ > struts/sandbox/trunk/struts2-cdi-plugin/src/main/java/org/apache/struts2/cdi/CdiObjectFactory.java > Sun May 1 14:29:02 2011 > @@ -23,14 +23,14 @@ import com.opensymphony.xwork2.ObjectFac > import com.opensymphony.xwork2.util.logging.Logger; > import com.opensymphony.xwork2.util.logging.LoggerFactory; > > +import javax.enterprise.context.spi.CreationalContext; > import javax.enterprise.inject.spi.BeanManager; > import javax.enterprise.inject.spi.InjectionTarget; > -import javax.enterprise.context.spi.CreationalContext; > import javax.naming.Context; > import javax.naming.InitialContext; > import javax.naming.NamingException; > import java.util.Map; > -import java.util.HashMap; > +import java.util.concurrent.ConcurrentHashMap; > > /** > * CdiObjectFactory allows Struts 2 managed objects, like Actions, > Interceptors or Results, to be injected by a Contexts > @@ -52,7 +52,7 @@ public class CdiObjectFactory extends Ob > protected BeanManager beanManager; > protected CreationalContext ctx; > > - Map<Class<?>, InjectionTarget<?>> injectionTargetCache = new > HashMap<Class<?>, InjectionTarget<?>>(); > + Map<Class<?>, InjectionTarget<?>> injectionTargetCache = new > ConcurrentHashMap<Class<?>, InjectionTarget<?>>(); > > public CdiObjectFactory() { > super(); > @@ -76,25 +76,17 @@ public class CdiObjectFactory extends Ob > BeanManager bm; > try { > Context initialContext = new InitialContext(); > - if (LOG.isInfoEnabled()) { > - LOG.info("[findBeanManager]: Checking for BeanManager under > JNDI key " + CDI_JNDIKEY_BEANMANAGER_COMP); > - } > + LOG.info("[findBeanManager]: Checking for BeanManager under JNDI > key " + CDI_JNDIKEY_BEANMANAGER_COMP); > try { > bm = (BeanManager) > initialContext.lookup(CdiObjectFactory.CDI_JNDIKEY_BEANMANAGER_COMP); > - } catch ( NamingException e ) { > - if (LOG.isWarnEnabled()) { > - LOG.warn("[findBeanManager]: Lookup failed."); > - } > - if (LOG.isInfoEnabled()) { > - LOG.info("[findBeanManager]: Checking for BeanManager > under JNDI key " + CDI_JNDIKEY_BEANMANAGER_APP); > - } > + } catch (NamingException e) { > + LOG.warn("[findBeanManager]: Lookup failed.", e); > + LOG.info("[findBeanManager]: Checking for BeanManager under > JNDI key " + CDI_JNDIKEY_BEANMANAGER_APP); > bm = (BeanManager) > initialContext.lookup(CdiObjectFactory.CDI_JNDIKEY_BEANMANAGER_APP); > } > - if (LOG.isInfoEnabled()) { > - LOG.info("[findBeanManager]: BeanManager found."); > - } > + LOG.info("[findBeanManager]: BeanManager found."); > return bm; > - } catch ( NamingException e ) { > + } catch (NamingException e) { > LOG.error("Could not get BeanManager from JNDI context", e); > } > return null; > @@ -102,7 +94,7 @@ public class CdiObjectFactory extends Ob > > @Override > @SuppressWarnings("unchecked") > - public Object buildBean( String className, Map<String, Object> > extraContext, boolean injectInternal ) > + public Object buildBean(String className, Map<String, Object> > extraContext, boolean injectInternal) > throws Exception { > > Class<?> clazz = getClassInstance(className); > @@ -124,19 +116,16 @@ public class CdiObjectFactory extends Ob > * will be created. > * > * @param clazz The class to get a InjectionTarget instance for. > - * > * @return if found in cache, an existing instance. A new instance > otherwise. > */ > - protected InjectionTarget<?> getInjectionTarget( Class<?> clazz ) { > + protected InjectionTarget<?> getInjectionTarget(Class<?> clazz) { > InjectionTarget<?> result; > - synchronized ( this ) { > - result = injectionTargetCache.get(clazz); > - if (result == null) { > - result = > beanManager.createInjectionTarget(beanManager.createAnnotatedType(clazz)); > - injectionTargetCache.put(clazz, result); > - } > - > + result = injectionTargetCache.get(clazz); > + if (result == null) { > + result = > beanManager.createInjectionTarget(beanManager.createAnnotatedType(clazz)); > + injectionTargetCache.put(clazz, result); > } > + > return result; > } > > @@ -144,11 +133,10 @@ public class CdiObjectFactory extends Ob > * Simple wrapper for CreationalContext creation. > * > * @param beanManager the BeanManager to use for creating the context. > - * > * @return the context to use, if given BeanManager was not > <tt>null</tt>. <tt>null</tt> otherwise. > */ > @SuppressWarnings("unchecked") > - protected CreationalContext buildNonContextualCreationalContext( > BeanManager beanManager ) { > + protected CreationalContext > buildNonContextualCreationalContext(BeanManager beanManager) { > return beanManager != null ? > beanManager.createCreationalContext(null) : null; > } > } > > -- René Gielen IT-Neering.net Saarstrasse 100, 52062 Aachen, Germany Tel: +49-(0)241-4010770 Fax: +49-(0)241-4010771 Cel: +49-(0)163-2844164 http://twitter.com/rgielen --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@struts.apache.org For additional commands, e-mail: dev-h...@struts.apache.org