[jboss-cvs] JBossAS SVN: r82705 - in projects/ejb3/trunk: core/src/main/java/org/jboss/ejb3/service and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jan 8 10:40:19 EST 2009
Author: ALRubinger
Date: 2009-01-08 10:40:18 -0500 (Thu, 08 Jan 2009)
New Revision: 82705
Modified:
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/DependencyPolicy.java
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/JmxDependencyPolicy.java
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/MCDependencyPolicy.java
projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java
projects/ejb3/trunk/testsuite/src/test/java/org/jboss/ejb3/test/interceptormetadata/MockDependencyPolicy.java
Log:
[EJBTHREE-1530] Fix the demands chain in ServiceContainer.registerManagementInterface to take into account the executing container (through which all true demands will be implicitly satisfied). Required extending DependencyPolicy to be cloned.
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/DependencyPolicy.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/DependencyPolicy.java 2009-01-08 15:37:09 UTC (rev 82704)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/DependencyPolicy.java 2009-01-08 15:40:18 UTC (rev 82705)
@@ -32,4 +32,6 @@
{
public void addDependency(String dependency);
public void addDatasource(String jndiName);
+ public DependencyPolicy clone();
+
}
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/JmxDependencyPolicy.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/JmxDependencyPolicy.java 2009-01-08 15:37:09 UTC (rev 82704)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/JmxDependencyPolicy.java 2009-01-08 15:40:18 UTC (rev 82705)
@@ -23,6 +23,7 @@
import java.util.Collection;
import java.util.HashSet;
+
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
@@ -51,12 +52,12 @@
dependencies.add(on);
}
- public Collection getDependencies()
+ public Collection<ObjectName> getDependencies()
{
return dependencies;
}
- public Collection getDependencies(Collection currentDependencies)
+ public Collection<ObjectName> getDependencies(Collection<ObjectName> currentDependencies)
{
dependencies.addAll(currentDependencies);
return dependencies;
@@ -86,5 +87,15 @@
throw new RuntimeException(e);
}
}
+
+ public DependencyPolicy clone()
+ {
+ DependencyPolicy policy = new JmxDependencyPolicy();
+ for (ObjectName dependency : this.getDependencies())
+ {
+ policy.addDependency(dependency.getCanonicalName());
+ }
+ return policy;
+ }
}
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/MCDependencyPolicy.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/MCDependencyPolicy.java 2009-01-08 15:37:09 UTC (rev 82704)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/MCDependencyPolicy.java 2009-01-08 15:40:18 UTC (rev 82705)
@@ -153,4 +153,13 @@
{
return supplies;
}
+
+ public DependencyPolicy clone()
+ {
+ MCDependencyPolicy clone = new MCDependencyPolicy(this.component);
+ clone.supplies.addAll(this.supplies);
+ clone.demands.addAll(this.demands);
+ clone.dependencies.addAll(this.dependencies);
+ return clone;
+ }
}
Modified: projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java
===================================================================
--- projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java 2009-01-08 15:37:09 UTC (rev 82704)
+++ projects/ejb3/trunk/core/src/main/java/org/jboss/ejb3/service/ServiceContainer.java 2009-01-08 15:40:18 UTC (rev 82705)
@@ -56,6 +56,7 @@
import org.jboss.ejb.AllowedOperationsAssociation;
import org.jboss.ejb.AllowedOperationsFlags;
import org.jboss.ejb3.BeanContext;
+import org.jboss.ejb3.DependencyPolicy;
import org.jboss.ejb3.Ejb3Deployment;
import org.jboss.ejb3.Ejb3Registry;
import org.jboss.ejb3.annotation.LocalBinding;
@@ -246,6 +247,10 @@
// EJBTHREE-655: fire up an instance for use as MBean delegate
singleton = super.construct();
+
+ registerManagementInterface();
+
+ invokeOptionalMethod(METHOD_NAME_LIFECYCLE_CALLBACK_CREATE);
}
@Override
@@ -302,9 +307,6 @@
injectDependencies(beanContext);
- // TODO: EJBTHREE-655: shouldn't happen here, but in create
- registerManagementInterface();
-
TimerServiceFactory.getInstance().restoreTimerService(timerService);
invokeOptionalMethod(METHOD_NAME_LIFECYCLE_CALLBACK_START);
}
@@ -580,14 +582,6 @@
}
}
-// @Deprecated
-// public InvocationResponse dynamicInvoke(Object target, Invocation invocation) throws Throwable
-// {
-// log.warn("This call to dynamicInvoke(Object target, Invocation invocation) is "
-// + "@Deprecated, should be using dynamicInvoke(Invocation invocation)");
-// return this.dynamicInvoke(invocation);
-// }
-
protected void initBeanContext() throws RuntimeException
{
if (beanContext == null)
@@ -700,15 +694,15 @@
{
try
{
- Management annotation = (Management) resolveAnnotation(Management.class);
+ Management annotation = this.getAnnotation(Management.class);
- Class intf = null;
+ Class<?> intf = null;
if (annotation != null)
intf = annotation.value();
if (intf == null)
{
- Class[] interfaces = this.getBeanClass().getInterfaces();
+ Class<?>[] interfaces = this.getBeanClass().getInterfaces();
int interfaceIndex = 0;
while (intf == null && interfaceIndex < interfaces.length)
{
@@ -718,47 +712,64 @@
++interfaceIndex;
}
}
+
+ /*
+ * Construct a DependencyPolicy for the MBean which will also
+ * define a demand upon this container
+ */
+ DependencyPolicy containerPolicy = this.getDependencyPolicy();
+ DependencyPolicy newPolicy = containerPolicy.clone();
+ String cName = this.getObjectName().getCanonicalName();
+ newPolicy.addDependency(cName);
+
+ // Find MBean Server if not specified
+ if (mbeanServer == null)
+ {
+ try
+ {
+ mbeanServer = org.jboss.mx.util.MBeanServerLocator.locateJBoss();
+ }
+ catch (IllegalStateException ise)
+ {
+ // Not found; ignore for now and we'll catch this later when we absolutely need MBean server
+ log.warn(ise);
+ }
+ }
+
+ /*
+ * Construct the ObjectName
+ */
+ Service service = this.getAnnotation(Service.class);
+ String objname = service.objectName();
+ delegateObjectName = (objname == null || objname.equals("")) ? new ObjectName(getObjectName()
+ .getCanonicalName()
+ + ",type=ManagementInterface") : new ObjectName(objname);
+ // For @Management
if (intf != null)
{
if (mbeanServer == null)
- mbeanServer = org.jboss.mx.util.MBeanServerLocator.locateJBoss();
-
- if (mbeanServer == null)
throw new RuntimeException("There is a @Management interface on " + ejbName
+ " but the MBeanServer has not been initialized for it");
- Service service = (Service) resolveAnnotation(Service.class);
-
- String objname = service.objectName();
- delegateObjectName = (objname == null || objname.equals("")) ? new ObjectName(getObjectName()
- .getCanonicalName()
- + ",type=ManagementInterface") : new ObjectName(service.objectName());
-
delegate = new ServiceMBeanDelegate(mbeanServer, this, intf, delegateObjectName);
-
- getDeployment().getKernelAbstraction().installMBean(delegateObjectName, getDependencyPolicy(), delegate);
+
+ getDeployment().getKernelAbstraction().installMBean(delegateObjectName, newPolicy, delegate);
}
+ // XMBeans
else
{
- Service service = (Service) resolveAnnotation(Service.class);
if (service.xmbean().length() > 0)
{
- if (mbeanServer == null)
- mbeanServer = org.jboss.mx.util.MBeanServerLocator.locateJBoss();
if (mbeanServer == null)
throw new RuntimeException(ejbName
+ "is defined as an XMBean, but the MBeanServer has not been initialized for it");
- String objname = service.objectName();
- delegateObjectName = (objname == null || objname.equals("")) ? new ObjectName(getObjectName()
- .getCanonicalName()
- + ",type=ManagementInterface") : new ObjectName(service.objectName());
delegate = new ServiceMBeanDelegate(mbeanServer, this, service.xmbean(), delegateObjectName);
- getDeployment().getKernelAbstraction().installMBean(delegateObjectName, getDependencyPolicy(), delegate);
+ getDeployment().getKernelAbstraction().installMBean(delegateObjectName, newPolicy, delegate);
}
}
Modified: projects/ejb3/trunk/testsuite/src/test/java/org/jboss/ejb3/test/interceptormetadata/MockDependencyPolicy.java
===================================================================
--- projects/ejb3/trunk/testsuite/src/test/java/org/jboss/ejb3/test/interceptormetadata/MockDependencyPolicy.java 2009-01-08 15:37:09 UTC (rev 82704)
+++ projects/ejb3/trunk/testsuite/src/test/java/org/jboss/ejb3/test/interceptormetadata/MockDependencyPolicy.java 2009-01-08 15:40:18 UTC (rev 82705)
@@ -47,5 +47,10 @@
{
throw new RuntimeException("NYI");
}
+
+ public MockDependencyPolicy clone()
+ {
+ return new MockDependencyPolicy();
+ }
}
More information about the jboss-cvs-commits
mailing list