[jboss-cvs] JBossAS SVN: r86351 - in branches/Branch_5_x: profileservice/src/main/org/jboss/profileservice/management and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Mar 25 10:30:08 EDT 2009


Author: scott.stark at jboss.org
Date: 2009-03-25 10:30:08 -0400 (Wed, 25 Mar 2009)
New Revision: 86351

Modified:
   branches/Branch_5_x/component-matrix/pom.xml
   branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagedPropertyDelegate.java
   branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
   branches/Branch_5_x/server/src/etc/conf/default/bootstrap/profile.xml
   branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/ProfileServiceBootstrap.java
Log:
JBAS-6631, expose shutdown operation on the MCServer component

Modified: branches/Branch_5_x/component-matrix/pom.xml
===================================================================
--- branches/Branch_5_x/component-matrix/pom.xml	2009-03-25 14:21:21 UTC (rev 86350)
+++ branches/Branch_5_x/component-matrix/pom.xml	2009-03-25 14:30:08 UTC (rev 86351)
@@ -73,7 +73,7 @@
     <version.org.jboss.jpa>1.0.0-CR1</version.org.jboss.jpa>
     <version.org.jboss.logbridge>1.0.0.CR3</version.org.jboss.logbridge>
     <version.org.jboss.logmanager>1.0.0.CR3</version.org.jboss.logmanager>
-    <version.org.jboss.man>2.1.0.CR4</version.org.jboss.man>
+    <version.org.jboss.man>2.1.0.CR5</version.org.jboss.man>
     <version.org.jboss.mdr>2.0.1.GA</version.org.jboss.mdr>
     <version.org.jboss.metadata>1.0.0.CR16</version.org.jboss.metadata>
     <version.org.jboss.microcontainer>2.0.4.GA</version.org.jboss.microcontainer>

Modified: branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagedPropertyDelegate.java
===================================================================
--- branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagedPropertyDelegate.java	2009-03-25 14:21:21 UTC (rev 86350)
+++ branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagedPropertyDelegate.java	2009-03-25 14:30:08 UTC (rev 86351)
@@ -160,6 +160,11 @@
       return delegate.isMandatory();
    }
 
+   public boolean isReadOnly()
+   {
+      return delegate.isReadOnly();
+   }
+
    public boolean isModified()
    {
       return delegate.isModified();

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-03-25 14:21:21 UTC (rev 86350)
+++ branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java	2009-03-25 14:30:08 UTC (rev 86351)
@@ -205,7 +205,32 @@
       {
          try
          {
+            // 
+            Map<String, ManagedComponent> comps = md.getComponents();
+            if(comps != null)
+            {
+               for(ManagedComponent comp : comps.values())
+               {
+                  Map<String, Annotation> annotations = comp.getAnnotations();
+                  if(annotations != null)
+                  {
+                     ManagementObject managementObject = (ManagementObject) annotations.get(ManagementObject.class.getName());
+                     if(managementObject != null && managementObject.isRuntime())
+                     {
+                        if(comp instanceof MutableManagedComponent)
+                        {
+                           Set<ManagedOperation> ops = comp.getOperations();
+                           Object componentName = comp.getComponentName();
+                           ops = createOperationProxies(ops, componentName);
+                           MutableManagedComponent mmc = MutableManagedComponent.class.cast(comp);
+                           mmc.setOperations(ops);
+                        }
+                     }
+                  }
+               }
+            }
             processManagedDeployment(md, null, 0, trace);
+            // 
          }
          catch(Exception e)
          {
@@ -1335,6 +1360,12 @@
       if (dispatcher == null)
          throw new IllegalArgumentException("Missing RuntimeComponentDispatcher.");
 
+      Object componentName = mo.getComponentName();
+      return createOperationProxies(ops, componentName);
+   }
+   protected Set<ManagedOperation> createOperationProxies(Set<ManagedOperation> ops, Object componentName)
+      throws Exception
+   {
       ClassLoader loader = getClass().getClassLoader();
       ArrayList<Interceptor> interceptors = new ArrayList<Interceptor>();
       interceptors.add(SecurityClientInterceptor.singleton);
@@ -1348,7 +1379,7 @@
       {
          // This is just a unique name registered with the dispatcher and remoting layers
          String dispatchName = "ProfileService.ManagedOperation@"+System.identityHashCode(op);
-         Dispatcher.singleton.registerTarget(dispatchName, new ManagedOperationDelegate(op, mo));
+         Dispatcher.singleton.registerTarget(dispatchName, new ManagedOperationDelegate(op, componentName));
          ManagedOperation opProxy = (ManagedOperation) Remoting.createRemoteProxy(dispatchName,
                loader, ifaces, locator, interceptors, "ProfileService");
          opProxies.add(opProxy);
@@ -1397,21 +1428,18 @@
    {
       private static final long serialVersionUID = -775240509110032859L;
       private ManagedOperation delegate;
-      private ManagedObject managedObject;
+      private Object componentName;
 
-      public ManagedOperationDelegate(ManagedOperation delegate, ManagedObject managedObject)
+      public ManagedOperationDelegate(ManagedOperation delegate, Object componentName)
       {
          if (delegate == null)
             throw new IllegalArgumentException("Null delegate.");
          this.delegate = delegate;
-         if (managedObject == null)
-            throw new IllegalArgumentException("Null managed object.");
-         this.managedObject = managedObject;
+         this.componentName = componentName;
       }
 
       public MetaValue invoke(MetaValue... metaValues)
       {
-         Object componentName = managedObject.getComponentName();
          MetaValue result = null;
          if (componentName != null)
          {

Modified: branches/Branch_5_x/server/src/etc/conf/default/bootstrap/profile.xml
===================================================================
--- branches/Branch_5_x/server/src/etc/conf/default/bootstrap/profile.xml	2009-03-25 14:21:21 UTC (rev 86350)
+++ branches/Branch_5_x/server/src/etc/conf/default/bootstrap/profile.xml	2009-03-25 14:30:08 UTC (rev 86351)
@@ -50,6 +50,7 @@
 		<property name="mof"><inject bean="ManagedObjectFactory" /></property>
 		<property name="mgtDeploymentCreator"><inject bean="ManagedDeploymentCreator" /></property>
 		<property name="bootstrapProfileFactory"><inject bean="BootstrapProfileFactory" /></property>
+		<property name="configurator"><inject bean="jboss.kernel:service=Kernel" property="configurator"/></property>
 	</bean>
 
 	<!-- The profile factory -->

Modified: branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/ProfileServiceBootstrap.java
===================================================================
--- branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/ProfileServiceBootstrap.java	2009-03-25 14:21:21 UTC (rev 86350)
+++ branches/Branch_5_x/system/src/main/org/jboss/system/server/profileservice/ProfileServiceBootstrap.java	2009-03-25 14:30:08 UTC (rev 86351)
@@ -26,17 +26,20 @@
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
 
+import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.bootstrap.spi.Bootstrap;
 import org.jboss.bootstrap.spi.Server;
 import org.jboss.bootstrap.spi.ServerConfig;
 import org.jboss.bootstrap.spi.microcontainer.MCServer;
+import org.jboss.config.spi.Configuration;
 import org.jboss.dependency.spi.ControllerContext;
 import org.jboss.dependency.spi.ControllerState;
 import org.jboss.deployers.client.spi.IncompleteDeploymentException;
@@ -48,12 +51,17 @@
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.deployers.vfs.deployer.kernel.KernelDeploymentDeployer.KernelDeploymentVisitor;
 import org.jboss.kernel.Kernel;
+import org.jboss.kernel.plugins.registry.BeanKernelRegistryEntry;
+import org.jboss.kernel.spi.config.KernelConfigurator;
 import org.jboss.kernel.spi.dependency.KernelController;
 import org.jboss.kernel.spi.deployment.KernelDeployment;
+import org.jboss.kernel.spi.registry.KernelRegistryEntry;
+import org.jboss.kernel.spi.registry.KernelRegistryPlugin;
 import org.jboss.logging.Logger;
 import org.jboss.managed.api.ComponentType;
 import org.jboss.managed.api.ManagedDeployment;
 import org.jboss.managed.api.ManagedObject;
+import org.jboss.managed.api.ManagedOperation;
 import org.jboss.managed.api.ManagedProperty;
 import org.jboss.managed.api.MutableManagedObject;
 import org.jboss.managed.api.annotation.ManagementComponent;
@@ -62,6 +70,7 @@
 import org.jboss.managed.api.factory.ManagedObjectFactory;
 import org.jboss.managed.plugins.DefaultFieldsImpl;
 import org.jboss.managed.plugins.ManagedComponentImpl;
+import org.jboss.managed.plugins.ManagedOperationImpl;
 import org.jboss.managed.plugins.ManagedPropertyImpl;
 import org.jboss.metatype.api.types.ArrayMetaType;
 import org.jboss.metatype.api.types.MetaType;
@@ -86,7 +95,7 @@
  * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
  * @version $Revision$
  */
-public class ProfileServiceBootstrap implements Bootstrap
+public class ProfileServiceBootstrap implements Bootstrap, KernelRegistryPlugin
 {
    /** The log */
    private static final Logger log = Logger.getLogger(ProfileServiceBootstrap.class);
@@ -115,7 +124,11 @@
 
    /** Whether we are shutdown */
    private AtomicBoolean shutdown = new AtomicBoolean(false);
-   
+   /** */
+   private Map<Object, KernelRegistryEntry> bootstrapEntries = new HashMap<Object, KernelRegistryEntry>();
+   /** */
+   private KernelConfigurator configurator;
+
    /**
     * Create a new ProfileServiceBootstrap.
     */
@@ -137,6 +150,15 @@
       this.mainDeployer = mainDeployer;
    }
 
+   public KernelConfigurator getConfigurator()
+   {
+      return configurator;
+   }
+   public void setConfigurator(KernelConfigurator configurator)
+   {
+      this.configurator = configurator;
+   }
+
    /**
     * Return the ProfileService bean.
     * 
@@ -341,6 +363,12 @@
       }
    }
    
+   public KernelRegistryEntry getEntry(Object name)
+   {
+      KernelRegistryEntry entry = bootstrapEntries.get(name);
+      return entry;
+   }
+
    protected void deactivateProfiles(Collection<ProfileKey> profiles)
    {
       if(profiles != null && profiles.isEmpty() == false)
@@ -476,8 +504,29 @@
             ComponentType type = KnownComponentTypes.MCBean.Any.getType();
             // MCServer
             ManagedObject serverMO = mof.initManagedObject(mcserver, null);
+            if (serverMO.getOperations() != null && serverMO.getOperations().size() == 0)
+            {
+               ManagedOperationImpl shutdown = new ManagedOperationImpl("Shutdown the server", "shutdown");
+               if(serverMO instanceof MutableManagedObject)
+               {
+                  HashSet<ManagedOperation> ops = new HashSet<ManagedOperation>();
+                  ops.add(shutdown);
+                  MutableManagedObject mmo = MutableManagedObject.class.cast(serverMO);
+                  mmo.setOperations(ops);
+               }
+            }
             ManagedComponentImpl serverComp = new ManagedComponentImpl(type, firstDeployment, serverMO);
             firstDeployment.addComponent("MCServer", serverComp);
+            try
+            {
+               BeanInfo mcserverInfo = configurator.getBeanInfo(mcserver.getClass());
+               BeanKernelRegistryEntry entry = new BeanKernelRegistryEntry(mcserver, mcserverInfo);
+               bootstrapEntries.put(serverComp.getComponentName(), entry);
+            }
+            catch(Throwable t)
+            {
+               log.error("Failed to create BeanInfo for: "+serverComp, t);
+            }
             // ServerConfig
             ServerConfig config = mcserver.getConfig();
             ManagedObject mo = mof.initManagedObject(config, null);




More information about the jboss-cvs-commits mailing list