[jboss-cvs] JBossAS SVN: r88926 - in branches/Branch_5_x: testsuite/src/main/org/jboss/test/profileservice/test and 1 other directory.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri May 15 02:56:49 EDT 2009
Author: jason.greene at jboss.com
Date: 2009-05-15 02:56:48 -0400 (Fri, 15 May 2009)
New Revision: 88926
Modified:
branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/MBeanRuntimeComponentDispatcher.java
branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
branches/Branch_5_x/testsuite/src/main/org/jboss/test/profileservice/test/JMXMappingUnitTestCase.java
Log:
Use inner classes to mock annotations instead of proxy generation
Add run state support to mbean components
Modified: branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/MBeanRuntimeComponentDispatcher.java
===================================================================
--- branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/MBeanRuntimeComponentDispatcher.java 2009-05-15 06:46:10 UTC (rev 88925)
+++ branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/MBeanRuntimeComponentDispatcher.java 2009-05-15 06:56:48 UTC (rev 88926)
@@ -70,6 +70,14 @@
public MetaValue get(Object componentName, String propertyName)
{
ManagedProperty prop = AbstractRuntimeComponentDispatcher.getActiveProperty();
+
+ if(propertyName.equals("state") && prop.getMetaType().equals(ControllerStateMetaType.TYPE))
+ {
+ String stateString = getState(componentName);
+ EnumValueSupport state = new EnumValueSupport(ControllerStateMetaType.TYPE, stateString);
+ return state;
+ }
+
try
{
Object value = mbeanServer.getAttribute(new ObjectName(componentName.toString()), propertyName);
@@ -93,16 +101,7 @@
}
catch (Throwable t)
{
- if(propertyName.equals("state") && prop.getMetaType().equals(ControllerStateMetaType.TYPE))
- {
- String stateString = getState(componentName);
- EnumValueSupport state = new EnumValueSupport(ControllerStateMetaType.TYPE, stateString);
- return state;
- }
- else
- {
- throw new UndeclaredThrowableException(t, "Failed to get property '" + propertyName + "' on component '" + componentName + "'.");
- }
+ throw new UndeclaredThrowableException(t, "Failed to get property '" + propertyName + "' on component '" + componentName + "'.");
}
}
@@ -190,7 +189,17 @@
public String getState(Object name)
{
- return ControllerState.INSTALLED.getStateString();
+ try
+ {
+ if (mbeanServer.isRegistered(new ObjectName(name.toString())))
+ return ControllerState.INSTALLED.getStateString();
+ }
+ catch (Exception e)
+ {
+ // Failure = Not installed
+ }
+
+ return ControllerState.NOT_INSTALLED.getStateString();
}
public <T extends Enum<?>> T mapControllerState(Object name, ContextStateMapper<T> mapper)
Modified: branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
===================================================================
--- branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java 2009-05-15 06:46:10 UTC (rev 88925)
+++ branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java 2009-05-15 06:56:48 UTC (rev 88926)
@@ -22,6 +22,7 @@
package org.jboss.profileservice.management;
import java.io.IOException;
+import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.management.ManagementFactory;
import java.text.MessageFormat;
@@ -42,7 +43,6 @@
import javax.management.MBeanServer;
import javax.management.ObjectName;
-import org.jboss.annotation.factory.AnnotationCreator;
import org.jboss.deployers.client.spi.main.MainDeployer;
import org.jboss.deployers.spi.DeploymentException;
import org.jboss.deployers.spi.management.DeploymentTemplate;
@@ -68,7 +68,9 @@
import org.jboss.managed.api.annotation.ManagementObject;
import org.jboss.managed.api.annotation.ManagementObjectID;
import org.jboss.managed.api.annotation.ManagementObjectRef;
+import org.jboss.managed.api.annotation.ManagementOperation;
import org.jboss.managed.api.annotation.ManagementProperties;
+import org.jboss.managed.api.annotation.ManagementProperty;
import org.jboss.managed.api.annotation.ViewUse;
import org.jboss.managed.api.factory.ManagedObjectFactory;
import org.jboss.managed.plugins.ManagedComponentImpl;
@@ -110,6 +112,8 @@
properties = ManagementProperties.EXPLICIT, description = "The ProfileService ManagementView")
public class ManagementViewImpl extends AbstractTemplateCreator implements ManagementView
{
+
+
/** The logger. */
private static Logger log = Logger.getLogger(ManagementViewImpl.class);
private static final String BUNDLE_NAME = "org.jboss.profileservice.management.messages"; //$NON-NLS-1$
@@ -265,20 +269,15 @@
try
{
ManagedObject mo = createManagedObject(comp.getName(), mdf.getDefaultViewUse());
- // Add a ManagementComponent annotation
- String annotationExpr = "@org.jboss.managed.api.annotation.ManagementObject("
- + "name=\""+comp.getName()+"\","
- + "componentType=@org.jboss.managed.api.annotation.ManagementComponent(type=\""
- + comp.getType()+"\",subtype=\""+comp.getSubtype()+"\"),"
- + "isRuntime=true"
- + ")";
- ManagementObject moAnn = (ManagementObject) AnnotationCreator.createAnnotation(
- annotationExpr, ManagementObject.class);
+
+ String name = comp.getName().getCanonicalName();
+ ManagementObject moAnn = createMOAnnotation(name, comp.getType(), comp.getSubtype());
+
// Both the ManagementObject and ManagementComponent annotation need to be in the MO annotations
mo.getAnnotations().put(ManagementObject.class.getName(), moAnn);
ManagementComponent mcAnn = moAnn.componentType();
mo.getAnnotations().put(ManagementComponent.class.getName(), mcAnn);
- unitMOs.put(comp.getName().getCanonicalName(), mo);
+ unitMOs.put(name, mo);
}
catch(Exception e)
{
@@ -357,6 +356,104 @@
return true;
}
+ @SuppressWarnings("all")
+ private static final class ManagementObjectAnnotationImpl implements ManagementObject, Serializable
+ {
+ private static final long serialVersionUID=5355799336353299850L;
+
+ private final String name;
+ private final String type;
+ private final String subtype;
+
+ @SuppressWarnings("all")
+ private final class ManagementComponentAnnotationImpl implements ManagementComponent, Serializable
+ {
+ private static final long serialVersionUID=5355799336353299850L;
+
+ public String subtype()
+ {
+ return subtype;
+ }
+
+ public String type()
+ {
+ return type;
+ }
+
+ public Class<? extends Annotation> annotationType()
+ {
+ return ManagementComponent.class;
+ }
+ }
+
+ private ManagementObjectAnnotationImpl(String name, String type, String subtype)
+ {
+ this.name=name;
+ this.type=type;
+ this.subtype=subtype;
+ }
+
+ public String attachmentName()
+ {
+ return "";
+ }
+
+ public ManagementProperty[] classProperties()
+ {
+ return new ManagementProperty[0];
+ }
+
+ public ManagementComponent componentType()
+ {
+ return new ManagementComponentAnnotationImpl();
+ }
+
+ public String description()
+ {
+ return "";
+ }
+
+ public boolean isRuntime()
+ {
+ return true;
+ }
+
+ public String name()
+ {
+ return name;
+ }
+
+ public ManagementOperation[] operations()
+ {
+ return new ManagementOperation[0];
+ }
+
+ public ManagementProperties properties()
+ {
+ return ManagementProperties.ALL;
+ }
+
+ public Class<?> targetInterface()
+ {
+ return Object.class;
+ }
+
+ public String type()
+ {
+ return "";
+ }
+
+ public Class<? extends Annotation> annotationType()
+ {
+ return ManagementObject.class;
+ }
+ }
+
+ private ManagementObject createMOAnnotation(final String name, final String type, final String subtype)
+ {
+ return new ManagementObjectAnnotationImpl(name, type, subtype);
+ }
+
public void reload()
{
forceReload = true;
@@ -659,7 +756,7 @@
compByCompType.put(type, typeComps);
}
typeComps.add(comp);
- RunState state = updateRunState(null, comp);
+ RunState state = updateRunState(mo, comp);
}
// Scan for @ManagementObjectRef
@@ -779,7 +876,7 @@
name = runtimeMO.getComponentName();
if (name != null)
{
- state = getMappedState(name, runStateMapper);
+ state = getComponentMappedState(comp, runtimeMO, name, runStateMapper);
if (comp instanceof MutableManagedComponent)
{
MutableManagedComponent mcomp = MutableManagedComponent.class.cast(comp);
@@ -822,6 +919,35 @@
}
return state;
}
+
+ protected <T extends Enum<?>> T getComponentMappedState(ManagedComponent comp, ManagedObject mo, Object name, ContextStateMapper<T> mapper)
+ {
+ T state = mapper.getErrorState();
+ try
+ {
+ RuntimeComponentDispatcher dispatcher;
+ if (mo != null && mo.getTransientAttachment(MBeanRuntimeComponentDispatcher.class.getName()) != null)
+ {
+ dispatcher = mbeanProxyFactory.getDispatcher();
+ }
+ else
+ {
+ dispatcher = this.dispatcher;
+ }
+
+ if (dispatcher != null)
+ {
+ // TODO, update RuntimeComponentDispatcher
+ AbstractRuntimeComponentDispatcher xdispatcher=(AbstractRuntimeComponentDispatcher) dispatcher;
+ state=xdispatcher.mapControllerState(name, mapper);
+ }
+ }
+ catch(Exception e)
+ {
+ log.debug("Failed to get controller state", e);
+ }
+ return state;
+ }
/**
* Process generic value.
Modified: branches/Branch_5_x/testsuite/src/main/org/jboss/test/profileservice/test/JMXMappingUnitTestCase.java
===================================================================
--- branches/Branch_5_x/testsuite/src/main/org/jboss/test/profileservice/test/JMXMappingUnitTestCase.java 2009-05-15 06:46:10 UTC (rev 88925)
+++ branches/Branch_5_x/testsuite/src/main/org/jboss/test/profileservice/test/JMXMappingUnitTestCase.java 2009-05-15 06:56:48 UTC (rev 88926)
@@ -27,6 +27,7 @@
import org.jboss.deployers.spi.management.ManagementView;
import org.jboss.managed.api.ComponentType;
import org.jboss.managed.api.ManagedComponent;
+import org.jboss.managed.api.RunState;
import org.jboss.metatype.api.values.SimpleValue;
/**
@@ -154,4 +155,21 @@
fail("Could not find deployment context root!");
}
+
+ public void testRunState() throws Exception
+ {
+ ManagementView mgtView = getManagementView();
+ Set<ManagedComponent> comps = mgtView.getComponentsForType(new ComponentType("MBean", "WebHost"));
+ for (ManagedComponent comp : comps)
+ {
+ if ("jboss.web:host=localhost,type=Host".equals(comp.getName()))
+ {
+ assertEquals(RunState.RUNNING, comp.getRunState());
+ return;
+ }
+ }
+
+ fail("Could not find localhost Host");
+ }
+
}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list