You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by da...@apache.org on 2004/01/22 21:10:33 UTC

cvs commit: incubator-geronimo/modules/kernel/src/test/org/apache/geronimo/kernel MockGBean.java

dain        2004/01/22 12:10:33

  Modified:    modules/kernel/src/java/org/apache/geronimo/gbean
                        GBeanInfoFactory.java
               modules/kernel/src/test/org/apache/geronimo/kernel
                        MockGBean.java
  Log:
  Added addInterface to GBeanInfoFactory
  
  Revision  Changes    Path
  1.5       +47 -4     incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/GBeanInfoFactory.java
  
  Index: GBeanInfoFactory.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/java/org/apache/geronimo/gbean/GBeanInfoFactory.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- GBeanInfoFactory.java	16 Jan 2004 23:31:21 -0000	1.4
  +++ GBeanInfoFactory.java	22 Jan 2004 20:10:33 -0000	1.5
  @@ -55,11 +55,14 @@
    */
   package org.apache.geronimo.gbean;
   
  +import java.lang.reflect.Method;
  +import java.util.ArrayList;
  +import java.util.HashMap;
   import java.util.HashSet;
  +import java.util.List;
  +import java.util.Map;
   import java.util.Set;
  -
  -import org.apache.geronimo.gbean.GAttributeInfo;
  -import org.apache.geronimo.gbean.GBeanInfo;
  +import java.util.Arrays;
   
   /**
    *
  @@ -98,6 +101,46 @@
           notifications.addAll(source.getNotificationsSet());
           //in case subclass constructor has same parameters as superclass.
           constructor = source.getConstructor();
  +    }
  +
  +    public void addInterface(Class intf) {
  +        addInterface(intf, new String[0]);
  +    }
  +
  +    public void addInterface(Class intf, String[] persistentAttriubtes) {
  +        Set persistentName = new HashSet(Arrays.asList(persistentAttriubtes));
  +        Map tempAttributes = new HashMap();
  +
  +        Method[] methods = intf.getMethods();
  +        for (int i = 0; i < methods.length; i++) {
  +            Method method = methods[i];
  +            String name = method.getName();
  +            if (name.startsWith("get") || name.startsWith("is")) {
  +                String attributeName = (name.startsWith("get")) ? name.substring(3) : name.substring(2);
  +                GAttributeInfo attribute = (GAttributeInfo) tempAttributes.get(attributeName);
  +                if (attribute == null) {
  +                    tempAttributes.put(attributeName, new GAttributeInfo(attributeName, persistentName.contains(attributeName), name, null));
  +                } else {
  +                    tempAttributes.put(attributeName, new GAttributeInfo(attributeName, persistentName.contains(attributeName), name, attribute.getSetterName()));
  +                }
  +            } else if (name.startsWith("set")) {
  +                String attributeName = name.substring(3);
  +                GAttributeInfo attribute = (GAttributeInfo) tempAttributes.get(attributeName);
  +                if (attribute == null) {
  +                    tempAttributes.put(attributeName, new GAttributeInfo(attributeName, persistentName.contains(attributeName), null, name));
  +                } else {
  +                    tempAttributes.put(attributeName, new GAttributeInfo(attributeName, persistentName.contains(attributeName), attribute.getSetterName(), name));
  +                }
  +            } else {
  +                Class[] parameterTypes = method.getParameterTypes();
  +                List parameters = new ArrayList(parameterTypes.length);
  +                for (int j = 0; j < parameterTypes.length; j++) {
  +                    parameters.add(parameterTypes[j].getName());
  +                }
  +                operations.add(new GOperationInfo(name, name, parameters));
  +            }
  +        }
  +        attributes.addAll(tempAttributes.values());
       }
   
       public void addAttribute(GAttributeInfo info) {
  
  
  
  1.9       +2 -3      incubator-geronimo/modules/kernel/src/test/org/apache/geronimo/kernel/MockGBean.java
  
  Index: MockGBean.java
  ===================================================================
  RCS file: /home/cvs/incubator-geronimo/modules/kernel/src/test/org/apache/geronimo/kernel/MockGBean.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- MockGBean.java	22 Jan 2004 18:34:13 -0000	1.8
  +++ MockGBean.java	22 Jan 2004 20:10:33 -0000	1.9
  @@ -91,13 +91,12 @@
           infoFactory.addAttribute(new GAttributeInfo("Name", true));
           infoFactory.addAttribute(new GAttributeInfo("Value", true));
           infoFactory.addAttribute(new GAttributeInfo("FinalInt", true));
  -        infoFactory.addAttribute(new GAttributeInfo("MutableInt", true));
           infoFactory.addAttribute(new GAttributeInfo("EndpointMutableInt"));
           infoFactory.addOperation(new GOperationInfo("checkResource", new String[]{"java.lang.String"}));
           infoFactory.addOperation(new GOperationInfo("checkEndpoint"));
           infoFactory.addOperation(new GOperationInfo("checkEndpointCollection"));
           infoFactory.addOperation(new GOperationInfo("doSomething", new String[]{"java.lang.String"}));
  -        infoFactory.addOperation(new GOperationInfo("doSetMutableInt", new String[] {"int"}));
  +        infoFactory.addInterface(MockEndpoint.class, new String[] {"MutableInt"});
           infoFactory.addEndpoint(new GEndpointInfo("MockEndpoint", MockEndpoint.class.getName()));
           infoFactory.addEndpoint(new GEndpointInfo("EndpointCollection", MockEndpoint.class.getName()));
           infoFactory.setConstructor(new GConstructorInfo(new String[]{"Name", "FinalInt"}, new Class[]{String.class, Integer.TYPE}));