You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by am...@apache.org on 2005/07/22 18:42:40 UTC

svn commit: r224363 - in /geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel: basic/BasicProxyManager.java proxy/ProxyManager.java

Author: ammulder
Date: Fri Jul 22 09:42:35 2005
New Revision: 224363

URL: http://svn.apache.org/viewcvs?rev=224363&view=rev
Log:
A little more of a bridge from JSR-77 objects to management API: add a
  proxy factory method to convert an array of objectname Strings (the
  return type for all the JSR-77 navigation methods) to an array of
  proxies.

Modified:
    geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java
    geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/proxy/ProxyManager.java

Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java?rev=224363&r1=224362&r2=224363&view=diff
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/basic/BasicProxyManager.java Fri Jul 22 09:42:35 2005
@@ -21,6 +21,7 @@
 import java.util.ArrayList;
 import java.util.Set;
 import javax.management.ObjectName;
+import javax.management.MalformedObjectNameException;
 
 import net.sf.cglib.proxy.Callback;
 import net.sf.cglib.proxy.Enhancer;
@@ -104,6 +105,22 @@
             }
         }
         return createProxyFactory((Class[]) list.toArray(new Class[list.size()])).createProxy(target);
+    }
+
+    public Object[] createProxies(String[] objectNameStrings) throws MalformedObjectNameException {
+        Object[] result = new Object[objectNameStrings.length];
+        for (int i = 0; i < result.length; i++) {
+            result[i] = createProxy(ObjectName.getInstance(objectNameStrings[i]));
+        }
+        return result;
+    }
+
+    public Object[] createProxies(String[] objectNameStrings, Class required, Class[] optional) throws MalformedObjectNameException {
+        Object[] result = new Object[objectNameStrings.length];
+        for (int i = 0; i < result.length; i++) {
+            result[i] = createProxy(ObjectName.getInstance(objectNameStrings[i]), required, optional);
+        }
+        return result;
     }
 
     public synchronized void destroyProxy(Object proxy) {

Modified: geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/proxy/ProxyManager.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/proxy/ProxyManager.java?rev=224363&r1=224362&r2=224363&view=diff
==============================================================================
--- geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/proxy/ProxyManager.java (original)
+++ geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/proxy/ProxyManager.java Fri Jul 22 09:42:35 2005
@@ -17,6 +17,7 @@
 package org.apache.geronimo.kernel.proxy;
 
 import javax.management.ObjectName;
+import javax.management.MalformedObjectNameException;
 
 /**
  * Manages kernel proxies
@@ -42,6 +43,19 @@
     public Object createProxy(ObjectName target);
 
     /**
+     * Create proxies for the specified targets.  The proxies will implement
+     * all of the interfaces that the underlying GBeans specify in their
+     * GBeanInfo.  If there are no interfaces in the GBeanInfo, this method
+     * will return a null in that spot in the array.
+     *
+     * @param objectNameStrings An array of ObjectNames, each in String form
+     * @return an array of proxies of the same length as the argument array,
+     *         where each value is a proxy or null if the corresponding
+     *         GBeanInfo declares no interfaces
+     */
+    public Object[] createProxies(String[] objectNameStrings) throws MalformedObjectNameException;
+
+    /**
      * Create a proxy for the specified target, implementing the specified
      * interface.
      *
@@ -60,7 +74,9 @@
      * @param target the target object name
      * @param required an interface that the proxy must implement.  This may be
      *                 null in which case only the optional interfaces will be
-     *                 evaluated.
+     *                 evaluated.  However, it's recommended that you always
+     *                 provide one in case none of the optional interfaces
+     *                 are a match.
      * @param optional Interfaces that the proxy may implement.  For each
      *                 of these interfaces, the proxy must implement it if the
      *                 underlying GBean declares that it implements it (by
@@ -70,6 +86,32 @@
      *         none of the optional interfaces match the GBeanInfo
      */
     public Object createProxy(ObjectName target, Class required, Class[] optional);
+
+    /**
+     * Create a proxy for the specified target, implementing a variable
+     * number of interfaces.  It's possible to specify one interface that must
+     * be included, and also to specify a number of variable interfaces that
+     * the proxy should implement if the underlying GBean supports them.
+     *
+     * @param objectNameStrings An array of ObjectNames, each in String form
+     * @param required an interface that the proxies must implement.  This may
+     *                 be null in which case only the optional interfaces will
+     *                 be evaluated.  However, it's recommended that you
+     *                 always provide one in case none of the optional
+     *                 interfaces are a match for a particular target.
+     * @param optional Interfaces that the proxies may implement.  For each
+     *                 proxy for each of these interfaces, the proxy must
+     *                 implement it if the underlying GBean declares that it
+     *                 implements it (by declaring the interface in its
+     *                 GBeanInfo), and otherwise the interface will be
+     *                 ignored for that GBean.  Note that different result
+     *                 proxies may implement different interfaces, depending
+     *                 on the underlyings GBeans.
+     * @return an array of proxies of the same length as the argument array,
+     *         where each value is a proxy or null if no required interface
+     *         was provided and none of the optional interfaces match.
+     */
+    public Object[] createProxies(String[] objectNameStrings, Class required, Class[] optional) throws MalformedObjectNameException;
 
     /**
      * Cleans up and resources associated with the proxy