[webbeans-commits] Webbeans SVN: r1182 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean and 9 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-01-22 19:31:15 -0500 (Thu, 22 Jan 2009)
New Revision: 1182
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BeanValidator.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Beans.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Waste.java
Removed:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/BeanValidation.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Waste.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractFacadeBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotationStore.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Proxies.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContainersImpl.java
tck/trunk/impl/pom.xml
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Building.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/BuildingInterface.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/FarmYard_Broken.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Office.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Building.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/FarmYard_Broken.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Office.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Waste.java
tck/trunk/pom.xml
Log:
Specialization and tests
Copied: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BeanValidator.java (from rev 1180, ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/BeanValidation.java)
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BeanValidator.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/BeanValidator.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -0,0 +1,141 @@
+/*
+ * 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;
+
+import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Set;
+
+import javax.webbeans.AmbiguousDependencyException;
+import javax.webbeans.DefinitionException;
+import javax.webbeans.InconsistentSpecializationException;
+import javax.webbeans.InjectionPoint;
+import javax.webbeans.New;
+import javax.webbeans.NullableDependencyException;
+import javax.webbeans.UnproxyableDependencyException;
+import javax.webbeans.UnsatisfiedDependencyException;
+import javax.webbeans.UnserializableDependencyException;
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.bean.AbstractBean;
+import org.jboss.webbeans.bean.NewEnterpriseBean;
+import org.jboss.webbeans.bean.NewSimpleBean;
+import org.jboss.webbeans.util.Beans;
+import org.jboss.webbeans.util.ListComparator;
+import org.jboss.webbeans.util.Proxies;
+import org.jboss.webbeans.util.Reflections;
+
+/**
+ * Checks a list of beans for DeploymentExceptions and their subclasses
+ *
+ * @author Nicklas Karlsson
+ *
+ */
+public class BeanValidator
+{
+
+ private final ManagerImpl manager;
+
+ public BeanValidator(ManagerImpl manager)
+ {
+ this.manager = manager;
+ }
+
+ /**
+ * Validates the beans
+ *
+ * @param beans The beans to validate
+ */
+ public void validate(List<Bean<?>> beans)
+ {
+ final List<Bean<?>> specializedBeans = new ArrayList<Bean<?>>();
+ for (Bean<?> bean : beans)
+ {
+ for (InjectionPoint injectionPoint : bean.getInjectionPoints())
+ {
+ if (injectionPoint.getType() instanceof Class)
+ {
+ Class<?> type = (Class<?>) injectionPoint.getType();
+ if (injectionPoint.getAnnotation(New.class) != null && injectionPoint.getBindings().size() > 1)
+ {
+ throw new DefinitionException("The injection point " + injectionPoint + " is annotated with @New which cannot be combined with other binding types");
+ }
+ Annotation[] bindings = injectionPoint.getBindings().toArray(new Annotation[0]);
+ Set<?> resolvedBeans = manager.resolveByType(type, bindings);
+ if (resolvedBeans.isEmpty())
+ {
+ throw new UnsatisfiedDependencyException("The injection point " + injectionPoint + " has unsatisfied dependencies for type " + type + " and binding types " + bindings + " in " + bean);
+ }
+ if (resolvedBeans.size() > 1)
+ {
+ throw new AmbiguousDependencyException("The injection point " + injectionPoint + " has ambiguos dependencies for type " + type + " and binding types " + bindings + " in " + bean);
+ }
+ Bean<?> resolvedBean = (Bean<?>) resolvedBeans.iterator().next();
+ if (MetaDataCache.instance().getScopeModel(resolvedBean.getScopeType()).isNormal() && !Proxies.isClassProxyable(type))
+ {
+ throw new UnproxyableDependencyException("The injection point " + injectionPoint + " has non-proxyable dependencies");
+ }
+ if (Reflections.isPrimitive((Class<?>) injectionPoint.getType()) && resolvedBean.isNullable())
+ {
+ throw new NullableDependencyException("The injection point " + injectionPoint + " has nullable dependencies");
+ }
+ }
+ else
+ {
+ throw new UnsupportedOperationException("Not yet implemented");
+ }
+ }
+ if (bean instanceof AbstractBean && !(bean instanceof NewSimpleBean) && !(bean instanceof NewEnterpriseBean))
+ {
+ AbstractBean<?, ?> abstractBean = (AbstractBean<?, ?>) bean;
+ if (abstractBean.isSpecializing())
+ {
+ if (!hasHigherPrecedence(bean.getDeploymentType(), abstractBean.getSpecializedBean().getDeploymentType()))
+ {
+ throw new InconsistentSpecializationException("Specializing bean must have a higher precedence deployment type than the specialized bean");
+ }
+ if (specializedBeans.contains(abstractBean.getSpecializedBean()))
+ {
+ throw new InconsistentSpecializationException("Two beans cannot specialize the same bean");
+ }
+ specializedBeans.add(abstractBean.getSpecializedBean());
+ }
+ }
+ if (Beans.isPassivatingBean(bean) && !bean.isSerializable())
+ {
+ throw new UnserializableDependencyException("The bean " + bean + " declares a passivating scopes but has non-serializable dependencies");
+ }
+ boolean normalScoped = MetaDataCache.instance().getScopeModel(bean.getScopeType()).isNormal();
+ if (normalScoped && !Beans.isBeanProxyable(bean))
+ {
+ throw new UnproxyableDependencyException("Normal scoped bean " + bean + " is not proxyable");
+ }
+ }
+
+ }
+
+
+ private boolean hasHigherPrecedence(Class<? extends Annotation> deploymentType, Class<? extends Annotation> otherDeploymentType)
+ {
+ Comparator<Class<? extends Annotation>> comparator = new ListComparator<Class<? extends Annotation>>(manager.getEnabledDeploymentTypes());
+ return comparator.compare(deploymentType, otherDeploymentType) > 0;
+ }
+
+
+}
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 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/ManagerImpl.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -64,7 +64,7 @@
import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
import org.jboss.webbeans.resources.spi.NamingContext;
import org.jboss.webbeans.resources.spi.ResourceLoader;
-import org.jboss.webbeans.util.Proxies;
+import org.jboss.webbeans.util.Beans;
import org.jboss.webbeans.util.Reflections;
/**
@@ -623,7 +623,7 @@
}
Bean<T> bean = beans.iterator().next();
boolean normalScoped = MetaDataCache.instance().getScopeModel(bean.getScopeType()).isNormal();
- if (normalScoped && !Proxies.isBeanProxyable(bean))
+ if (normalScoped && !Beans.isBeanProxyable(bean))
{
throw new UnproxyableDependencyException("Normal scoped bean " + bean + " is not proxyable");
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -43,7 +43,7 @@
import org.jboss.webbeans.log.LogProvider;
import org.jboss.webbeans.log.Logging;
import org.jboss.webbeans.model.MergedStereotypes;
-import org.jboss.webbeans.util.Proxies;
+import org.jboss.webbeans.util.Beans;
import org.jboss.webbeans.util.Reflections;
/**
@@ -139,6 +139,12 @@
initTypes();
initProxyable();
checkRequiredTypesImplemented();
+ if (isSpecializing())
+ {
+ preCheckSpecialization();
+ initSpecialization();
+ postCheckSpecialization();
+ }
}
/**
@@ -157,6 +163,10 @@
{
this.bindingTypes = new HashSet<Annotation>();
this.bindingTypes.addAll(getAnnotatedItem().getMetaAnnotations(BindingType.class));
+ if (isSpecializing())
+ {
+ this.bindingTypes.addAll(getSpecializedBean().getBindings());
+ }
if (bindingTypes.size() == 0)
{
log.trace("Adding default @Current binding type");
@@ -213,7 +223,11 @@
return;
}
}
-
+ else if (isSpecializing())
+ {
+ this.name = getSpecializedBean().getName();
+ return;
+ }
if (beanNameDefaulted || getMergedStereotypes().isBeanNameDefaulted())
{
@@ -224,7 +238,7 @@
protected void initProxyable()
{
- proxyable = Proxies.apiTypesAreProxyable(getTypes());
+ proxyable = Beans.apiTypesAreProxyable(getTypes());
}
/**
@@ -309,6 +323,24 @@
}
}
}
+
+ protected void postCheckSpecialization()
+ {
+ if (getAnnotatedItem().isAnnotationPresent(Named.class) && getSpecializedBean().getAnnotatedItem().isAnnotationPresent(Named.class))
+ {
+ throw new DefinitionException("Cannot put name on specializing and specialized class");
+ }
+ }
+
+ protected void preCheckSpecialization()
+ {
+
+ }
+
+ protected void initSpecialization()
+ {
+
+ }
/**
* Binds the decorators to the proxy
@@ -373,6 +405,10 @@
* @return The default name
*/
protected abstract String getDefaultName();
+
+ public abstract AbstractBean<?, ?> getSpecializedBean();
+
+ public abstract boolean isSpecializing();
/**
* Gets the deployment type of the bean
@@ -520,4 +556,18 @@
{
return proxyable;
}
+
+ @Override
+ public boolean equals(Object other)
+ {
+ if (other instanceof AbstractBean)
+ {
+ AbstractBean<?, ?> that = (AbstractBean<?, ?>) other;
+ return this.getTypes().equals(that.getTypes()) && this.getBindings().equals(that.getBindings());
+ }
+ else
+ {
+ return false;
+ }
+ }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -70,11 +70,11 @@
* @param type The type
* @param manager The Web Beans manager
*/
- public AbstractClassBean(AnnotatedClass<T> type, ManagerImpl manager)
+ protected AbstractClassBean(AnnotatedClass<T> type, ManagerImpl manager)
{
super(manager);
this.annotatedItem = type;
- dependentInstancesStore = new DependentInstancesStore();
+ this.dependentInstancesStore = new DependentInstancesStore();
}
/**
@@ -270,6 +270,22 @@
throw new DefinitionException("Web Bean implementation class " + type + " cannot be declared abstract");
}
}
+
+ @Override
+ protected void preCheckSpecialization()
+ {
+ super.preCheckSpecialization();
+ if (getAnnotatedItem().getSuperclass() == null || getAnnotatedItem().getSuperclass().getType().equals(Object.class))
+ {
+ throw new DefinitionException("Specializing bean must extend another bean");
+ }
+ }
+
+ @Override
+ public boolean isSpecializing()
+ {
+ return getAnnotatedItem().isAnnotationPresent(Specializes.class);
+ }
/**
* Gets the annotated item
@@ -290,22 +306,10 @@
@Override
protected String getDefaultName()
{
- String name = Strings.decapitalize(getSpecializedType().getSimpleName());
+ String name = Strings.decapitalize(getAnnotatedItem().getSimpleName());
log.trace("Default name of " + type + " is " + name);
return name;
}
-
- private AnnotatedClass<?> getSpecializedType()
- {
- if (annotatedItem.isAnnotationPresent(Specializes.class))
- {
- return annotatedItem.getSuperclass();
- }
- else
- {
- return annotatedItem;
- }
- }
/**
* Gets the injectable fields
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractFacadeBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractFacadeBean.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractFacadeBean.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -159,5 +159,17 @@
{
return "FacadeBean " + getName() + " for " + annotatedItem;
}
+
+ @Override
+ public AbstractBean<?, ?> getSpecializedBean()
+ {
+ return null;
+ }
+
+ @Override
+ public boolean isSpecializing()
+ {
+ return false;
+ }
}
\ No newline at end of file
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -37,6 +37,7 @@
import org.jboss.webbeans.injection.InjectionPointImpl;
import org.jboss.webbeans.log.LogProvider;
import org.jboss.webbeans.log.Logging;
+import org.jboss.webbeans.util.Beans;
import org.jboss.webbeans.util.Names;
import org.jboss.webbeans.util.Reflections;
@@ -176,7 +177,7 @@
{
return;
}
- if (dependent && Reflections.isPassivatingBean(injectionPoint.getBean()))
+ if (dependent && Beans.isPassivatingBean(injectionPoint.getBean()))
{
if (injectionPoint.isField())
{
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -59,6 +59,8 @@
private InternalEjbDescriptor<T> ejbDescriptor;
private Class<T> proxyClass;
+
+ private EnterpriseBean<?> specializedBean;
/**
* Creates a simple, annotation defined Enterprise Web Bean
@@ -87,6 +89,10 @@
protected EnterpriseBean(AnnotatedClass<T> type, ManagerImpl manager)
{
super(type, manager);
+ if (type.isAnnotationPresent(Specializes.class))
+ {
+ this.specializedBean = EnterpriseBean.of(type.getSuperclass(), manager);
+ }
init();
}
@@ -119,7 +125,6 @@
checkEnterpriseBeanTypeAllowed();
checkEnterpriseScopeAllowed();
checkConflictingRoles();
- checkSpecialization();
}
/**
@@ -185,18 +190,20 @@
/**
* Validates specialization
*/
- private void checkSpecialization()
+ protected void preCheckSpecialization()
{
- if (!getType().isAnnotationPresent(Specializes.class))
+ super.preCheckSpecialization();
+ if (!manager.getEjbDescriptorCache().containsKey(getAnnotatedItem().getSuperclass().getType()))
{
- return;
- }
- // TODO Should also check the bean type it does contain!
- if (!manager.getEjbDescriptorCache().containsKey(getType().getSuperclass()))
- {
throw new DefinitionException("Annotation defined specializing EJB must have EJB superclass");
}
}
+
+ @Override
+ protected void initSpecialization()
+ {
+ this.specializedBean = EnterpriseBean.of(getAnnotatedItem().getSuperclass(), manager);
+ }
/**
* Creates an instance of the bean
@@ -341,5 +348,11 @@
{
return getEjbDescriptor().isStateful() && Dependent.class.equals(getScopeType());
}
+
+ @Override
+ public AbstractBean<?, ?> getSpecializedBean()
+ {
+ return specializedBean;
+ }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerFieldBean.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -128,5 +128,17 @@
buffer.append(" API types " + getTypes() + ", binding types " + getBindings() + "\n");
return buffer.toString();
}
+
+ @Override
+ public AbstractBean<?, ?> getSpecializedBean()
+ {
+ return null;
+ }
+
+ @Override
+ public boolean isSpecializing()
+ {
+ return false;
+ }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/ProducerMethodBean.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -45,6 +45,8 @@
private AnnotatedMethod<T> method;
private AnnotatedMethod<?> disposalMethod;
+
+ private ProducerMethodBean<?> specializedBean;
/**
* Creates a producer method Web Bean
@@ -63,14 +65,7 @@
{
return of(AnnotatedMethodImpl.<T>of(method, declaringBean.getAnnotatedItem()), declaringBean, manager);
}
-
- /**
- * Constructor
- *
- * @param method The producer method abstraction
- * @param declaringBean The declaring bean
- * @param manager The Web Beans manager
- */
+
protected ProducerMethodBean(AnnotatedMethod<T> method, AbstractClassBean<?> declaringBean, ManagerImpl manager)
{
super(declaringBean, manager);
@@ -210,5 +205,18 @@
}
return true;
}
+
+ @Override
+ public AbstractBean<?, ?> getSpecializedBean()
+ {
+ return specializedBean;
+ }
+
+ @Override
+ public boolean isSpecializing()
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -30,6 +30,7 @@
import javax.webbeans.ExecutionException;
import javax.webbeans.Initializer;
import javax.webbeans.InjectionPoint;
+import javax.webbeans.Specializes;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.MetaDataCache;
@@ -66,6 +67,8 @@
private AnnotatedMethod<?> postConstruct;
// The pre-destroy method
private AnnotatedMethod<?> preDestroy;
+
+ private SimpleBean<?> specializedBean;
/**
* Creates a simple, annotation defined Web Bean
@@ -102,6 +105,10 @@
protected SimpleBean(AnnotatedClass<T> type, ManagerImpl manager)
{
super(type, manager);
+ if (type.isAnnotationPresent(Specializes.class))
+ {
+ this.specializedBean = SimpleBean.of(type.getSuperclass(), manager);
+ }
init();
}
@@ -340,6 +347,22 @@
}
}
}
+
+ @Override
+ protected void preCheckSpecialization()
+ {
+ super.preCheckSpecialization();
+ if (manager.getEjbDescriptorCache().containsKey(getSpecializedBean().getType()))
+ {
+ throw new DefinitionException("Simple bean must specialize a simple bean");
+ }
+ }
+
+ @Override
+ protected void initSpecialization()
+ {
+ this.specializedBean = SimpleBean.of(getAnnotatedItem().getSuperclass(), manager);
+ }
/**
* Initializes the constructor
@@ -496,5 +519,11 @@
return injectionPointsAreSerializable();
}
}
+
+ @Override
+ public SimpleBean<?> getSpecializedBean()
+ {
+ return specializedBean;
+ }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -12,12 +12,10 @@
import javax.webbeans.DeploymentType;
import javax.webbeans.Fires;
import javax.webbeans.Initializer;
-import javax.webbeans.Named;
import javax.webbeans.Observes;
import javax.webbeans.Obtains;
import javax.webbeans.Produces;
import javax.webbeans.Realizes;
-import javax.webbeans.Specializes;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.bean.AbstractBean;
@@ -36,7 +34,6 @@
import org.jboss.webbeans.introspector.AnnotatedField;
import org.jboss.webbeans.introspector.AnnotatedItem;
import org.jboss.webbeans.introspector.AnnotatedMethod;
-import org.jboss.webbeans.introspector.WrappedAnnotatedClass;
import org.jboss.webbeans.introspector.WrappedAnnotatedField;
import org.jboss.webbeans.introspector.WrappedAnnotatedMethod;
import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
@@ -54,41 +51,25 @@
private static final Set<Annotation> EMPTY_BINDINGS = Collections.emptySet();
private final Set<AbstractBean<?, ?>> beans;
+ private final Set<AnnotatedClass<?>> deferredClasses;
private final ManagerImpl manager;
public BeanDeployer(ManagerImpl manager)
{
- this.beans = new HashSet<AbstractBean<?,?>>();
this.manager = manager;
+ this.beans = new HashSet<AbstractBean<?,?>>();
+ this.deferredClasses = new HashSet<AnnotatedClass<?>>();
}
+
public void addBean(AbstractBean<?, ?> bean)
{
this.beans.add(bean);
}
- public void addBeans(Set<AbstractBean<?, ?>> beans)
- {
- this.beans.addAll(beans);
- }
-
public void addClass(Class<?> clazz)
{
- AnnotatedClass<?> annotatedClass = AnnotatedClassImpl.of(clazz);
- if (annotatedClass.isAnnotationPresent(Specializes.class))
- {
- annotatedClass = specializeClass(annotatedClass);
- }
- if (manager.getEjbDescriptorCache().containsKey(clazz))
- {
- createBean(EnterpriseBean.of(annotatedClass, manager), annotatedClass);
- beans.add(NewEnterpriseBean.of(annotatedClass, manager));
- }
- else if (isTypeSimpleWebBean(clazz))
- {
- createBean(SimpleBean.of(annotatedClass, manager), annotatedClass);
- beans.add(NewSimpleBean.of(annotatedClass, manager));
- }
+ deferredClasses.add(AnnotatedClassImpl.of(clazz));
}
public void addClasses(Iterable<Class<?>> classes)
@@ -101,6 +82,17 @@
public void deploy()
{
+ for (AnnotatedClass<?> clazz : deferredClasses)
+ {
+ if (manager.getEjbDescriptorCache().containsKey(clazz.getType()))
+ {
+ createEnterpriseBean(clazz);
+ }
+ else if (isTypeSimpleWebBean(clazz.getType()))
+ {
+ createSimpleBean(clazz);
+ }
+ }
manager.setBeans(beans);
}
@@ -203,6 +195,20 @@
ObserverImpl<?> observer = ObserverImpl.of(method, declaringBean, manager);
manager.addObserver(observer);
}
+
+ private void createSimpleBean(AnnotatedClass<?> annotatedClass)
+ {
+ SimpleBean<?> bean = SimpleBean.of(annotatedClass, manager);
+ createBean(bean, annotatedClass);
+ beans.add(NewSimpleBean.of(annotatedClass, manager));
+ }
+
+ private void createEnterpriseBean(AnnotatedClass<?> annotatedClass)
+ {
+ EnterpriseBean<?> bean = EnterpriseBean.of(annotatedClass, manager);
+ createBean(bean, annotatedClass);
+ beans.add(NewEnterpriseBean.of(annotatedClass, manager));
+ }
private void createFacades(Set<AnnotatedItem<?, ?>> injectionPoints)
{
@@ -340,13 +346,4 @@
};
}
- private static <T> AnnotatedClass<T> specializeClass(final AnnotatedClass<T> clazz)
- {
- Set<Annotation> extraAnnotations = new HashSet<Annotation>();
- extraAnnotations.addAll(clazz.getSuperclass().getDeclaredMetaAnnotations(BindingType.class));
- extraAnnotations.add(clazz.getSuperclass().getAnnotation(Named.class));
- Set<Annotation> extraDeclaredAnnotations = Collections.emptySet();
- return new WrappedAnnotatedClass<T>(clazz, extraAnnotations, extraDeclaredAnnotations);
- }
-
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/WebBeansBootstrap.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -19,6 +19,7 @@
import java.util.Collections;
+import org.jboss.webbeans.BeanValidator;
import org.jboss.webbeans.CurrentManager;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.bean.SimpleBean;
@@ -34,7 +35,6 @@
import org.jboss.webbeans.resources.spi.NamingContext;
import org.jboss.webbeans.resources.spi.ResourceLoader;
import org.jboss.webbeans.transaction.Transaction;
-import org.jboss.webbeans.util.BeanValidation;
/**
* Common bootstrapping functionality that is run at application startup and
@@ -155,7 +155,7 @@
getManager().fireEvent(getManager(), new InitializedLiteral());
log.info("Web Beans initialized. Validating beans.");
getManager().getResolver().resolveInjectionPoints();
- BeanValidation.validate(getManager().getBeans());
+ new BeanValidator(manager).validate(manager.getBeans());
getManager().fireEvent(getManager(), new DeployedLiteral());
}
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedItem.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -111,6 +111,14 @@
* @return True if present, false if not
*/
public boolean isAnnotationPresent(Class<? extends Annotation> annotationType);
+
+ /**
+ * Indicates if an annotation type specified is present
+ *
+ * @param annotationType The annotation to match
+ * @return True if present, false if not
+ */
+ public boolean isDeclaredAnnotationPresent(Class<? extends Annotation> annotationType);
/**
* Gets the type of the element
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotationStore.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotationStore.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotationStore.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -302,6 +302,11 @@
return annotationMap.containsKey(annotationType);
}
+ public boolean isDeclaredAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ return declaredAnnotationMap.containsKey(annotationType);
+ }
+
AnnotationMap getAnnotationMap()
{
return annotationMap;
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedItem.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -208,5 +208,10 @@
{
return delegate().getAnnotationStore();
}
+
+ public boolean isDeclaredAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ return delegate().isDeclaredAnnotationPresent(annotationType);
+ }
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedItem.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -248,5 +248,10 @@
}
public abstract S getDelegate();
+
+ public boolean isDeclaredAnnotationPresent(Class<? extends Annotation> annotationType)
+ {
+ return getAnnotationStore().isDeclaredAnnotationPresent(annotationType);
+ }
}
\ No newline at end of file
Deleted: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/BeanValidation.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/BeanValidation.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/BeanValidation.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -1,97 +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.util;
-
-import java.lang.annotation.Annotation;
-import java.util.List;
-import java.util.Set;
-
-import javax.webbeans.AmbiguousDependencyException;
-import javax.webbeans.DefinitionException;
-import javax.webbeans.InjectionPoint;
-import javax.webbeans.New;
-import javax.webbeans.NullableDependencyException;
-import javax.webbeans.UnproxyableDependencyException;
-import javax.webbeans.UnsatisfiedDependencyException;
-import javax.webbeans.UnserializableDependencyException;
-import javax.webbeans.manager.Bean;
-
-import org.jboss.webbeans.CurrentManager;
-import org.jboss.webbeans.MetaDataCache;
-
-/**
- * Checks a list of beans for DeploymentExceptions and their subclasses
- *
- * @author Nicklas Karlsson
- *
- */
-public class BeanValidation
-{
-
- /**
- * Validates the beans
- *
- * @param beans The beans to validate
- */
- // TODO THIS SHOULD NOT BE A STATIC UTITLITY CLASS
- @Deprecated
- public static void validate(List<Bean<?>> beans)
- {
- for (Bean<?> bean : beans)
- {
- for (InjectionPoint injectionPoint : bean.getInjectionPoints())
- {
- Class<?> type = (Class<?>) injectionPoint.getType();
- if (injectionPoint.getAnnotation(New.class) != null && injectionPoint.getBindings().size() > 1)
- {
- throw new DefinitionException("The injection point " + injectionPoint + " is annotated with @New which cannot be combined with other binding types");
- }
- Annotation[] bindingTypes = injectionPoint.getBindings().toArray(new Annotation[0]);
- Set<?> resolvedBeans = CurrentManager.rootManager().resolveByType(type, bindingTypes);
- if (resolvedBeans.isEmpty())
- {
- throw new UnsatisfiedDependencyException("The injection point " + injectionPoint + " has unsatisfied dependencies for type " + type + " and binding types " + bindingTypes + " in " + bean);
- }
- if (resolvedBeans.size() > 1)
- {
- throw new AmbiguousDependencyException("The injection point " + injectionPoint + " has ambiguos dependencies for type " + type + " and binding types " + bindingTypes + " in " + bean);
- }
- Bean<?> resolvedBean = (Bean<?>) resolvedBeans.iterator().next();
- if (MetaDataCache.instance().getScopeModel(resolvedBean.getScopeType()).isNormal() && !Proxies.isClassProxyable(type))
- {
- throw new UnproxyableDependencyException("The injection point " + injectionPoint + " has non-proxyable dependencies");
- }
- if (Reflections.isPrimitive((Class<?>) injectionPoint.getType()) && resolvedBean.isNullable())
- {
- throw new NullableDependencyException("The injection point " + injectionPoint + " has nullable dependencies");
- }
- // Specialization checks
- }
- if (Reflections.isPassivatingBean(bean) && !bean.isSerializable())
- {
- throw new UnserializableDependencyException("The bean " + bean + " declares a passivating scopes but has non-serializable dependencies");
- }
- boolean normalScoped = MetaDataCache.instance().getScopeModel(bean.getScopeType()).isNormal();
- if (normalScoped && !Proxies.isBeanProxyable(bean))
- {
- throw new UnproxyableDependencyException("Normal scoped bean " + bean + " is not proxyable");
- }
- }
-
- }
-
-}
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Beans.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Beans.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Beans.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -0,0 +1,68 @@
+package org.jboss.webbeans.util;
+
+import java.lang.reflect.Type;
+import java.util.Set;
+
+import javax.webbeans.manager.Bean;
+
+import org.jboss.webbeans.MetaDataCache;
+import org.jboss.webbeans.bean.AbstractBean;
+import org.jboss.webbeans.bean.EnterpriseBean;
+
+public class Beans
+{
+
+ public static boolean isPassivatingBean(Bean<?> bean)
+ {
+ if (bean instanceof EnterpriseBean)
+ {
+ return ((EnterpriseBean<?>) bean).getEjbDescriptor().isStateful();
+ }
+ else
+ {
+ return MetaDataCache.instance().getScopeModel(bean.getScopeType()).isPassivating();
+ }
+ }
+
+ /**
+ * Indicates if a bean is proxyable
+ *
+ * @param bean The bean to test
+ * @return True if proxyable, false otherwise
+ */
+ public static boolean isBeanProxyable(Bean<?> bean)
+ {
+ if (bean instanceof AbstractBean)
+ {
+ return ((AbstractBean<?, ?>) bean).isProxyable();
+ }
+ else
+ {
+ return Beans.apiTypesAreProxyable(bean.getTypes());
+ }
+ }
+
+ /**
+ * Indicates if a set of types are all proxyable
+ *
+ * @param types The types to test
+ * @return True if proxyable, false otherwise
+ */
+ public static boolean apiTypesAreProxyable(Set<Type> types)
+ {
+ for (Type apiType : types)
+ {
+ if (Object.class.equals(apiType))
+ {
+ continue;
+ }
+ boolean isClass = !((Class<?>) apiType).isInterface();
+ if (isClass && !Proxies.isClassProxyable((Class<?>) apiType))
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Beans.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Proxies.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Proxies.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Proxies.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -23,9 +23,7 @@
import javassist.util.proxy.ProxyFactory;
-import javax.webbeans.manager.Bean;
-import org.jboss.webbeans.bean.AbstractBean;
/**
* Utilties for working with Javassist proxies
@@ -167,45 +165,4 @@
}
}
- /**
- * Indicates if a bean is proxyable
- *
- * @param bean The bean to test
- * @return True if proxyable, false otherwise
- */
- public static boolean isBeanProxyable(Bean<?> bean)
- {
- if (bean instanceof AbstractBean)
- {
- return ((AbstractBean<?, ?>) bean).isProxyable();
- }
- else
- {
- return apiTypesAreProxyable(bean.getTypes());
- }
- }
-
- /**
- * Indicates if a set of types are all proxyable
- *
- * @param types The types to test
- * @return True if proxyable, false otherwise
- */
- public static boolean apiTypesAreProxyable(Set<Type> types)
- {
- for (Type apiType : types)
- {
- if (Object.class.equals(apiType))
- {
- continue;
- }
- boolean isClass = !((Class<?>) apiType).isInterface();
- if (isClass && !isClassProxyable((Class<?>) apiType))
- {
- return false;
- }
- }
- return true;
- }
-
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/util/Reflections.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -36,10 +36,7 @@
import javax.webbeans.BindingType;
import javax.webbeans.ExecutionException;
-import javax.webbeans.manager.Bean;
-import org.jboss.webbeans.MetaDataCache;
-import org.jboss.webbeans.bean.EnterpriseBean;
/**
* Utility class for static reflection-type operations
@@ -75,18 +72,6 @@
}
- public static boolean isPassivatingBean(Bean<?> bean)
- {
- if (bean instanceof EnterpriseBean)
- {
- return ((EnterpriseBean<?>) bean).getEjbDescriptor().isStateful();
- }
- else
- {
- return MetaDataCache.instance().getScopeModel(bean.getScopeType()).isPassivating();
- }
- }
-
/**
* Checks if class is final
*
Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContainersImpl.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContainersImpl.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/tck/ContainersImpl.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -18,13 +18,13 @@
public Manager deploy(List<Class<? extends Annotation>> enabledDeploymentTypes, Class<?>... classes)
{
MockBootstrap bootstrap = new MockBootstrap();
- bootstrap.setWebBeanDiscovery(new MockWebBeanDiscovery(classes));
- bootstrap.boot();
ManagerImpl manager = bootstrap.getManager();
if (enabledDeploymentTypes != null)
{
manager.setEnabledDeploymentTypes(enabledDeploymentTypes);
}
+ bootstrap.setWebBeanDiscovery(new MockWebBeanDiscovery(classes));
+ bootstrap.boot();
return manager;
}
Modified: tck/trunk/impl/pom.xml
===================================================================
--- tck/trunk/impl/pom.xml 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/pom.xml 2009-01-23 00:31:15 UTC (rev 1182)
@@ -83,6 +83,10 @@
<groupId>org.hibernate</groupId>
<artifactId>tck-utils</artifactId>
</dependency>
+ <dependency>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ </dependency>
</dependencies>
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Building.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Building.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Building.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -10,7 +10,12 @@
@Produces
public Waste getWaste()
{
- return new Waste();
+ return new Waste(getClassName());
}
+ public String getClassName()
+ {
+ return Building.class.getName();
+ }
+
}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/BuildingInterface.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/BuildingInterface.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/BuildingInterface.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -3,7 +3,9 @@
import javax.ejb.Local;
@Local
-interface BuildingInterface
+public interface BuildingInterface
{
+ String getClassName();
+
}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -51,52 +51,71 @@
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getName().equals("farmer");
}
- @Test(groups="broken", expectedExceptions=DefinitionException.class) @SpecAssertion(section = "4.3.1")
+ @Test(expectedExceptions=DefinitionException.class) @SpecAssertion(section = "4.3.1")
public void testSpecializingAndSpecializedBeanHasName()
{
- //deployBeans(FarmYard_Broken.class);
+ deployBeans(FarmYard_Broken.class);
}
@Test(groups="broken") @SpecAssertion(section={"4.3.1", "3.2.7"})
- public void testSpecializedBeanNotInstantiated()
+ public void testSpecializedBeanNotInstantiated() throws Exception
{
deployBeans(LazyFarmer.class, Farmer.class);
- Farmer farmer = manager.getInstanceByType(Farmer.class, LANDOWNER_LITERAL);
- assert farmer.getClassName().equals(LazyFarmer.class.getName());
+ new RunInDependentContext()
+ {
+
+ @Override
+ protected void execute() throws Exception
+ {
+ Farmer farmer = manager.getInstanceByType(Farmer.class, LANDOWNER_LITERAL);
+ assert farmer.getClassName().equals(LazyFarmer.class.getName());
+ }
+
+ }.run();
}
- @Test(groups="broken", expectedExceptions=InconsistentSpecializationException.class) @SpecAssertion(section="4.3.1")
+ @Test(expectedExceptions=InconsistentSpecializationException.class) @SpecAssertion(section="4.3.1")
public void testSpecializingBeanDoesNotHaveHigherPrecedenceThanSpecializedBean()
{
- deployBeans(OrganicFarmer_Broken.class);
+ deployBeans(Farmer.class, OrganicFarmer_Broken.class);
}
@Test(groups="broken") @SpecAssertion(section="4.3.1")
- public void testProducerMethodOnSpecializedBeanCalledOnSpecializingBean()
+ public void testProducerMethodOnSpecializedBeanCalledOnSpecializingBean() throws Exception
{
- //deployBeans(Office.class, Building.class);
- //assert manager.resolveByType(Waste.class).size() == 0;
+ deployBeans(Office.class, Building.class);
+ new RunInDependentContext()
+ {
+
+ @Override
+ protected void execute() throws Exception
+ {
+ assert manager.resolveByType(Waste.class).size() == 1;
+ assert manager.getInstanceByType(Waste.class).getFrom().equals(Office.class.getName());
+ }
+
+ }.run();
}
- @Test(groups="broken", expectedExceptions=InconsistentSpecializationException.class) @SpecAssertion(section="4.3.1")
+ @Test(expectedExceptions=InconsistentSpecializationException.class) @SpecAssertion(section="4.3.1")
public void testTwoBeansSpecializeTheSameBean()
{
- deployBeans(SheepFarmer_Broken.class, FishFarmer_Broken.class);
+ deployBeans(Farmer.class, SheepFarmer_Broken.class, FishFarmer_Broken.class);
}
- @Test(groups={"broken", "specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.2.7")
+ @Test(groups={"specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.2.7")
public void testSpecializingClassDirectlyExtendsSimpleBean()
{
deployBeans(Tractor_Broken.class);
}
- @Test(groups={"broken", "specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.2.7")
+ @Test(groups={"specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.2.7")
public void testSpecializingClassDirectlyExtendsNothing()
{
deployBeans(Cow_Broken.class);
}
- @Test(groups={"broken", "specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.2.7")
+ @Test(groups={"specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.2.7")
public void testSpecializingClassImplementsInterfaceAndExtendsNothing()
{
deployBeans(Donkey_Broken.class);
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/FarmYard_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/FarmYard_Broken.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/FarmYard_Broken.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -1,11 +1,13 @@
package org.jboss.webbeans.tck.unit.inheritance.specialization.enterprise;
import javax.ejb.Stateful;
+import javax.webbeans.Named;
import javax.webbeans.Specializes;
@Specializes
@AnotherDeploymentType
@Stateful
+@Named
class FarmYard_Broken extends Yard
{
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Office.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Office.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Office.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -9,4 +9,10 @@
class Office extends Building
{
+ @Override
+ public String getClassName()
+ {
+ return Office.class.getName();
+ }
+
}
Deleted: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Waste.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Waste.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Waste.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -1,6 +0,0 @@
-package org.jboss.webbeans.tck.unit.inheritance.specialization.enterprise;
-
-class Waste
-{
-
-}
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Waste.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Waste.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/Waste.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -0,0 +1,19 @@
+package org.jboss.webbeans.tck.unit.inheritance.specialization.enterprise;
+
+class Waste
+{
+
+ private String from;
+
+ public String getFrom()
+ {
+ return from;
+ }
+
+ public Waste(String from)
+ {
+ super();
+ this.from = from;
+ }
+
+}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Building.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Building.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Building.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -5,10 +5,15 @@
class Building
{
+ protected String getClassName()
+ {
+ return Building.class.getName();
+ }
+
@Produces
public Waste getWaste()
{
- return new Waste();
+ return new Waste(getClassName());
}
}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/FarmYard_Broken.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/FarmYard_Broken.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/FarmYard_Broken.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -1,9 +1,11 @@
package org.jboss.webbeans.tck.unit.inheritance.specialization.simple;
+import javax.webbeans.Named;
import javax.webbeans.Specializes;
@Specializes
@AnotherDeploymentType
+@Named
class FarmYard_Broken extends Yard
{
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Office.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Office.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Office.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -6,4 +6,10 @@
class Office extends Building
{
+ @Override
+ protected String getClassName()
+ {
+ return Office.class.getName();
+ }
+
}
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -51,52 +51,71 @@
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getName().equals("farmer");
}
- @Test(groups="broken", expectedExceptions=DefinitionException.class) @SpecAssertion(section = "4.3.1")
+ @Test(expectedExceptions=DefinitionException.class) @SpecAssertion(section = "4.3.1")
public void testSpecializingAndSpecializedBeanHasName()
{
- //deployBeans(FarmYard_Broken.class);
+ deployBeans(FarmYard_Broken.class);
}
- @Test(groups="broken") @SpecAssertion(section={"4.3.1", "3.3.7"})
- public void testSpecializedBeanNotInstantiated()
+ @Test @SpecAssertion(section={"4.3.1", "3.3.7"})
+ public void testSpecializedBeanNotInstantiated() throws Exception
{
deployBeans(LazyFarmer.class, Farmer.class);
- Farmer farmer = manager.getInstanceByType(Farmer.class, LANDOWNER_LITERAL);
- assert farmer.getClassName().equals(LazyFarmer.class.getName());
+ new RunInDependentContext()
+ {
+
+ @Override
+ protected void execute() throws Exception
+ {
+ Farmer farmer = manager.getInstanceByType(Farmer.class, LANDOWNER_LITERAL);
+ assert farmer.getClassName().equals(LazyFarmer.class.getName());
+ }
+
+ }.run();
}
- @Test(groups="broken", expectedExceptions=InconsistentSpecializationException.class) @SpecAssertion(section="4.3.1")
+ @Test(expectedExceptions=InconsistentSpecializationException.class) @SpecAssertion(section="4.3.1")
public void testSpecializingBeanDoesNotHaveHigherPrecedenceThanSpecializedBean()
{
deployBeans(OrganicFarmer_Broken.class);
}
@Test(groups="broken") @SpecAssertion(section="4.3.1")
- public void testProducerMethodOnSpecializedBeanCalledOnSpecializingBean()
+ public void testProducerMethodOnSpecializedBeanCalledOnSpecializingBean() throws Exception
{
- //deployBeans(Office.class, Building.class);
- //assert manager.resolveByType(Waste.class).size() == 0;
+ deployBeans(Office.class, Building.class);
+ new RunInDependentContext()
+ {
+
+ @Override
+ protected void execute() throws Exception
+ {
+ assert manager.resolveByType(Waste.class).size() == 1;
+ assert manager.getInstanceByType(Waste.class).getFrom().equals(Office.class.getName());
+ }
+
+ }.run();
}
- @Test(groups="broken", expectedExceptions=InconsistentSpecializationException.class) @SpecAssertion(section="4.3.1")
+ @Test(expectedExceptions=InconsistentSpecializationException.class) @SpecAssertion(section="4.3.1")
public void testTwoBeansSpecializeTheSameBean()
{
deployBeans(SheepFarmer_Broken.class, FishFarmer_Broken.class);
}
- @Test(groups={"broken", "specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.3.7")
+ @Test(groups={"specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.3.7")
public void testSpecializingClassDirectlyExtendsEnterpriseBean()
{
- deployBeans(Tractor_Broken.class);
+ deployBeans(FarmEquipment.class, Tractor_Broken.class);
}
- @Test(groups={"broken", "specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.3.7")
+ @Test(groups={"specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.3.7")
public void testSpecializingClassDirectlyExtendsNothing()
{
deployBeans(Cow_Broken.class);
}
- @Test(groups={"broken", "specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.3.7")
+ @Test(groups={"specialization"},expectedExceptions=DefinitionException.class) @SpecAssertion(section="3.3.7")
public void testSpecializingClassImplementsInterfaceAndExtendsNothing()
{
deployBeans(Donkey_Broken.class);
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Waste.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Waste.java 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/Waste.java 2009-01-23 00:31:15 UTC (rev 1182)
@@ -3,4 +3,17 @@
class Waste
{
+ private String from;
+
+ public String getFrom()
+ {
+ return from;
+ }
+
+ public Waste(String from)
+ {
+ super();
+ this.from = from;
+ }
+
}
Modified: tck/trunk/pom.xml
===================================================================
--- tck/trunk/pom.xml 2009-01-22 18:08:43 UTC (rev 1181)
+++ tck/trunk/pom.xml 2009-01-23 00:31:15 UTC (rev 1182)
@@ -126,6 +126,11 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ <version>1.0</version>
+ </dependency>
</dependencies>
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1181 - ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap and 6 other directories.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-01-22 13:08:43 -0500 (Thu, 22 Jan 2009)
New Revision: 1181
Added:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedClass.java
Modified:
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedType.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java
tck/trunk/impl/pom.xml
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java
tck/trunk/pom.xml
Log:
Reimplement basic specialization and enable basic tests
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -31,7 +31,6 @@
import javax.webbeans.Event;
import javax.webbeans.InjectionPoint;
import javax.webbeans.Named;
-import javax.webbeans.Specializes;
import javax.webbeans.Standard;
import javax.webbeans.Stereotype;
import javax.webbeans.manager.Bean;
@@ -157,15 +156,9 @@
protected void initBindingTypes()
{
this.bindingTypes = new HashSet<Annotation>();
- boolean specialization = getAnnotatedItem().isAnnotationPresent(Specializes.class);
this.bindingTypes.addAll(getAnnotatedItem().getMetaAnnotations(BindingType.class));
- if (specialization)
+ if (bindingTypes.size() == 0)
{
- this.bindingTypes.addAll(getSpecializedType().getBindings());
- log.trace("Using binding types " + bindingTypes + " specified by annotations and specialized supertype");
- }
- else if (bindingTypes.size() == 0)
- {
log.trace("Adding default @Current binding type");
this.bindingTypes.add(new CurrentLiteral());
}
@@ -205,13 +198,8 @@
protected void initName()
{
boolean beanNameDefaulted = false;
- boolean specialization = getAnnotatedItem().isAnnotationPresent(Specializes.class);
if (getAnnotatedItem().isAnnotationPresent(Named.class))
{
- if (specialization)
- {
- throw new DefinitionException("Name specified for specialized bean");
- }
String javaName = getAnnotatedItem().getAnnotation(Named.class).value();
if ("".equals(javaName))
{
@@ -225,12 +213,7 @@
return;
}
}
- else if (specialization)
- {
- this.name = getSpecializedType().getName();
- log.trace("Using supertype name");
- return;
- }
+
if (beanNameDefaulted || getMergedStereotypes().isBeanNameDefaulted())
{
@@ -458,16 +441,6 @@
}
/**
- * Gets the specializes type of the bean
- *
- * @return The specialized type
- */
- protected AbstractBean<? extends T, E> getSpecializedType()
- {
- throw new UnsupportedOperationException();
- }
-
- /**
* Gets the type of the bean
*
* @return The type
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractClassBean.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -31,6 +31,7 @@
import javax.webbeans.Produces;
import javax.webbeans.Production;
import javax.webbeans.ScopeType;
+import javax.webbeans.Specializes;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.context.DependentInstancesStore;
@@ -289,10 +290,22 @@
@Override
protected String getDefaultName()
{
- String name = Strings.decapitalize(getType().getSimpleName());
+ String name = Strings.decapitalize(getSpecializedType().getSimpleName());
log.trace("Default name of " + type + " is " + name);
return name;
}
+
+ private AnnotatedClass<?> getSpecializedType()
+ {
+ if (annotatedItem.isAnnotationPresent(Specializes.class))
+ {
+ return annotatedItem.getSuperclass();
+ }
+ else
+ {
+ return annotatedItem;
+ }
+ }
/**
* Gets the injectable fields
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -268,29 +268,6 @@
}
/**
- * Gets the specializes type of the bean
- *
- * @return The specialized type
- */
- @SuppressWarnings("unchecked")
- @Override
- protected AbstractBean<? extends T, Class<T>> getSpecializedType()
- {
- // TODO: lots of validation!
- Class<?> superclass = getAnnotatedItem().getType().getSuperclass();
- if (superclass != null)
- {
- // TODO look up this bean and do this via init
- return (EnterpriseBean) EnterpriseBean.of(superclass, manager);
- }
- else
- {
- throw new RuntimeException();
- }
-
- }
-
- /**
* Validates the bean type
*/
private void checkEnterpriseBeanTypeAllowed()
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/SimpleBean.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -436,27 +436,6 @@
}
/**
- * Returns the specializes type of the bean
- *
- * @return The specialized type
- */
- @SuppressWarnings("unchecked")
- protected AbstractBean<? extends T, Class<T>> getSpecializedType()
- {
- // TODO lots of validation!
- Class<?> superclass = getAnnotatedItem().getType().getSuperclass();
- if (superclass != null)
- {
- // TODO look up this bean and do this via init
- return (SimpleBean) SimpleBean.of(superclass, manager);
- }
- else
- {
- throw new RuntimeException();
- }
- }
-
- /**
* Returns the post-construct method
*
* @return The post-construct method
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/BeanDeployer.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -12,10 +12,12 @@
import javax.webbeans.DeploymentType;
import javax.webbeans.Fires;
import javax.webbeans.Initializer;
+import javax.webbeans.Named;
import javax.webbeans.Observes;
import javax.webbeans.Obtains;
import javax.webbeans.Produces;
import javax.webbeans.Realizes;
+import javax.webbeans.Specializes;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.bean.AbstractBean;
@@ -34,6 +36,7 @@
import org.jboss.webbeans.introspector.AnnotatedField;
import org.jboss.webbeans.introspector.AnnotatedItem;
import org.jboss.webbeans.introspector.AnnotatedMethod;
+import org.jboss.webbeans.introspector.WrappedAnnotatedClass;
import org.jboss.webbeans.introspector.WrappedAnnotatedField;
import org.jboss.webbeans.introspector.WrappedAnnotatedMethod;
import org.jboss.webbeans.introspector.jlr.AnnotatedClassImpl;
@@ -72,6 +75,10 @@
public void addClass(Class<?> clazz)
{
AnnotatedClass<?> annotatedClass = AnnotatedClassImpl.of(clazz);
+ if (annotatedClass.isAnnotationPresent(Specializes.class))
+ {
+ annotatedClass = specializeClass(annotatedClass);
+ }
if (manager.getEjbDescriptorCache().containsKey(clazz))
{
createBean(EnterpriseBean.of(annotatedClass, manager), annotatedClass);
@@ -333,4 +340,13 @@
};
}
+ private static <T> AnnotatedClass<T> specializeClass(final AnnotatedClass<T> clazz)
+ {
+ Set<Annotation> extraAnnotations = new HashSet<Annotation>();
+ extraAnnotations.addAll(clazz.getSuperclass().getDeclaredMetaAnnotations(BindingType.class));
+ extraAnnotations.add(clazz.getSuperclass().getAnnotation(Named.class));
+ Set<Annotation> extraDeclaredAnnotations = Collections.emptySet();
+ return new WrappedAnnotatedClass<T>(clazz, extraAnnotations, extraDeclaredAnnotations);
+ }
+
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedType.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedType.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/AnnotatedType.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -17,8 +17,6 @@
package org.jboss.webbeans.introspector;
-import java.lang.annotation.Annotation;
-import java.util.Set;
/**
* AnnotatedType provides a uniform access to a type defined either in Java or
@@ -44,6 +42,6 @@
*/
public boolean isEquivalent(Class<?> clazz);
- public AnnotatedType<T> wrap(Set<Annotation> annotations);
+ public String getSimpleName();
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedClass.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -5,7 +5,7 @@
import java.util.List;
import java.util.Set;
-public abstract class ForwardingAnnotatedClass<T> extends ForwardingAnnotatedItem<T, Class<T>> implements AnnotatedClass<T>
+public abstract class ForwardingAnnotatedClass<T> extends ForwardingAnnotatedType<T> implements AnnotatedClass<T>
{
protected abstract AnnotatedClass<T> delegate();
@@ -84,15 +84,5 @@
{
return delegate().isParameterizedType();
}
-
- public boolean isEquivalent(Class<?> clazz)
- {
- return delegate().isEquivalent(clazz);
- }
- public AnnotatedClass<T> wrap(Set<Annotation> annotations)
- {
- throw new UnsupportedOperationException();
- }
-
}
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/ForwardingAnnotatedType.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -19,4 +19,9 @@
return delegate().isEquivalent(clazz);
}
+ public String getSimpleName()
+ {
+ return delegate().getSimpleName();
+ }
+
}
Added: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedClass.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedClass.java (rev 0)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedClass.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -0,0 +1,30 @@
+package org.jboss.webbeans.introspector;
+
+import java.lang.annotation.Annotation;
+import java.util.Set;
+
+public class WrappedAnnotatedClass<T> extends ForwardingAnnotatedClass<T>
+{
+
+ private final AnnotatedClass<T> delegate;
+ private AnnotationStore annotationStore;
+
+ public WrappedAnnotatedClass(AnnotatedClass<T> clazz, Set<Annotation> extraAnnotations, Set<Annotation> extraDeclaredAnnotations)
+ {
+ this.delegate = clazz;
+ this.annotationStore = AnnotationStore.wrap(clazz.getAnnotationStore(), extraAnnotations, extraDeclaredAnnotations);
+ }
+
+ @Override
+ protected AnnotatedClass<T> delegate()
+ {
+ return delegate;
+ }
+
+ @Override
+ public AnnotationStore getAnnotationStore()
+ {
+ return annotationStore;
+ }
+
+}
Property changes on: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/WrappedAnnotatedClass.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/introspector/jlr/AbstractAnnotatedType.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -20,6 +20,7 @@
import java.lang.reflect.Modifier;
import org.jboss.webbeans.introspector.AnnotatedClass;
+import org.jboss.webbeans.introspector.AnnotatedType;
import org.jboss.webbeans.introspector.AnnotationStore;
import org.jboss.webbeans.util.Reflections;
@@ -32,7 +33,7 @@
*
* @param <T>
*/
-public abstract class AbstractAnnotatedType<T> extends AbstractAnnotatedItem<T, Class<T>>
+public abstract class AbstractAnnotatedType<T> extends AbstractAnnotatedItem<T, Class<T>> implements AnnotatedType<T>
{
// The superclass abstraction of the type
@@ -40,6 +41,8 @@
// The name of the type
private final String name;
+ private final String _simpleName;
+
// Cached string representation
private String toString;
private final boolean _public;
@@ -53,6 +56,7 @@
{
super(annotatedItemHelper);
this.name = type.getName();
+ this._simpleName = type.getSimpleName();
if (type.getSuperclass() != null)
{
this.superclass = AnnotatedClassImpl.of(type.getSuperclass());
@@ -135,5 +139,10 @@
toString = "Abstract annotated type " + getName();
return toString;
}
+
+ public String getSimpleName()
+ {
+ return _simpleName;
+ }
}
Modified: tck/trunk/impl/pom.xml
===================================================================
--- tck/trunk/impl/pom.xml 2009-01-22 17:16:21 UTC (rev 1180)
+++ tck/trunk/impl/pom.xml 2009-01-22 18:08:43 UTC (rev 1181)
@@ -11,6 +11,7 @@
<groupId>org.jboss.webbeans.tck</groupId>
<artifactId>webbeans-tck-impl</artifactId>
<name>Web Beans TCK</name>
+
<dependencies>
<dependency>
@@ -40,8 +41,22 @@
</dependency>
<dependency>
- <groupId>javax.ejb</groupId>
- <artifactId>ejb-api</artifactId>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-api</artifactId>
+ <exclusions>
+ <exclusion>
+ <artifactId>jboss-jaxrpc</artifactId>
+ <groupId>jbossws</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jboss-transaction-api</artifactId>
+ <groupId>org.jboss.javaee</groupId>
+ </exclusion>
+ <exclusion>
+ <artifactId>jboss-jaxrpc</artifactId>
+ <groupId>jboss.jbossws</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/enterprise/EnterpriseBeanSpecializationTest.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -32,20 +32,20 @@
private static Annotation LANDOWNER_LITERAL = new AnnotationLiteral<Landowner>() {};
- @Test(groups="broken") @SpecAssertion(section = {"4.3.1", "3.2.7"})
+ @Test @SpecAssertion(section = {"4.3.1", "3.2.7"})
public void testSpecializingBeanHasBindingsOfSpecializedAndSpecializingBean()
{
- deployBeans(LazyFarmer.class);
+ deployBeans(Farmer.class, LazyFarmer.class);
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).size() == 1;
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getTypes().contains(LazyFarmer.class);
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getBindings().size() == 2;
assert annotationSetMatches( manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getBindings(), Landowner.class, Lazy.class);
}
- @Test(groups="broken") @SpecAssertion(section = {"4.3.1", "3.2.7"})
+ @Test @SpecAssertion(section = {"4.3.1", "3.2.7"})
public void testSpecializingBeanHasNameOfSpecializedBean()
{
- deployBeans(LazyFarmer.class);
+ deployBeans(Farmer.class, LazyFarmer.class);
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).size() == 1;
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getTypes().contains(LazyFarmer.class);
assert manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getName().equals("farmer");
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java 2009-01-22 17:16:21 UTC (rev 1180)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/inheritance/specialization/simple/SimpleBeanSpecializationTest.java 2009-01-22 18:08:43 UTC (rev 1181)
@@ -32,7 +32,7 @@
private static Annotation LANDOWNER_LITERAL = new AnnotationLiteral<Landowner>() {};
- @Test(groups="broken") @SpecAssertion(section = {"4.3.1", "3.3.7"})
+ @Test @SpecAssertion(section = {"4.3.1", "3.3.7"})
public void testSpecializingBeanHasBindingsOfSpecializedAndSpecializingBean()
{
deployBeans(LazyFarmer.class);
@@ -42,7 +42,7 @@
assert annotationSetMatches( manager.resolveByType(Farmer.class, LANDOWNER_LITERAL).iterator().next().getBindings(), Landowner.class, Lazy.class);
}
- @Test(groups="broken") @SpecAssertion(section = {"4.3.1", "3.3.7"})
+ @Test @SpecAssertion(section = {"4.3.1", "3.3.7"})
public void testSpecializingBeanHasNameOfSpecializedBean()
{
deployBeans(LazyFarmer.class);
Modified: tck/trunk/pom.xml
===================================================================
--- tck/trunk/pom.xml 2009-01-22 17:16:21 UTC (rev 1180)
+++ tck/trunk/pom.xml 2009-01-22 18:08:43 UTC (rev 1181)
@@ -73,64 +73,59 @@
</dependency>
<dependency>
- <groupId>javax.ejb</groupId>
- <artifactId>ejb-api</artifactId>
- <version>3.0</version>
- </dependency>
-
- <dependency>
<groupId>javax.annotation</groupId>
<artifactId>jsr250-api</artifactId>
<version>1.0</version>
</dependency>
-
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
-
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.0.1B</version>
</dependency>
-
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
-
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
<version>1.2</version>
</dependency>
-
<dependency>
<groupId>javax.faces</groupId>
<artifactId>jsf-api</artifactId>
<version>1.2_10</version>
</dependency>
-
<dependency>
<groupId>org.jboss.webbeans</groupId>
<artifactId>webbeans-api</artifactId>
<version>${webbeans.version}</version>
</dependency>
-
<dependency>
<groupId>org.jboss.webbeans.tck</groupId>
<artifactId>webbeans-tck-api</artifactId>
<version>${webbeans.tck.version}</version>
</dependency>
-
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>tck-utils</artifactId>
<version>0.9-SNAPSHOT</version>
</dependency>
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-api</artifactId>
+ <version>3.1.0-Alpha1</version>
+ <exclusions>
+ <exclusion>
+ </exclusion>
+ </exclusions>
+ </dependency>
</dependencies>
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1180 - tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/lookup/injectionpoint.
by webbeans-commits@lists.jboss.org
Author: dallen6
Date: 2009-01-22 12:16:21 -0500 (Thu, 22 Jan 2009)
New Revision: 1180
Added:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/lookup/injectionpoint/MethodInjectionPointBean.java
Modified:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/lookup/injectionpoint/InjectionPointTest.java
Log:
Added remaining injection point metadata test.
Modified: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/lookup/injectionpoint/InjectionPointTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/lookup/injectionpoint/InjectionPointTest.java 2009-01-22 17:15:10 UTC (rev 1179)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/lookup/injectionpoint/InjectionPointTest.java 2009-01-22 17:16:21 UTC (rev 1180)
@@ -19,6 +19,7 @@
import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
+import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
@@ -134,11 +135,30 @@
}
}
- @Test(groups = { "stub", "injectionPoint" })
+ @Test(groups = { "injectionPoint" })
@SpecAssertion(section = "5.11")
public void testGetMemberMethod()
{
- assert false;
+ deployBeans(MethodInjectionPointBean.class, BeanWithInjectionPointMetadata.class);
+
+ // Get an instance of the bean which has another bean injected into it
+ try
+ {
+ activateDependentContext();
+ MethodInjectionPointBean beanWithInjectedBean = manager.getInstanceByType(MethodInjectionPointBean.class, new CurrentBinding());
+ BeanWithInjectionPointMetadata beanWithInjectionPoint = beanWithInjectedBean.getInjectedBean();
+ assert beanWithInjectionPoint.getInjectedMetadata() != null;
+ assert Method.class.isAssignableFrom(beanWithInjectionPoint.getInjectedMetadata().getMember().getClass());
+
+ // Since the type and bindings must correspond to the parameter, check
+ // them
+ assert beanWithInjectionPoint.getInjectedMetadata().getType().equals(BeanWithInjectionPointMetadata.class);
+ assert beanWithInjectionPoint.getInjectedMetadata().getBindings().contains(new CurrentBinding());
+ }
+ finally
+ {
+ deactivateDependentContext();
+ }
}
@Test(groups = { "injectionPoint" })
Added: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/lookup/injectionpoint/MethodInjectionPointBean.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/lookup/injectionpoint/MethodInjectionPointBean.java (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/lookup/injectionpoint/MethodInjectionPointBean.java 2009-01-22 17:16:21 UTC (rev 1180)
@@ -0,0 +1,43 @@
+/*
+ * 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.tck.unit.lookup.injectionpoint;
+
+import javax.webbeans.Current;
+import javax.webbeans.Initializer;
+
+/**
+ * Test bean to inject a bean using injection point metadata into a constructor
+ *
+ * @author David Allen
+ *
+ */
+public class MethodInjectionPointBean
+{
+ private BeanWithInjectionPointMetadata injectedBean;
+
+ @Initializer
+ public void methodWithInjectedMetadata(@Current BeanWithInjectionPointMetadata injectedBean)
+ {
+ this.injectedBean = injectedBean;
+ }
+
+ public BeanWithInjectionPointMetadata getInjectedBean()
+ {
+ return injectedBean;
+ }
+}
Property changes on: tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/unit/lookup/injectionpoint/MethodInjectionPointBean.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1179 - tck/trunk/impl.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-01-22 12:15:10 -0500 (Thu, 22 Jan 2009)
New Revision: 1179
Added:
tck/trunk/impl/ri.classpath
Log:
add ri classpath
Added: tck/trunk/impl/ri.classpath
===================================================================
--- tck/trunk/impl/ri.classpath (rev 0)
+++ tck/trunk/impl/ri.classpath 2009-01-22 17:15:10 UTC (rev 1179)
@@ -0,0 +1,10 @@
+ <!-- Add these entries to your tck eclipse classpath to allow you to run RI tests from the TCK eclipse project -->
+
+ <classpathentry kind="lib" path="/org.jboss.webbeans.webbeans-ri/target/test-classes"/>
+ <classpathentry kind="lib" path="/org.jboss.webbeans.webbeans-ri/src/test/resources"/>
+ <classpathentry kind="lib" path="/org.jboss.webbeans.webbeans-ri-spi/target/classes"/>
+ <classpathentry kind="lib" path="/org.jboss.webbeans.webbeans-ri/target/classes"/>
+ <classpathentry kind="var" path="M2_REPO/org/jboss/logging/jboss-logging-log4j/2.0.5.GA/jboss-logging-log4j-2.0.5.GA.jar"/>
+ <classpathentry kind="var" path="M2_REPO/com/google/collections/google-collections/0.8/google-collections-0.8.jar" sourcepath="M2_REPO/com/google/collections/google-collections/0.8/google-collections-0.8-sources.jar"/>
+ <classpathentry kind="var" path="M2_REPO/javassist/javassist/3.9.0.GA/javassist-3.9.0.GA.jar" sourcepath="M2_REPO/javassist/javassist/3.9.0.GA/javassist-3.9.0.GA-sources.jar"/>
+
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1178 - doc/trunk/reference.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-01-22 11:32:42 -0500 (Thu, 22 Jan 2009)
New Revision: 1178
Modified:
doc/trunk/reference/pom.xml
Log:
minor
Modified: doc/trunk/reference/pom.xml
===================================================================
--- doc/trunk/reference/pom.xml 2009-01-22 16:26:06 UTC (rev 1177)
+++ doc/trunk/reference/pom.xml 2009-01-22 16:32:42 UTC (rev 1178)
@@ -23,13 +23,17 @@
</repository>
</repositories>
+ <properties>
+ <mpjdocbook.version>2.1.1</mpjdocbook.version>
+ </properties>
+
<build>
<defaultGoal>process-classes</defaultGoal>
<plugins>
<plugin>
<groupId>org.jboss.maven.plugins</groupId>
<artifactId>maven-jdocbook-plugin</artifactId>
-
+ <version>${mpjdocbook.version}</version>
<extensions>true</extensions>
<dependencies>
<dependency>
@@ -137,7 +141,7 @@
<plugin>
<groupId>org.jboss.maven.plugins</groupId>
<artifactId>maven-jdocbook-plugin</artifactId>
- <version>2.1.1</version>
+ <version>${mpjdocbook.version}</version>
</plugin>
</plugins>
</pluginManagement>
@@ -195,14 +199,8 @@
<!-- It is anticipated that ${maven.repository.root} be set in user's settings.xml -->
<!-- todo : replace this with direct svn access once the svnkit providers are available -->
- <id>repository.jboss.org</id>
- <url>file://${maven.repository.root}</url>
</repository>
<snapshotRepository>
- <id>snapshots.jboss.org</id>
-
- <name>JBoss Snapshot Repository</name>
- <url>dav:https://snapshots.jboss.org/maven2</url>
</snapshotRepository>
</distributionManagement>
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1177 - examples/trunk/numberguess.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-01-22 11:26:06 -0500 (Thu, 22 Jan 2009)
New Revision: 1177
Modified:
examples/trunk/numberguess/pom.xml
Log:
missing dependency
Modified: examples/trunk/numberguess/pom.xml
===================================================================
--- examples/trunk/numberguess/pom.xml 2009-01-22 16:17:38 UTC (rev 1176)
+++ examples/trunk/numberguess/pom.xml 2009-01-22 16:26:06 UTC (rev 1177)
@@ -71,6 +71,10 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>javax.annotation</groupId>
+ <artifactId>jsr250-api</artifactId>
+ </dependency>
</dependencies>
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1176 - doc/trunk/reference/ko-KR.
by webbeans-commits@lists.jboss.org
Author: eukim
Date: 2009-01-22 11:17:38 -0500 (Thu, 22 Jan 2009)
New Revision: 1176
Modified:
doc/trunk/reference/ko-KR/intro.po
Log:
updated
Modified: doc/trunk/reference/ko-KR/intro.po
===================================================================
--- doc/trunk/reference/ko-KR/intro.po 2009-01-22 16:16:20 UTC (rev 1175)
+++ doc/trunk/reference/ko-KR/intro.po 2009-01-22 16:17:38 UTC (rev 1176)
@@ -8,7 +8,7 @@
"Project-Id-Version: intro\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-06 11:30+0000\n"
-"PO-Revision-Date: 2009-01-23 02:15+1000\n"
+"PO-Revision-Date: 2009-01-23 02:16+1000\n"
"Last-Translator: Eunju Kim <eukim(a)redhat.com>\n"
"Language-Team: Korean <ko(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -646,7 +646,7 @@
msgid ""
"For example, any web application may have <emphasis>session scoped</"
"emphasis> Web Beans:"
-msgstr ""
+msgstr "예를 들어, 웹 애플리케어션은 <emphasis>세션 범위</emphasis> Web Beans을 갖을 수 있습니다: "
#. Tag: programlisting
#: intro.xml:257
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1175 - doc/trunk/reference/ko-KR.
by webbeans-commits@lists.jboss.org
Author: eukim
Date: 2009-01-22 11:16:20 -0500 (Thu, 22 Jan 2009)
New Revision: 1175
Modified:
doc/trunk/reference/ko-KR/injection.po
doc/trunk/reference/ko-KR/intro.po
Log:
updated
Modified: doc/trunk/reference/ko-KR/injection.po
===================================================================
--- doc/trunk/reference/ko-KR/injection.po 2009-01-22 14:32:37 UTC (rev 1174)
+++ doc/trunk/reference/ko-KR/injection.po 2009-01-22 16:16:20 UTC (rev 1175)
@@ -8,7 +8,7 @@
"Project-Id-Version: injection\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-06 11:30+0000\n"
-"PO-Revision-Date: 2009-01-22 16:41+1000\n"
+"PO-Revision-Date: 2009-01-23 00:09+1000\n"
"Last-Translator: Eunju Kim <eukim(a)redhat.com>\n"
"Language-Team: Korean <ko(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -776,7 +776,7 @@
"manager decides which implementation — <literal>ExternalPaymentProcessor</"
"literal> or <literal>MockPaymentProcessor</literal> — to choose. Consider "
"what happens when the manager encounters this injection point:"
-msgstr ""
+msgstr "관심을 기울이셨다면, Web Bean 관리자가 어떤 구현 — <literal>ExternalPaymentProcessor</literal> 또는 <literal>MockPaymentProcessor</literal> — 을 선택할 지를 어떻게 결정하는지에 대해 궁금해 하셨을 것입니다. 관리자기 이러한 삽입 지점에 이르렀을 때 무엇이 발생할 지를 고려합니다: "
#. Tag: programlisting
#: injection.xml:251
@@ -793,7 +793,7 @@
"disambiguate, since binding annotations are hard-coded into the source at "
"the injection point, and we want the manager to be able to decide at "
"deployment time!"
-msgstr ""
+msgstr "<literal>PaymentProcessor</literal> 계약을 만족하는 두 개의 Web Beans가 있습니다. 삽입 지점에서 바인딩 어노테이션은 소스로 하드-코드화되어 있으므로, 명확하게 하기 위해 바인딩 어노테이션을 사용할 수 없으며, 관리자가 배치시 결정할 수 있게 하기를 원합니다! "
#. Tag: para
#: injection.xml:258
@@ -804,7 +804,7 @@
"determined by the order in which they appear in <literal>web-beans.xml</"
"literal>. In our example, <literal>@Mock</literal> appears later than "
"<literal>@Production</literal> so it has a higher precedence."
-msgstr ""
+msgstr "이러한 문제의 해결책은 각각의 배치 유형이 다른 <emphasis>우선 순위</emphasis>를 갖게 하는 것입니다. 배치 유형의 우선 순위는 <literal>web-beans.xml</literal>에 나타나는 순서에 의해 결정됩니다. 예에서 <literal>@Mock</literal>는 <literal>@Production</literal> 보다 나중에 나타나므로 보다 높은 우선 순위를 갖습니다. "
#. Tag: para
#: injection.xml:264
@@ -817,7 +817,7 @@
"to inject. So, in our example, the Web Bean manager will inject "
"<literal>MockPaymentProcessor</literal> when executing in our integration "
"testing environment (which is exactly what we want)."
-msgstr ""
+msgstr "하나 이상의 Web Bean이 삽입 지점에 의해 지정된 계약 (API 유형 및 바인딩 어노테이션)에 만족할 수 있음을 관리자가 발견할 때 마다, 이는 Web Beans의 관련된 우선 순위를 고려합니다. 하나의 Web Bean이 다른 것 보다 높은 우선 순위를 갖을 경우, 삽입될 보다 높은 우선 순위의 Web Bean을 선택합니다. 예에서, 통합 테스트 환경 (실제적으로 원하는 환경)에서 실행할 때 Web Bean 관리자는 <literal>MockPaymentProcessor</literal>를 삽입하게 됩니다. "
#. Tag: para
#: injection.xml:271
@@ -833,7 +833,7 @@
"Beans to be enabled with a single line of XML. Meanwhile, a developer "
"browsing the code can easily identify what deployment scenarios the Web Bean "
"will be used in."
-msgstr ""
+msgstr "이러한 기능을 오늘날의 관리자 구조와 비교하는 것은 흥미로운 일입니다. 다양한 \"경량\"의 컨테이너는 classpath에 있는 클래스의 조건부 배치를 허용하지만, 배치될 클래스는 명시적, 개별적이어하며, 설정 코드나 일부 XML 설정 파일에 나열되어 있어야 합니다. Web Beans는 XML을 통한 Web Bean 정의 및 설정을 지원하지만 복잡한 설정을 필요로 하지 않는 대부분의 경우, 배치 유형은 전체 Web Beans 설정이 단일 XML 행으로 활성화되게 합니다. 동시에, 코드를 검색하는 개발자는 어떤 배치 시나리오를 Web Bean이 사용할 지를 쉽게 인식할 수 있습니다. "
#. Tag: title
#: injection.xml:284
@@ -892,12 +892,13 @@
#. Tag: para
#: injection.xml:315
#, no-c-format
+#, fuzzy
msgid ""
"The typesafe resolution algorithm fails when, after considering the binding "
"annotations and and deployment types of all Web Beans that implement the API "
"type of an injection point, the Web Bean manager is unable to identify "
"exactly one Web Bean to inject."
-msgstr ""
+msgstr "타입 안정적 해상도 알고리즘은 "
#. Tag: para
#: injection.xml:320
@@ -996,7 +997,7 @@
"cannot be proxied by the Web Bean manager. Therefore, the Web Bean manager "
"throws an <literal>UnproxyableDependencyException</literal> if the type of "
"an injection point cannot be proxied."
-msgstr ""
+msgstr "Java 언어의 한계로 인해, 일부 Java 유형은 Web Bean 관리자에 의해 프록시될 수 없습니다. 따라서, 삽입 지점 유형이 프록시될 수 없을 경우 Web Bean 관리자는 <literal>UnproxyableDependencyException</literal>을 던지게 됩니다. "
#. Tag: para
#: injection.xml:370
@@ -1022,7 +1023,7 @@
#: injection.xml:381
#, no-c-format
msgid "arrays and primitive types."
-msgstr ""
+msgstr "배열 및 기본 유형 "
#. Tag: para
#: injection.xml:385
@@ -1032,7 +1033,7 @@
"literal>. Simply add a constructor with no parameters to the injected class, "
"introduce an interface, or change the scope of the injected Web Bean to "
"<literal>@Dependent</literal>."
-msgstr ""
+msgstr "<literal>UnproxyableDependencyException</literal>을 수정하기 쉽습니다. 간단하게 삽입된 클래스에 매개 변수가 없는 생성자를 추가하고, 인터페이스를 소개하거나, 삽입된 Web Bean의 범위를 <literal>@Dependent</literal>로 변경합니다. "
#. Tag: title
#: injection.xml:392
@@ -1046,7 +1047,7 @@
msgid ""
"The application may obtain an instance of the interface <literal>Manager</"
"literal> by injection:"
-msgstr ""
+msgstr "애플리케이션은 삽입에 의해 <literal>Manager</literal> 인터페이스의 인스턴스를 획득할 수 있습니다: "
#. Tag: programlisting
#: injection.xml:397
@@ -1060,7 +1061,7 @@
msgid ""
"The <literal>Manager</literal> object provides a set of methods for "
"obtaining a Web Bean instance programatically."
-msgstr ""
+msgstr "<literal>Manager</literal> 객체는 프로그램적으로 Web Bean 인스턴스의 획득을 위한 방식 모음을 제공합니다. "
#. Tag: programlisting
#: injection.xml:402
@@ -1079,7 +1080,7 @@
"Binding annotations may be specified by subclassing the helper class "
"<literal>AnnotationLiteral</literal>, since it is otherwise difficult to "
"instantiate an annotation type in Java."
-msgstr ""
+msgstr "바인딩 어노테이션은 <literal>AnnotationLiteral</literal> 도우미 클래스를 하부클래스화하여 지정될 수 있으며, 그렇지 않으면 Java에서 어노테이션 유형을 인스턴스화하기 어렵습니다. "
#. Tag: programlisting
#: injection.xml:408
@@ -1102,7 +1103,7 @@
"If the binding type has an annotation member, we can't use an anonymous "
"subclass of <literal>AnnotationLiteral</literal> — instead we'll need to "
"create a named subclass:"
-msgstr ""
+msgstr "바인딩 유형이 어노테이션 멤버를 갖을 경우, <literal>AnnotationLiteral</literal>의 임의의 하부클래스를 사용할 수 없습니다 — 대신 named 하부 클래스를 생성해야 합니다: "
#. Tag: programlisting
#: injection.xml:413
@@ -1140,7 +1141,7 @@
msgid ""
"Lifecycle callbacks, <literal>@Resource</literal>, <literal>@EJB</literal> "
"and <literal>@PersistenceContext</literal>"
-msgstr ""
+msgstr "수명 주기 콜백, <literal>@Resource</literal>, <literal>@EJB</literal> 및 <literal>@PersistenceContext</literal> "
#. Tag: para
#: injection.xml:422
@@ -1151,6 +1152,9 @@
"literal>, <literal>@PrePassivate</literal> and <literal>@PostActivate</"
"literal>."
msgstr ""
+"Enterprise Web Beans는 EJB 사양에 의해 정의된 모든 수명 주기 콜백을 지원합니다: <literal>@PostConstruct</literal>, <literal>@PreDestroy</"
+"literal>, <literal>@PrePassivate</literal> 및 <literal>@PostActivate</"
+"literal>. "
#. Tag: para
#: injection.xml:426
@@ -1159,6 +1163,8 @@
"Simple Web Beans support only the <literal>@PostConstruct</literal> and "
"<literal>@PreDestroy</literal> callbacks."
msgstr ""
+"Simple Web Beans는 <literal>@PostConstruct</literal> 및 "
+"<literal>@PreDestroy</literal> 콜백 기능만을 지원합니다. "
#. Tag: para
#: injection.xml:429
@@ -1169,7 +1175,7 @@
"for injection of Java EE resources, EJBs and JPA persistence contexts, "
"respectively. Simple Web Beans do not support the use of "
"<literal>@PersistenceContext(type=EXTENDED)</literal>."
-msgstr ""
+msgstr "enterprise 및 simple Web Beans는 Java EE 리소스 삽입, EJB 및 JPA 영구적 컨텍스에 대해 <literal>@Resource</literal>, <literal>@EJB</literal> 및 <literal>@PersistenceContext</literal>의 사용을 각각 지원합니다. Simple Web Beans는 <literal>@PersistenceContext(type=EXTENDED)</literal>의 사용을 지원하지 않습니다. "
#. Tag: para
#: injection.xml:434
@@ -1177,13 +1183,13 @@
msgid ""
"The <literal>@PostConstruct</literal> callback always occurs after all "
"dependencies have been injected."
-msgstr ""
+msgstr "<literal>@PostConstruct</literal> 콜백은 모든 의존성이 삽입된 후에 나타납니다. "
#. Tag: title
#: injection.xml:440
#, no-c-format
msgid "The <literal>InjectionPoint</literal> object"
-msgstr ""
+msgstr "<literal>InjectionPoint</literal> 객체 "
#. Tag: para
#: injection.xml:442
@@ -1193,7 +1199,7 @@
"<literal>@Dependent</literal> — that need to know something about the "
"object or injection point into which they are injected in order to be able "
"to do what they do. For example:"
-msgstr ""
+msgstr "특정 종류의 의존성 객체가 있습니다 — <literal>@Dependent</literal> 범위와 함께 Web Beans — 객체 또는 이는 실행 가능하게 되기 위해 삽입되는 삽입 지점에 관해 알아야 합니다. 예: "
#. Tag: para
#: injection.xml:448
@@ -1201,7 +1207,7 @@
msgid ""
"The log category for a <literal>Logger</literal> depends upon the class of "
"the object that owns it."
-msgstr ""
+msgstr "<literal>Logger</literal> 용 로그 카테고리는 소유하고 있는 객체 클래스에 의존합니다. "
#. Tag: para
#: injection.xml:452
@@ -1209,7 +1215,7 @@
msgid ""
"Injection of a HTTP parameter or header value depends upon what parameter or "
"header name was specified at the injection point."
-msgstr ""
+msgstr "헤더 값이나 HTTP 매개 변수 삽입은 삽입 지점에서 어떤 매개 변수 또는 헤더 이름을 지정하였는가에 의존합니다. "
#. Tag: para
#: injection.xml:456
@@ -1217,7 +1223,7 @@
msgid ""
"Injection of the result of an EL expression evaluation depends upon the "
"expression that was specified at the injection point."
-msgstr ""
+msgstr "EL 표현식 평가 (expression evaluation) 평가의 삽입은 삽입 지점에서 지정된 표현식에 의존합니다. "
#. Tag: para
#: injection.xml:461
@@ -1226,7 +1232,7 @@
"A Web Bean with scope <literal>@Dependent</literal> may inject an instance "
"of <literal>InjectionPoint</literal> and access metadata relating to the "
"injection point to which it belongs."
-msgstr ""
+msgstr "<literal>@Dependent</literal> 범위와 함께 Web Bean은 <literal>InjectionPoint</literal> 인스턴스를 삽입하고 해당 삽입 지점에 관련된 메타데이트를 액세스합니다. "
#. Tag: para
#: injection.xml:465
@@ -1234,7 +1240,7 @@
msgid ""
"Let's look at an example. The following code is verbose, and vulnerable to "
"refactoring problems:"
-msgstr ""
+msgstr "다음 예를 살펴봅시다. 다음과 같은 코드는 프로그램을 리팩토링하기에 취약하고 장황합니다: "
#. Tag: programlisting
#: injection.xml:468
@@ -1248,7 +1254,7 @@
msgid ""
"This clever little producer method lets you inject a JDK <literal>Logger</"
"literal> without explicitly specifying the log category:"
-msgstr ""
+msgstr "이와 같이 현명한 생산자 방식은 로그 범주를 명시적으로 지정하지 않고 JDK <literal>Logger</literal>를 삽입하게 합니다: "
#. Tag: programlisting
#: injection.xml:473
@@ -1290,7 +1296,7 @@
msgid ""
"Not convinced? Then here's a second example. To inject HTTP parameters, we "
"need to define a binding type:"
-msgstr ""
+msgstr "확신하시지 않습니까? 그러시다면 여기에 두 번째 예제가 있습니다. HTTP 매개 변수를 삽입하려면, 바인딩 유형을 정의해야 합니다: "
#. Tag: programlisting
#: injection.xml:482
Modified: doc/trunk/reference/ko-KR/intro.po
===================================================================
--- doc/trunk/reference/ko-KR/intro.po 2009-01-22 14:32:37 UTC (rev 1174)
+++ doc/trunk/reference/ko-KR/intro.po 2009-01-22 16:16:20 UTC (rev 1175)
@@ -8,7 +8,7 @@
"Project-Id-Version: intro\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2009-01-06 11:30+0000\n"
-"PO-Revision-Date: 2009-01-20 15:59+1000\n"
+"PO-Revision-Date: 2009-01-23 02:15+1000\n"
"Last-Translator: Eunju Kim <eukim(a)redhat.com>\n"
"Language-Team: Korean <ko(a)li.org>\n"
"MIME-Version: 1.0\n"
@@ -20,6 +20,7 @@
"\n"
"\n"
"\n"
+"\n"
#. Tag: title
#: intro.xml:4
@@ -66,7 +67,7 @@
"Suppose that we have two existing Java classes, that we've been using for "
"years in various applications. The first class parses a string into a list "
"of sentences:"
-msgstr ""
+msgstr "다양한 애플리케이션에서 오랫동안 사용해 온 두 개의 Java 클래스를 갖고 있다고 가정합니다. 첫 번째 클래스는 문자열을 문장 목록으로 구문 분석합니다: "
#. Tag: programlisting
#: intro.xml:29
@@ -87,7 +88,7 @@
"The second existing class is a stateless session bean front-end for an "
"external system that is able to translate sentences from one language to "
"another:"
-msgstr ""
+msgstr "두 번째 클래스는 하나의 언어에서 다른 언어로 문장을 번역할 수 있는 외부 시스템에 대한 상태 유지 세션 빈 프론트엔드입니다: "
#. Tag: programlisting
#: intro.xml:35
@@ -107,7 +108,7 @@
#: intro.xml:37
#, no-c-format
msgid "Where <literal>Translator</literal> is the local interface:"
-msgstr ""
+msgstr "여기서 <literal>Translator</literal>는 로컬 인터페이스입니다: "
#. Tag: programlisting
#: intro.xml:39
@@ -129,7 +130,7 @@
msgid ""
"Unfortunately, we don't have a preexisting class that translates whole text "
"documents. So let's write a Web Bean that does this job:"
-msgstr ""
+msgstr "불행하게도 전체 텍스트 문서를 번역하는 기존 클래스가 없습니다. 따라서 이러한 작업을 실행하는 Web Bean을 작성합시다: "
#. Tag: programlisting
#: intro.xml:44
@@ -227,7 +228,7 @@
"no parameters! Is it still a Web Bean? Well, a class that does not have a "
"constructor with no parameters can still be a Web Bean if it has a "
"constructor annotated <literal>@Initializer</literal>."
-msgstr ""
+msgstr "하지만 잠시 기다려주십시오: <literal>TextTranslator</literal>는 매개 변수 없는 생성자를 갖지 않습니다! 그래도 이것이 Web Bean입니까? 클래스가 <literal>@Initializer</literal>라고 어노테이션된 생성자를 갖고 있을 경우 매개 변수 없이 생성자를 갖지 않는 클래스는 Web Bean이 될 수 있습니다. "
#. Tag: para
#: intro.xml:61
@@ -389,61 +390,61 @@
#: intro.xml:153
#, no-c-format
msgid "A Web Bean comprises:"
-msgstr ""
+msgstr "Web Bean은 다음과 같은 것으로 구성되어 있습니다: "
#. Tag: para
#: intro.xml:156
#, no-c-format
msgid "A (nonempty) set of API types"
-msgstr ""
+msgstr "(비어 있지 않은) API 유형 모음 "
#. Tag: para
#: intro.xml:157
#, no-c-format
msgid "A (nonempty) set of binding annotation types"
-msgstr ""
+msgstr "(비어 있지 않은) 바인딩 어노테이션 유형 모음 "
#. Tag: para
#: intro.xml:158
#, no-c-format
msgid "A scope"
-msgstr ""
+msgstr "범위 "
#. Tag: para
#: intro.xml:159
#, no-c-format
msgid "A deployment type"
-msgstr ""
+msgstr "배치 유형 "
#. Tag: para
#: intro.xml:160
#, no-c-format
msgid "Optionally, a Web Bean name"
-msgstr ""
+msgstr "Web Bean 이름 (옵션 사항) "
#. Tag: para
#: intro.xml:161
#, no-c-format
msgid "A set of interceptor binding types"
-msgstr ""
+msgstr "인터셉터 바인딩 유형 모음 "
#. Tag: para
#: intro.xml:162
#, no-c-format
msgid "A Web Bean implementation"
-msgstr ""
+msgstr "Web Bean 구현 "
#. Tag: para
#: intro.xml:167
#, no-c-format
msgid "Let's see what some of these terms mean, to the Web Bean developer."
-msgstr ""
+msgstr "이러한 용어가 Web Bean 개발자에게 무엇을 의미하는 살펴봅시다. "
#. Tag: title
#: intro.xml:170
#, no-c-format
msgid "API types, binding types and dependency injection"
-msgstr ""
+msgstr "API 유형, 바인딩 유형 및 의존성 삽입 "
#. Tag: para
#: intro.xml:172
@@ -458,13 +459,13 @@
#: intro.xml:177
#, no-c-format
msgid "an API type, together with"
-msgstr ""
+msgstr "API 유형 "
#. Tag: para
#: intro.xml:178
#, no-c-format
msgid "a set of binding types."
-msgstr ""
+msgstr "바인딩 유형 모음 "
#. Tag: para
#: intro.xml:181
@@ -554,7 +555,7 @@
#: intro.xml:217
#, no-c-format
msgid "Deployment types"
-msgstr ""
+msgstr "배치 유형 "
#. Tag: para
#: intro.xml:219
@@ -620,13 +621,13 @@
msgid ""
"We'll talk more about this unique and powerful feature in <xref linkend="
"\"deploymenttypes\"/>."
-msgstr ""
+msgstr "<xref linkend=\"deploymenttypes\"/>에서 이러한 유일하고 강력한 기능에 관해 자세히 살펴 보겠습니다. "
#. Tag: title
#: intro.xml:246
#, no-c-format
msgid "Scope"
-msgstr ""
+msgstr "범위 "
#. Tag: para
#: intro.xml:248
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1174 - in tck/trunk: impl and 1 other directory.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-01-22 09:32:37 -0500 (Thu, 22 Jan 2009)
New Revision: 1174
Modified:
tck/trunk/api/
tck/trunk/impl/
Log:
ignores
Property changes on: tck/trunk/api
___________________________________________________________________
Name: svn:ignore
- target
.classpath
.project
.settings
test-output
+ target
.classpath
.project
.settings
test-output
bin
Property changes on: tck/trunk/impl
___________________________________________________________________
Name: svn:ignore
- target
.classpath
.project
.settings
test-output
temp-testng-customsuite.xml
+ target
.classpath
.project
.settings
test-output
temp-testng-customsuite.xml
bin
16 years, 8 months
[webbeans-commits] Webbeans SVN: r1173 - tck/trunk.
by webbeans-commits@lists.jboss.org
Author: pete.muir(a)jboss.org
Date: 2009-01-22 09:31:47 -0500 (Thu, 22 Jan 2009)
New Revision: 1173
Modified:
tck/trunk/
Log:
ignores
Property changes on: tck/trunk
___________________________________________________________________
Name: svn:ignore
- target
test-output
+ target
test-output
.project
.classpath
.settings
16 years, 8 months