[exo-jcr-commits] exo-jcr SVN: r1223 - in kernel/trunk/exo.kernel.container/src: main/java/org/exoplatform/container/management and 6 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon Dec 28 20:00:23 EST 2009
Author: julien_viet
Date: 2009-12-28 20:00:21 -0500 (Mon, 28 Dec 2009)
New Revision: 1223
Added:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/KernelManagementContext.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/Bar.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/Foo.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/ResourceKey.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ScopedData.java
kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/TestManagementProvider.java
kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/management/
kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/management/configuration1.xml
kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/management/configuration2.xml
Removed:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/KernelManagementContext.java
Modified:
kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManageableComponentAdapter.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/ManagementProvider.java
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/jmx/ExoModelMBean.java
Log:
EXOJCR-350 : Enable plugability of management layer : added new unit tests
Copied: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/KernelManagementContext.java (from rev 1218, kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/KernelManagementContext.java)
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/KernelManagementContext.java (rev 0)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/KernelManagementContext.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -0,0 +1,66 @@
+/*
+ * 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.container.jmx;
+
+import org.exoplatform.management.spi.ManagementProvider;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class KernelManagementContext
+{
+
+ /** . */
+ final ManagementContextImpl root;
+
+ /** . */
+ private final Set<ManagementProvider> providers;
+
+ public KernelManagementContext()
+ {
+ this.root = new ManagementContextImpl(this);
+ this.providers = new HashSet<ManagementProvider>();
+ }
+
+ public synchronized Collection<ManagementProvider> getProviders() {
+ return providers;
+ }
+
+ public synchronized boolean addProvider(ManagementProvider provider)
+ {
+ // Prevent double registration just in case...
+ if (providers.contains(provider)) {
+ return false;
+ }
+
+ //
+ providers.add(provider);
+
+ // Perform registration of already registered managed components
+ root.install(provider);
+
+ //
+ return false;
+ }
+}
Modified: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManageableComponentAdapter.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManageableComponentAdapter.java 2009-12-28 23:20:59 UTC (rev 1222)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManageableComponentAdapter.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -18,6 +18,7 @@
*/
package org.exoplatform.container.jmx;
+import org.exoplatform.management.spi.ManagementProvider;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.picocontainer.ComponentAdapter;
@@ -74,8 +75,16 @@
//
if (container.managementContext != null)
{
+ // Registry the instance against the management context
log.debug("==> add " + instance + " to a mbean server");
container.managementContext.register(instance);
+
+ // Register if it is a management provider
+ if (instance instanceof ManagementProvider)
+ {
+ ManagementProvider provider = (ManagementProvider)instance;
+ container.managementContext.kernelContext.addProvider(provider);
+ }
}
}
return instance;
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-28 23:20:59 UTC (rev 1222)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManageableContainer.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -19,7 +19,6 @@
package org.exoplatform.container.jmx;
import org.exoplatform.container.CachingContainer;
-import org.exoplatform.container.management.KernelManagementContext;
import org.exoplatform.container.monitor.jvm.J2EEServerInfo;
import org.exoplatform.management.ManagementContext;
import org.exoplatform.management.annotations.Managed;
@@ -104,8 +103,14 @@
// Get server from parent
server = manageableParent.server;
} else {
+ KernelManagementContext kernelCtx = new KernelManagementContext();
+
+ //
server = findMBeanServer();
- managementContext = new ManagementContextImpl(new KernelManagementContext(Collections.<ManagementProvider>singleton(new JMXManagementProvider(server))));
+ managementContext = kernelCtx.root;
+
+ //
+ kernelCtx.addProvider(new JMXManagementProvider(server));
}
//
@@ -165,6 +170,13 @@
if (managementContext != null)
{
managementContext.register(componentInstance);
+
+ // Register if it is a management provider
+ if (componentInstance instanceof ManagementProvider)
+ {
+ ManagementProvider provider = (ManagementProvider)componentInstance;
+ managementContext.kernelContext.addProvider(provider);
+ }
}
return adapter;
}
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-28 23:20:59 UTC (rev 1222)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/jmx/ManagementContextImpl.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -20,7 +20,6 @@
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.component.RequestLifeCycle;
-import org.exoplatform.container.management.KernelManagementContext;
import org.exoplatform.management.ManagementAware;
import org.exoplatform.management.spi.ManagedTypeMetaData;
import org.exoplatform.container.management.MetaDataBuilder;
@@ -58,6 +57,12 @@
/** . */
final KernelManagementContext kernelContext;
+ /** . */
+ private final Object resource;
+
+ /** . */
+ private final ManagedTypeMetaData typeMD;
+
/** An optional container setup when the management context is attached to a container. */
ManageableContainer container;
@@ -77,10 +82,17 @@
this.scopingProperties = new HashMap<Class<?>, Object>();
this.kernelContext = kernelContext;
+ this.resource = null;
+ this.typeMD = null;
}
public ManagementContextImpl(ManagementContextImpl parent)
{
+ this(parent, null, null);
+ }
+
+ public ManagementContextImpl(ManagementContextImpl parent, Object resource, ManagedTypeMetaData typeMD)
+ {
if (parent == null)
{
throw new NullPointerException();
@@ -90,6 +102,8 @@
this.parent = parent;
this.scopingProperties = new HashMap<Class<?>, Object>();
this.kernelContext = parent.kernelContext;
+ this.resource = resource;
+ this.typeMD = typeMD;
}
public ManagementContext getParent()
@@ -153,7 +167,7 @@
}
else
{
- viewContext = new ManagementContextImpl(this);
+ viewContext = new ManagementContextImpl(this, view, metaData);
}
//
@@ -238,4 +252,21 @@
{
return "ManagementContextImpl[container=" + container + "]";
}
+
+ void install(ManagementProvider provider) {
+ if (resource != null&& typeMD != null)
+ {
+ Object name = provider.manage(this, resource, typeMD);
+ if (name != null)
+ {
+ bilto.put(provider, name);
+ }
+ }
+
+ // Install for all
+ for (ManagementContextImpl registration : registrations.values())
+ {
+ registration.install(provider);
+ }
+ }
}
Deleted: kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/KernelManagementContext.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/KernelManagementContext.java 2009-12-28 23:20:59 UTC (rev 1222)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/container/management/KernelManagementContext.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -1,51 +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.container.management;
-
-import org.exoplatform.management.spi.jmx.JMXManagementProvider;
-import org.exoplatform.management.spi.ManagementProvider;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
- * @version $Revision$
- */
-public class KernelManagementContext
-{
-
- /** . */
- private final Set<ManagementProvider> providers;
-
- public KernelManagementContext()
- {
- providers = Collections.<ManagementProvider>singleton(new JMXManagementProvider());
- }
-
- public KernelManagementContext(Set<ManagementProvider> providers)
- {
- this.providers = providers;
- }
-
- public Collection<ManagementProvider> getProviders() {
- return providers;
- }
-}
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-28 23:20:59 UTC (rev 1222)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProvider.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -32,11 +32,11 @@
* Instruct the management provider to manage the provided resource with the specified meta data.
*
* @param context the context
- * @param managedResource the managed resource
+ * @param source the resource to manage
* @param metaData the meta data describing the management interface
* @return the key under which the resource is registered
*/
- Object manage(ManagementProviderContext context, Object managedResource, ManagedTypeMetaData metaData);
+ Object manage(ManagementProviderContext context, Object source, ManagedTypeMetaData metaData);
/**
* Instruct the management provider to remove the specifed resource from management.
Modified: 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-28 23:20:59 UTC (rev 1222)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/ManagementProviderContext.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -21,7 +21,6 @@
import org.exoplatform.management.ManagementContext;
import java.util.List;
-import java.util.Map;
/**
* The contract between a management provider and the kernel.
@@ -35,6 +34,8 @@
/**
* 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);
@@ -43,6 +44,8 @@
* 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);
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-28 23:20:59 UTC (rev 1222)
+++ kernel/trunk/exo.kernel.container/src/main/java/org/exoplatform/management/spi/jmx/ExoModelMBean.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -142,23 +142,4 @@
//
super.postDeregister();
}
-
- //
-
- public ManagementContext getManagementContext()
- {
- return context;
- }
-
- //
-
- public void register(Object o) throws IllegalArgumentException, NullPointerException
- {
- context.register(o);
- }
-
- public void unregister(Object o) throws IllegalArgumentException, NullPointerException
- {
- context.unregister(o);
- }
}
Added: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/Bar.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/Bar.java (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/Bar.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -0,0 +1,31 @@
+/*
+ * 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.container.management;
+
+import org.exoplatform.management.annotations.Managed;
+
+/**
+ * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+ at Managed
+public class Bar
+{
+}
Added: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/Foo.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/Foo.java (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/Foo.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -0,0 +1,58 @@
+/*
+ * 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.container.management;
+
+import org.exoplatform.management.ManagementAware;
+import org.exoplatform.management.ManagementContext;
+import org.exoplatform.management.annotations.Managed;
+
+/**
+ * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+ at Managed
+public class Foo implements ManagementAware
+{
+
+ /** . */
+ private ManagementContext context;
+
+ final Bar bar = new Bar();
+
+ public void setContext(ManagementContext context)
+ {
+ this.context = context;
+ }
+
+ public boolean isAware()
+ {
+ return context != null;
+ }
+
+ public void deploy()
+ {
+ context.register(bar);
+ }
+
+ public void undeploy()
+ {
+ context.unregister(bar);
+ }
+
+}
\ No newline at end of file
Added: 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 (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagedResource.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -0,0 +1,59 @@
+/*
+ * 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.container.management;
+
+import org.exoplatform.management.spi.ManagedTypeMetaData;
+import org.exoplatform.management.spi.ManagementProviderContext;
+
+/**
+ * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class ManagedResource
+{
+
+ final ResourceKey key;
+
+ /** . */
+ final Object resource;
+
+ /** . */
+ final ManagementProviderContext context;
+
+ /** . */
+ final ManagedTypeMetaData metaData;
+
+ /** . */
+ final ScopedData data;
+
+ public ManagedResource(Object resource, ManagementProviderContext context, ManagedTypeMetaData metaData)
+ {
+ this.key = new ResourceKey();
+ this.resource = resource;
+ this.context = context;
+ this.metaData = metaData;
+ this.data = new ScopedData();
+ }
+
+ public void register()
+ {
+ context.setScopingData(ScopedData.class, data);
+ }
+}
Added: 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 (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ManagementProviderImpl.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -0,0 +1,59 @@
+/*
+ * 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.container.management;
+
+import org.exoplatform.management.spi.ManagedTypeMetaData;
+import org.exoplatform.management.spi.ManagementProvider;
+import org.exoplatform.management.spi.ManagementProviderContext;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class ManagementProviderImpl implements ManagementProvider
+{
+
+ /** . */
+ final List<ManagedResource> resources = new ArrayList<ManagedResource>();
+
+ public Object manage(ManagementProviderContext context, Object resource, ManagedTypeMetaData metaData)
+ {
+ ManagedResource mr = new ManagedResource(resource, context, metaData);
+ resources.add(mr);
+ return mr.key;
+ }
+
+ public void unmanage(Object key)
+ {
+ for (Iterator<ManagedResource> i = resources.iterator();i.hasNext();)
+ {
+ ManagedResource mr = i.next();
+ if (mr.key == key)
+ {
+ i.remove();
+ break;
+ }
+ }
+ }
+}
Added: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ResourceKey.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ResourceKey.java (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ResourceKey.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -0,0 +1,28 @@
+/*
+ * 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.container.management;
+
+/**
+ * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class ResourceKey
+{
+}
Added: kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ScopedData.java
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ScopedData.java (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/ScopedData.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -0,0 +1,28 @@
+/*
+ * 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.container.management;
+
+/**
+ * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class ScopedData
+{
+}
Added: 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 (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/java/org/exoplatform/container/management/TestManagementProvider.java 2009-12-29 01:00:21 UTC (rev 1223)
@@ -0,0 +1,103 @@
+/*
+ * 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.container.management;
+
+import junit.framework.TestCase;
+import org.exoplatform.container.RootContainer;
+import org.exoplatform.container.support.ContainerBuilder;
+
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * @author <a href="mailto:julien.viet at exoplatform.com">Julien Viet</a>
+ * @version $Revision$
+ */
+public class TestManagementProvider extends TestCase
+{
+
+ public void testProviderRegistration()
+ {
+ URL url = getClass().getResource("configuration1.xml");
+ RootContainer container = new ContainerBuilder().withRoot(url).build();
+ ManagementProviderImpl provider = (ManagementProviderImpl)container.getComponentInstanceOfType(ManagementProviderImpl.class);
+ assertNotNull(provider);
+ }
+
+ public void testManagedRegistrationAfterProviderRegistration()
+ {
+ 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());
+ Object foo = container.getComponentInstance("Foo");
+ assertNotNull(foo);
+ assertEquals(1, provider.resources.size());
+ ManagedResource fooMR = provider.resources.get(0);
+ assertSame(foo, fooMR.resource);
+ assertEquals(Collections.<ScopedData>emptyList(), fooMR.context.getScopingProperties(ScopedData.class));
+ fooMR.register();
+ assertEquals(Collections.singletonList(fooMR.data), fooMR.context.getScopingProperties(ScopedData.class));
+ }
+
+ public void testManagedRegistrationBeforeProviderRegistration()
+ {
+ URL url = getClass().getResource("configuration2.xml");
+ RootContainer container = new ContainerBuilder().withRoot(url).build();
+ ManagementProviderImpl provider = (ManagementProviderImpl)container.getComponentInstanceOfType(ManagementProviderImpl.class);
+ assertNull(provider);
+ Object foo = container.getComponentInstance("Foo");
+ assertNotNull(foo);
+ provider = new ManagementProviderImpl();
+ container.registerComponentInstance(provider);
+ assertEquals(1, provider.resources.size());
+ ManagedResource fooMR = provider.resources.get(0);
+ assertSame(foo, fooMR.resource);
+ assertEquals(Collections.<ScopedData>emptyList(), fooMR.context.getScopingProperties(ScopedData.class));
+ fooMR.register();
+ assertEquals(Collections.singletonList(fooMR.data), fooMR.context.getScopingProperties(ScopedData.class));
+ }
+
+ public void testManagementAware()
+ {
+ URL url = getClass().getResource("configuration1.xml");
+ 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);
+ fooMR.register();
+ assertTrue(foo.isAware());
+
+ //
+ foo.deploy();
+ assertEquals(2, provider.resources.size());
+ ManagedResource barMR = provider.resources.get(1);
+ assertSame(foo.bar, barMR.resource);
+ barMR.register();
+ assertEquals(Arrays.asList(barMR.data, fooMR.data), barMR.context.getScopingProperties(ScopedData.class));
+
+ //
+ foo.undeploy();
+ assertEquals(Arrays.asList(fooMR), provider.resources);
+ }
+}
Added: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/management/configuration1.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/management/configuration1.xml (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/management/configuration1.xml 2009-12-29 01:00:21 UTC (rev 1223)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+
+ 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.
+
+-->
+<configuration
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd http://www.exoplaform.org/xml/ns/kernel_1_0.xsd"
+ xmlns="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd">
+
+ <component>
+ <key>Foo</key>
+ <type>org.exoplatform.container.management.Foo</type>
+ </component>
+
+ <component>
+ <key>org.exoplatform.container.management.ManagementProviderImpl</key>
+ <type>org.exoplatform.container.management.ManagementProviderImpl</type>
+ </component>
+
+</configuration>
\ No newline at end of file
Added: kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/management/configuration2.xml
===================================================================
--- kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/management/configuration2.xml (rev 0)
+++ kernel/trunk/exo.kernel.container/src/test/resources/org/exoplatform/container/management/configuration2.xml 2009-12-29 01:00:21 UTC (rev 1223)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+
+ 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.
+
+-->
+<configuration
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd http://www.exoplaform.org/xml/ns/kernel_1_0.xsd"
+ xmlns="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd">
+
+ <component>
+ <key>Foo</key>
+ <type>org.exoplatform.container.management.Foo</type>
+ </component>
+
+</configuration>
\ No newline at end of file
More information about the exo-jcr-commits
mailing list