Author: dallen6
Date: 2009-01-26 09:42:10 -0500 (Mon, 26 Jan 2009)
New Revision: 1231
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/EnterpriseBean.java
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/integration/event/EventTest.java
Log:
Fixed one of the event tests and some performance enhancements.
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-25
19:11:28 UTC (rev 1230)
+++
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractBean.java 2009-01-26
14:42:10 UTC (rev 1231)
@@ -52,8 +52,8 @@
*
* @author Pete Muir
*
- * @param <T>
- * @param <E>
+ * @param <T> the type of bean
+ * @param <E> the Class<?> of the bean type
*/
public abstract class AbstractBean<T, E> extends Bean<T>
{
@@ -139,7 +139,8 @@
initDefaultBindings();
initType();
initPrimitive();
- log.debug("Building Web Bean bean metadata for " + getType());
+ if (log.isDebugEnabled())
+ log.debug("Building Web Bean bean metadata for " + getType());
initName();
initDeploymentType();
checkDeploymentType();
@@ -176,7 +177,8 @@
}
else
{
- log.trace("Using binding types " + bindingTypes + " specified by
annotations");
+ if (log.isTraceEnabled())
+ log.trace("Using binding types " + bindingTypes + " specified
by annotations");
}
}
@@ -191,7 +193,8 @@
if (possibleDeploymentTypes.size() > 0)
{
this.deploymentType = getDeploymentType(manager.getEnabledDeploymentTypes(),
possibleDeploymentTypes);
- log.trace("Deployment type " + deploymentType + " specified by
stereotype");
+ if (log.isTraceEnabled())
+ log.trace("Deployment type " + deploymentType + " specified by
stereotype");
return;
}
}
@@ -219,7 +222,8 @@
}
else
{
- log.trace("Using name " + javaName + " specified by
annotations");
+ if (log.isTraceEnabled())
+ log.trace("Using name " + javaName + " specified by
annotations");
this.name = javaName;
return;
}
@@ -273,7 +277,8 @@
if (possibleScopeTypes.size() == 1)
{
this.scopeType = possibleScopeTypes.iterator().next().annotationType();
- log.trace("Scope " + scopeType + " specified by
stereotype");
+ if (log.isTraceEnabled())
+ log.trace("Scope " + scopeType + " specified by
stereotype");
return true;
}
else if (possibleScopeTypes.size() > 1)
@@ -313,7 +318,8 @@
{
for (Class<?> requiredType : getMergedStereotypes().getRequiredTypes())
{
- log.trace("Checking if required type " + requiredType + " is
implemented");
+ if (log.isTraceEnabled())
+ log.trace("Checking if required type " + requiredType + " is
implemented");
if (!requiredType.isAssignableFrom(type))
{
throw new DefinitionException("Required type " + requiredType +
" isn't implemented on " + type);
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-25
19:11:28 UTC (rev 1230)
+++
ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/EnterpriseBean.java 2009-01-26
14:42:10 UTC (rev 1231)
@@ -30,6 +30,7 @@
import javax.webbeans.DefinitionException;
import javax.webbeans.Dependent;
import javax.webbeans.Interceptor;
+import javax.webbeans.Observes;
import org.jboss.webbeans.ManagerImpl;
import org.jboss.webbeans.bean.proxy.EnterpriseBeanInstance;
@@ -49,7 +50,7 @@
*
* @author Pete Muir
*
- * @param <T>
+ * @param <T> The type (class) of the bean
*/
public class EnterpriseBean<T> extends AbstractClassBean<T>
{
@@ -121,6 +122,7 @@
checkEnterpriseBeanTypeAllowed();
checkEnterpriseScopeAllowed();
checkConflictingRoles();
+ checkObserverMethods();
}
/**
@@ -216,6 +218,8 @@
DependentContext.INSTANCE.setActive(true);
T instance = proxyClass.newInstance();
((ProxyObject) instance).setHandler(new EnterpriseBeanProxyMethodHandler(this,
ejbDescriptor.getRemoveMethods()));
+ if (log.isTraceEnabled())
+ log.trace("Enterprise bean instance created for bean " + this);
return instance;
}
catch (InstantiationException e)
@@ -355,4 +359,21 @@
return specializedBean;
}
+ /**
+ * If there are any observer methods, they must be static or business
+ * methods.
+ */
+ protected void checkObserverMethods()
+ {
+ for (AnnotatedMethod<?> method :
this.annotatedItem.getDeclaredMethodsWithAnnotatedParameters(Observes.class))
+ {
+ if (!method.isStatic())
+ {
+ if (!this.getTypes().contains(method.getMember().getDeclaringClass()))
+ {
+ throw new DefinitionException("Observer method must be static or
business method: " + method);
+ }
+ }
+ }
+ }
}
Modified:
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/integration/event/EventTest.java
===================================================================
---
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/integration/event/EventTest.java 2009-01-25
19:11:28 UTC (rev 1230)
+++
tck/trunk/impl/src/main/java/org/jboss/webbeans/tck/integration/event/EventTest.java 2009-01-26
14:42:10 UTC (rev 1231)
@@ -60,7 +60,7 @@
assert observers.size() == 2;
}
- @Test(groups = { "events", "integration", "broken" },
expectedExceptions=DefinitionException.class)
+ @Test(groups = { "events", "integration" },
expectedExceptions=DefinitionException.class)
@SpecAssertion(section = "8.5")
public void testObserverMethodOnEnterpriseBeanNotBusinessMethodOrStaticFails()
{
@@ -68,7 +68,6 @@
Set<Bean<Object>> beans = manager.resolveByType(Object.class);
assert beans.size() >= 2;
Set<Observer<String>> observers = manager.resolveObservers("An
event");
- assert observers.size() == 0;
}
/**
Show replies by date