You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by dj...@apache.org on 2011/01/08 21:00:11 UTC
svn commit: r1056783 - in /openwebbeans/trunk:
webbeans-impl/src/main/java/org/apache/webbeans/config/
webbeans-web/src/main/java/org/apache/webbeans/web/context/
webbeans-web/src/main/java/org/apache/webbeans/web/failover/
Author: djencks
Date: Sat Jan 8 20:00:11 2011
New Revision: 1056783
URL: http://svn.apache.org/viewvc?rev=1056783&view=rev
Log:
OWB-503 tweak WebContextsService
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java
openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java
openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBag.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java?rev=1056783&r1=1056782&r2=1056783&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/WebBeansContext.java Sat Jan 8 20:00:11 2011
@@ -77,33 +77,33 @@ public class WebBeansContext
private WebBeansNameSpaceContainer webBeansNameSpaceContainer = new WebBeansNameSpaceContainer();
private XMLSpecializesManager xmlSpecializesManager = new XMLSpecializesManager();
- private final Map<String, Object> managerMap = new HashMap<String, Object>();
+ private final Map<Class<?>, Object> managerMap = new HashMap<Class<?>, Object>();
private final Map<Class<?>, Object> serviceMap = new HashMap<Class<?>, Object>();
public WebBeansContext()
{
// Allow the WebBeansContext itself to be looked up
- managerMap.put(this.getClass().getName(), this);
+ managerMap.put(this.getClass(), this);
// Add them all into the map for backwards compatibility
- managerMap.put(AlternativesManager.class.getName(), alternativesManager);
- managerMap.put(AnnotatedElementFactory.class.getName(), annotatedElementFactory);
- managerMap.put(BeanManagerImpl.class.getName(), beanManagerImpl);
- managerMap.put(ConversationManager.class.getName(), conversationManager);
- managerMap.put(CreationalContextFactory.class.getName(), creationalContextFactory);
- managerMap.put(DecoratorsManager.class.getName(), decoratorsManager);
- managerMap.put(ExtensionLoader.class.getName(), extensionLoader);
- managerMap.put(InterceptorsManager.class.getName(), interceptorsManager);
- managerMap.put(JMSManager.class.getName(), jmsManager);
- managerMap.put(JavassistProxyFactory.class.getName(), javassistProxyFactory);
- managerMap.put(OpenWebBeansConfiguration.class.getName(), openWebBeansConfiguration);
- managerMap.put(PluginLoader.class.getName(), pluginLoader);
- managerMap.put(SerializableBeanVault.class.getName(), serializableBeanVault);
- managerMap.put(StereoTypeManager.class.getName(), stereoTypeManager);
- managerMap.put(WebBeansNameSpaceContainer.class.getName(), webBeansNameSpaceContainer);
- managerMap.put(XMLAnnotationTypeManager.class.getName(), xmlAnnotationTypeManager);
- managerMap.put(XMLSpecializesManager.class.getName(), xmlSpecializesManager);
+ managerMap.put(AlternativesManager.class, alternativesManager);
+ managerMap.put(AnnotatedElementFactory.class, annotatedElementFactory);
+ managerMap.put(BeanManagerImpl.class, beanManagerImpl);
+ managerMap.put(ConversationManager.class, conversationManager);
+ managerMap.put(CreationalContextFactory.class, creationalContextFactory);
+ managerMap.put(DecoratorsManager.class, decoratorsManager);
+ managerMap.put(ExtensionLoader.class, extensionLoader);
+ managerMap.put(InterceptorsManager.class, interceptorsManager);
+ managerMap.put(JMSManager.class, jmsManager);
+ managerMap.put(JavassistProxyFactory.class, javassistProxyFactory);
+ managerMap.put(OpenWebBeansConfiguration.class, openWebBeansConfiguration);
+ managerMap.put(PluginLoader.class, pluginLoader);
+ managerMap.put(SerializableBeanVault.class, serializableBeanVault);
+ managerMap.put(StereoTypeManager.class, stereoTypeManager);
+ managerMap.put(WebBeansNameSpaceContainer.class, webBeansNameSpaceContainer);
+ managerMap.put(XMLAnnotationTypeManager.class, xmlAnnotationTypeManager);
+ managerMap.put(XMLSpecializesManager.class, xmlSpecializesManager);
}
@Deprecated
@@ -264,38 +264,45 @@ public class WebBeansContext
return getService(ContextsService.class);
}
- public Object get(String singletonName)
+ private Object get(String singletonName)
+ {
+ //Load class
+ Class<?> clazz = ClassUtil.getClassFromName(singletonName);
+ if (clazz == null)
+ {
+ throw new WebBeansException("Class not found exception in creating instance with class : " + singletonName,
+ new ClassNotFoundException("Class with name: " + singletonName + " is not found in the system"));
+ }
+ return get(clazz);
+
+ }
+
+ public <T> T get(Class<T> clazz)
{
//util.Track.get(singletonName);
- Object object = managerMap.get(singletonName);
+ T object = clazz.cast(managerMap.get(clazz));
/* No singleton for this application, create one */
if (object == null)
{
- object = createInstance(singletonName);
+ object = createInstance(clazz);
//Save it
- managerMap.put(singletonName, object);
+ managerMap.put(clazz, object);
}
return object;
}
- private Object createInstance(String singletonName)
+ private <T> T createInstance(Class<T> clazz)
{
try
{
- //Load class
- Class<?> clazz = ClassUtil.getClassFromName(singletonName);
- if (clazz == null)
- {
- throw new ClassNotFoundException("Class with name: " + singletonName + " is not found in the system");
- }
// first try constructor that takes this object as an argument
try
{
- Constructor<?> constructor = clazz.getConstructor(WebBeansContext.class);
+ Constructor<T> constructor = clazz.getConstructor(WebBeansContext.class);
return constructor.newInstance(this);
}
catch (NoSuchMethodException e)
@@ -305,29 +312,25 @@ public class WebBeansContext
// then try a no-arg constructor
try
{
- Constructor<?> constructor = clazz.getConstructor();
+ Constructor<T> constructor = clazz.getConstructor();
return constructor.newInstance();
}
catch (NoSuchMethodException e)
{
- throw new WebBeansException("No suitable constructor : " + singletonName, e.getCause());
+ throw new WebBeansException("No suitable constructor : " + clazz.getName(), e.getCause());
}
}
catch (InstantiationException e)
{
- throw new WebBeansException("Unable to instantiate class : " + singletonName, e.getCause());
+ throw new WebBeansException("Unable to instantiate class : " + clazz.getName(), e.getCause());
}
catch (InvocationTargetException e)
{
- throw new WebBeansException("Unable to instantiate class : " + singletonName, e.getCause());
+ throw new WebBeansException("Unable to instantiate class : " + clazz.getName(), e.getCause());
}
catch (IllegalAccessException e)
{
- throw new WebBeansException("Illegal access exception in creating instance with class : " + singletonName, e);
- }
- catch (ClassNotFoundException e)
- {
- throw new WebBeansException("Class not found exception in creating instance with class : " + singletonName, e);
+ throw new WebBeansException("Illegal access exception in creating instance with class : " + clazz.getName(), e);
}
}
Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java?rev=1056783&r1=1056782&r2=1056783&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java (original)
+++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/context/WebContextsService.java Sat Jan 8 20:00:11 2011
@@ -82,7 +82,7 @@ public class WebContextsService extends
private static Map<ServletContext, SingletonContext> currentSingletonContexts = new ConcurrentHashMap<ServletContext, SingletonContext>();
/**Session context manager*/
- private final SessionContextManager sessionCtxManager;
+ private final SessionContextManager sessionCtxManager = new SessionContextManager();
/**Conversation context manager*/
private final ConversationManager conversationManager;
@@ -126,9 +126,13 @@ public class WebContextsService extends
supportsConversation = webBeansContext.getOpenWebBeansConfiguration().supportsConversation();
failoverService = webBeansContext.getService(FailOverService.class);
conversationManager = webBeansContext.getConversationManager();
- sessionCtxManager = webBeansContext.getService(SessionContextManager.class);
}
-
+
+ public SessionContextManager getSessionContextManager()
+ {
+ return sessionCtxManager;
+ }
+
/**
* {@inheritDoc}
*/
Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBag.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBag.java?rev=1056783&r1=1056782&r2=1056783&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBag.java (original)
+++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/failover/FailOverBag.java Sat Jan 8 20:00:11 2011
@@ -37,6 +37,7 @@ import org.apache.webbeans.context.Sessi
import org.apache.webbeans.conversation.ConversationManager;
import org.apache.webbeans.spi.FailOverService;
import org.apache.webbeans.web.context.SessionContextManager;
+import org.apache.webbeans.web.context.WebContextsService;
/**
*
@@ -74,7 +75,7 @@ public class FailOverBag implements Seri
public void updateOwbFailOverBag(HttpSession session, FailOverService service)
{
// get the session context
- SessionContextManager sessionManager = webBeansContext.getService(SessionContextManager.class);
+ SessionContextManager sessionManager = ((WebContextsService)webBeansContext.getContextsService()).getSessionContextManager();
sessionContext = sessionManager.getSessionContextWithSessionId(session.getId());
// get all conversation contexts
@@ -88,7 +89,7 @@ public class FailOverBag implements Seri
{
if (sessionContext != null)
{
- SessionContextManager sessionManager = webBeansContext.getService(SessionContextManager.class);
+ SessionContextManager sessionManager = ((WebContextsService)webBeansContext.getContextsService()).getSessionContextManager();
sessionManager.addNewSessionContext(sessionId, sessionContext);
sessionContext.setActive(true);
}