[jboss-cvs] JBossAS SVN: r87673 - branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Apr 22 09:33:48 EDT 2009
Author: emuckenhuber
Date: 2009-04-22 09:33:48 -0400 (Wed, 22 Apr 2009)
New Revision: 87673
Modified:
branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/DelegatingComponentDispatcherImpl.java
branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/KernelBusRuntimeComponentDispatcher.java
branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagedOperationProxyFactory.java
branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java
Log:
fix managed operation invocation
Modified: branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/DelegatingComponentDispatcherImpl.java
===================================================================
--- branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/DelegatingComponentDispatcherImpl.java 2009-04-22 13:33:29 UTC (rev 87672)
+++ branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/DelegatingComponentDispatcherImpl.java 2009-04-22 13:33:48 UTC (rev 87673)
@@ -21,10 +21,6 @@
*/
package org.jboss.profileservice.management;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.WeakHashMap;
-
import org.jboss.deployers.spi.management.DelegatingComponentDispatcher;
import org.jboss.deployers.spi.management.RuntimeComponentDispatcher;
import org.jboss.managed.api.ManagedOperation;
@@ -42,37 +38,31 @@
public class DelegatingComponentDispatcherImpl
implements DelegatingComponentDispatcher
{
- private static Map<Long, ManagedProperty> properties = new HashMap<Long, ManagedProperty>();
- private static Map<Long, ManagedOperation> operations = new HashMap<Long, ManagedOperation>();
-
+
private RuntimeComponentDispatcher dispatcher;
+ private ProxyRegistry registry;
- public static void addManagedProperty(Long id, ManagedProperty mp)
+ public DelegatingComponentDispatcherImpl(ProxyRegistry registry, RuntimeComponentDispatcher dispatcher)
{
- properties.put(id, mp);
- }
- public static void addManagedOperation(Long id, ManagedOperation op)
- {
- operations.put(id, op);
- }
-
- public DelegatingComponentDispatcherImpl(RuntimeComponentDispatcher dispatcher)
- {
+ this.registry = registry;
this.dispatcher = dispatcher;
}
public MetaValue get(Long propID, Object componentName, String propertyName)
{
- ManagedProperty mp = properties.get(propID);
+ ManagedProperty mp = this.registry.getManagedProperty(propID);
AbstractRuntimeComponentDispatcher.setActiveProperty(mp);
return dispatcher.get(componentName, propertyName);
}
public MetaValue invoke(Long opID, Object componentName, String methodName, MetaValue... param)
{
- ManagedOperation op = operations.get(opID);
+ ManagedOperation op = this.registry.getManagedOperation(opID);
AbstractRuntimeComponentDispatcher.setActiveOperation(op);
+ if(param == null)
+ param = new MetaValue[0];
+
MetaValue result = null;
if (componentName != null)
{
@@ -81,4 +71,12 @@
return result;
}
+ public static interface ProxyRegistry
+ {
+
+ ManagedProperty getManagedProperty(Long propID);
+ ManagedOperation getManagedOperation(Long opID);
+
+ }
+
}
Modified: branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/KernelBusRuntimeComponentDispatcher.java
===================================================================
--- branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/KernelBusRuntimeComponentDispatcher.java 2009-04-22 13:33:29 UTC (rev 87672)
+++ branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/KernelBusRuntimeComponentDispatcher.java 2009-04-22 13:33:48 UTC (rev 87673)
@@ -135,23 +135,38 @@
try
{
ManagedOperation op = AbstractRuntimeComponentDispatcher.getActiveOperation();
- ManagedParameter[] params = op.getParameters();
- String[] sig;
+ String[] sig = new String[param.length];
Object[] args = new Object[param.length];
- for(int i=0; i < param.length; i++)
+ if(op != null)
{
- if(params != null && params.length < i)
+ ManagedParameter[] params = op.getParameters();
+ if(params != null && params.length == param.length)
{
- ManagedParameter mp = params[i];
- MetaMapper mapper = mp.getTransientAttachment(MetaMapper.class);
- if(mapper != null)
- args[i] = mapper.unwrapMetaValue(param[i]);
+ for(int i=0; i < param.length; i++)
+ {
+ ManagedParameter mp = params[i];
+ MetaMapper<?> mapper = mp.getTransientAttachment(MetaMapper.class);
+ if(mapper != null)
+ args[i] = mapper.unwrapMetaValue(param[i]);
+ else
+ args[i] = unwrap(param[i]);
+ //
+ sig[i] = mp.getMetaType().getTypeName();
+ }
}
else
- args[i] = unwrap(param[i]);
+ {
+ args = toArguments(param);
+ sig = toSignature(param);
+ }
}
-
- Object value = bus.invoke(componentName, methodName, toArguments(param), toSignature(param));
+ else
+ {
+ args = toArguments(param);
+ sig = toSignature(param);
+ }
+ // Invoke
+ Object value = bus.invoke(componentName, methodName, args, sig);
MetaValue mvalue = null;
if (value != null)
{
Modified: branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagedOperationProxyFactory.java
===================================================================
--- branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagedOperationProxyFactory.java 2009-04-22 13:33:29 UTC (rev 87672)
+++ branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagedOperationProxyFactory.java 2009-04-22 13:33:48 UTC (rev 87673)
@@ -24,7 +24,9 @@
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicLong;
import org.jboss.aop.Dispatcher;
@@ -36,12 +38,8 @@
import org.jboss.deployers.spi.management.DelegatingComponentDispatcher;
import org.jboss.deployers.spi.management.RuntimeComponentDispatcher;
import org.jboss.managed.api.ManagedOperation;
-import org.jboss.managed.api.ManagedParameter;
import org.jboss.managed.api.ManagedProperty;
-import org.jboss.metatype.api.types.MetaType;
-import org.jboss.metatype.api.values.MetaValue;
-import org.jboss.metatype.api.values.MetaValueFactory;
-import org.jboss.metatype.spi.values.MetaMapper;
+import org.jboss.profileservice.management.DelegatingComponentDispatcherImpl.ProxyRegistry;
import org.jboss.remoting.InvokerLocator;
/**
@@ -51,15 +49,16 @@
* @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
* @version $Revision$
*/
-public class ManagedOperationProxyFactory implements Serializable
+public class ManagedOperationProxyFactory implements Serializable, ProxyRegistry
{
/** The serialVersionUID */
private static final long serialVersionUID = 1343224268002757169L;
private AtomicLong operationID = new AtomicLong(0);
private AtomicLong propertyID = new AtomicLong(0);
private transient RuntimeComponentDispatcher dispatcher;
- private transient MetaValueFactory metaValueFactory = MetaValueFactory.getInstance();
private transient InvokerLocator locator;
+ private transient Map<Long, ManagedProperty> properties = new ConcurrentHashMap<Long, ManagedProperty>();
+ private transient Map<Long, ManagedOperation> operations = new ConcurrentHashMap<Long, ManagedOperation>();
/** The runtime component dispatcher proxy. */
private DelegatingComponentDispatcher dispatcherProxy;
@@ -97,6 +96,28 @@
this.dispatcherProxy = createDispatcherProxy();
}
+
+ public synchronized void clear()
+ {
+ this.properties.clear();
+ this.operations.clear();
+ }
+
+ public ManagedOperation getManagedOperation(Long opID)
+ {
+ ManagedOperation op = this.operations.get(opID);
+ if(op == null)
+ throw new IllegalStateException("operation not found for id " + opID);
+ return op;
+ }
+
+ public ManagedProperty getManagedProperty(Long propID)
+ {
+ ManagedProperty prop = this.properties.get(propID);
+ if(prop == null)
+ throw new IllegalStateException("property not found for id " + propID);
+ return prop;
+ }
/**
* Create a delegating managed property. This is used for ViewUse.STATISTIC properties,
@@ -110,7 +131,7 @@
{
long propID = propertyID.incrementAndGet();
ManagedPropertyDelegate proxy = new ManagedPropertyDelegate(propID, delegate, componentName, dispatcherProxy);
- DelegatingComponentDispatcherImpl.addManagedProperty(propID, proxy);
+ this.properties.put(propID, proxy);
return proxy;
}
@@ -131,7 +152,7 @@
{
long opID = operationID.incrementAndGet();
ManagedOperationDelegate proxy = new ManagedOperationDelegate(opID, op, componentName, dispatcherProxy);
- DelegatingComponentDispatcherImpl.addManagedOperation(opID, proxy);
+ this.operations.put(opID, proxy);
opProxies.add(proxy);
}
return opProxies;
@@ -154,10 +175,10 @@
String dispatchName = "ProfileService.DelegatingComponentDispatcher";
Class<?>[] ifaces = {DelegatingComponentDispatcher.class};
- DelegatingComponentDispatcher delegate = new DelegatingComponentDispatcherImpl(this.dispatcher);
+ DelegatingComponentDispatcher delegate = new DelegatingComponentDispatcherImpl(this, this.dispatcher);
Dispatcher.singleton.registerTarget(dispatchName, delegate);
return (DelegatingComponentDispatcher) Remoting.createRemoteProxy(dispatchName,
getClass().getClassLoader(), ifaces, locator, interceptors, "ProfileService");
}
-
+
}
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-04-22 13:33:29 UTC (rev 87672)
+++ branches/Branch_5_x/profileservice/src/main/org/jboss/profileservice/management/ManagementViewImpl.java 2009-04-22 13:33:48 UTC (rev 87673)
@@ -22,7 +22,6 @@
package org.jboss.profileservice.management;
import java.io.IOException;
-import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.text.MessageFormat;
import java.util.ArrayList;
@@ -72,16 +71,13 @@
import org.jboss.managed.plugins.jmx.ManagementFactoryUtils;
import org.jboss.metatype.api.types.ArrayMetaType;
import org.jboss.metatype.api.types.CollectionMetaType;
-import org.jboss.metatype.api.types.GenericMetaType;
import org.jboss.metatype.api.types.MetaType;
import org.jboss.metatype.api.values.ArrayValue;
import org.jboss.metatype.api.values.CollectionValue;
import org.jboss.metatype.api.values.GenericValue;
-import org.jboss.metatype.api.values.GenericValueSupport;
import org.jboss.metatype.api.values.MetaValue;
import org.jboss.metatype.api.values.MetaValueFactory;
import org.jboss.metatype.api.values.SimpleValue;
-import org.jboss.metatype.spi.values.MetaMapper;
import org.jboss.profileservice.spi.NoSuchDeploymentException;
import org.jboss.profileservice.spi.NoSuchProfileException;
import org.jboss.profileservice.spi.Profile;
@@ -292,6 +288,9 @@
this.unresolvedRefs.clear();
this.lastModified.clear();
this.rootDeployments.clear();
+ // Cleanup delegate operations
+ this.proxyFactory.clear();
+
}
protected void loadProfiles(boolean trace)
@@ -1199,21 +1198,7 @@
if (componentName != null && policy.equals(ActivationPolicy.IMMEDIATE))
{
- // FIXME the MetaMapper unwrapping should be handled by the RuntimeDispatcher
- MetaMapper mapper = ctxProp.getTransientAttachment(MetaMapper.class);
- if(mapper != null)
- {
- Object o = mapper.unwrapMetaValue(metaValue);
- GenericMetaType generic = new GenericMetaType(metaValue.getMetaType().getTypeName(), "generic value wrapper");
- if(o == null)
- {
- metaValue = new GenericValueSupport(generic, null);
- }
- else if(o instanceof Serializable)
- {
- metaValue = new GenericValueSupport(generic, (Serializable) o);
- }
- }
+ AbstractRuntimeComponentDispatcher.setActiveProperty(ctxProp);
dispatcher.set(componentName, ctxProp.getName(), metaValue);
}
}
More information about the jboss-cvs-commits
mailing list