[webbeans-commits] Webbeans SVN: r182 - in ri/trunk/webbeans-ri: src/main/java/org/jboss/webbeans and 5 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Mon Oct 27 10:40:29 EDT 2008
Author: pete.muir at jboss.org
Date: 2008-10-27 10:40:29 -0400 (Mon, 27 Oct 2008)
New Revision: 182
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/ResolverInjectable.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/BindingTypeModel.java
Removed:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/SimpleInjectable.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedItem.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/AnnotationModel.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerExpressionBeanModel.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerMethodBeanModel.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java
ri/trunk/webbeans-ri/testng.xml
Log:
Start to fix corner cases in resolution and instantiation
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -27,7 +27,7 @@
import org.jboss.webbeans.exceptions.NameResolutionLocation;
import org.jboss.webbeans.exceptions.TypesafeResolutionLocation;
import org.jboss.webbeans.injectable.Injectable;
-import org.jboss.webbeans.injectable.SimpleInjectable;
+import org.jboss.webbeans.injectable.ResolverInjectable;
import org.jboss.webbeans.util.ClientProxy;
public class ManagerImpl implements Manager
@@ -112,13 +112,13 @@
public <T> Set<Bean<T>> resolveByType(Class<T> type,
Annotation... bindingTypes)
{
- return resolveByType(new SimpleInjectable<T>(type, bindingTypes));
+ return resolveByType(new ResolverInjectable<T>(type, bindingTypes, getModelManager()));
}
public <T> Set<Bean<T>> resolveByType(TypeLiteral<T> apiType,
Annotation... bindingTypes)
{
- return resolveByType(new SimpleInjectable<T>(apiType, bindingTypes));
+ return resolveByType(new ResolverInjectable<T>(apiType, bindingTypes, getModelManager()));
}
private <T> Set<Bean<T>> resolveByType(Injectable<T, ?> injectable)
@@ -221,12 +221,12 @@
public <T> T getInstanceByType(Class<T> type, Annotation... bindingTypes)
{
- return getInstanceByType(new SimpleInjectable<T>(type, bindingTypes));
+ return getInstanceByType(new ResolverInjectable<T>(type, bindingTypes, getModelManager()));
}
public <T> T getInstanceByType(TypeLiteral<T> type, Annotation... bindingTypes)
{
- return getInstanceByType(new SimpleInjectable<T>(type, bindingTypes));
+ return getInstanceByType(new ResolverInjectable<T>(type, bindingTypes, getModelManager()));
}
private <T> T getInstanceByType(Injectable<T, ?> injectable)
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ModelManager.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -5,6 +5,7 @@
import java.util.Map;
import org.jboss.webbeans.model.AnnotationModel;
+import org.jboss.webbeans.model.BindingTypeModel;
import org.jboss.webbeans.model.ScopeModel;
import org.jboss.webbeans.model.StereotypeModel;
import org.jboss.webbeans.model.bean.BeanModel;
@@ -22,10 +23,18 @@
super(new HashMap<Class<? extends Annotation>, T>());
}
- public <S extends Annotation> T get(Class<S> key)
+ public <S extends Annotation> T putIfAbsent(Class<S> key)
{
+ if (!containsKey(key))
+ {
+ T model = createAnnotationModel(key);
+ super.put(key, model);
+ return model;
+ }
return (T) super.get(key);
}
+
+ protected abstract <S extends Annotation> T createAnnotationModel(Class<S> type);
}
@SuppressWarnings("unchecked")
@@ -33,19 +42,45 @@
{
@Override
- public <S extends Annotation> ScopeModel<S> get(Class<S> key)
+ public <S extends Annotation> ScopeModel<S> putIfAbsent(Class<S> key)
{
- return (ScopeModel<S>) super.get(key);
+ return (ScopeModel<S>) super.putIfAbsent(key);
}
+ @Override
+ protected <S extends Annotation> ScopeModel<?> createAnnotationModel(Class<S> type)
+ {
+ return new ScopeModel<S>(type);
+ }
+
}
+ @SuppressWarnings("unchecked")
+ private class BindingTypeModelMap extends AnnotationModelMap<BindingTypeModel<?>>
+ {
+
+ @Override
+ public <S extends Annotation> BindingTypeModel<S> putIfAbsent(Class<S> key)
+ {
+ return (BindingTypeModel<S>) super.putIfAbsent(key);
+ }
+
+ @Override
+ protected <S extends Annotation> BindingTypeModel<?> createAnnotationModel(Class<S> type)
+ {
+ return new BindingTypeModel<S>(type);
+ }
+
+ }
+
private Map<Class<? extends Annotation>, StereotypeModel<?>> stereotypes = new HashMap<Class<? extends Annotation>, StereotypeModel<?>>();
private Map<Class<?>, BeanModel<?, ?>> beanModels = new HashMap<Class<?>, BeanModel<?,?>>();
private ScopeModelMap scopes = new ScopeModelMap();
+ private BindingTypeModelMap bindingTypes = new BindingTypeModelMap();
+
public void addStereotype(StereotypeModel<?> stereotype)
{
@@ -69,16 +104,14 @@
public <T extends Annotation> ScopeModel<T> getScopeModel(Class<T> scopeType)
{
- if (scopes.containsKey(scopeType))
- {
- return scopes.get(scopeType);
- }
- else
- {
- ScopeModel<T> scopeModel = new ScopeModel<T>(scopeType);
- scopes.put(scopeType, scopeModel);
- return scopeModel;
- }
+ return scopes.putIfAbsent(scopeType);
}
+
+ public <T extends Annotation> BindingTypeModel<T> getBindingTypeModel(Class<T> bindingType)
+ {
+ return bindingTypes.putIfAbsent(bindingType);
+ }
+
+
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/Injectable.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -1,7 +1,6 @@
package org.jboss.webbeans.injectable;
import java.lang.annotation.Annotation;
-import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@@ -9,7 +8,6 @@
import javax.webbeans.manager.Bean;
import org.jboss.webbeans.ManagerImpl;
-import org.jboss.webbeans.bindings.CurrentAnnotationLiteral;
import org.jboss.webbeans.introspector.AnnotatedItem;
/**
@@ -22,9 +20,6 @@
public abstract class Injectable<T, S>
{
- private static final Annotation[] DEFAULT_BINDING_ARRAY = {new CurrentAnnotationLiteral()};
- private static final Set<Annotation> DEFAULT_BINDING = new HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
-
private AnnotatedItem<T, S> annotatedItem;
public Injectable(AnnotatedItem<T, S> annotatedItem)
@@ -34,29 +29,12 @@
public Annotation[] getBindingTypesAsArray()
{
- Annotation[] annotations = annotatedItem.getAnnotationsAsArray(BindingType.class);
- // TODO This is in the wrong place, where to put it... Probably best to wrap annotated item...
- if (annotations.length ==0)
- {
- return DEFAULT_BINDING_ARRAY;
- }
- else
- {
- return annotations;
- }
+ return annotatedItem.getAnnotationsAsArray(BindingType.class);
}
public Set<Annotation> getBindingTypes()
{
- Set<Annotation> annotations = annotatedItem.getAnnotations(BindingType.class);
- if (annotations.size() == 0)
- {
- return DEFAULT_BINDING;
- }
- else
- {
- return annotations;
- }
+ return annotatedItem.getAnnotations(BindingType.class);
}
protected Injectable() {}
Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/ResolverInjectable.java (from rev 176, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/SimpleInjectable.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/ResolverInjectable.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/ResolverInjectable.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -0,0 +1,92 @@
+package org.jboss.webbeans.injectable;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.webbeans.BindingType;
+import javax.webbeans.DuplicateBindingTypeException;
+import javax.webbeans.TypeLiteral;
+
+import org.jboss.webbeans.ModelManager;
+import org.jboss.webbeans.bindings.CurrentAnnotationLiteral;
+import org.jboss.webbeans.introspector.SimpleAnnotatedItem;
+
+/**
+ * TODO Rename this to something which implies it only ever used for resolution
+ * @author Pete Muir
+ *
+ */
+public class ResolverInjectable<T> extends Injectable<T, Object>
+{
+
+ private static final Annotation[] DEFAULT_BINDING_ARRAY = {new CurrentAnnotationLiteral()};
+ private static final Set<Annotation> DEFAULT_BINDING = new HashSet<Annotation>(Arrays.asList(DEFAULT_BINDING_ARRAY));
+
+ private boolean useDefaultBinding;
+
+ public ResolverInjectable(SimpleAnnotatedItem<T, Object> annotatedItem, ModelManager modelManager)
+ {
+ super(annotatedItem);
+ for (Annotation annotation : annotatedItem.getAnnotations())
+ {
+ if (!modelManager.getBindingTypeModel(annotation.annotationType()).isValid())
+ {
+ throw new IllegalArgumentException("Not a binding type " + annotation);
+ }
+ }
+ if (annotatedItem.getActualAnnotations().length > annotatedItem.getAnnotations(BindingType.class).size())
+ {
+ throw new DuplicateBindingTypeException(getAnnotatedItem().toString());
+ }
+
+ if (annotatedItem.getAnnotations(BindingType.class).size() == 0)
+ {
+ useDefaultBinding = true;
+ }
+ }
+
+ @Override
+ public Set<Annotation> getBindingTypes()
+ {
+ if (useDefaultBinding)
+ {
+ return DEFAULT_BINDING;
+ }
+ else
+ {
+ return super.getBindingTypes();
+ }
+ }
+
+ @Override
+ public Annotation[] getBindingTypesAsArray()
+ {
+ if (useDefaultBinding)
+ {
+ return DEFAULT_BINDING_ARRAY;
+ }
+ else
+ {
+ return super.getBindingTypesAsArray();
+ }
+ }
+
+ public ResolverInjectable(Class<T> type, Annotation[] bindingTypes, ModelManager modelManager)
+ {
+ this(new SimpleAnnotatedItem<T, Object>(bindingTypes, type), modelManager);
+ }
+
+ public ResolverInjectable(Class<T> type, Annotation[] bindingTypes, ModelManager modelManager, Type ... actualTypeArguements)
+ {
+ this(new SimpleAnnotatedItem<T, Object>(bindingTypes, type, actualTypeArguements), modelManager);
+ }
+
+ public ResolverInjectable(TypeLiteral<T> apiType, Annotation[] bindingTypes, ModelManager modelManager)
+ {
+ this(new SimpleAnnotatedItem<T, Object>(bindingTypes, apiType), modelManager);
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/ResolverInjectable.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/SimpleInjectable.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/SimpleInjectable.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/injectable/SimpleInjectable.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -1,28 +0,0 @@
-package org.jboss.webbeans.injectable;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-
-import javax.webbeans.TypeLiteral;
-
-import org.jboss.webbeans.introspector.SimpleAnnotatedItem;
-
-public class SimpleInjectable<T> extends Injectable<T, Object>
-{
-
- public SimpleInjectable(Class<T> type, Annotation[] bindingTypes)
- {
- super(new SimpleAnnotatedItem<T, Object>(bindingTypes, type));
- }
-
- public SimpleInjectable(Class<T> type, Annotation[] bindingTypes, Type ... actualTypeArguements)
- {
- super(new SimpleAnnotatedItem<T, Object>(bindingTypes, type, actualTypeArguements));
- }
-
- public SimpleInjectable(TypeLiteral<T> apiType, Annotation[] bindingTypes)
- {
- super(new SimpleAnnotatedItem<T, Object>(bindingTypes, apiType));
- }
-
-}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AbstractAnnotatedItem.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -65,7 +65,7 @@
{
metaAnnotationMap = new HashMap<Class<? extends Annotation>, Set<Annotation>>();
}
- populateMetaAnnotationMap(metaAnnotationType, metaAnnotationMap, annotationMap);
+ metaAnnotationMap = populateMetaAnnotationMap(metaAnnotationType, metaAnnotationMap, annotationMap);
return metaAnnotationMap.get(metaAnnotationType);
}
@@ -73,6 +73,7 @@
{
if (annotationArray == null)
{
+ annotationArray = new Annotation[0];
annotationArray = getAnnotations(metaAnnotationType).toArray(annotationArray);
}
return annotationArray;
@@ -94,10 +95,10 @@
protected static <A extends Annotation> Map<Class<? extends Annotation>, Set<Annotation>> populateMetaAnnotationMap(
Class<A> metaAnnotationType, Map<Class<? extends Annotation>,
- Set<Annotation>> metaAnnotations,
+ Set<Annotation>> metaAnnotationMap,
Map<Class<? extends Annotation>, Annotation> annotationMap)
{
- if (!metaAnnotations.containsKey(metaAnnotationType))
+ if (!metaAnnotationMap.containsKey(metaAnnotationType))
{
Set<Annotation> s = new HashSet<Annotation>();
for (Entry<Class<? extends Annotation>, Annotation> entry : annotationMap.entrySet())
@@ -107,9 +108,9 @@
s.add(entry.getValue());
}
}
- metaAnnotations.put(metaAnnotationType, s);
+ metaAnnotationMap.put(metaAnnotationType, s);
}
- return metaAnnotations;
+ return metaAnnotationMap;
}
protected Map<Class<? extends Annotation>, Annotation> getAnnotationMap()
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedItem.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/SimpleAnnotatedItem.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -12,19 +12,20 @@
private Type[] actualTypeArguements = new Type[0];
private Class<? extends T> type;
+ private Annotation[] actualAnnotations;
- public SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap)
+ private SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap)
{
super(annotationMap);
}
- public SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, Class<? extends T> type)
+ private SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, Class<? extends T> type)
{
super(annotationMap);
this.type = type;
}
- public SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, TypeLiteral<? extends T> apiType)
+ private SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, TypeLiteral<? extends T> apiType)
{
super(annotationMap);
this.type = apiType.getRawType();
@@ -34,7 +35,7 @@
}
}
- public SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, Class<? extends T> type, Type[] actualTypeArguements)
+ private SimpleAnnotatedItem(Map<Class<? extends Annotation>, Annotation> annotationMap, Class<? extends T> type, Type[] actualTypeArguements)
{
this(annotationMap, type);
this.actualTypeArguements = actualTypeArguements;
@@ -43,21 +44,25 @@
public SimpleAnnotatedItem(Annotation[] annotations)
{
this(buildAnnotationMap(annotations));
+ this.actualAnnotations = annotations;
}
public SimpleAnnotatedItem(Annotation[] annotations, Class<? extends T> type)
{
this(buildAnnotationMap(annotations), type);
+ this.actualAnnotations = annotations;
}
public SimpleAnnotatedItem(Annotation[] annotations, TypeLiteral<? extends T> apiType)
{
this(buildAnnotationMap(annotations), apiType);
+ this.actualAnnotations = annotations;
}
public SimpleAnnotatedItem(Annotation[] annotations, Class<? extends T> type, Type[] actualTypeArguements)
{
this(buildAnnotationMap(annotations), type, actualTypeArguements);
+ this.actualAnnotations = annotations;
}
public S getDelegate()
@@ -75,4 +80,9 @@
return actualTypeArguements;
}
+ public Annotation[] getActualAnnotations()
+ {
+ return actualAnnotations;
+ }
+
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/AnnotationModel.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/AnnotationModel.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/AnnotationModel.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -35,7 +35,7 @@
protected void initValid()
{
- this.valid = !annotatedAnnotation.isAnnotationPresent(getMetaAnnotation());
+ this.valid = annotatedAnnotation.isAnnotationPresent(getMetaAnnotation());
}
public Class<T> getType()
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/BindingTypeModel.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/BindingTypeModel.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/BindingTypeModel.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -0,0 +1,46 @@
+/*
+ * 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.model;
+
+import java.lang.annotation.Annotation;
+
+import javax.webbeans.BindingType;
+
+/**
+ *
+ * Model of a binding type
+ *
+ * @author Pete Muir
+ *
+ */
+public class BindingTypeModel<T extends Annotation> extends AnnotationModel<T>
+{
+
+ public BindingTypeModel(Class<T> scope)
+ {
+ super(scope);
+ }
+
+ @Override
+ protected Class<? extends Annotation> getMetaAnnotation()
+ {
+ return BindingType.class;
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/BindingTypeModel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerExpressionBeanModel.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerExpressionBeanModel.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerExpressionBeanModel.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -1,22 +1,19 @@
package org.jboss.webbeans.model.bean;
-import java.lang.annotation.Annotation;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
-import java.util.HashMap;
import javax.webbeans.Dependent;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.injectable.BeanConstructor;
import org.jboss.webbeans.introspector.AnnotatedItem;
-import org.jboss.webbeans.introspector.SimpleAnnotatedItem;
public class ProducerExpressionBeanModel<T> extends AbstractProducerBeanModel<T>
{
private AnnotatedItem<T, Method> xmlAnnotatedItem;
- private AnnotatedItem<T, Method> annotatedItem = new SimpleAnnotatedItem<T, Method>(new HashMap<Class<? extends Annotation>, Annotation>());
+ private AnnotatedItem<T, Method> annotatedItem = null /*new SimpleAnnotatedItem<T, Method>(new HashMap<Class<? extends Annotation>, Annotation>())*/;
private String location;
public ProducerExpressionBeanModel(AnnotatedItem<T, Method> xmlAnnotatedMethod, ManagerImpl container)
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerMethodBeanModel.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerMethodBeanModel.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/model/bean/ProducerMethodBeanModel.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -5,7 +5,6 @@
import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
-import java.util.HashMap;
import java.util.Set;
import javax.webbeans.Dependent;
@@ -17,7 +16,6 @@
import org.jboss.webbeans.injectable.MethodConstructor;
import org.jboss.webbeans.introspector.AnnotatedItem;
import org.jboss.webbeans.introspector.AnnotatedMethod;
-import org.jboss.webbeans.introspector.SimpleAnnotatedItem;
import org.jboss.webbeans.util.Reflections;
public class ProducerMethodBeanModel<T> extends AbstractProducerBeanModel<T>
@@ -25,7 +23,7 @@
private MethodConstructor<T> constructor;
- private AnnotatedItem<T, Method> xmlAnnotatedItem = new SimpleAnnotatedItem<T, Method>(new HashMap<Class<? extends Annotation>, Annotation>());
+ private AnnotatedItem<T, Method> xmlAnnotatedItem = null /*new SimpleAnnotatedItem<T, Method>(new HashMap<Class<? extends Annotation>, Annotation>())*/;
private AnnotatedMethod<T> annotatedMethod;
private BeanModel<?, ?> declaringBean;
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByNameTest.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -12,18 +12,31 @@
import org.jboss.webbeans.model.bean.SimpleBeanModel;
import org.jboss.webbeans.test.beans.Cod;
import org.jboss.webbeans.test.beans.FishFarm;
+import org.jboss.webbeans.test.beans.Haddock;
+import org.jboss.webbeans.test.beans.Plaice;
import org.jboss.webbeans.test.beans.Salmon;
import org.jboss.webbeans.test.beans.ScottishFish;
+import org.jboss.webbeans.test.beans.SeaBass;
import org.jboss.webbeans.test.beans.Sole;
+import org.jboss.webbeans.test.beans.Tuna;
import org.testng.annotations.Test;
public class InstantiationByNameTest extends AbstractTest
{
@Test(groups="resolution") @SpecAssertion(section="4.10")
- public void testNoWebBeansFound()
+ public void testNoWebBeansFound() throws Exception
{
- assert false;
+ InjectableField<ScottishFish> whiteScottishFishField = new InjectableField<ScottishFish>(FishFarm.class.getDeclaredField("whiteScottishFish"));
+ Bean<Cod> codBean = new BeanImpl<Cod>(new SimpleBeanModel<Cod>(new SimpleAnnotatedType<Cod>(Cod.class), getEmptyAnnotatedType(Cod.class), super.manager), manager);
+ Bean<Salmon> salmonBean = new BeanImpl<Salmon>(new SimpleBeanModel<Salmon>(new SimpleAnnotatedType<Salmon>(Salmon.class), getEmptyAnnotatedType(Salmon.class), super.manager), manager);
+ manager.addBean(codBean);
+ manager.addBean(salmonBean);
+
+ ResolutionManager resolutionManager = manager.getResolutionManager();
+ resolutionManager.addInjectionPoint(whiteScottishFishField);
+
+ assert manager.getInstanceByName("foo") == null;
}
@Test(expectedExceptions=AmbiguousDependencyException.class) @SpecAssertion(section="4.10.1")
@@ -43,13 +56,29 @@
manager.getInstanceByName("whitefish");
}
- @Test(groups="resolution") @SpecAssertion(section="4.10.1")
+ @Test(groups={"resolution", "beanLifecycle"}) @SpecAssertion(section="4.10.1")
public void testGetInstanceByName()
{
- assert false;
+ Bean<Tuna> tunaBean = new BeanImpl<Tuna>(new SimpleBeanModel<Tuna>(new SimpleAnnotatedType<Tuna>(Tuna.class), getEmptyAnnotatedType(Tuna.class), super.manager), manager);
+ Bean<Cod> codBean = new BeanImpl<Cod>(new SimpleBeanModel<Cod>(new SimpleAnnotatedType<Cod>(Cod.class), getEmptyAnnotatedType(Cod.class), super.manager), manager);
+ Bean<Salmon> salmonBean = new BeanImpl<Salmon>(new SimpleBeanModel<Salmon>(new SimpleAnnotatedType<Salmon>(Salmon.class), getEmptyAnnotatedType(Salmon.class), super.manager), manager);
+ Bean<Sole> soleBean = new BeanImpl<Sole>(new SimpleBeanModel<Sole>(new SimpleAnnotatedType<Sole>(Sole.class), getEmptyAnnotatedType(Sole.class), super.manager), manager);
+ Bean<SeaBass> seaBassBean = new BeanImpl<SeaBass>(new SimpleBeanModel<SeaBass>(new SimpleAnnotatedType<SeaBass>(SeaBass.class), getEmptyAnnotatedType(SeaBass.class), super.manager), manager);
+ Bean<Haddock> haddockBean = new BeanImpl<Haddock>(new SimpleBeanModel<Haddock>(new SimpleAnnotatedType<Haddock>(Haddock.class), getEmptyAnnotatedType(Haddock.class), super.manager), manager);
+ Bean<Plaice> plaiceBean = new BeanImpl<Plaice>(new SimpleBeanModel<Plaice>(new SimpleAnnotatedType<Plaice>(Plaice.class), getEmptyAnnotatedType(Plaice.class), super.manager), manager);
+
+ manager.addBean(tunaBean);
+ manager.addBean(codBean);
+ manager.addBean(salmonBean);
+ manager.addBean(soleBean);
+ manager.addBean(haddockBean);
+ manager.addBean(seaBassBean);
+ manager.addBean(plaiceBean);
+
+ assert manager.getInstanceByName("salmon") instanceof Salmon;
}
- @Test(groups="resolution") @SpecAssertion(section="4.10")
+ @Test(groups={"resolution", "el"}) @SpecAssertion(section="4.10")
public void testGetInstanceByNameCalledOncePerDistinctNameInElExpression()
{
assert false;
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/InstantiationByTypeTest.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -24,6 +24,7 @@
import org.jboss.webbeans.test.beans.Sole;
import org.jboss.webbeans.test.beans.Tuna;
import org.jboss.webbeans.test.beans.broken.PlaiceFarm;
+import org.jboss.webbeans.test.bindings.AnotherDeploymentTypeAnnotationLiteral;
import org.testng.annotations.Test;
@SpecVersion("PDR")
@@ -39,13 +40,13 @@
@Test(groups="resolution", expectedExceptions=DuplicateBindingTypeException.class) @SpecAssertion(section="4.9")
public void testDuplicateBindingTypesUsed()
{
- assert false;
+ manager.getInstanceByType(Tuna.class, new CurrentAnnotationLiteral(), new CurrentAnnotationLiteral());
}
@Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="4.9")
public void testNonBindingTypeUsed()
{
- assert false;
+ manager.getInstanceByType(Tuna.class, new AnotherDeploymentTypeAnnotationLiteral());
}
@Test(expectedExceptions=AmbiguousDependencyException.class) @SpecAssertion(section="4.9")
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ResolutionByTypeTest.java 2008-10-27 14:40:29 UTC (rev 182)
@@ -31,6 +31,7 @@
import org.jboss.webbeans.test.beans.SeaBass;
import org.jboss.webbeans.test.beans.Sole;
import org.jboss.webbeans.test.beans.Tuna;
+import org.jboss.webbeans.test.bindings.AnotherDeploymentTypeAnnotationLiteral;
import org.jboss.webbeans.test.bindings.ChunkyAnnotationLiteral;
import org.testng.annotations.Test;
@@ -63,13 +64,13 @@
@Test(groups="resolution", expectedExceptions=DuplicateBindingTypeException.class) @SpecAssertion(section="4.9.2")
public void testDuplicateBindingTypesUsed()
{
- assert false;
+ manager.resolveByType(Tuna.class, new CurrentAnnotationLiteral(), new CurrentAnnotationLiteral());
}
@Test(groups="resolution", expectedExceptions=IllegalArgumentException.class) @SpecAssertion(section="4.9.2")
public void testNonBindingTypeUsed()
{
- assert false;
+ manager.resolveByType(Tuna.class, new AnotherDeploymentTypeAnnotationLiteral());
}
@Test
Modified: ri/trunk/webbeans-ri/testng.xml
===================================================================
--- ri/trunk/webbeans-ri/testng.xml 2008-10-27 13:48:18 UTC (rev 181)
+++ ri/trunk/webbeans-ri/testng.xml 2008-10-27 14:40:29 UTC (rev 182)
@@ -20,6 +20,8 @@
<exclude name="interceptors" />
<exclude name="innerClass" />
<exclude name="servlet" />
+ <exclude name="clientProxy" />
+ <exclude name="contexts" />
</run>
</groups>
<packages>
More information about the weld-commits
mailing list