[webbeans-commits] Webbeans SVN: r3715 - in ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans: bean/builder and 4 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Mon Sep 21 17:13:40 EDT 2009


Author: kabir.khan at jboss.com
Date: 2009-09-21 17:13:38 -0400 (Mon, 21 Sep 2009)
New Revision: 3715

Added:
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingDecorator.java
Removed:
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingDecorator.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ForwardingBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ForwardingDecorator.java
Modified:
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractReceiverBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/DecoratorImpl.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethod.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ManagedBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/NewManagedBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/NewSessionBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ProducerField.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethod.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/SessionBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractBeanBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractClassBeanBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractProducerBeanBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractReceiverBeanBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/BeanBuilderFactoryImpl.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/BeanBuilderImpl.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/DecoratorBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/DisposalMethodBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ManagedBeanBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/NewManagedBeanBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/NewSessionBeanBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ProducerFieldBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ProducerMethodBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/RIBeanBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/SessionBeanBuilder.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builtin/AbstractBuiltInBean.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ee/EEResourceProducerField.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployer.java
   ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/util/Reflections.java
Log:
TCK 100%

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -18,6 +18,7 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
 
@@ -25,18 +26,14 @@
 import javax.enterprise.context.Dependent;
 import javax.enterprise.inject.Specializes;
 import javax.enterprise.inject.spi.Bean;
-import javax.inject.Named;
 import javax.inject.Qualifier;
 
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.injection.WBInjectionPoint;
 import org.jboss.webbeans.introspector.WBAnnotated;
 import org.jboss.webbeans.introspector.WBField;
 import org.jboss.webbeans.introspector.WBParameter;
-import org.jboss.webbeans.literal.AnyLiteral;
-import org.jboss.webbeans.literal.DefaultLiteral;
 import org.jboss.webbeans.log.Log;
 import org.jboss.webbeans.log.Logging;
 import org.jboss.webbeans.metadata.cache.MergedStereotypes;
@@ -47,16 +44,13 @@
  * An abstract bean representation common for all beans
  * 
  * @author Pete Muir
- * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ *
  * @param <T> the type of bean
  * @param <E> the Class<?> of the bean type
  */
 public abstract class AbstractBean<T, E> extends RIBean<T>
 {
-
-//   private static final Annotation ANY_LITERAL = new AnyLiteral();
-//   private static final Annotation CURRENT_LITERAL = new DefaultLiteral();
-//
    private final boolean proxyable;
 
    // Logger
@@ -141,12 +135,16 @@
     * Initializes the bean and its metadata
     */
    @Override
-   public void initialize(BeanDeployerEnvironment environment)
+   public void initialize()
    {
-      checkDelegateInjectionPoints();
+      if (!initialized)
+      {
+         checkDelegateInjectionPoints();
+         initialized = true;
+      }
    }
    
-   protected void checkDelegateInjectionPoints()
+   public void checkDelegateInjectionPoints()
    {
       if (this.delegateInjectionPoints.size() > 0)
       {
@@ -173,7 +171,7 @@
 
    protected Set<WBInjectionPoint<?, ?>> getDelegateInjectionPoints()
    {
-      return delegateInjectionPoints;
+      return Collections.unmodifiableSet(delegateInjectionPoints);
    }
 
    private boolean checkInjectionPointsAreSerializable()

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -47,8 +47,8 @@
  * An abstract bean representation common for class-based beans
  * 
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
- * @param <T>
  * @param <E>
  */
 public abstract class AbstractClassBean<T> extends AbstractBean<T, Class<T>> implements InjectionTarget<T>
@@ -88,13 +88,13 @@
          Set<Type> types,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<Decorator<?>> decorators,
          boolean policy,
          boolean serializable,
          boolean proxyable,
          Set<Annotation> bindings,
          Set<String> dependencies,
          Class<T> proxyClassForDecorators,
-         List<Decorator<?>> decorators,
          WBMethod<?, ?> postConstruct,
          WBMethod<?, ?> preDestroy)
    {
@@ -113,13 +113,13 @@
       };
       this.dependencies = dependencies;
       this.proxyClassForDecorators = proxyClassForDecorators;
-      this.decorators = decorators;
       this.postConstruct = postConstruct;
       this.preDestroy = preDestroy;
       this.injectableFields = initInjectableFields();
       this.initializerMethods = initInitializerMethods();
 
       checkBeanImplementation();
+      this.decorators = decorators;
       checkType();
    }
    
@@ -133,6 +133,11 @@
       return this.decorators != null && this.decorators.size() > 0;
    }
    
+   protected List<Decorator<?>> initDecorators()
+   {
+      return getManager().resolveDecorators(getTypes(), getQualifiers());
+   }
+   
    protected T applyDecorators(T instance, CreationalContext<T> creationalContext, InjectionPoint originalInjectionPoint)
    {
       List<SerializableBeanInstance<DecoratorImpl<Object>, Object>> decoratorInstances = new ArrayList<SerializableBeanInstance<DecoratorImpl<Object>,Object>>();

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -36,7 +36,6 @@
 
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.introspector.WBMember;
 import org.jboss.webbeans.log.LogProvider;
 import org.jboss.webbeans.log.Logging;
@@ -50,6 +49,7 @@
  * The implicit producer bean
  * 
  * @author Gavin King
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T>
  * @param <S>
@@ -88,48 +88,6 @@
       return getDeclaringBean().getBeanClass();
    }
 
-//   /**
-//    * Initializes the API types
-//    */
-//   @Override
-//   protected void initTypes()
-//   {
-//      if (getType().isArray() || getType().isPrimitive())
-//      {
-//         Set<Type> types = new HashSet<Type>();
-//         types = new HashSet<Type>();
-//         types.add(getType());
-//         types.add(Object.class);
-//         super.types = types;
-//      }
-//      else if (getType().isInterface())
-//      {
-//         Set<Type> types = new HashSet<Type>();
-//         types.add(Object.class);
-//         types.addAll(getAnnotatedItem().getTypeClosure());
-//         super.types = types;
-//      }
-//      else
-//      {
-//         super.initTypes();
-//      }
-//   }
-
-//   /**
-//    * Initializes the type
-//    */
-//   protected void initType()
-//   {
-//      try
-//      {
-//         this.type = getAnnotatedItem().getJavaClass();
-//      }
-//      catch (ClassCastException e)
-//      {
-//         throw new RuntimeException(" Cannot cast producer type " + getAnnotatedItem().getJavaClass() + " to bean type " + (getDeclaredBeanType() == null ? " unknown " : getDeclaredBeanType()), e);
-//      }
-//   }
-
    /**
     * Gets the declared bean type
     * 
@@ -175,11 +133,13 @@
     * Initializes the bean and its metadata
     */
    @Override
-   public void initialize(BeanDeployerEnvironment environment)
+   public void initialize()
    {
-      getDeclaringBean().initialize(environment);
-      super.initialize(environment);
-      checkProducerReturnType();
+      if (!isInitialized())
+      {
+         super.initialize();
+         checkProducerReturnType();
+      }
    }
 
    /**
@@ -234,38 +194,6 @@
       }
    }
 
-//   @Override
-//   protected void initScopeType()
-//   {
-//      Set<Annotation> scopeAnnotations = new HashSet<Annotation>();
-//      scopeAnnotations.addAll(getAnnotatedItem().getMetaAnnotations(Scope.class));
-//      scopeAnnotations.addAll(getAnnotatedItem().getMetaAnnotations(NormalScope.class));
-//      if (scopeAnnotations.size() > 1)
-//      {
-//         throw new DefinitionException("At most one scope may be specified");
-//      }
-//      if (scopeAnnotations.size() == 1)
-//      {
-//         this.scopeType = scopeAnnotations.iterator().next().annotationType();
-//         log.trace("Scope " + scopeType + " specified by annotation");
-//         return;
-//      }
-//
-//      initScopeTypeFromStereotype();
-//
-//      if (this.scopeType == null)
-//      {
-//         this.scopeType = Dependent.class;
-//         log.trace("Using default @Dependent scope");
-//      }
-//   }
-//   
-//   @Override
-//   protected void initSerializable()
-//   {
-//      // No-op
-//   }
-
    @Override
    public boolean isSerializable()
    {

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractReceiverBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractReceiverBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/AbstractReceiverBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -22,10 +22,8 @@
 import java.util.Set;
 
 import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.Alternative;
 
 import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.context.WBCreationalContext;
 import org.jboss.webbeans.log.LogProvider;
 import org.jboss.webbeans.log.Logging;
@@ -33,6 +31,7 @@
 
 /**
  * @author pmuir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  *
  */
 public abstract class AbstractReceiverBean<T, S extends Member> extends AbstractBean<T, S>
@@ -60,12 +59,6 @@
       this.declaringBean = declaringBean;
    }
    
-   @Override
-   public void initialize(BeanDeployerEnvironment environment)
-   {
-      super.initialize(environment);
-   }
-
    /**
     * Gets the receiver of the product
     * 

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/DecoratorImpl.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/DecoratorImpl.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/DecoratorImpl.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -22,6 +22,7 @@
 import java.lang.reflect.Type;
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import javax.enterprise.inject.spi.Decorator;
@@ -29,42 +30,27 @@
 
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.injection.MethodInjectionPoint;
 import org.jboss.webbeans.injection.WBInjectionPoint;
 import org.jboss.webbeans.introspector.WBClass;
 import org.jboss.webbeans.introspector.WBMethod;
 import org.jboss.webbeans.metadata.cache.MergedStereotypes;
 
+/**
+ * 
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
 public class DecoratorImpl<T> extends ManagedBean<T> implements Decorator<T>
 {
 
-   public static <T> Decorator<T> wrapForResolver(final Decorator<T> decorator)
-   {
-      return new ForwardingDecorator<T>()
-      {
+   private WBInjectionPoint<?, ?> delegateInjectionPoint;
+   private final Set<Annotation> delegateBindings = new HashSet<Annotation>(); 
+   private Type delegateType;
+   private Set<Type> delegateTypes;
+   private Set<Type> decoratedTypes;
 
-         @Override
-         public Set<Annotation> getQualifiers()
-         {
-            return delegate().getDelegateQualifiers();
-         }
-
-         @Override
-         public Set<Type> getTypes()
-         {
-            return delegate().getTypes();
-         }
-
-         @Override
-         protected Decorator<T> delegate()
-         {
-            return decorator;
-         }
-
-      };
-   }
-
    /**
     * Creates a decorator bean
     * 
@@ -78,6 +64,7 @@
          String name,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<Decorator<?>> decorators,
          boolean policy,
          boolean proxyable,
          Set<Annotation> bindings,
@@ -86,21 +73,16 @@
          WBMethod<?, ?> preDestroy,
          ManagedBean<?> specializedBean)
    {
-      return new DecoratorImpl<T>(clazz, manager, name, mergedStereotypes, scopeType, policy, proxyable, bindings, dependencies, 
+      return new DecoratorImpl<T>(clazz, manager, name, mergedStereotypes, scopeType, decorators, policy, proxyable, bindings, dependencies, 
             postConstruct, preDestroy, specializedBean);
    }
 
-   private WBInjectionPoint<?, ?> delegateInjectionPoint;
-   private Set<Annotation> delegateBindings;
-   private Type delegateType;
-   private Set<Type> delegateTypes;
-   private Set<Type> decoratedTypes;
-
    protected DecoratorImpl(WBClass<T> type, 
          BeanManagerImpl manager, 
          String name,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<Decorator<?>> decorators,
          boolean policy,
          boolean proxyable,
          Set<Annotation> bindings,
@@ -109,22 +91,15 @@
          WBMethod<?, ?> preDestroy,
          ManagedBean<?> specializedBean)
    {
-      super(type, manager, name, mergedStereotypes, scopeType, policy, proxyable, bindings, dependencies, null, null, 
+      super(type, manager, name, mergedStereotypes, scopeType, decorators, policy, proxyable, bindings, dependencies, null, 
             postConstruct, preDestroy, specializedBean);
-   }
 
-   @Override
-   public void initialize(BeanDeployerEnvironment environment)
-   {
-      if (!isInitialized())
-      {
-         super.initialize(environment);
-         initDelegateInjectionPoint();
-         initDecoratedTypes();
-         initDelegateBindings();
-         initDelegateType();
-         checkDelegateType();
-      }
+      checkDelegateInjectionPoints();
+      initDelegateInjectionPoint();
+      initDecoratedTypes();
+      initDelegateBindings();
+      initDelegateType();
+      checkDelegateType();
    }
 
    protected void initDecoratedTypes()
@@ -140,7 +115,7 @@
    }
 
    @Override
-   protected void checkDelegateInjectionPoints()
+   public void checkDelegateInjectionPoints()
    {
       for (WBInjectionPoint<?, ?> injectionPoint : getDelegateInjectionPoints())
       {
@@ -161,7 +136,6 @@
 
    protected void initDelegateBindings()
    {
-      this.delegateBindings = new HashSet<Annotation>(); 
       this.delegateBindings.addAll(this.delegateInjectionPoint.getQualifiers());
    }
 
@@ -245,4 +219,8 @@
       return super.toString("decorator");
    }
 
+   protected boolean initInjectionPointsAreSerializable()
+   {
+      return false;
+   }
 }

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethod.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethod.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/DisposalMethod.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -20,7 +20,6 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.Set;
 
 import javax.enterprise.context.spi.CreationalContext;
@@ -31,12 +30,16 @@
 
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.injection.MethodInjectionPoint;
 import org.jboss.webbeans.introspector.WBMethod;
 import org.jboss.webbeans.metadata.cache.MergedStereotypes;
 import org.jboss.webbeans.util.Reflections;
 
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
 public class DisposalMethod<T> extends AbstractReceiverBean<T, Method>
 {
 
@@ -57,19 +60,10 @@
       super(declaringBean, manager, name, type, types, mergedStereotypes, null, policy, Reflections.isSerializable(type), proxyable, bindings);
       this.disposalMethodInjectionPoint = MethodInjectionPoint.of(this, disposalMethod);
       this.id = createId("DisposalMethod-" + declaringBean.getName() + "-" + disposalMethod.getSignature().toString());
-//      initBindings();
-//      initType();
-//      initTypes();
-   }
-   
-   @Override
-   public void initialize(BeanDeployerEnvironment environment)
-   {
       addInjectionPoint(disposalMethodInjectionPoint);
-      super.initialize(environment);
       checkDisposalMethod();
    }
-
+   
    @Override
    public WBMethod<T, ?> getAnnotatedItem()
    {
@@ -104,12 +98,6 @@
    }
 
    @Override
-   public Set<Type> getTypes()
-   {
-      return types;
-   }
-
-   @Override
    public String toString()
    {
       return disposalMethodInjectionPoint.toString();

Deleted: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -1,172 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.bean;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Set;
-
-import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.InjectionPoint;
-
-/**
- * A delegating bean
- * 
- * @author Pete Muir
- * 
- * @param <T>
- */
-public abstract class ForwardingBean<T> implements Bean<T>
-{
-
-   /**
-    * Creates an instance of the delegate
-    * 
-    * @return an instance of the delegate
-    */
-   public T create(CreationalContext<T> creationalContext)
-   {
-      return delegate().create(creationalContext);
-   }
-
-   /**
-    * Abstract getter for the delegate
-    * 
-    * @return The delegate
-    */
-   protected abstract Bean<T> delegate();
-
-   /**
-    * Destroys an instance through the delegate
-    * 
-    * @param instance The instance to destroy
-    */
-   public void destroy(T instance, CreationalContext<T> creationalContext)
-   {
-      delegate().destroy(instance, creationalContext);
-   }
-
-   /**
-    * Compares an object with the delegate
-    * 
-    * @return True if equals, false otherwise
-    */
-   @Override
-   public boolean equals(Object obj)
-   {
-      return delegate().equals(obj);
-   }
-
-   public Class<?> getBeanClass()
-   {
-      return delegate().getBeanClass();
-   }
-
-   /**
-    * Gets the binding types of the delegate
-    * 
-    * @return The binding types
-    */
-   public Set<Annotation> getQualifiers()
-   {
-      return delegate().getQualifiers();
-   }
-
-   public Set<InjectionPoint> getInjectionPoints()
-   {
-      return delegate().getInjectionPoints();
-   }
-
-   /**
-    * Gets the name of the delegate
-    * 
-    * @return The name
-    */
-   public String getName()
-   {
-      return delegate().getName();
-   }
-
-   /**
-    * The stereotypes applied to this bean
-    * 
-    * @return stereotypes if any
-    */
-   public Set<Class<? extends Annotation>> getStereotypes()
-   {
-      return delegate().getStereotypes();
-   }
-
-   /**
-    * Gets the scope type of the delegate
-    * 
-    * @return The scope type
-    */
-   public Class<? extends Annotation> getScope()
-   {
-      return delegate().getScope();
-   }
-
-   /**
-    * Gets the API types of the delegate
-    * 
-    * @return The API types
-    */
-   public Set<Type> getTypes()
-   {
-      return delegate().getTypes();
-   }
-
-   /**
-    * Gets the hash code of the delegate
-    * 
-    * @return The hash code
-    */
-   @Override
-   public int hashCode()
-   {
-      return delegate().hashCode();
-   }
-
-   /**
-    * Indicates if the delegate is nullable
-    * 
-    * @return True if nullable, false otherwise
-    */
-   public boolean isNullable()
-   {
-      return delegate().isNullable();
-   }
-
-   public boolean isAlternative()
-   {
-      return delegate().isAlternative();
-   }
-
-   /**
-    * Returns a string representation
-    * 
-    * @return The string representation
-    */
-   @Override
-   public String toString()
-   {
-      return "ForwardingBean " + getName() + " for " + delegate().toString();
-   }
-
-}

Copied: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingBean.java (from rev 3713, ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ForwardingBean.java)
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingBean.java	                        (rev 0)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -0,0 +1,173 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.webbeans.bean;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.InjectionPoint;
+
+/**
+ * A delegating bean
+ * 
+ * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * 
+ * @param <T>
+ */
+public abstract class ForwardingBean<T> implements Bean<T>
+{
+
+   /**
+    * Creates an instance of the delegate
+    * 
+    * @return an instance of the delegate
+    */
+   public T create(CreationalContext<T> creationalContext)
+   {
+      return delegate().create(creationalContext);
+   }
+
+   /**
+    * Abstract getter for the delegate
+    * 
+    * @return The delegate
+    */
+   protected abstract Bean<T> delegate();
+
+   /**
+    * Destroys an instance through the delegate
+    * 
+    * @param instance The instance to destroy
+    */
+   public void destroy(T instance, CreationalContext<T> creationalContext)
+   {
+      delegate().destroy(instance, creationalContext);
+   }
+
+   /**
+    * Compares an object with the delegate
+    * 
+    * @return True if equals, false otherwise
+    */
+   @Override
+   public boolean equals(Object obj)
+   {
+      return delegate().equals(obj);
+   }
+
+   public Class<?> getBeanClass()
+   {
+      return delegate().getBeanClass();
+   }
+
+   /**
+    * Gets the binding types of the delegate
+    * 
+    * @return The binding types
+    */
+   public Set<Annotation> getQualifiers()
+   {
+      return delegate().getQualifiers();
+   }
+
+   public Set<InjectionPoint> getInjectionPoints()
+   {
+      return delegate().getInjectionPoints();
+   }
+
+   /**
+    * Gets the name of the delegate
+    * 
+    * @return The name
+    */
+   public String getName()
+   {
+      return delegate().getName();
+   }
+
+   /**
+    * The stereotypes applied to this bean
+    * 
+    * @return stereotypes if any
+    */
+   public Set<Class<? extends Annotation>> getStereotypes()
+   {
+      return delegate().getStereotypes();
+   }
+
+   /**
+    * Gets the scope type of the delegate
+    * 
+    * @return The scope type
+    */
+   public Class<? extends Annotation> getScope()
+   {
+      return delegate().getScope();
+   }
+
+   /**
+    * Gets the API types of the delegate
+    * 
+    * @return The API types
+    */
+   public Set<Type> getTypes()
+   {
+      return delegate().getTypes();
+   }
+
+   /**
+    * Gets the hash code of the delegate
+    * 
+    * @return The hash code
+    */
+   @Override
+   public int hashCode()
+   {
+      return delegate().hashCode();
+   }
+
+   /**
+    * Indicates if the delegate is nullable
+    * 
+    * @return True if nullable, false otherwise
+    */
+   public boolean isNullable()
+   {
+      return delegate().isNullable();
+   }
+
+   public boolean isAlternative()
+   {
+      return delegate().isAlternative();
+   }
+
+   /**
+    * Returns a string representation
+    * 
+    * @return The string representation
+    */
+   @Override
+   public String toString()
+   {
+      return "ForwardingBean " + getName() + " for " + delegate().toString();
+   }
+
+}

Deleted: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingDecorator.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingDecorator.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingDecorator.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -1,46 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.bean;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Set;
-
-import javax.enterprise.inject.spi.Decorator;
-
-public abstract class ForwardingDecorator<T> extends ForwardingBean<T> implements Decorator<T>
-{
-
-   @Override
-   protected abstract Decorator<T> delegate();
-
-   public Set<Type> getDecoratedTypes()
-   {
-      return delegate().getDecoratedTypes();
-   }
-
-   public Set<Annotation> getDelegateQualifiers()
-   {
-      return delegate().getDelegateQualifiers();
-   }
-
-   public Type getDelegateType()
-   {
-      return delegate().getDelegateType();
-   }
-
-}

Added: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingDecorator.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingDecorator.java	                        (rev 0)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ForwardingDecorator.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * Licensed 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.jboss.webbeans.bean;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.enterprise.inject.spi.Decorator;
+
+
+public abstract class ForwardingDecorator<T> extends ForwardingBean<T> implements Decorator<T>
+{
+
+   @Override
+   protected abstract Decorator<T> delegate();
+
+   public Set<Type> getDecoratedTypes()
+   {
+      return delegate().getDecoratedTypes();
+   }
+
+   public Set<Annotation> getDelegateQualifiers()
+   {
+      return delegate().getDelegateQualifiers();
+   }
+
+   public Type getDelegateType()
+   {
+      return delegate().getDelegateType();
+   }
+
+}

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ManagedBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ManagedBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ManagedBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -28,7 +28,6 @@
 
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.injection.ConstructorInjectionPoint;
 import org.jboss.webbeans.injection.InjectionContextImpl;
 import org.jboss.webbeans.injection.WBInjectionPoint;
@@ -48,6 +47,7 @@
  * Represents a simple bean
  * 
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T> The type (class) of the bean
  */
@@ -80,18 +80,18 @@
          String name,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<Decorator<?>> decorators,
          boolean policy,
          boolean proxyable,
          Set<Annotation> bindings,
          Set<String> dependencies,
          Class<T> proxyClassForDecorators,
-         List<Decorator<?>> decorators,
          WBMethod<?, ?> postConstruct,
          WBMethod<?, ?> preDestroy,
          ManagedBean<?> specializedBean)
    {
-      return new ManagedBean<T>(clazz, manager, name, mergedStereotypes, scopeType, policy, proxyable, bindings, dependencies,
-            proxyClassForDecorators, decorators, postConstruct, preDestroy, specializedBean);
+      return new ManagedBean<T>(clazz, manager, name, mergedStereotypes, scopeType, decorators, policy, proxyable, bindings, dependencies,
+            proxyClassForDecorators, postConstruct, preDestroy, specializedBean);
    }
 
    /**
@@ -105,18 +105,18 @@
          String name,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<Decorator<?>> decorators,
          boolean policy,
          boolean proxyable,
          Set<Annotation> bindings,
          Set<String> dependencies,
          Class<T> proxyClassForDecorators,
-         List<Decorator<?>> decorators,
          WBMethod<?, ?> postConstruct,
          WBMethod<?, ?> preDestroy,
          ManagedBean<?> specializedBean)
    {
-      super(type, manager, name, type.getTypeClosure(), mergedStereotypes, scopeType, policy, Reflections.isSerializable(type.getJavaClass()), proxyable, bindings, dependencies,
-            proxyClassForDecorators, decorators, postConstruct, preDestroy);
+      super(type, manager, name, type.getTypeClosure(), mergedStereotypes, scopeType, decorators, policy, Reflections.isSerializable(type.getJavaClass()), proxyable, bindings, dependencies,
+            proxyClassForDecorators, postConstruct, preDestroy);
       this.specializedBean = specializedBean;
       this.constructor = initConstructor();
       this.ejbInjectionPoints = Beans.getEjbInjectionPoints(this, getAnnotatedItem(), getManager());
@@ -213,21 +213,6 @@
    }
 
    /**
-    * Initializes the bean and its metadata
-    */
-   @Override
-   public void initialize(BeanDeployerEnvironment environment)
-   {
-      if (!isInitialized())
-      {
-         super.initialize(environment);
-//         initPostConstruct();
-//         initPreDestroy();
-      }
-   }
-
-
-   /**
     * Validates the type
     */
    protected void checkType()

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/NewManagedBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/NewManagedBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/NewManagedBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -34,6 +34,7 @@
  * Represents a @New simple bean
  * 
  * @author Nicklas Karlsson 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  */
 public class NewManagedBean<T> extends ManagedBean<T> implements NewBean
 {
@@ -50,18 +51,18 @@
          String name,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<Decorator<?>> decorators,
          boolean policy,
          boolean proxyable,
          Set<Annotation> bindings,
          Set<String> dependencies,
          Class<T> proxyClassForDecorators,
-         List<Decorator<?>> decorators,
          WBMethod<?, ?> postConstruct,
          WBMethod<?, ?> preDestroy,
          ManagedBean<?> specializedBean)
    {
-      return new NewManagedBean<T>(clazz, manager, name, mergedStereotypes, scopeType, policy, proxyable, bindings, dependencies, 
-            proxyClassForDecorators, decorators, postConstruct, preDestroy, specializedBean);
+      return new NewManagedBean<T>(clazz, manager, name, mergedStereotypes, scopeType, decorators, policy, proxyable, bindings, dependencies, 
+            proxyClassForDecorators, postConstruct, preDestroy, specializedBean);
    }
    
    private Set<Annotation> bindings;
@@ -77,18 +78,18 @@
          String name,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<Decorator<?>> decorators,
          boolean policy,
          boolean proxyable,
          Set<Annotation> bindings,
          Set<String> dependencies,
          Class<T> proxyClassForDecorators,
-         List<Decorator<?>> decorators,
          WBMethod<?, ?> postConstruct,
          WBMethod<?, ?> preDestroy,
          ManagedBean<?> specializedBean)
    {
-      super(type, manager, name, mergedStereotypes, scopeType, policy, proxyable, bindings, dependencies,
-            proxyClassForDecorators, decorators, postConstruct, preDestroy, specializedBean);
+      super(type, manager, name, mergedStereotypes, scopeType, decorators, policy, proxyable, bindings, dependencies,
+            proxyClassForDecorators, postConstruct, preDestroy, specializedBean);
       this.bindings = new HashSet<Annotation>();
       this.bindings.add(new NewLiteral()
       {
@@ -129,18 +130,7 @@
       return null;
    }
 
-   /**
-    * Gets the bindings
-    * 
-    * @returns @New
-    */
    @Override
-   public Set<Annotation> getQualifiers()
-   {
-      return bindings;
-   }
-
-   @Override
    public boolean isSpecializing()
    {
       return false;

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/NewSessionBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/NewSessionBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/NewSessionBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -37,6 +37,7 @@
  * Represents a @New enterprise bean
  * 
  * @author Nicklas Karlsson
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  */
 public class NewSessionBean<T> extends SessionBean<T> implements NewBean
 {
@@ -54,20 +55,20 @@
          Set<Type> types,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<Decorator<?>> decorators,
          boolean policy,
          boolean proxyable,
          Set<Annotation> bindings,
          Set<String> dependencies,
          Class<T> proxyClassForDecorators,
-         List<Decorator<?>> decorators,
          WBMethod<?, ?> postConstruct,
          WBMethod<?, ?> preDestroy,
          Class<T> proxyClass,
          SessionBean<?> specializedBean)
    {
       WBClass<T> type = manager.getServices().get(ClassTransformer.class).loadClass(ejbDescriptor.getBeanClass());
-      return new NewSessionBean<T>(type, ejbDescriptor, manager, name, types, mergedStereotypes, scopeType, policy, proxyable, bindings, dependencies,
-            proxyClassForDecorators, decorators, postConstruct, preDestroy, proxyClass, specializedBean);
+      return new NewSessionBean<T>(type, ejbDescriptor, manager, name, types, mergedStereotypes, scopeType, decorators, policy, proxyable, bindings, dependencies,
+            proxyClassForDecorators, postConstruct, preDestroy, proxyClass, specializedBean);
    }
    
    private Set<Annotation> bindings;
@@ -85,19 +86,19 @@
          Set<Type> types,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<Decorator<?>> decorators,
          boolean policy,
          boolean proxyable,
          Set<Annotation> bindings,
          Set<String> dependencies,
          Class<T> proxyClassForDecorators,
-         List<Decorator<?>> decorators,
          WBMethod<?, ?> postConstruct,
          WBMethod<?, ?> preDestroy,
          Class<T> proxyClass,
          SessionBean<?> specializedBean)
    {
-      super(type, ejbDescriptor, manager, name, types, mergedStereotypes, scopeType, policy, proxyable, bindings, dependencies,
-            proxyClassForDecorators, decorators, postConstruct, preDestroy, proxyClass, specializedBean);
+      super(type, ejbDescriptor, manager, name, types, mergedStereotypes, scopeType, decorators, policy, proxyable, bindings, dependencies,
+            proxyClassForDecorators, postConstruct, preDestroy, proxyClass, specializedBean);
       this.bindings = new HashSet<Annotation>();
       this.bindings.add(new NewLiteral()
       {
@@ -137,17 +138,6 @@
    {
       return null;
    }
-
-   /**
-    * Gets the bindings
-    * 
-    * @returns @New
-    */
-   @Override
-   public Set<Annotation> getQualifiers()
-   {
-      return bindings;
-   }
    
    @Override
    public boolean isSpecializing()

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ProducerField.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ProducerField.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ProducerField.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -25,7 +25,6 @@
 import javax.enterprise.context.spi.CreationalContext;
 
 import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.introspector.WBField;
 import org.jboss.webbeans.metadata.cache.MergedStereotypes;
 import org.jboss.webbeans.util.Names;
@@ -34,6 +33,7 @@
  * Represents a producer field
  * 
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T>
  */
@@ -87,23 +87,9 @@
    {
       super(declaringBean, manager, name, type, types, mergedStereotypes, scopeType, policy, proxyable, bindings);
       this.field = field;
-//      initType();
-//      initTypes();
-//      initBindings();
       this.id = createId("ProducerField-" + declaringBean.getType().getName() + "-"+ field.getName());
-//      initStereotypes();
-//      initPolicy();
    }
    
-   @Override
-   public void initialize(BeanDeployerEnvironment environment)
-   {
-      if (!isInitialized())
-      {
-         super.initialize(environment);
-      }
-   }
-
    public void destroy(T instance, CreationalContext<T> creationalContext)
    {
       dispose(instance);

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethod.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethod.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ProducerMethod.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -29,7 +29,6 @@
 
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.DefinitionException;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.injection.MethodInjectionPoint;
 import org.jboss.webbeans.injection.ParameterInjectionPoint;
 import org.jboss.webbeans.introspector.WBMethod;
@@ -99,6 +98,8 @@
       this.disposalMethodBean = disposalMethodBean;
       this.specializedBean = specializedBean;
       this.id = createId("ProducerMethod-" + declaringBean.getType().getName() + "-" + method.getSignature().toString());
+      initProducerMethodInjectableParameters();
+      checkProducerMethod();
    }
 
    public T produce(CreationalContext<T> creationalContext)
@@ -115,20 +116,6 @@
    }
 
    /**
-    * Initializes the bean and its metadata
-    */
-   @Override
-   public void initialize(BeanDeployerEnvironment environment)
-   {
-      if (!isInitialized())
-      {
-         initProducerMethodInjectableParameters();
-         super.initialize(environment);
-         checkProducerMethod();
-      }
-   }
-
-   /**
     * Initializes the injection points
     */
    protected void initProducerMethodInjectableParameters()

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/RIBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -26,7 +26,6 @@
 import javax.enterprise.inject.spi.InjectionPoint;
 
 import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.injection.WBInjectionPoint;
 
 /**
@@ -65,7 +64,7 @@
       return getType();
    }
    
-   public abstract void initialize(BeanDeployerEnvironment environment);
+   public abstract void initialize();
 
    public abstract boolean isSpecializing();
 
@@ -80,6 +79,7 @@
 
    public abstract Set<WBInjectionPoint<?, ?>> getAnnotatedInjectionPoints();
    
+   @SuppressWarnings("unchecked")
    public Set<InjectionPoint> getInjectionPoints()
    {
       return (Set) getAnnotatedInjectionPoints();

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/SessionBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/SessionBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/SessionBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -38,7 +38,6 @@
 import org.jboss.webbeans.bean.proxy.EnterpriseBeanInstance;
 import org.jboss.webbeans.bean.proxy.EnterpriseBeanProxyMethodHandler;
 import org.jboss.webbeans.bean.proxy.Marker;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.ejb.InternalEjbDescriptor;
 import org.jboss.webbeans.ejb.api.SessionObjectReference;
 import org.jboss.webbeans.ejb.spi.EjbServices;
@@ -55,6 +54,7 @@
  * An enterprise bean representation
  * 
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T> The type (class) of the bean
  */
@@ -83,20 +83,20 @@
          Set<Type> types,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<javax.enterprise.inject.spi.Decorator<?>> decorators,
          boolean policy,
          boolean proxyable,
          Set<Annotation> bindings,
          Set<String> dependencies,
          Class<T> proxyClassForDecorators,
-         List<javax.enterprise.inject.spi.Decorator<?>> decorators,
          WBMethod<?, ?> postConstruct,
          WBMethod<?, ?> preDestroy,
          Class<T> proxyClass,
          SessionBean<?> specializedBean)
    {
       WBClass<T> type = manager.getServices().get(ClassTransformer.class).loadClass(ejbDescriptor.getBeanClass());
-      return new SessionBean<T>(type, ejbDescriptor, manager, name, types, mergedStereotypes, scopeType, policy, proxyable, bindings, dependencies,
-            proxyClassForDecorators, decorators, postConstruct, preDestroy, proxyClass, specializedBean);
+      return new SessionBean<T>(type, ejbDescriptor, manager, name, types, mergedStereotypes, scopeType, decorators, policy, proxyable, bindings, dependencies,
+            proxyClassForDecorators, postConstruct, preDestroy, proxyClass, specializedBean);
    }
 
    /**
@@ -112,53 +112,29 @@
          Set<Type> types,
          MergedStereotypes<T, Class<T>> mergedStereotypes, 
          Class<? extends Annotation> scopeType,
+         List<javax.enterprise.inject.spi.Decorator<?>> decorators,
          boolean policy,
          boolean proxyable,
          Set<Annotation> bindings,
          Set<String> dependencies,
          Class<T> proxyClassForDecorators,
-         List<javax.enterprise.inject.spi.Decorator<?>> decorators,
          WBMethod<?, ?> postConstruct,
          WBMethod<?, ?> preDestroy,
          Class<T> proxyClass,
          SessionBean<?> specializedBean)
    {
-      super(type, manager, name, types, mergedStereotypes, scopeType, policy, false, proxyable, bindings, dependencies,
-            proxyClassForDecorators, decorators, postConstruct, preDestroy);
+      super(type, manager, name, types, mergedStereotypes, scopeType, decorators, policy, false, proxyable, bindings, dependencies,
+            proxyClassForDecorators, postConstruct, preDestroy);
       this.ejbDescriptor = ejbDescriptor;
       this.proxyClass = proxyClass;
       this.specializedBean = specializedBean;
-   }
 
-   /**
-    * Initializes the bean and its metadata
-    */
-   @Override
-   public void initialize(BeanDeployerEnvironment environment)
-   {
-      if (!isInitialized())
-      {
-         super.initialize(environment);
-//         initProxyClass();
-         checkEJBTypeAllowed();
-         checkConflictingRoles();
-         checkObserverMethods();
-         checkScopeAllowed();
-      }
+      checkEJBTypeAllowed();
+      checkConflictingRoles();
+      checkObserverMethods();
+      checkScopeAllowed();
    }
 
-//   protected void initProxyClass()
-//   {
-//      Set<Type> types = new LinkedHashSet<Type>(getTypes());
-//      types.add(EnterpriseBeanInstance.class);
-//      types.add(Serializable.class);
-//      ProxyFactory proxyFactory = Proxies.getProxyFactory(types);
-//
-//      @SuppressWarnings("unchecked")
-//      Class<T> proxyClass = proxyFactory.createClass();
-//
-//      this.proxyClass = proxyClass;
-//   }
 
    /**
     * Validates for non-conflicting roles

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractBeanBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractBeanBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractBeanBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -21,8 +21,6 @@
 import java.util.HashSet;
 import java.util.Set;
 
-import javax.decorator.Decorates;
-import javax.enterprise.context.Dependent;
 import javax.enterprise.inject.Alternative;
 import javax.enterprise.inject.Specializes;
 import javax.enterprise.inject.spi.Bean;
@@ -34,22 +32,19 @@
 import org.jboss.webbeans.DefinitionException;
 import org.jboss.webbeans.bean.AbstractBean;
 import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
-import org.jboss.webbeans.injection.WBInjectionPoint;
 import org.jboss.webbeans.introspector.WBAnnotated;
-import org.jboss.webbeans.introspector.WBField;
-import org.jboss.webbeans.introspector.WBParameter;
 import org.jboss.webbeans.literal.AnyLiteral;
 import org.jboss.webbeans.literal.DefaultLiteral;
 import org.jboss.webbeans.log.Log;
 import org.jboss.webbeans.log.Logging;
 import org.jboss.webbeans.metadata.cache.MergedStereotypes;
-import org.jboss.webbeans.metadata.cache.MetaAnnotationStore;
 import org.jboss.webbeans.util.Reflections;
 
 /**
- * An abstract bean representation common for all beans
+ * Builder for An abstract bean representation common for all beans
  * 
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T> the type of bean
  * @param <E> the Class<?> of the bean type
@@ -64,25 +59,31 @@
 
    // Logger
    private final Log log = Logging.getLog(AbstractBeanBuilder.class);
+
    // The binding types
    protected Set<Annotation> bindings;
+   
    // The name
    protected String name;
+   
    // The scope type
    protected Class<? extends Annotation> scopeType;
+   
    // The merged stereotypes
    private MergedStereotypes<T, E> mergedStereotypes;
+   
    // Is it a policy, either defined by stereotypes or directly?
    private boolean policy;
+   
    // The type
    protected Class<T> type;
+   
    // The API types
    protected Set<Type> types;
-   // The injection points
-   private Set<WBInjectionPoint<?, ?>> injectionPoints;
-   private Set<WBInjectionPoint<?, ?>> delegateInjectionPoints;
+
    // If the type a primitive?
    private boolean primitive;
+   
    // The Web Beans manager
    protected BeanManagerImpl manager;
 
@@ -106,8 +107,6 @@
    {
       super(manager);
       this.manager = manager;
-      this.injectionPoints = new HashSet<WBInjectionPoint<?, ?>>();
-      this.delegateInjectionPoints = new HashSet<WBInjectionPoint<?,?>>();
    }
 
    /**
@@ -129,7 +128,6 @@
       initScopeType();
       initSerializable();
       initProxyable();
-      checkDelegateInjectionPoints();
    }
    
    void initStereotypes()
@@ -137,36 +135,6 @@
       mergedStereotypes = new MergedStereotypes<T, E>(getAnnotatedItem().getMetaAnnotations(Stereotype.class), manager);
    }
 
-   void checkDelegateInjectionPoints()
-   {
-      if (this.delegateInjectionPoints.size() > 0)
-      {
-         throw new DefinitionException("Cannot place @Decorates at an injection point which is not on a Decorator " + this);
-      }
-   }
-   
-   void addInjectionPoint(WBInjectionPoint<?, ?> injectionPoint)
-   {
-      if (injectionPoint.isAnnotationPresent(Decorates.class))
-      {
-         this.delegateInjectionPoints.add(injectionPoint);
-      }
-      injectionPoints.add(injectionPoint);
-   }
-   
-   void addInjectionPoints(Iterable<? extends WBInjectionPoint<?, ?>> injectionPoints)
-   {
-      for (WBInjectionPoint<?, ?> injectionPoint : injectionPoints)
-      {
-         addInjectionPoint(injectionPoint);
-      }
-   }
-
-   Set<WBInjectionPoint<?, ?>> getDelegateInjectionPoints()
-   {
-      return delegateInjectionPoints;
-   }
-
    /**
     * Initializes the API types
     */
@@ -251,24 +219,6 @@
       this.primitive = Reflections.isPrimitive(getType());
    }
 
-   boolean checkInjectionPointsAreSerializable()
-   {
-      boolean passivating = manager.getServices().get(MetaAnnotationStore.class).getScopeModel(this.getScope()).isPassivating();
-      for (WBInjectionPoint<?, ?> injectionPoint : getAnnotatedInjectionPoints())
-      {
-         Annotation[] bindings = injectionPoint.getMetaAnnotationsAsArray(Qualifier.class);
-         Bean<?> resolvedBean = manager.getBeans(injectionPoint.getJavaClass(), bindings).iterator().next();
-         if (passivating)
-         {
-            if (Dependent.class.equals(resolvedBean.getScope()) && !Reflections.isSerializable(resolvedBean.getBeanClass()) && (((injectionPoint instanceof WBField<?, ?>) && !((WBField<?, ?>) injectionPoint).isTransient()) || (injectionPoint instanceof WBParameter<?, ?>)))
-            {
-               return false;
-            }
-         }
-      }
-      return true;
-   }
-
    /**
     * Initializes the scope type
     */
@@ -305,9 +255,6 @@
       {
          this.name = getSpecializedBean().getName();
       }
-      
-      throw new RuntimeException("Next line commented");
-      //manager.getSpecializedBeans().put(getSpecializedBean(), this);
    }
 
    void preSpecialize(BeanDeployerEnvironment environment)
@@ -355,12 +302,6 @@
    @Override
    abstract AbstractBean<?, ?> getSpecializedBean();
 
-   @Override
-   Set<WBInjectionPoint<?, ?>> getAnnotatedInjectionPoints()
-   {
-      return injectionPoints;
-   }
-
    /**
     * Gets the merged stereotypes of the bean
     * 
@@ -453,13 +394,6 @@
       return primitive;
    }
 
-   boolean isSerializable()
-   {
-      // TODO WTF - why are we not caching the serializability of injection
-      // points!
-      return serializable && checkInjectionPointsAreSerializable();
-   }
-
    void initSerializable()
    {
       serializable = Reflections.isSerializable(type);
@@ -486,6 +420,11 @@
    {
       return policy;
    }
+   
+   boolean isSerializable()
+   {
+      return serializable;
+   }
 
    @Override
    boolean isSpecializing()

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractClassBeanBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractClassBeanBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractClassBeanBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -18,6 +18,7 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
@@ -25,6 +26,7 @@
 import java.util.Set;
 
 import javassist.util.proxy.ProxyFactory;
+import javassist.util.proxy.ProxyObject;
 
 import javax.enterprise.context.Dependent;
 import javax.enterprise.context.NormalScope;
@@ -36,6 +38,9 @@
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.DefinitionException;
 import org.jboss.webbeans.bean.AbstractBean;
+import org.jboss.webbeans.bean.DecoratorImpl;
+import org.jboss.webbeans.bean.SerializableBeanInstance;
+import org.jboss.webbeans.bean.proxy.DecoratorProxyMethodHandler;
 import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.injection.FieldInjectionPoint;
 import org.jboss.webbeans.injection.MethodInjectionPoint;
@@ -48,9 +53,11 @@
 import org.jboss.webbeans.util.Strings;
 
 /**
- * An abstract bean representation common for class-based beans
+ * Builder for class-based beans
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T>
  * @param <E>
@@ -144,54 +151,53 @@
    
    T applyDecorators(T instance, CreationalContext<T> creationalContext, InjectionPoint originalInjectionPoint)
    {
-      throw new RuntimeException("NYI");
-//      List<SerializableBeanInstance<DecoratorImpl<Object>, Object>> decoratorInstances = new ArrayList<SerializableBeanInstance<DecoratorImpl<Object>,Object>>();
-//      InjectionPoint ip = originalInjectionPoint;
-//      boolean outside = decoratorStackPosition.get().intValue() == 0;
-//      try
-//      {
-//         int i = decoratorStackPosition.get();
-//         while (i < decorators.size())
-//         {
-//            Decorator<?> decorator = decorators.get(i);
-//            if (decorator instanceof DecoratorImpl<?>)
-//            {
-//               decoratorStackPosition.set(++i);
-//               
-//               @SuppressWarnings("unchecked")
-//               DecoratorImpl<Object> decoratorBean = (DecoratorImpl<Object>) decorator;
-//               
-//               Object decoratorInstance = getManager().getReference(ip, decorator, creationalContext);
-//               decoratorInstances.add(new SerializableBeanInstance<DecoratorImpl<Object>, Object>(decoratorBean, decoratorInstance));
-//               ip = decoratorBean.getDelegateInjectionPoint();
-//            }
-//            else
-//            {
-//               throw new IllegalStateException("Cannot operate on non container provided decorator " + decorator);
-//            }
-//         }
-//      }
-//      finally
-//      {
-//         if (outside)
-//         {
-//            decoratorStackPosition.remove();
-//         }
-//      }
-//      try
-//      {
-//         T proxy = proxyClassForDecorators.newInstance();
-//         ((ProxyObject) proxy).setHandler(new DecoratorProxyMethodHandler(decoratorInstances, instance));
-//         return proxy;
-//      }
-//      catch (InstantiationException e)
-//      {
-//         throw new RuntimeException("Could not instantiate decorator proxy for " + toString(), e);
-//      }
-//      catch (IllegalAccessException e)
-//      {
-//         throw new RuntimeException("Could not access bean correctly when creating decorator proxy for " + toString(), e);
-//      }
+      List<SerializableBeanInstance<DecoratorImpl<Object>, Object>> decoratorInstances = new ArrayList<SerializableBeanInstance<DecoratorImpl<Object>,Object>>();
+      InjectionPoint ip = originalInjectionPoint;
+      boolean outside = decoratorStackPosition.get().intValue() == 0;
+      try
+      {
+         int i = decoratorStackPosition.get();
+         while (i < decorators.size())
+         {
+            Decorator<?> decorator = decorators.get(i);
+            if (decorator instanceof DecoratorImpl<?>)
+            {
+               decoratorStackPosition.set(++i);
+               
+               @SuppressWarnings("unchecked")
+               DecoratorImpl<Object> decoratorBean = (DecoratorImpl<Object>) decorator;
+               
+               Object decoratorInstance = getManager().getReference(ip, decorator, creationalContext);
+               decoratorInstances.add(new SerializableBeanInstance<DecoratorImpl<Object>, Object>(decoratorBean, decoratorInstance));
+               ip = decoratorBean.getDelegateInjectionPoint();
+            }
+            else
+            {
+               throw new IllegalStateException("Cannot operate on non container provided decorator " + decorator);
+            }
+         }
+      }
+      finally
+      {
+         if (outside)
+         {
+            decoratorStackPosition.remove();
+         }
+      }
+      try
+      {
+         T proxy = proxyClassForDecorators.newInstance();
+         ((ProxyObject) proxy).setHandler(new DecoratorProxyMethodHandler(decoratorInstances, instance));
+         return proxy;
+      }
+      catch (InstantiationException e)
+      {
+         throw new RuntimeException("Could not instantiate decorator proxy for " + toString(), e);
+      }
+      catch (IllegalAccessException e)
+      {
+         throw new RuntimeException("Could not access bean correctly when creating decorator proxy for " + toString(), e);
+      }
    }
    
    List<Decorator<?>> getDecorators()

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractProducerBeanBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractProducerBeanBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractProducerBeanBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -49,9 +49,10 @@
 import org.jboss.webbeans.util.Reflections;
 
 /**
- * The implicit producer bean
+ * Builder for producer beans
  * 
  * @author Gavin King
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T>
  * @param <S>
@@ -170,7 +171,7 @@
    @Override
    void initialize(BeanDeployerEnvironment environment)
    {
-      getDeclaringBean().initialize(environment);
+      getDeclaringBean().initialize();
       super.initialize(environment);
       checkProducerReturnType();
    }

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractReceiverBeanBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractReceiverBeanBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/AbstractReceiverBeanBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -30,6 +30,7 @@
 
 /**
  * @author pmuir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  *
  */
 abstract class AbstractReceiverBeanBuilder<T, S extends Member> extends AbstractBeanBuilder<T, S>

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/BeanBuilderFactoryImpl.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/BeanBuilderFactoryImpl.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/BeanBuilderFactoryImpl.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -39,6 +39,7 @@
 import org.jboss.webbeans.ejb.spi.EjbDescriptor;
 
 /**
+ * Factory to create the builders
  * 
  * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * @version $Revision: 1.1 $

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/BeanBuilderImpl.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/BeanBuilderImpl.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/BeanBuilderImpl.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -178,25 +178,6 @@
    
    private Set<Bean<?>> createSimpleBeans(WBClass<T> clazz)
    {
-//      beans = new LinkedHashSet<Bean<?>>();
-//      ManagedBeanBuilder<T> mainBuilder = ManagedBeanBuilder.of(clazz, beanManager);
-//      
-//      mainBean = bean;
-//      
-//      beanDeployerEnvironment.addBean(bean);
-//      beans.add(bean);
-//      
-//      createSubBeans(beans, bean);
-//      
-//      NewManagedBean<T> newBean = NewManagedBean.of(clazz, beanManager);
-//      beanDeployerEnvironment.addBean(newBean);
-//      beans.add(newBean);
-//      this.newBean = newBean;
-//      
-//      if (!delayInitialization)
-//         newBean.initialize(beanDeployerEnvironment);
-//      
-//      return beans;
       beans = new LinkedHashSet<Bean<?>>();
 
       ManagedBeanBuilder<T> builder = ManagedBeanBuilder.of(clazz, beanManager);
@@ -221,27 +202,6 @@
    
    private Set<Bean<?>> createEnterpriseBeans(InternalEjbDescriptor<T> ejbDescriptor)
    {
-//      beans = new LinkedHashSet<Bean<?>>();
-//      SessionBean<T> bean = SessionBean.of(ejbDescriptor, beanManager);
-//      mainBean = bean;
-//      
-//      beanDeployerEnvironment.addBean(bean);
-//      beans.add(bean);
-//      if (!delayInitialization)
-//         bean.initialize(beanDeployerEnvironment);
-//      
-//      createSubBeans(beans, bean);
-//      
-//      NewSessionBean<T> newBean = NewSessionBean.of(ejbDescriptor, beanManager);
-//      beanDeployerEnvironment.addBean(newBean);
-//      beans.add(newBean);
-//      this.newBean = newBean;
-//      
-//      if (!delayInitialization)
-//         newBean.initialize(beanDeployerEnvironment);
-//      
-//      return beans;
-      
        beans = new LinkedHashSet<Bean<?>>();
        
        SessionBeanBuilder<T> builder = SessionBeanBuilder.of(ejbDescriptor, beanManager);
@@ -264,15 +224,6 @@
    
    private Bean<T> createDecorator(WBClass<T> annotatedClass)
    {
-//      DecoratorImpl<T> bean = DecoratorImpl.of(annotatedClass, beanManager);
-//      mainBean = bean;
-//      
-//      beanDeployerEnvironment.addBean(bean);
-//      if (!delayInitialization)
-//         bean.initialize(beanDeployerEnvironment);
-//      
-//      return bean;
-      
       DecoratorBuilder<T> builder = DecoratorBuilder.of(annotatedClass, beanManager);
       builder.initialize(beanDeployerEnvironment);
       DecoratorImpl<T> bean = builder.createBean();
@@ -319,11 +270,6 @@
    {
       for (WBMethod<?, ?> method : annotatedClass.getWBDeclaredMethodsWithAnnotatedParameters(Disposes.class))
       {
-//         DisposalMethod<?> disposalBean = DisposalMethod.of(beanManager, method, declaringBean);
-//         beanDeployerEnvironment.addBean(disposalBean);
-//         //Do not delay initialization of decorator beans, they get initialized right away in the original impl
-//         disposalBean.initialize(beanDeployerEnvironment);
-         
          DisposalMethodBuilder<?> builder = DisposalMethodBuilder.of(beanManager, method, declaringBean);
          //Do not delay initialization of decorator beans, they get initialized right away in the original impl
          builder.initialize(beanDeployerEnvironment);
@@ -335,12 +281,6 @@
    
    protected <T> void createProducerMethod(Set<Bean<?>> beans, AbstractClassBean<?> declaringBean, WBMethod<T, ?> annotatedMethod)
    {
-//      ProducerMethod<T> bean = ProducerMethod.of(annotatedMethod, declaringBean, beanManager);
-//      beanDeployerEnvironment.addBean(bean);
-//      beans.add(bean);
-//      if (!delayInitialization)
-//         bean.initialize(beanDeployerEnvironment);
-      
       ProducerMethodBuilder<T> builder = ProducerMethodBuilder.of(annotatedMethod, declaringBean, beanManager);
       builder.initialize(beanDeployerEnvironment);
       ProducerMethod<T> bean = builder.createBean();
@@ -358,25 +298,6 @@
 
    protected <T> void createProducerField(Set<Bean<?>> beans, AbstractClassBean<?> declaringBean, WBField<T, ?> field)
    {
-//      ProducerField<T> bean;
-//      if (isPersistenceContextProducerField(field))
-//      {
-//         bean = PersistenceContextProducerField.of(field, declaringBean, beanManager);
-//      }
-//      else if (isEEResourceProducerField(field))
-//      {
-//         bean = EEResourceProducerField.of(field, declaringBean, beanManager);
-//      }
-//      else
-//      {
-//         bean = ProducerField.of(field, declaringBean, beanManager);
-//      }
-//      
-//      beanDeployerEnvironment.addBean(bean);
-//      beans.add(bean);
-//      if (!delayInitialization)
-//         bean.initialize(beanDeployerEnvironment);
-      
       ProducerFieldBuilder<T> builder = ProducerFieldBuilder.of(field, declaringBean, beanManager);
       builder.initialize(beanDeployerEnvironment);
       ProducerField<T> bean = builder.createBean();
@@ -397,14 +318,6 @@
    
    protected <X, T> ObserverMethodImpl<X, T> createObserverMethod(RIBean<X> declaringBean, WBMethod<T, X> method)
    {
-//      ObserverMethodImpl<X, T> observer = ObserverFactory.create(method, declaringBean, beanManager);
-//      ProcessObserverMethod<?, ?> event = createProcessObserverMethodEvent(observer, method);
-//      beanManager.fireEvent(event);
-//      beanDeployerEnvironment.addObserver(observer);
-//      if (!delayInitialization)
-//         observer.initialize();
-//      return observer;
-      
       ObserverMethodImpl<X, T> observer = ObserverFactory.create(method, declaringBean, beanManager);
       ProcessObserverMethod<?, ?> event = createProcessObserverMethodEvent(observer, method);
       beanManager.fireEvent(event);

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/DecoratorBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/DecoratorBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/DecoratorBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -18,23 +18,23 @@
 
 import java.io.Serializable;
 import java.lang.annotation.Annotation;
-import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
 import javax.enterprise.inject.spi.Decorator;
-import javax.inject.Inject;
 
 import org.jboss.webbeans.BeanManagerImpl;
-import org.jboss.webbeans.DefinitionException;
 import org.jboss.webbeans.bean.DecoratorImpl;
+import org.jboss.webbeans.bean.ForwardingDecorator;
 import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
-import org.jboss.webbeans.injection.MethodInjectionPoint;
-import org.jboss.webbeans.injection.WBInjectionPoint;
 import org.jboss.webbeans.introspector.WBClass;
 
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
 class DecoratorBuilder<T> extends ManagedBeanBuilder<T>
 {
 
@@ -77,8 +77,6 @@
       return new DecoratorBuilder<T>(clazz, manager);
    }
 
-   private WBInjectionPoint<?, ?> delegateInjectionPoint;
-   private Set<Annotation> delegateBindings;
    private Type delegateType;
    private Set<Type> delegateTypes;
    private Set<Type> decoratedTypes;
@@ -94,11 +92,7 @@
       if (!isInitialized())
       {
          super.initialize(environment);
-         initDelegateInjectionPoint();
          initDecoratedTypes();
-         initDelegateBindings();
-         initDelegateType();
-         checkDelegateType();
       }
    }
 
@@ -109,82 +103,6 @@
       this.decoratedTypes.remove(Serializable.class);
    }
 
-   void initDelegateInjectionPoint()
-   {
-      this.delegateInjectionPoint = getDelegateInjectionPoints().iterator().next();
-   }
-
-   @Override
-   void checkDelegateInjectionPoints()
-   {
-      for (WBInjectionPoint<?, ?> injectionPoint : getDelegateInjectionPoints())
-      {
-         if (injectionPoint instanceof MethodInjectionPoint<?, ?> && !injectionPoint.isAnnotationPresent(Inject.class))
-         {
-            throw new DefinitionException("Method with @Decorates parameter must be an initializer method " + injectionPoint);
-         }
-      }
-      if (getDelegateInjectionPoints().size() == 0)
-      {
-         throw new DefinitionException("No delegate injection points defined " + this);
-      }
-      else if (getDelegateInjectionPoints().size() > 1)
-      {
-         throw new DefinitionException("Too many delegate injection point defined " + this);
-      }
-   }
-
-   void initDelegateBindings()
-   {
-      this.delegateBindings = new HashSet<Annotation>(); 
-      this.delegateBindings.addAll(this.delegateInjectionPoint.getQualifiers());
-   }
-
-   void initDelegateType()
-   {
-      this.delegateType = this.delegateInjectionPoint.getBaseType();
-      this.delegateTypes = new HashSet<Type>();
-      delegateTypes.add(delegateType);
-   }
-
-   void checkDelegateType()
-   {
-      for (Type decoratedType : getDecoratedTypes())
-      {
-         if (decoratedType instanceof Class)
-         {
-            if (!((Class<?>) decoratedType).isAssignableFrom(delegateInjectionPoint.getJavaClass()))
-            {
-               throw new DefinitionException("The delegate type must extend or implement every decorated type. Decorated type " + decoratedType + "." + this );
-            }
-         }
-         else if (decoratedType instanceof ParameterizedType)
-         {
-            ParameterizedType parameterizedType = (ParameterizedType) decoratedType;
-            if (!delegateInjectionPoint.isParameterizedType())
-            {
-               throw new DefinitionException("The decorated type is parameterized, but the delegate type isn't. Delegate type " + delegateType + "." + this);
-            }
-            if (!Arrays.equals(delegateInjectionPoint.getActualTypeArguments(), parameterizedType.getActualTypeArguments()));
-            Type rawType = ((ParameterizedType) decoratedType).getRawType();
-            if (rawType instanceof Class && !((Class<?>) rawType).isAssignableFrom(delegateInjectionPoint.getJavaClass()))
-            {
-               throw new DefinitionException("The delegate type must extend or implement every decorated type. Decorated type " + decoratedType + "." + this );
-            }
-            else
-            {
-               throw new IllegalStateException("Unable to process " + decoratedType);
-            }
-
-         }
-      }
-   }
-
-   Set<Annotation> getDelegateQualifiers()
-   {
-      return delegateBindings;
-   }
-
    Type getDelegateType()
    {
       return delegateType;
@@ -195,11 +113,6 @@
       return decoratedTypes;
    }
    
-   WBInjectionPoint<?, ?> getDelegateInjectionPoint()
-   {
-      return delegateInjectionPoint;
-   }
-
    /**
     * The type closure of the delegate type
     * 
@@ -229,11 +142,12 @@
    @Override
    DecoratorImpl<T> createBean()
    {
-      return DecoratorImpl.of(getAnnotatedItem(), 
+      DecoratorImpl<T> bean = DecoratorImpl.of(getAnnotatedItem(), 
             getManager(),
             name,
             getMergedStereotypes(),
             getScope(),
+            null,
             isAlternative(),
             isProxyable(),
             bindings,
@@ -241,5 +155,9 @@
             getPostConstruct(),
             getPreDestroy(),
             getSpecializedBean());
+
+      bean.initialize();
+      registerSpecializedBean(bean);
+      return bean;
    }
 }

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/DisposalMethodBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/DisposalMethodBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/DisposalMethodBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -38,12 +38,16 @@
 import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.introspector.WBMethod;
 
+/**
+ * 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
+ * @version $Revision: 1.1 $
+ */
 class DisposalMethodBuilder<T> extends AbstractReceiverBeanBuilder<T, Method>
 {
 
    protected WBMethod<T, ?> disposalMethod;
    
-   //protected MethodInjectionPoint<T, ?> disposalMethodInjectionPoint;
    private final String id;
 
    DisposalMethodBuilder(BeanManagerImpl manager, WBMethod<T, ?> disposalMethod, AbstractClassBean<?> declaringBean)
@@ -88,7 +92,6 @@
    {
       // At least 1 parameter exists, already checked in constructor
       this.bindings = new HashSet<Annotation>();
-      //this.bindings.addAll(disposalMethodInjectionPoint.getWBParameters().get(0).getQualifiers());
       this.bindings.addAll(disposalMethod.getWBParameters().get(0).getQualifiers());
       initDefaultBindings();
    }
@@ -101,7 +104,6 @@
    {
       Set<Type> types = new HashSet<Type>();
       types = new HashSet<Type>();
-      //types.addAll(disposalMethodInjectionPoint.getAnnotatedParameters(Disposes.class).get(0).getTypeClosure());
       types.addAll(disposalMethod.getAnnotatedWBParameters(Disposes.class).get(0).getTypeClosure());
       types.add(Object.class);
       super.types = types;
@@ -238,7 +240,7 @@
 
    DisposalMethod<T> createBean()
    {
-      return DisposalMethod.of(manager, 
+      DisposalMethod<T> bean = DisposalMethod.of(manager, 
             name,
             disposalMethod, 
             getDeclaringBean(),
@@ -248,5 +250,9 @@
             isAlternative(),
             isProxyable(),
             bindings);
+
+      bean.initialize();
+      registerSpecializedBean(bean);
+      return bean;
    }
 }

Deleted: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ForwardingBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ForwardingBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ForwardingBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -1,172 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.bean.builder;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Set;
-
-import javax.enterprise.context.spi.CreationalContext;
-import javax.enterprise.inject.spi.Bean;
-import javax.enterprise.inject.spi.InjectionPoint;
-
-/**
- * A delegating bean
- * 
- * @author Pete Muir
- * 
- * @param <T>
- */
-public abstract class ForwardingBean<T> implements Bean<T>
-{
-
-   /**
-    * Creates an instance of the delegate
-    * 
-    * @return an instance of the delegate
-    */
-   public T create(CreationalContext<T> creationalContext)
-   {
-      return delegate().create(creationalContext);
-   }
-
-   /**
-    * Abstract getter for the delegate
-    * 
-    * @return The delegate
-    */
-   protected abstract Bean<T> delegate();
-
-   /**
-    * Destroys an instance through the delegate
-    * 
-    * @param instance The instance to destroy
-    */
-   public void destroy(T instance, CreationalContext<T> creationalContext)
-   {
-      delegate().destroy(instance, creationalContext);
-   }
-
-   /**
-    * Compares an object with the delegate
-    * 
-    * @return True if equals, false otherwise
-    */
-   @Override
-   public boolean equals(Object obj)
-   {
-      return delegate().equals(obj);
-   }
-
-   public Class<?> getBeanClass()
-   {
-      return delegate().getBeanClass();
-   }
-
-   /**
-    * Gets the binding types of the delegate
-    * 
-    * @return The binding types
-    */
-   public Set<Annotation> getQualifiers()
-   {
-      return delegate().getQualifiers();
-   }
-
-   public Set<InjectionPoint> getInjectionPoints()
-   {
-      return delegate().getInjectionPoints();
-   }
-
-   /**
-    * Gets the name of the delegate
-    * 
-    * @return The name
-    */
-   public String getName()
-   {
-      return delegate().getName();
-   }
-
-   /**
-    * The stereotypes applied to this bean
-    * 
-    * @return stereotypes if any
-    */
-   public Set<Class<? extends Annotation>> getStereotypes()
-   {
-      return delegate().getStereotypes();
-   }
-
-   /**
-    * Gets the scope type of the delegate
-    * 
-    * @return The scope type
-    */
-   public Class<? extends Annotation> getScope()
-   {
-      return delegate().getScope();
-   }
-
-   /**
-    * Gets the API types of the delegate
-    * 
-    * @return The API types
-    */
-   public Set<Type> getTypes()
-   {
-      return delegate().getTypes();
-   }
-
-   /**
-    * Gets the hash code of the delegate
-    * 
-    * @return The hash code
-    */
-   @Override
-   public int hashCode()
-   {
-      return delegate().hashCode();
-   }
-
-   /**
-    * Indicates if the delegate is nullable
-    * 
-    * @return True if nullable, false otherwise
-    */
-   public boolean isNullable()
-   {
-      return delegate().isNullable();
-   }
-
-   public boolean isAlternative()
-   {
-      return delegate().isAlternative();
-   }
-
-   /**
-    * Returns a string representation
-    * 
-    * @return The string representation
-    */
-   @Override
-   public String toString()
-   {
-      return "ForwardingBean " + getName() + " for " + delegate().toString();
-   }
-
-}

Deleted: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ForwardingDecorator.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ForwardingDecorator.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ForwardingDecorator.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -1,46 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2008, Red Hat Middleware LLC, and individual contributors
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * Licensed 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.jboss.webbeans.bean.builder;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-import java.util.Set;
-
-import javax.enterprise.inject.spi.Decorator;
-
-public abstract class ForwardingDecorator<T> extends ForwardingBean<T> implements Decorator<T>
-{
-
-   @Override
-   protected abstract Decorator<T> delegate();
-
-   public Set<Type> getDecoratedTypes()
-   {
-      return delegate().getDecoratedTypes();
-   }
-
-   public Set<Annotation> getDelegateQualifiers()
-   {
-      return delegate().getDelegateQualifiers();
-   }
-
-   public Type getDelegateType()
-   {
-      return delegate().getDelegateType();
-   }
-
-}

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ManagedBeanBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ManagedBeanBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ManagedBeanBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -17,11 +17,11 @@
 package org.jboss.webbeans.bean.builder;
 
 import javax.enterprise.inject.spi.Decorator;
-import javax.enterprise.inject.spi.InjectionPoint;
 
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.DefinitionException;
 import org.jboss.webbeans.bean.AbstractClassBean;
+import org.jboss.webbeans.bean.DecoratorImpl;
 import org.jboss.webbeans.bean.ManagedBean;
 import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.introspector.WBClass;
@@ -34,9 +34,10 @@
 import org.jboss.webbeans.util.Reflections;
 
 /**
- * Represents a simple bean
+ * Builder for simple beans
  * 
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T> The type (class) of the bean
  */
@@ -76,21 +77,6 @@
       initBindings();
    }
 
-   InjectionPoint attachCorrectInjectionPoint()
-   {
-      Decorator<?> decorator = getDecorators().get(getDecorators().size() - 1);
-      if (decorator instanceof DecoratorBuilder<?>)
-      {
-         DecoratorBuilder<?> decoratorBean = (DecoratorBuilder<?>) decorator;
-         InjectionPoint outerDelegateInjectionPoint = decoratorBean.getDelegateInjectionPoint();
-         return getManager().replaceOrPushCurrentInjectionPoint(outerDelegateInjectionPoint);
-      }
-      else
-      {
-         throw new IllegalStateException("Cannot operate on user defined decorator");
-      }
-   }
-
    /**
     * Initializes the bean and its metadata
     */
@@ -131,9 +117,9 @@
          }
          for (Decorator<?> decorator : getDecorators())
          {
-            if (decorator instanceof DecoratorBuilder<?>)
+            if (decorator instanceof DecoratorImpl<?>)
             {
-               DecoratorBuilder<?> decoratorBean = (DecoratorBuilder<?>) decorator;
+               DecoratorImpl<?> decoratorBean = (DecoratorImpl<?>) decorator;
                for (WBMethod<?, ?> decoratorMethod : decoratorBean.getAnnotatedItem().getWBMethods())
                {
                   WBMethod<?, ?> method = getAnnotatedItem().getWBMethod(decoratorMethod.getSignature());  
@@ -232,20 +218,24 @@
    @Override
    ManagedBean<T> createBean()
    {
-      return ManagedBean.of(
+      ManagedBean<T> bean = ManagedBean.of(
             getAnnotatedItem(),
             getManager(),
             name,
             getMergedStereotypes(),
             getScope(),
+            getDecorators(),
             isAlternative(),
             isProxyable(),
             bindings,
             getSuperclasses(),
             getProxyClassForDecorators(),
-            getDecorators(),
             getPostConstruct(),
             getPreDestroy(),
             getSpecializedBean());
+
+      bean.initialize();
+      registerSpecializedBean(bean);
+      return bean;
    }
 }

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/NewManagedBeanBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/NewManagedBeanBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/NewManagedBeanBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -28,9 +28,10 @@
 import org.jboss.webbeans.literal.NewLiteral;
 
 /**
- * Represents a @New simple bean
+ * Builder for a @New simple bean
  * 
  * @author Nicklas Karlsson 
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  */
 class NewManagedBeanBuilder<T> extends ManagedBeanBuilder<T>
 {
@@ -118,20 +119,24 @@
    @Override
    NewManagedBean<T> createBean()
    {
-      return NewManagedBean.of(
+      NewManagedBean<T> bean = NewManagedBean.of(
             getAnnotatedItem(),
             getManager(),
             name,
             getMergedStereotypes(),
             getScope(),
+            getDecorators(),
             isAlternative(),
             isAlternative(),
             bindings,
             getSuperclasses(),
             getProxyClassForDecorators(),
-            getDecorators(),
             getPostConstruct(),
             getPreDestroy(),
             getSpecializedBean());
+
+      bean.initialize();
+      registerSpecializedBean(bean);
+      return bean;
    }
 }

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/NewSessionBeanBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/NewSessionBeanBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/NewSessionBeanBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -30,9 +30,10 @@
 import org.jboss.webbeans.resources.ClassTransformer;
 
 /**
- * Represents a @New enterprise bean
+ * Builder for a @New enterprise bean
  * 
  * @author Nicklas Karlsson
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  */
 class NewSessionBeanBuilder<T> extends SessionBeanBuilder<T>
 {
@@ -127,22 +128,26 @@
    @Override
    NewSessionBean<T> createBean()
    {
-      return NewSessionBean.of(getEjbDescriptor(),
+      NewSessionBean<T> bean = NewSessionBean.of(getEjbDescriptor(),
             getManager(),
             name,
             types,
             getMergedStereotypes(),
             getScope(),
+            getDecorators(),
             isAlternative(),
             isProxyable(),
             bindings,
             getSuperclasses(),
             getProxyClassForDecorators(),
-            getDecorators(),
             getPostConstruct(),
             getPreDestroy(),
             getProxyClass(),
             getSpecializedBean());
+
+      bean.initialize();
+      registerSpecializedBean(bean);
+      return bean;
    }
 
    

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ProducerFieldBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ProducerFieldBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ProducerFieldBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -35,9 +35,10 @@
 import org.jboss.webbeans.ws.WSApiAbstraction;
 
 /**
- * Represents a producer field
+ * Builder for a producer field
  * 
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T>
  */
@@ -157,9 +158,10 @@
 
    public ProducerField<T> createBean()
    {
+      ProducerField<T> bean = null;
       if (isPersistenceContextProducerField(field))
       {
-         return PersistenceContextProducerField.of(field, 
+         bean = PersistenceContextProducerField.of(field, 
                getDeclaringBean(), 
                manager,
                name,
@@ -174,7 +176,7 @@
       }
       else if (isEEResourceProducerField(field))
       {
-         return EEResourceProducerField.of(field, 
+         bean = EEResourceProducerField.of(field, 
                getDeclaringBean(), 
                manager,
                name,
@@ -188,7 +190,7 @@
       }
       else
       {
-         return ProducerField.of(field, 
+         bean = ProducerField.of(field, 
                getDeclaringBean(), 
                manager,
                name,
@@ -200,6 +202,9 @@
                isProxyable(),
                bindings);
       }
+      
+      bean.initialize();
+      return bean;
    }
    
    private Set<Class<? extends Annotation>> createEmptyStereotypes()

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ProducerMethodBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ProducerMethodBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/ProducerMethodBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -37,9 +37,10 @@
 import org.jboss.webbeans.util.Names;
 
 /**
- * Represents a producer method bean
+ * Builder for a producer method bean
  * 
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T>
  */
@@ -245,7 +246,7 @@
 
    public ProducerMethod<T> createBean()
    {
-      return ProducerMethod.of(method, 
+      ProducerMethod<T> bean = ProducerMethod.of(method, 
             getDeclaringBean(), 
             manager,
             name,
@@ -258,5 +259,9 @@
             bindings,
             disposalMethodBean,
             specializedBean);
+
+      bean.initialize();
+      registerSpecializedBean(bean);
+      return bean;
    }
 }

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/RIBeanBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/RIBeanBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/RIBeanBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -17,23 +17,21 @@
 package org.jboss.webbeans.bean.builder;
 
 import java.lang.annotation.Annotation;
-import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.enterprise.context.Dependent;
-import javax.enterprise.inject.spi.InjectionPoint;
 
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.bean.RIBean;
 import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
-import org.jboss.webbeans.injection.WBInjectionPoint;
 
 /**
- * Abstract base class with functions specific to RI built-in beans
+ * Builder for RI built-in beans
  *  
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  */
 abstract class RIBeanBuilder<T>
 {
@@ -82,14 +80,6 @@
 
    abstract boolean isPrimitive();
 
-   abstract Set<WBInjectionPoint<?, ?>> getAnnotatedInjectionPoints();
-   
-   @SuppressWarnings("unchecked")
-   Set<InjectionPoint> getInjectionPoints()
-   {
-      return (Set) getAnnotatedInjectionPoints();
-   }
-
    abstract RIBean<?> getSpecializedBean();
    
    abstract String getId();

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/SessionBeanBuilder.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/SessionBeanBuilder.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builder/SessionBeanBuilder.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -30,7 +30,6 @@
 
 import javax.decorator.Decorator;
 import javax.enterprise.context.ApplicationScoped;
-import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.event.Observes;
 import javax.interceptor.Interceptor;
 
@@ -41,19 +40,17 @@
 import org.jboss.webbeans.bean.proxy.EnterpriseBeanInstance;
 import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.ejb.InternalEjbDescriptor;
-import org.jboss.webbeans.ejb.api.SessionObjectReference;
 import org.jboss.webbeans.ejb.spi.BusinessInterfaceDescriptor;
-import org.jboss.webbeans.ejb.spi.EjbServices;
 import org.jboss.webbeans.introspector.WBClass;
 import org.jboss.webbeans.introspector.WBMethod;
 import org.jboss.webbeans.resources.ClassTransformer;
-import org.jboss.webbeans.util.Beans;
 import org.jboss.webbeans.util.Proxies;
 
 /**
- * An enterprise bean representation
+ * Builder for session beans
  * 
  * @author Pete Muir
+ * @author <a href="kabir.khan at jboss.com">Kabir Khan</a>
  * 
  * @param <T> The type (class) of the bean
  */
@@ -313,22 +310,26 @@
    @Override
    SessionBean<T> createBean()
    {
-      return SessionBean.of(getEjbDescriptor(),
+      SessionBean<T> bean = SessionBean.of(getEjbDescriptor(),
             getManager(),
             name,
             types,
             getMergedStereotypes(),
             getScope(),
+            getDecorators(),
             isAlternative(),
             isProxyable(),
             bindings,
             getSuperclasses(),
             getProxyClassForDecorators(),
-            getDecorators(),
             getPostConstruct(),
             getPreDestroy(),
             getProxyClass(),
             getSpecializedBean());
+
+      bean.initialize();
+      registerSpecializedBean(bean);
+      return bean;
    }
 }
 

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builtin/AbstractBuiltInBean.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builtin/AbstractBuiltInBean.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/builtin/AbstractBuiltInBean.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -26,7 +26,6 @@
 
 import org.jboss.webbeans.BeanManagerImpl;
 import org.jboss.webbeans.bean.RIBean;
-import org.jboss.webbeans.bootstrap.BeanDeployerEnvironment;
 import org.jboss.webbeans.injection.WBInjectionPoint;
 import org.jboss.webbeans.literal.AnyLiteral;
 import org.jboss.webbeans.literal.DefaultLiteral;
@@ -46,7 +45,7 @@
    }
    
    @Override
-   public void initialize(BeanDeployerEnvironment environment)
+   public void initialize()
    {
       // No-op
    }

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ee/EEResourceProducerField.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ee/EEResourceProducerField.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bean/ee/EEResourceProducerField.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -77,11 +77,11 @@
    }
    
    @Override
-   public void initialize(BeanDeployerEnvironment environment)
+   public void initialize()
    {
       if (!isInitialized())
       {
-         super.initialize(environment);
+         super.initialize();
          checkEEResource();
       }
    }

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployerEnvironment.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -78,7 +78,7 @@
       else
       {
          ProducerMethod<?> bean = producerMethodBeanMap.get(method);
-         bean.initialize(this);
+         bean.initialize();
          return bean;
       }
    }
@@ -92,7 +92,7 @@
       else
       {
          AbstractClassBean<?> bean = classBeanMap.get(clazz);
-         bean.initialize(this);
+         bean.initialize();
          return bean;
       }
    }

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployer.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployer.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/bootstrap/ExtensionBeanDeployer.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -65,7 +65,7 @@
          WBClass<Extension> clazz = (WBClass<Extension>) classTransformer.loadClass(extension.getClass());
          
          ExtensionBean bean = new ExtensionBean(getManager(), clazz, extension);
-         bean.initialize(getEnvironment());
+         bean.initialize();
          getEnvironment().addBean(bean);
          getManager().addBean(bean);
          

Modified: ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/util/Reflections.java
===================================================================
--- ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/util/Reflections.java	2009-09-21 17:08:54 UTC (rev 3714)
+++ ri/branches/kabir-builder/impl/src/main/java/org/jboss/webbeans/util/Reflections.java	2009-09-21 21:13:38 UTC (rev 3715)
@@ -302,8 +302,6 @@
     */
    public static boolean isPrimitive(Class<?> type)
    {
-      if (type == null)
-         throw new NullPointerException();
       return type.isPrimitive();
    }
 
@@ -787,6 +785,8 @@
     */
    public static boolean isAssignableFrom(Set<Type> types1, Set<Type> types2)
    {
+      if (types1 == null)
+         throw new NullPointerException();
       for (Type type : types1)
       {
          if (isAssignableFrom(type, types2))




More information about the weld-commits mailing list