Author: julien_viet
Date: 2009-12-29 04:52:07 -0500 (Tue, 29 Dec 2009)
New Revision: 1226
Added:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedResource.java
Removed:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProviderContext.java
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/KernelManagementContext.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManageableContainer.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManagementContextImpl.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMetaData.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMethodMetaData.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMethodParameterMetaData.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedParameterMetaData.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedPropertyMetaData.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedTypeMetaData.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProvider.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/jmx/ExoModelMBean.java
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/jmx/JMXManagementProvider.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagedResource.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagementProviderImpl.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/TestManagementProvider.java
Log:
EXOJCR-350 : Enable plugability of management layer : cleanup
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/KernelManagementContext.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/KernelManagementContext.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/KernelManagementContext.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -37,10 +37,16 @@
/** . */
private final Set<ManagementProvider> providers;
- public KernelManagementContext()
+ /** . */
+ private final ManageableContainer container;
+
+ public KernelManagementContext(ManageableContainer container)
{
- this.root = new ManagementContextImpl(this);
this.providers = new HashSet<ManagementProvider>();
+ this.container = container;
+
+ // Done last as we pass 'this' as argument
+ this.root = new ManagementContextImpl(this, container);
}
public synchronized Collection<ManagementProvider> getProviders() {
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManageableContainer.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManageableContainer.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManageableContainer.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -97,13 +97,13 @@
ManagementContextImpl parentManagementContext =
manageableParent.managementContext;
if (parentManagementContext != null)
{
- managementContext = new ManagementContextImpl(parentManagementContext);
+ managementContext = new ManagementContextImpl(parentManagementContext,
this);
}
// Get server from parent
server = manageableParent.server;
} else {
- KernelManagementContext kernelCtx = new KernelManagementContext();
+ KernelManagementContext kernelCtx = new KernelManagementContext(this);
//
server = findMBeanServer();
@@ -112,9 +112,6 @@
//
kernelCtx.addProvider(new JMXManagementProvider(server));
}
-
- //
- this.managementContext.container = this;
}
public ManageableContainer(ComponentAdapterFactory componentAdapterFactory)
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManagementContextImpl.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManagementContextImpl.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManagementContextImpl.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -21,10 +21,10 @@
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.component.RequestLifeCycle;
import org.exoplatform.management.ManagementAware;
+import org.exoplatform.management.spi.ManagedResource;
import org.exoplatform.management.spi.ManagedTypeMetaData;
import org.exoplatform.container.management.MetaDataBuilder;
import org.exoplatform.management.spi.ManagementProvider;
-import org.exoplatform.management.spi.ManagementProviderContext;
import org.exoplatform.management.ManagementContext;
import org.exoplatform.management.annotations.ManagedBy;
@@ -39,11 +39,11 @@
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
* @version $Revision$
*/
-public class ManagementContextImpl implements ManagementContext,
ManagementProviderContext
+public class ManagementContextImpl implements ManagementContext, ManagedResource
{
/** . */
- private final Map<Class<?>, Object> scopingProperties;
+ private final Map<Class<?>, Object> scopingDataList;
/** The registrations done by this mbean. */
private final Map<Object, ManagementContextImpl> registrations;
@@ -64,31 +64,70 @@
private final ManagedTypeMetaData typeMD;
/** An optional container setup when the management context is attached to a
container. */
- ManageableContainer container;
+ private final ManageableContainer container;
- public ManagementContextImpl(KernelManagementContext kernelContext)
+ public ManagementContextImpl(KernelManagementContext kernelContext,
ManageableContainer container)
{
if (kernelContext == null)
{
throw new NullPointerException();
}
+ if (container == null)
+ {
+ throw new NullPointerException();
+ }
+
+ //
+ Object resource = null;
+ ManagedTypeMetaData typeMD = null;
+ MetaDataBuilder builder = new MetaDataBuilder(container.getClass());
+ if (builder.isBuildable())
+ {
+ resource = container;
+ typeMD = builder.build();
+ }
+
+ //
this.bilto = new HashMap<ManagementProvider, Object>();
this.registrations = new HashMap<Object, ManagementContextImpl>();
this.parent = null;
-
- // This is the root container that never have scoping properties
- // Also without that we would have an NPE when the portal container are registered
- // as the scoping properties would not exist since the root container would not be
yet
-
- this.scopingProperties = new HashMap<Class<?>, Object>();
+ this.scopingDataList = new HashMap<Class<?>, Object>();
this.kernelContext = kernelContext;
- this.resource = null;
- this.typeMD = null;
+ this.resource = resource;
+ this.typeMD = typeMD;
+ this.container = container;
}
- public ManagementContextImpl(ManagementContextImpl parent)
+ public ManagementContextImpl(ManagementContextImpl parent, ManageableContainer
container)
{
- this(parent, null, null);
+ if (parent == null)
+ {
+ throw new NullPointerException();
+ }
+ if (container == null)
+ {
+ throw new NullPointerException();
+ }
+
+ //
+ Object resource = null;
+ ManagedTypeMetaData typeMD = null;
+ MetaDataBuilder builder = new MetaDataBuilder(container.getClass());
+ if (builder.isBuildable())
+ {
+ resource = container;
+ typeMD = builder.build();
+ }
+
+ //
+ this.bilto = new HashMap<ManagementProvider, Object>();
+ this.registrations = new HashMap<Object, ManagementContextImpl>();
+ this.parent = parent;
+ this.scopingDataList = new HashMap<Class<?>, Object>();
+ this.kernelContext = parent.kernelContext;
+ this.resource = resource;
+ this.typeMD = typeMD;
+ this.container = container;
}
public ManagementContextImpl(ManagementContextImpl parent, Object resource,
ManagedTypeMetaData typeMD)
@@ -97,13 +136,20 @@
{
throw new NullPointerException();
}
+ if ((resource != null && typeMD == null) && (resource == null
&& typeMD != null))
+ {
+ throw new IllegalArgumentException("Can't have resource null and meta
data not null or the converse");
+ }
+
+ //
this.bilto = new HashMap<ManagementProvider, Object>();
this.registrations = new HashMap<Object, ManagementContextImpl>();
this.parent = parent;
- this.scopingProperties = new HashMap<Class<?>, Object>();
+ this.scopingDataList = new HashMap<Class<?>, Object>();
this.kernelContext = parent.kernelContext;
this.resource = resource;
this.typeMD = typeMD;
+ this.container = null;
}
public ManagementContext getParent()
@@ -111,14 +157,14 @@
return parent;
}
- public <S> void setScopingData(Class<S> scopeType, S scopingProperties)
+ public <S> void setScopingData(Class<S> scopeType, S scopingData)
{
- this.scopingProperties.put(scopeType, scopingProperties);
+ this.scopingDataList.put(scopeType, scopingData);
}
public void register(Object o)
{
- Object view = null;
+ Object resource = null;
// Apply managed by annotation
ManagedBy managedBy = o.getClass().getAnnotation(ManagedBy.class);
@@ -128,7 +174,7 @@
{
Class managedByClass = managedBy.value();
Constructor<?> blah = managedByClass.getConstructor(o.getClass());
- view = blah.newInstance(o);
+ resource = blah.newInstance(o);
}
catch (NoSuchMethodException e)
{
@@ -149,44 +195,44 @@
}
else
{
- view = o;
+ resource = o;
}
//
- if (view != null) {
+ if (resource != null) {
- MetaDataBuilder builder = new MetaDataBuilder(view.getClass());
+ MetaDataBuilder builder = new MetaDataBuilder(resource.getClass());
if (builder.isBuildable()) {
ManagedTypeMetaData metaData = builder.build();
//
- ManagementContextImpl viewContext;
- if (view instanceof ManageableContainer)
+ ManagementContextImpl managementContext;
+ if (resource instanceof ManageableContainer)
{
- viewContext = ((ManageableContainer)view).managementContext;
+ managementContext = ((ManageableContainer)resource).managementContext;
}
else
{
- viewContext = new ManagementContextImpl(this, view, metaData);
+ managementContext = new ManagementContextImpl(this, resource, metaData);
}
//
- registrations.put(view, viewContext);
+ registrations.put(resource, managementContext);
//
for (ManagementProvider provider : kernelContext.getProviders())
{
- Object name = provider.manage(this, view, metaData);
+ Object name = provider.manage(managementContext);
if (name != null)
{
- viewContext.bilto.put(provider, name);
+ managementContext.bilto.put(provider, name);
}
}
// Allow for more resource management
- if (view instanceof ManagementAware)
+ if (resource instanceof ManagementAware)
{
- ((ManagementAware)view).setContext(viewContext);
+ ((ManagementAware)resource).setContext(managementContext);
}
}
}
@@ -203,12 +249,12 @@
}
}
- public <S> List<S> getScopingProperties(Class<S> scopeType)
+ public <S> List<S> getScopingData(Class<S> scopeType)
{
ArrayList<S> list = new ArrayList<S>();
for (ManagementContextImpl current = this; current != null; current =
current.parent)
{
- Object scopedData = current.scopingProperties.get(scopeType);
+ Object scopedData = current.scopingDataList.get(scopeType);
if (scopedData != null)
{
// It must be that type since we put it
@@ -253,10 +299,20 @@
return "ManagementContextImpl[container=" + container + "]";
}
+ public Object getResource()
+ {
+ return resource;
+ }
+
+ public ManagedTypeMetaData getMetaData()
+ {
+ return typeMD;
+ }
+
void install(ManagementProvider provider) {
if (resource != null&& typeMD != null)
{
- Object name = provider.manage(this, resource, typeMD);
+ Object name = provider.manage(this);
if (name != null)
{
bilto.put(provider, name);
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMetaData.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMetaData.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMetaData.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -19,6 +19,8 @@
package org.exoplatform.management.spi;
/**
+ * Generic base meta data class.
+ *
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
* @version $Revision$
*/
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMethodMetaData.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMethodMetaData.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMethodMetaData.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -25,6 +25,8 @@
import java.util.Map;
/**
+ * Meta data that describes a managed method.
+ *
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
* @version $Revision$
*/
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMethodParameterMetaData.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMethodParameterMetaData.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedMethodParameterMetaData.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -19,6 +19,8 @@
package org.exoplatform.management.spi;
/**
+ * Meta data that describes the parameter of a managed method.
+ *
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
* @version $Revision$
*/
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedParameterMetaData.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedParameterMetaData.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedParameterMetaData.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -19,6 +19,8 @@
package org.exoplatform.management.spi;
/**
+ * Meta data that describes a managed parameter.
+ *
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
* @version $Revision$
*/
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedPropertyMetaData.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedPropertyMetaData.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedPropertyMetaData.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -21,6 +21,8 @@
import java.lang.reflect.Method;
/**
+ * Meta data that describes a managed property.
+ *
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
* @version $Revision$
*/
Copied:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedResource.java
(from rev 1223,
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProviderContext.java)
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedResource.java
(rev 0)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedResource.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2009 eXo Platform SAS.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.exoplatform.management.spi;
+
+import org.exoplatform.management.ManagementContext;
+
+import java.util.List;
+
+/**
+ * The contract between a management provider and the kernel.
+ *
+ * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
+ * @version $Revision$
+ */
+public interface ManagedResource extends ManagementContext
+{
+
+ /**
+ * The resource implementation.
+ *
+ * @return the resource
+ */
+ Object getResource();
+
+ /**
+ * Returns the resource meta data.
+ *
+ * @return the meta data
+ */
+ ManagedTypeMetaData getMetaData();
+
+ /**
+ * Returns the scoping data of the context. The list contains the scoping properties
+ * registered by the provider if a call has been made to the {@link
#setScopingData(Class, Object)}
+ * method plus the scoping properties of the parent context.
+ *
+ * @param scopeType the scope type
+ * @param <S> the generic type of the scope type
+ * @return the scoping properties
+ */
+ <S> List<S> getScopingData(Class<S> scopeType);
+
+ /**
+ * Callback made by the provie to the resource to signal that scopgin data is used for
the managed resource.
+ *
+ * @param scopeType the scope type
+ * @param <S> the generic type of the scope type
+ * @param scopingData the scoping data
+ */
+ <S> void setScopingData(Class<S> scopeType, S scopingData);
+
+ /**
+ * Before a managed resource is invoked by the management layer.
+ *
+ * @param managedResource the managed resource
+ */
+ void beforeInvoke(Object managedResource);
+
+ /**
+ * After a managed resource is invoked by the management layer.
+ *
+ * @param managedResource the managed resource
+ */
+ void afterInvoke(Object managedResource);
+
+}
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedTypeMetaData.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedTypeMetaData.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagedTypeMetaData.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -26,6 +26,8 @@
import java.util.Map;
/**
+ * Meta data that describes a managed type.
+ *
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
* @version $Revision$
*/
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProvider.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProvider.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProvider.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -23,20 +23,19 @@
*
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
* @version $Revision$
- * @param <S> the scope type
*/
-public interface ManagementProvider<S>
+public interface ManagementProvider
{
/**
- * Instruct the management provider to manage the provided resource with the specified
meta data.
+ * Instruct the management provider to manage the provided managed resource. If any
registration is done
+ * the provider should return an unique key that will be used later for unregistration
purpose in the
+ * {@link #unmanage(Object)} method. If no registration is performed then null should
be returned.
*
- * @param context the context
- * @param source the resource to manage
- * @param metaData the meta data describing the management interface
+ * @param managedResource the managed resource
* @return the key under which the resource is registered
*/
- Object manage(ManagementProviderContext context, Object source, ManagedTypeMetaData
metaData);
+ Object manage(ManagedResource managedResource);
/**
* Instruct the management provider to remove the specifed resource from management.
Deleted:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProviderContext.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProviderContext.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProviderContext.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2009 eXo Platform SAS.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
- */
-package org.exoplatform.management.spi;
-
-import org.exoplatform.management.ManagementContext;
-
-import java.util.List;
-
-/**
- * The contract between a management provider and the kernel.
- *
- * @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
- * @version $Revision$
- */
-public interface ManagementProviderContext extends ManagementContext
-{
-
- /**
- * Returns the scoping properties of the context;
- *
- * @param scopeType the scope type
- * @param <S> the generic type of the scope type
- * @return the scoping properties
- */
- <S> List<S> getScopingProperties(Class<S> scopeType);
-
- /**
- * Callback to obtain a management provider context for the specified managed resource
scoped with
- * the provided properties.
- *
- * @param scopeType the scope type
- * @param <S> the generic type of the scope type
- * @param scopingProperties the scoping properties
- */
- <S> void setScopingData(Class<S> scopeType, S scopingProperties);
-
- /**
- * Before a managed resource is invoked by the management layer.
- *
- * @param managedResource the managed resource
- */
- void beforeInvoke(Object managedResource);
-
- /**
- * After a managed resource is invoked by the management layer.
- *
- * @param managedResource the managed resource
- */
- void afterInvoke(Object managedResource);
-
-}
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/jmx/ExoModelMBean.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/jmx/ExoModelMBean.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/jmx/ExoModelMBean.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -18,9 +18,8 @@
*/
package org.exoplatform.management.spi.jmx;
-import org.exoplatform.management.spi.ManagementProviderContext;
+import org.exoplatform.management.spi.ManagedResource;
import org.exoplatform.management.ManagementAware;
-import org.exoplatform.management.ManagementContext;
import org.exoplatform.management.jmx.annotations.NamingContext;
import javax.management.InstanceNotFoundException;
@@ -48,9 +47,9 @@
private Object mr;
/** . */
- private final ManagementProviderContext context;
+ private final ManagedResource context;
- public ExoModelMBean(ManagementProviderContext context, Object mr, ModelMBeanInfo mbi)
throws MBeanException,
+ public ExoModelMBean(ManagedResource context, Object mr, ModelMBeanInfo mbi) throws
MBeanException,
RuntimeOperationsException, InstanceNotFoundException,
InvalidTargetObjectTypeException
{
super(mbi);
@@ -101,10 +100,10 @@
PropertiesInfo info = PropertiesInfo.resolve(mr.getClass(), NamingContext.class);
//
- MBeanScopingData scopingProperties = info != null ? info.resolve(mr) : new
MBeanScopingData();
+ MBeanScopingData scopingData = info != null ? info.resolve(mr) : new
MBeanScopingData();
//
- context.setScopingData(MBeanScopingData.class, scopingProperties);
+ context.setScopingData(MBeanScopingData.class, scopingData);
//
if (mr instanceof MBeanRegistration)
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/jmx/JMXManagementProvider.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/jmx/JMXManagementProvider.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/jmx/JMXManagementProvider.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -18,9 +18,8 @@
*/
package org.exoplatform.management.spi.jmx;
-import org.exoplatform.management.spi.ManagedTypeMetaData;
+import org.exoplatform.management.spi.ManagedResource;
import org.exoplatform.management.spi.ManagementProvider;
-import org.exoplatform.management.spi.ManagementProviderContext;
import org.exoplatform.management.jmx.annotations.NameTemplate;
import javax.management.InstanceAlreadyExistsException;
@@ -55,14 +54,14 @@
this.server = server;
}
- public Object manage(ManagementProviderContext context, Object managedResource,
ManagedTypeMetaData metaData)
+ public Object manage(ManagedResource context)
{
ExoModelMBean mbean = null;
try
{
- ExoMBeanInfoBuilder infoBuilder = new ExoMBeanInfoBuilder(metaData);
+ ExoMBeanInfoBuilder infoBuilder = new
ExoMBeanInfoBuilder(context.getMetaData());
ModelMBeanInfo info = infoBuilder.build();
- mbean = new ExoModelMBean(context, managedResource, info);
+ mbean = new ExoModelMBean(context, context.getResource(), info);
}
catch (Exception e)
{
@@ -73,12 +72,12 @@
if (mbean != null)
{
ObjectName on = null;
- PropertiesInfo oni = PropertiesInfo.resolve(managedResource.getClass(),
NameTemplate.class);
+ PropertiesInfo oni = PropertiesInfo.resolve(context.getResource().getClass(),
NameTemplate.class);
if (oni != null)
{
try
{
- Map<String, String> foo = oni.resolve(managedResource);
+ Map<String, String> foo = oni.resolve(context.getResource());
on = JMX.createObjectName("exo", foo);
}
catch (MalformedObjectNameException e)
@@ -95,10 +94,10 @@
Map<String, String> props = new Hashtable<String, String>();
// Merge scoping properties
- List<MBeanScopingData> list =
context.getScopingProperties(MBeanScopingData.class);
- for (MBeanScopingData scopingProperties : list)
+ List<MBeanScopingData> list =
context.getScopingData(MBeanScopingData.class);
+ for (MBeanScopingData scopingData : list)
{
- props.putAll(scopingProperties);
+ props.putAll(scopingData);
}
// Julien : I know it's does not look great but it's necessary
Modified:
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagedResource.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagedResource.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagedResource.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -20,7 +20,6 @@
package org.exoplatform.container.management;
import org.exoplatform.management.spi.ManagedTypeMetaData;
-import org.exoplatform.management.spi.ManagementProviderContext;
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
@@ -35,7 +34,7 @@
final Object resource;
/** . */
- final ManagementProviderContext context;
+ final org.exoplatform.management.spi.ManagedResource context;
/** . */
final ManagedTypeMetaData metaData;
@@ -43,7 +42,7 @@
/** . */
final ScopedData data;
- public ManagedResource(Object resource, ManagementProviderContext context,
ManagedTypeMetaData metaData)
+ public ManagedResource(Object resource, org.exoplatform.management.spi.ManagedResource
context, ManagedTypeMetaData metaData)
{
this.key = new ResourceKey();
this.resource = resource;
Modified:
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagementProviderImpl.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagementProviderImpl.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagementProviderImpl.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -19,9 +19,8 @@
package org.exoplatform.container.management;
-import org.exoplatform.management.spi.ManagedTypeMetaData;
-import org.exoplatform.management.spi.ManagementProvider;
-import org.exoplatform.management.spi.ManagementProviderContext;
+import org.exoplatform.management.spi.*;
+import org.exoplatform.management.spi.ManagedResource;
import java.util.ArrayList;
import java.util.Iterator;
@@ -35,20 +34,20 @@
{
/** . */
- final List<ManagedResource> resources = new ArrayList<ManagedResource>();
+ final List<org.exoplatform.container.management.ManagedResource> resources = new
ArrayList<org.exoplatform.container.management.ManagedResource>();
- public Object manage(ManagementProviderContext context, Object resource,
ManagedTypeMetaData metaData)
+ public Object manage(ManagedResource context)
{
- ManagedResource mr = new ManagedResource(resource, context, metaData);
+ org.exoplatform.container.management.ManagedResource mr = new
org.exoplatform.container.management.ManagedResource(context.getResource(), context,
context.getMetaData());
resources.add(mr);
return mr.key;
}
public void unmanage(Object key)
{
- for (Iterator<ManagedResource> i = resources.iterator();i.hasNext();)
+ for (Iterator<org.exoplatform.container.management.ManagedResource> i =
resources.iterator();i.hasNext();)
{
- ManagedResource mr = i.next();
+ org.exoplatform.container.management.ManagedResource mr = i.next();
if (mr.key == key)
{
i.remove();
Modified:
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/TestManagementProvider.java
===================================================================
---
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/TestManagementProvider.java 2009-12-29
09:21:36 UTC (rev 1225)
+++
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/TestManagementProvider.java 2009-12-29
09:52:07 UTC (rev 1226)
@@ -26,7 +26,6 @@
import java.net.URL;
import java.util.Arrays;
import java.util.Collections;
-import java.util.Map;
/**
* @author <a href="mailto:julien.viet@exoplatform.com">Julien
Viet</a>
@@ -48,15 +47,15 @@
URL url = getClass().getResource("configuration1.xml");
RootContainer container = new ContainerBuilder().withRoot(url).build();
ManagementProviderImpl provider =
(ManagementProviderImpl)container.getComponentInstanceOfType(ManagementProviderImpl.class);
- assertEquals(0, provider.resources.size());
+ assertEquals(1, provider.resources.size());
Object foo = container.getComponentInstance("Foo");
assertNotNull(foo);
- assertEquals(1, provider.resources.size());
- ManagedResource fooMR = provider.resources.get(0);
+ assertEquals(2, provider.resources.size());
+ ManagedResource fooMR = provider.resources.get(1);
assertSame(foo, fooMR.resource);
- assertEquals(Collections.<ScopedData>emptyList(),
fooMR.context.getScopingProperties(ScopedData.class));
+ assertEquals(Collections.<ScopedData>emptyList(),
fooMR.context.getScopingData(ScopedData.class));
fooMR.register();
- assertEquals(Collections.singletonList(fooMR.data),
fooMR.context.getScopingProperties(ScopedData.class));
+ assertEquals(Collections.singletonList(fooMR.data),
fooMR.context.getScopingData(ScopedData.class));
}
public void testManagedRegistrationBeforeProviderRegistration()
@@ -69,12 +68,12 @@
assertNotNull(foo);
provider = new ManagementProviderImpl();
container.registerComponentInstance(provider);
- assertEquals(1, provider.resources.size());
- ManagedResource fooMR = provider.resources.get(0);
+ assertEquals(2, provider.resources.size());
+ ManagedResource fooMR = provider.resources.get(1);
assertSame(foo, fooMR.resource);
- assertEquals(Collections.<ScopedData>emptyList(),
fooMR.context.getScopingProperties(ScopedData.class));
+ assertEquals(Collections.<ScopedData>emptyList(),
fooMR.context.getScopingData(ScopedData.class));
fooMR.register();
- assertEquals(Collections.singletonList(fooMR.data),
fooMR.context.getScopingProperties(ScopedData.class));
+ assertEquals(Collections.singletonList(fooMR.data),
fooMR.context.getScopingData(ScopedData.class));
}
public void testManagementAware()
@@ -83,21 +82,22 @@
RootContainer container = new ContainerBuilder().withRoot(url).build();
ManagementProviderImpl provider =
(ManagementProviderImpl)container.getComponentInstanceOfType(ManagementProviderImpl.class);
Foo foo = (Foo)container.getComponentInstance("Foo");
- assertEquals(1, provider.resources.size());
- ManagedResource fooMR = provider.resources.get(0);
+ assertEquals(2, provider.resources.size());
+ ManagedResource fooMR = provider.resources.get(1);
fooMR.register();
assertTrue(foo.isAware());
//
foo.deploy();
- assertEquals(2, provider.resources.size());
- ManagedResource barMR = provider.resources.get(1);
+ assertEquals(3, provider.resources.size());
+ ManagedResource barMR = provider.resources.get(2);
assertSame(foo.bar, barMR.resource);
barMR.register();
- assertEquals(Arrays.asList(barMR.data, fooMR.data),
barMR.context.getScopingProperties(ScopedData.class));
+ assertEquals(Arrays.asList(barMR.data, fooMR.data),
barMR.context.getScopingData(ScopedData.class));
//
foo.undeploy();
- assertEquals(Arrays.asList(fooMR), provider.resources);
+ assertEquals(2, provider.resources.size());
+ assertEquals(fooMR, provider.resources.get(1));
}
}