You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2010/03/25 13:36:37 UTC

svn commit: r927369 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/BeanManagerBean.java container/InjectableBeanManager.java

Author: struberg
Date: Thu Mar 25 12:36:37 2010
New Revision: 927369

URL: http://svn.apache.org/viewvc?rev=927369&view=rev
Log:
OWB-336 create a serializable BeanManger facade in the BeanManagerBean#create

Added:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java
Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java?rev=927369&r1=927368&r2=927369&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/BeanManagerBean.java Thu Mar 25 12:36:37 2010
@@ -17,7 +17,7 @@ import javax.enterprise.context.spi.Crea
 import javax.enterprise.inject.spi.BeanManager;
 
 import org.apache.webbeans.annotation.ApplicationScopeLiteral;
-import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.container.InjectableBeanManager;
 
 public class BeanManagerBean extends AbstractOwbBean<BeanManager>
 {
@@ -34,7 +34,7 @@ public class BeanManagerBean extends Abs
     {
         if (this.manager == null)
         {
-            manager = BeanManagerImpl.getManager();
+            manager = new InjectableBeanManager();
         }
 
         return manager;
@@ -46,7 +46,7 @@ public class BeanManagerBean extends Abs
         this.manager = null;
     }
     
-    /* (non-Javadoc)
+    /**
      * @see org.apache.webbeans.component.AbstractOwbBean#isPassivationCapable()
      */
     @Override

Added: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java?rev=927369&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectableBeanManager.java Thu Mar 25 12:36:37 2010
@@ -0,0 +1,214 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.webbeans.container;
+
+import java.io.Serializable;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.List;
+import java.util.Set;
+
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.enterprise.context.spi.Context;
+import javax.enterprise.context.spi.Contextual;
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.enterprise.inject.spi.Decorator;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.enterprise.inject.spi.InjectionTarget;
+import javax.enterprise.inject.spi.InterceptionType;
+import javax.enterprise.inject.spi.Interceptor;
+import javax.enterprise.inject.spi.ObserverMethod;
+
+/**
+ * <p>This implementation of the {@link BeanManager} will get used
+ * for whenever a BeanManager gets injected into a bean:
+ * <pre>
+ *   private @Inject BeanManager beanManager;
+ * </pre>
+ * </p>
+ * This class is Serializable and always resolves the current
+ * instance of the central BeanManager automatically.
+ */
+public class InjectableBeanManager implements BeanManager, Serializable 
+{
+
+    private static final long serialVersionUID = 1L;
+    
+    private transient BeanManager bm;
+    
+    public InjectableBeanManager()
+    {
+        this.bm = BeanManagerImpl.getManager();
+    }
+    
+    @Override
+    public <T> AnnotatedType<T> createAnnotatedType(Class<T> type)
+    {
+        return bm.createAnnotatedType(type);
+    }
+
+    @Override
+    public <T> CreationalContext<T> createCreationalContext(Contextual<T> contextual)
+    {
+        return bm.createCreationalContext(contextual);
+    }
+
+    @Override
+    public <T> InjectionTarget<T> createInjectionTarget(AnnotatedType<T> type)
+    {
+        return createInjectionTarget(type);
+    }
+
+    @Override
+    public void fireEvent(Object event, Annotation... qualifiers)
+    {
+        bm.fireEvent(event, qualifiers);
+    }
+
+    @Override
+    public Set<Bean<?>> getBeans(String name)
+    {
+        return bm.getBeans(name);
+    }
+
+    @Override
+    public Set<Bean<?>> getBeans(Type beanType, Annotation... qualifiers)
+    {
+        return bm.getBeans(beanType, qualifiers);
+    }
+
+    @Override
+    public Context getContext(Class<? extends Annotation> scope)
+    {
+        return bm.getContext(scope);
+    }
+
+    @Override
+    public ELResolver getELResolver()
+    {
+        return bm.getELResolver();
+    }
+
+    @Override
+    public Object getInjectableReference(InjectionPoint injectionPoint, CreationalContext<?> ctx)
+    {
+        return bm.getInjectableReference(injectionPoint, ctx);
+    }
+
+    @Override
+    public Set<Annotation> getInterceptorBindingDefinition(Class<? extends Annotation> qualifier)
+    {
+        return bm.getInterceptorBindingDefinition(qualifier);
+    }
+
+    @Override
+    public Bean<?> getPassivationCapableBean(String id)
+    {
+        return bm.getPassivationCapableBean(id);
+    }
+
+    @Override
+    public Object getReference(Bean<?> bean, Type beanType, CreationalContext<?> ctx)
+    {
+        return bm.getReference(bean, beanType, ctx);
+    }
+
+    @Override
+    public Set<Annotation> getStereotypeDefinition(Class<? extends Annotation> stereotype)
+    {
+        return bm.getStereotypeDefinition(stereotype);
+    }
+
+    @Override
+    public boolean isInterceptorBinding(Class<? extends Annotation> annotationType)
+    {
+        return bm.isInterceptorBinding(annotationType);
+    }
+
+    @Override
+    public boolean isNormalScope(Class<? extends Annotation> annotationType)
+    {
+        return bm.isNormalScope(annotationType);
+    }
+
+    @Override
+    public boolean isPassivatingScope(Class<? extends Annotation> annotationType)
+    {
+        return bm.isPassivatingScope(annotationType);
+    }
+
+    @Override
+    public boolean isQualifier(Class<? extends Annotation> annotationType)
+    {
+        return bm.isQualifier(annotationType);
+    }
+
+    @Override
+    public boolean isScope(Class<? extends Annotation> annotationType)
+    {
+        return bm.isScope(annotationType);
+    }
+
+    @Override
+    public boolean isStereotype(Class<? extends Annotation> annotationType)
+    {
+        return bm.isStereotype(annotationType);
+    }
+
+    @Override
+    public <X> Bean<? extends X> resolve(Set<Bean<? extends X>> beans)
+    {
+        return bm.resolve(beans);
+    }
+
+    @Override
+    public List<Decorator<?>> resolveDecorators(Set<Type> types, Annotation... qualifiers)
+    {
+        return bm.resolveDecorators(types, qualifiers);
+    }
+
+    @Override
+    public List<Interceptor<?>> resolveInterceptors(InterceptionType type, Annotation... interceptorBindings)
+    {
+        return bm.resolveInterceptors(type, interceptorBindings);
+    }
+
+    @Override
+    public <T> Set<ObserverMethod<? super T>> resolveObserverMethods(T event, Annotation... qualifiers)
+    {
+        return bm.resolveObserverMethods(event, qualifiers);
+    }
+
+    @Override
+    public void validate(InjectionPoint injectionPoint)
+    {
+        bm.validate(injectionPoint);
+    }
+
+    @Override
+    public ExpressionFactory wrapExpressionFactory(ExpressionFactory expressionFactory)
+    {
+        return bm.wrapExpressionFactory(expressionFactory);
+    }
+
+}