[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