[webbeans-commits] Webbeans SVN: r2793 - in ri/trunk: impl/src/main/java/org/jboss/webbeans/el and 3 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Mon Jun 8 16:33:58 EDT 2009


Author: pete.muir at jboss.org
Date: 2009-06-08 16:33:56 -0400 (Mon, 08 Jun 2009)
New Revision: 2793

Added:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/el/ForwardingELResolver.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
   ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolverImpl.java
Removed:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
Modified:
   ri/trunk/impl/src/main/java/org/jboss/webbeans/ManagerImpl.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/named/NamedBeanWithBindingTest.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerTest.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerWithBindingTest.java
   ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/proxy/ProxyTest.java
Log:
more tidy up :-)

Modified: ri/trunk/impl/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/ManagerImpl.java	2009-06-08 19:41:03 UTC (rev 2792)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/ManagerImpl.java	2009-06-08 20:33:56 UTC (rev 2793)
@@ -80,7 +80,7 @@
 import org.jboss.webbeans.context.ApplicationContext;
 import org.jboss.webbeans.context.CreationalContextImpl;
 import org.jboss.webbeans.el.Namespace;
-import org.jboss.webbeans.el.WebBeansELResolver;
+import org.jboss.webbeans.el.WebBeansELResolverImpl;
 import org.jboss.webbeans.event.EventManager;
 import org.jboss.webbeans.event.EventObserver;
 import org.jboss.webbeans.event.ObserverImpl;
@@ -194,7 +194,8 @@
     */  
    private transient final EventManager eventManager;
    private transient final Resolver resolver;
-   private final transient NonContextualInjector nonContextualInjector;   
+   private final transient NonContextualInjector nonContextualInjector;
+   private final transient ELResolver webbeansELResolver;
    
    /*
     * Activity scoped data structures
@@ -304,6 +305,7 @@
       this.resolver = new Resolver(this);
       this.eventManager = new EventManager(this);
       this.nonContextualInjector = new NonContextualInjector(this);
+      this.webbeansELResolver = new WebBeansELResolverImpl(this);
       this.childActivities = new CopyOnWriteArraySet<ManagerImpl>();
       this.currentInjectionPoint = new ThreadLocal<Stack<InjectionPoint>>()
       {
@@ -740,14 +742,13 @@
    }
    
 
-   /** 
-    * XXX this is not correct, as the current implementation of getInstance does not 
-    * pay attention to what type the resulting instance needs to implement (non-Javadoc)
-    * @see javax.enterprise.inject.spi.BeanManager#getReference(javax.enterprise.inject.spi.Bean, java.lang.reflect.Type)
+   /*
+    * TODO this is not correct, as the current implementation of getInstance does not 
+    * pay attention to what type the resulting instance needs to implement
     */
    public Object getReference(Bean<?> bean, Type beanType)
    {
-      return getInstance(bean,true);  
+      return getInjectableReference(bean, CreationalContextImpl.of(bean));  
    }
 
    @SuppressWarnings("unchecked")
@@ -793,33 +794,6 @@
    }
 
    /**
-    * Gets an instance by name, returning null if none is found and throwing an
-    * exception if too many beans match
-    * 
-    * @param name The name to match
-    * @return An instance of the bean
-    * 
-    * @see javax.enterprise.inject.spi.BeanManager#getInstanceByName(java.lang.String)
-    */
-   @Deprecated
-   public Object getInstanceByName(String name)
-   {
-      Set<Bean<?>> beans = getBeans(name);
-      if (beans.size() == 0)
-      {
-         return null;
-      }
-      else if (beans.size() > 1)
-      {
-         throw new AmbiguousResolutionException("Resolved multiple Web Beans with " + name);
-      }
-      else
-      {
-         return getInstance(beans.iterator().next());
-      }
-   }
-
-   /**
     * Returns an instance by API type and binding types
     * 
     * @param type The API type to match
@@ -1246,7 +1220,7 @@
    
    public ELResolver getELResolver()
    {
-      return new WebBeansELResolver();
+      return webbeansELResolver;
    }
 
 }

Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/el/ForwardingELResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/ForwardingELResolver.java	                        (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/el/ForwardingELResolver.java	2009-06-08 20:33:56 UTC (rev 2793)
@@ -0,0 +1,49 @@
+package org.jboss.webbeans.el;
+
+import java.util.Iterator;
+
+import javax.el.ELContext;
+import javax.el.ELResolver;
+
+public abstract class ForwardingELResolver extends ELResolver
+{
+   
+   protected abstract ELResolver delegate();
+
+   @Override
+   public Class<?> getCommonPropertyType(ELContext context, Object base)
+   {
+      return delegate().getCommonPropertyType(context, base);
+   }
+
+   @Override
+   public Iterator<?> getFeatureDescriptors(ELContext context, Object base)
+   {
+      return delegate().getFeatureDescriptors(context, base);
+   }
+
+   @Override
+   public Class<?> getType(ELContext context, Object base, Object property)
+   {
+      return delegate().getType(context, base, property);
+   }
+
+   @Override
+   public Object getValue(ELContext context, Object base, Object property)
+   {
+      return delegate().getValue(context, base, property);
+   }
+
+   @Override
+   public boolean isReadOnly(ELContext context, Object base, Object property)
+   {
+      return delegate().isReadOnly(context, base, property);
+   }
+
+   @Override
+   public void setValue(ELContext context, Object base, Object property, Object value)
+   {
+      delegate().setValue(context, base, property, value);
+   }
+
+}


Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/el/ForwardingELResolver.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Deleted: ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java	2009-06-08 19:41:03 UTC (rev 2792)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java	2009-06-08 20:33:56 UTC (rev 2793)
@@ -1,171 +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.el;
-
-import java.beans.FeatureDescriptor;
-import java.util.Iterator;
-
-import javax.el.ELContext;
-import javax.el.ELResolver;
-import javax.inject.ExecutionException;
-
-import org.jboss.webbeans.CurrentManager;
-import org.jboss.webbeans.ManagerImpl;
-
-/**
- * An EL-resolver against the named beans
- *  
- * @author Pete Muir
- */
-public class WebBeansELResolver extends ELResolver
-{
-   
-   private static final class ValueHolder<T>
-   {
-      
-      private T value;
-      
-      public T getValue()
-      {
-         return value;
-      }
-      
-      public void setValue(T value)
-      {
-         this.value = value;
-      }
-      
-   }
-      
-   /**
-    * @see javax.el.ELResolver#getCommonPropertyType(ELContext, Object)
-    */
-   @Override
-   public Class<?> getCommonPropertyType(ELContext context, Object base)
-   {
-      return null;
-   }
-
-   /**
-    * @see javax.el.ELResolver#getFeatureDescriptors(ELContext, Object)
-    */
-   @Override
-   public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base)
-   {
-      return null;
-   }
-
-   /**
-    * @see javax.el.ELResolver#getType(ELContext, Object, Object)
-    */
-   @Override
-   public Class<?> getType(ELContext context, Object base, Object property)
-   {
-      return null;
-   }
-
-   /**
-    * @see javax.el.ELResolver#getValue(ELContext, Object, Object)
-    */
-   @Override
-   public Object getValue(ELContext context, Object base, Object property)
-   {
-      if (property != null)
-      {
-         final ManagerImpl manager = CurrentManager.rootManager().getCurrent();
-         String propertyString = property.toString();
-         Namespace namespace = null;
-         if (base == null) 
-         {
-            if (manager.getRootNamespace().contains(propertyString))
-            {
-               context.setPropertyResolved(true);
-               return manager.getRootNamespace().get(propertyString);
-            }
-         }
-         else if (base instanceof Namespace)
-         {
-            namespace = (Namespace) base;
-            // We're definitely the responsible party
-            context.setPropertyResolved(true);
-            if (namespace.contains(propertyString))
-            {
-               // There is a child namespace
-               return namespace.get(propertyString);
-            }
-         }
-         else
-         {
-            // let the standard EL resolver chain handle the property
-            return null;
-         }
-         final String name;
-         if (namespace != null)
-         {
-            // Try looking in the manager for a bean
-            name = namespace.qualifyName(propertyString);
-         }
-         else
-         {
-            name = propertyString;
-         }
-         final ValueHolder<Object> holder = new ValueHolder<Object>();
-         try
-         {
-            new RunInDependentContext()
-            {
-
-               @Override
-               protected void execute() throws Exception
-               {
-                  holder.setValue(manager.getInstanceByName(name));
-               }
-               
-            }.run();
-         }
-         catch (Exception e)
-         {
-            throw new ExecutionException("Error resolving property " + propertyString + " against base " + base, e);
-         }
-         if (holder.getValue() != null)
-         {
-            context.setPropertyResolved(true);
-            return holder.getValue();
-         }
-      }
-      return null;
-   }
-
-   /**
-    * @see javax.el.ELResolver#isReadOnly(ELContext, Object, Object)
-    */
-   @Override
-   public boolean isReadOnly(ELContext context, Object base, Object property)
-   {
-      return false;
-   }
-
-   /**
-    * @see javax.el.ELResolver#setValue(ELContext, Object, Object, Object)
-    */
-   @Override
-   public void setValue(ELContext context, Object base, Object property, Object value)
-   {
-   }
-
-}
-

Added: ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java	                        (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java	2009-06-08 20:33:56 UTC (rev 2793)
@@ -0,0 +1,16 @@
+package org.jboss.webbeans.el;
+
+import javax.el.ELResolver;
+
+import org.jboss.webbeans.CurrentManager;
+
+public class WebBeansELResolver extends ForwardingELResolver
+{
+
+   @Override
+   protected ELResolver delegate()
+   {
+      return CurrentManager.rootManager().getCurrent().getELResolver();
+   }
+
+}


Property changes on: ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Copied: ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolverImpl.java (from rev 2774, ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolver.java)
===================================================================
--- ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolverImpl.java	                        (rev 0)
+++ ri/trunk/impl/src/main/java/org/jboss/webbeans/el/WebBeansELResolverImpl.java	2009-06-08 20:33:56 UTC (rev 2793)
@@ -0,0 +1,181 @@
+/*
+ * 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.el;
+
+import java.beans.FeatureDescriptor;
+import java.util.Iterator;
+
+import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.enterprise.inject.spi.Bean;
+import javax.inject.ExecutionException;
+
+import org.jboss.webbeans.ManagerImpl;
+
+/**
+ * An EL-resolver against the named beans
+ *  
+ * @author Pete Muir
+ */
+public class WebBeansELResolverImpl extends ELResolver
+{
+   
+   private static final class ValueHolder<T>
+   {
+      
+      private T value;
+      
+      public T getValue()
+      {
+         return value;
+      }
+      
+      public void setValue(T value)
+      {
+         this.value = value;
+      }
+      
+   }
+   
+   private final ManagerImpl manager;
+      
+   public WebBeansELResolverImpl(ManagerImpl manager)
+   {
+      this.manager = manager;
+   }
+
+   /**
+    * @see javax.el.ELResolver#getCommonPropertyType(ELContext, Object)
+    */
+   @Override
+   public Class<?> getCommonPropertyType(ELContext context, Object base)
+   {
+      return null;
+   }
+
+   /**
+    * @see javax.el.ELResolver#getFeatureDescriptors(ELContext, Object)
+    */
+   @Override
+   public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base)
+   {
+      return null;
+   }
+
+   /**
+    * @see javax.el.ELResolver#getType(ELContext, Object, Object)
+    */
+   @Override
+   public Class<?> getType(ELContext context, Object base, Object property)
+   {
+      return null;
+   }
+
+   /**
+    * @see javax.el.ELResolver#getValue(ELContext, Object, Object)
+    */
+   @Override
+   public Object getValue(ELContext context, Object base, Object property)
+   {
+      if (property != null)
+      {
+         String propertyString = property.toString();
+         Namespace namespace = null;
+         if (base == null) 
+         {
+            if (manager.getRootNamespace().contains(propertyString))
+            {
+               context.setPropertyResolved(true);
+               return manager.getRootNamespace().get(propertyString);
+            }
+         }
+         else if (base instanceof Namespace)
+         {
+            namespace = (Namespace) base;
+            // We're definitely the responsible party
+            context.setPropertyResolved(true);
+            if (namespace.contains(propertyString))
+            {
+               // There is a child namespace
+               return namespace.get(propertyString);
+            }
+         }
+         else
+         {
+            // let the standard EL resolver chain handle the property
+            return null;
+         }
+         final String name;
+         if (namespace != null)
+         {
+            // Try looking in the manager for a bean
+            name = namespace.qualifyName(propertyString);
+         }
+         else
+         {
+            name = propertyString;
+         }
+         final ValueHolder<Object> holder = new ValueHolder<Object>();
+         try
+         {
+            new RunInDependentContext()
+            {
+
+               @Override
+               protected void execute() throws Exception
+               {
+                  Bean<?> bean = manager.getHighestPrecedenceBean(manager.getBeans(name));
+                  if (bean != null)
+                  {
+                     holder.setValue(manager.getReference(bean, Object.class));
+                  }
+               }
+               
+            }.run();
+         }
+         catch (Exception e)
+         {
+            throw new ExecutionException("Error resolving property " + propertyString + " against base " + base, e);
+         }
+         if (holder.getValue() != null)
+         {
+            context.setPropertyResolved(true);
+            return holder.getValue();
+         }
+      }
+      return null;
+   }
+
+   /**
+    * @see javax.el.ELResolver#isReadOnly(ELContext, Object, Object)
+    */
+   @Override
+   public boolean isReadOnly(ELContext context, Object base, Object property)
+   {
+      return false;
+   }
+
+   /**
+    * @see javax.el.ELResolver#setValue(ELContext, Object, Object, Object)
+    */
+   @Override
+   public void setValue(ELContext context, Object base, Object property, Object value)
+   {
+   }
+
+}
+

Modified: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/named/NamedBeanWithBindingTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/named/NamedBeanWithBindingTest.java	2009-06-08 19:41:03 UTC (rev 2792)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/named/NamedBeanWithBindingTest.java	2009-06-08 20:33:56 UTC (rev 2793)
@@ -1,7 +1,5 @@
 package org.jboss.webbeans.test.unit.implementation.named;
 
-import static org.testng.Assert.assertNotNull;
-
 import org.jboss.testharness.impl.packaging.Artifact;
 import org.jboss.webbeans.test.AbstractWebBeansTest;
 import org.testng.annotations.Test;
@@ -15,7 +13,7 @@
    @Test
    public void testGetNamedBeanWithBinding()
    {
-      NamedBeanWithBinding bean = (NamedBeanWithBinding) getCurrentManager().getInstanceByName("namedBeanWithBinding");
-      assertNotNull(bean);
+      NamedBeanWithBinding bean = (NamedBeanWithBinding) getCurrentManager().getReference(getCurrentManager().getHighestPrecedenceBean(getCurrentManager().getBeans("namedBeanWithBinding")), Object.class);
+      assert bean != null;
    }
 }

Modified: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerTest.java	2009-06-08 19:41:03 UTC (rev 2792)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerTest.java	2009-06-08 20:33:56 UTC (rev 2793)
@@ -10,9 +10,9 @@
    @Test
    public void testNamedProducer()
    {
-      String[] iemon = (String[]) getCurrentManager().getInstanceByName("iemon");
+      String[] iemon = (String[]) getCurrentManager().getReference(getCurrentManager().getHighestPrecedenceBean(getCurrentManager().getBeans("iemon")), Object.class);
       assert iemon.length == 3;
-      String[] itoen = (String[]) getCurrentManager().getInstanceByName("itoen");
+      String[] itoen = (String[]) getCurrentManager().getReference(getCurrentManager().getHighestPrecedenceBean(getCurrentManager().getBeans("itoen")), Object.class);
       assert itoen.length == 2;
    }
 

Modified: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerWithBindingTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerWithBindingTest.java	2009-06-08 19:41:03 UTC (rev 2792)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/producer/method/NamedProducerWithBindingTest.java	2009-06-08 20:33:56 UTC (rev 2793)
@@ -1,7 +1,8 @@
 package org.jboss.webbeans.test.unit.implementation.producer.method;
 
+import static org.testng.Assert.assertNotNull;
+
 import java.util.Date;
-import static org.testng.Assert.*;
 
 import org.jboss.testharness.impl.packaging.Artifact;
 import org.jboss.webbeans.test.AbstractWebBeansTest;
@@ -16,7 +17,7 @@
    @Test
    public void testGetNamedProducerWithBinding()
    {
-      Date date = (Date) getCurrentManager().getInstanceByName("date");
+      Date date = (Date) getCurrentManager().getReference(getCurrentManager().getHighestPrecedenceBean(getCurrentManager().getBeans("date")), Object.class);
       assertNotNull(date);
    }
 }

Modified: ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/proxy/ProxyTest.java
===================================================================
--- ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/proxy/ProxyTest.java	2009-06-08 19:41:03 UTC (rev 2792)
+++ ri/trunk/tests/src/test/java/org/jboss/webbeans/test/unit/implementation/proxy/ProxyTest.java	2009-06-08 20:33:56 UTC (rev 2793)
@@ -11,7 +11,7 @@
    @Test(description="WBRI-122")
    public void testImplementationClassImplementsSerializable()
    {
-      getCurrentManager().getInstanceByName("foo");
+      getCurrentManager().getReference(getCurrentManager().getHighestPrecedenceBean(getCurrentManager().getBeans("foo")), Object.class);
    }
    
 }




More information about the weld-commits mailing list