You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by David Jencks <da...@yahoo.com> on 2004/11/02 04:48:51 UTC

Re: svn commit: rev 56340 - in geronimo/trunk/modules: deployment/src/java/org/apache/geronimo/deployment deployment/src/java/org/apache/geronimo/deployment/service kernel/src/java/org/apache/geronimo/gbean kernel/src/java/org/apache/geronimo/gbean/jmx kernel/src/java/org/apache/geronimo/kernel kernel/src/java/org/apache/geronimo/kernel/config system/src/java/org/apache/geronimo/system/configuration system/src/test/org/apache/geronimo/system/configuration

Is MockGBean really supposed to be in java rather than test?

david jencks

On Nov 1, 2004, at 7:45 PM, dain@apache.org wrote:

> Author: dain
> Date: Mon Nov  1 19:45:48 2004
> New Revision: 56340
>
> Added:
>     
> geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/ 
> configuration/MockGBean.java
> Modified:
>     
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/DeploymentContext.java
>     
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/service/GBeanBuilder.java
>     
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/service/GBeanHelper.java
>     
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/ 
> GBeanData.java
>     
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/ 
> GBeanMBean.java
>     
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
> Kernel.java
>     
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
> config/Configuration.java
>     
> geronimo/trunk/modules/system/src/test/org/apache/geronimo/system/ 
> configuration/LocalConfigStoreTest.java
> Log:
> Moved object name into GBeanData
>
>
> Modified:  
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/DeploymentContext.java
> ======================================================================= 
> =======
> ---  
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/DeploymentContext.java	(original)
> +++  
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/DeploymentContext.java	Mon Nov  1 19:45:48 2004
> @@ -155,9 +155,9 @@
>          gbeans.put(name, gbean);
>      }
>
> -    public void addGBean(ObjectName name, GBeanData gbean,  
> ClassLoader classLoader) {
> +    public void addGBean(GBeanData gbean, ClassLoader classLoader) {
>          GBeanMBean gbeanMBean = new GBeanMBean(gbean, classLoader);
> -        gbeans.put(name, gbeanMBean);
> +        gbeans.put(gbean.getName(), gbeanMBean);
>      }
>
>      public void addDependency(URI uri) {
>
> Modified:  
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/service/GBeanBuilder.java
> ======================================================================= 
> =======
> ---  
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/service/GBeanBuilder.java	(original)
> +++  
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/service/GBeanBuilder.java	Mon Nov  1 19:45:48 2004
> @@ -35,13 +35,13 @@
>   * @version $Rev$ $Date$
>   */
>  public class GBeanBuilder {
> -    private final ObjectName name;
>      private final GBeanData gbean;
>      private final ClassLoader classLoader;
>
>      public GBeanBuilder(String name, ClassLoader classLoader, String  
> className) throws DeploymentException {
> +        ObjectName objectName;
>          try {
> -            this.name = new ObjectName(name);
> +            objectName = new ObjectName(name);
>          } catch (MalformedObjectNameException e) {
>              throw new DeploymentException("Invalid ObjectName: " +  
> name, e);
>          }
> @@ -49,7 +49,7 @@
>          this.classLoader = classLoader;
>
>          try {
> -            gbean = new GBeanData(GBeanInfo.getGBeanInfo(className,  
> classLoader));
> +            gbean = new GBeanData(objectName,  
> GBeanInfo.getGBeanInfo(className, classLoader));
>          } catch (Exception e) {
>              throw new DeploymentException("Unable to create GBean  
> from class " + className, e);
>          }
> @@ -95,9 +95,5 @@
>
>      public GBeanData getGBeanData() {
>          return gbean;
> -    }
> -
> -    public ObjectName getName() {
> -        return name;
>      }
>  }
>
> Modified:  
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/service/GBeanHelper.java
> ======================================================================= 
> =======
> ---  
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/service/GBeanHelper.java	(original)
> +++  
> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
> deployment/service/GBeanHelper.java	Mon Nov  1 19:45:48 2004
> @@ -45,6 +45,6 @@
>              builder.setReference(gbean.getReferencesName(j),  
> gbean.getReferencesPatternArray(j));
>          }
>
> -        context.addGBean(builder.getName(), builder.getGBeanData(),  
> cl);
> +        context.addGBean(builder.getGBeanData(), cl);
>      }
>  }
>
> Modified:  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/ 
> GBeanData.java
> ======================================================================= 
> =======
> ---  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/ 
> GBeanData.java	(original)
> +++  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/ 
> GBeanData.java	Mon Nov  1 19:45:48 2004
> @@ -32,6 +32,7 @@
>   * @version $Rev$ $Date$
>   */
>  public class GBeanData implements Externalizable {
> +    private ObjectName name;
>      private GBeanInfo gbeanInfo;
>      private final Map attributes;
>      private final Map references;
> @@ -41,18 +42,28 @@
>          references = new HashMap();
>      }
>
> -    public GBeanData(GBeanInfo gbeanInfo) {
> +    public GBeanData(ObjectName name, GBeanInfo gbeanInfo) {
> +        this.name = name;
>          this.gbeanInfo = gbeanInfo;
>          attributes = new HashMap();
>          references = new HashMap();
>      }
>
>      public GBeanData(GBeanData gbeanData) {
> +        name = gbeanData.name;
>          gbeanInfo = gbeanData.gbeanInfo;
>          attributes = new HashMap(gbeanData.attributes);
>          references = new HashMap(gbeanData.references);
>      }
>
> +    public ObjectName getName() {
> +        return name;
> +    }
> +
> +    public void setName(ObjectName name) {
> +        this.name = name;
> +    }
> +
>      public GBeanInfo getGBeanInfo() {
>          return gbeanInfo;
>      }
> @@ -101,6 +112,9 @@
>          // write the gbean info
>          out.writeObject(gbeanInfo);
>
> +        // write the object name
> +        out.writeObject(name);
> +
>          // write the attributes
>          out.writeInt(attributes.size());
>          for (Iterator iterator = attributes.entrySet().iterator();  
> iterator.hasNext();) {
> @@ -135,16 +149,29 @@
>          // read the gbean info
>          gbeanInfo = (GBeanInfo) in.readObject();
>
> -        // read the attributes
> -        int attributeCount = in.readInt();
> -        for (int i = 0; i < attributeCount; i++) {
> -            setAttribute((String) in.readObject(), in.readObject());
> +        // read the object name
> +        try {
> +            name = (ObjectName) in.readObject();
> +        } catch (IOException e) {
> +            throw (IOException) new IOException("Unable to  
> deserialize ObjectName for GBeanData of type " +  
> gbeanInfo.getClassName()).initCause(e);
>          }
>
> -        // read the references
> -        int endpointCount = in.readInt();
> -        for (int i = 0; i < endpointCount; i++) {
> -            setReferencePatterns((String) in.readObject(), (Set)  
> in.readObject());
> +        try {
> +            // read the attributes
> +            int attributeCount = in.readInt();
> +            for (int i = 0; i < attributeCount; i++) {
> +                setAttribute((String) in.readObject(),  
> in.readObject());
> +            }
> +
> +            // read the references
> +            int endpointCount = in.readInt();
> +            for (int i = 0; i < endpointCount; i++) {
> +                setReferencePatterns((String) in.readObject(), (Set)  
> in.readObject());
> +            }
> +        } catch (IOException e) {
> +            throw (IOException) new IOException("Unable to  
> deserialize GBeanData " + name).initCause(e);
> +        } catch (ClassNotFoundException e) {
> +            throw new ClassNotFoundException("Unable to find class  
> used in GBeanData " + name, e);
>          }
>      }
>  }
>
> Modified:  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/ 
> GBeanMBean.java
> ======================================================================= 
> =======
> ---  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/ 
> GBeanMBean.java	(original)
> +++  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/ 
> GBeanMBean.java	Mon Nov  1 19:45:48 2004
> @@ -684,10 +684,7 @@
>       * @return the gbean data
>       */
>      public GBeanData getGBeanData() {
> -        GBeanData gbeanData = new GBeanData();
> -
> -        // add the gbean info
> -        gbeanData.setGBeanInfo(gbeanInfo);
> +        GBeanData gbeanData = new GBeanData(objectName, gbeanInfo);
>
>          // add the attributes
>          for (int i = 0; i < attributes.length; i++) {
>
> Modified:  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
> Kernel.java
> ======================================================================= 
> =======
> ---  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
> Kernel.java	(original)
> +++  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
> Kernel.java	Mon Nov  1 19:45:48 2004
> @@ -282,14 +282,14 @@
>          }
>      }
>
> -    public void loadGBean(ObjectName name, GBeanData gbeanData,  
> ClassLoader classLoader) throws InstanceAlreadyExistsException,  
> InvalidConfigException {
> +    public void loadGBean(GBeanData gbeanData, ClassLoader  
> classLoader) throws InstanceAlreadyExistsException,  
> InvalidConfigException {
>          try {
>              GBeanMBean gbean = new GBeanMBean(gbeanData, classLoader);
> -            mbServer.registerMBean(gbean, name);
> +            mbServer.registerMBean(gbean, gbeanData.getName());
>          } catch (MBeanRegistrationException e) {
> -            throw new InvalidConfigException("Invalid GBean  
> configuration for " + name, e);
> +            throw new InvalidConfigException("Invalid GBean  
> configuration for " + gbeanData.getName(), e);
>          } catch (NotCompliantMBeanException e) {
> -            throw new InvalidConfigException("Invalid GBean  
> configuration for " + name, e);
> +            throw new InvalidConfigException("Invalid GBean  
> configuration for " + gbeanData.getName(), e);
>          }
>      }
>
>
> Modified:  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
> config/Configuration.java
> ======================================================================= 
> =======
> ---  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
> config/Configuration.java	(original)
> +++  
> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
> config/Configuration.java	Mon Nov  1 19:45:48 2004
> @@ -349,18 +349,15 @@
>       */
>      private static Map loadGBeans(byte[] gbeanState, ClassLoader cl)  
> throws InvalidConfigException {
>          Map gbeans = new HashMap();
> -        ObjectName objectName = null;
>          try {
>              ObjectInputStream ois = new ConfigInputStream(new  
> ByteArrayInputStream(gbeanState), cl);
>              try {
>                  while (true) {
> -                    objectName = (ObjectName) ois.readObject();
> -
>                      GBeanData gbeanData = new GBeanData();
>                      gbeanData.readExternal(ois);
>                      GBeanMBean gbean = new GBeanMBean(gbeanData, cl);
>
> -                    gbeans.put(objectName, gbean);
> +                    gbeans.put(gbeanData.getName(), gbean);
>                  }
>              } catch (EOFException e) {
>                  // ok
> @@ -369,8 +366,7 @@
>              }
>              return gbeans;
>          } catch (Exception e) {
> -            throw new InvalidConfigException("Unable to deserialize  
> GBeanState" +
> -                    (objectName == null ? "" : " " + objectName), e);
> +            throw new InvalidConfigException("Unable to deserialize  
> GBeanState", e);
>          }
>      }
>
> @@ -401,8 +397,11 @@
>              ObjectName objectName = (ObjectName) entry.getKey();
>              GBeanMBean gbean = (GBeanMBean) entry.getValue();
>              try {
> -                oos.writeObject(objectName);
> -                gbean.getGBeanData().writeExternal(oos);
> +                GBeanData gbeanData = gbean.getGBeanData();
> +                // todo we must explicitly set the bean name here  
> from the gbean key because the gbean mbean may
> +                // not have been brought online, so the object namve  
> in the gbean mbean will be null
> +                gbeanData.setName(objectName);
> +                gbeanData.writeExternal(oos);
>              } catch (Exception e) {
>                  throw new InvalidConfigException("Unable to serialize  
> GBeanState for " + objectName, e);
>              }
>
> Added:  
> geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/ 
> configuration/MockGBean.java
> ======================================================================= 
> =======
> --- (empty file)
> +++  
> geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/ 
> configuration/MockGBean.java	Mon Nov  1 19:45:48 2004
> @@ -0,0 +1,49 @@
> +/**
> + *
> + * Copyright 2003-2004 The Apache Software Foundation
> + *
> + *  Licensed under the Apache License, Version 2.0 (the "License");
> + *  you may not use this file except in compliance with the License.
> + *  You may obtain a copy of the License at
> + *
> + *     http://www.apache.org/licenses/LICENSE-2.0
> + *
> + *  Unless required by applicable law or agreed to in writing,  
> software
> + *  distributed under the License is distributed on an "AS IS" BASIS,
> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  
> implied.
> + *  See the License for the specific language governing permissions  
> and
> + *  limitations under the License.
> + */
> +
> +package org.apache.geronimo.system.configuration;
> +
> +import org.apache.geronimo.gbean.GBeanInfo;
> +import org.apache.geronimo.gbean.GBeanInfoBuilder;
> +
> +/**
> + * @version $Rev: 46019 $ $Date: 2004-09-14 02:56:06 -0700 (Tue, 14  
> Sep 2004) $
> + */
> +public class MockGBean {
> +    private static final GBeanInfo GBEAN_INFO;
> +
> +    private String value;
> +
> +    public String getValue() {
> +        return value;
> +    }
> +
> +    public void setValue(String value) {
> +        this.value = value;
> +    }
> +
> +    public static GBeanInfo getGBeanInfo() {
> +        return GBEAN_INFO;
> +    }
> +
> +    static {
> +        GBeanInfoBuilder infoBuilder = new  
> GBeanInfoBuilder("MockGBean", MockGBean.class);
> +        infoBuilder.addAttribute("value", String.class, true);
> +
> +        GBEAN_INFO = infoBuilder.getBeanInfo();
> +    }
> +}
>
> Modified:  
> geronimo/trunk/modules/system/src/test/org/apache/geronimo/system/ 
> configuration/LocalConfigStoreTest.java
> ======================================================================= 
> =======
> ---  
> geronimo/trunk/modules/system/src/test/org/apache/geronimo/system/ 
> configuration/LocalConfigStoreTest.java	(original)
> +++  
> geronimo/trunk/modules/system/src/test/org/apache/geronimo/system/ 
> configuration/LocalConfigStoreTest.java	Mon Nov  1 19:45:48 2004
> @@ -130,10 +130,10 @@
>              root.mkdir();
>
>              storeName = new  
> ObjectName("geronimo.test: 
> role=ConfigurationStore,name=LocalConfigStore");
> -            GBeanData store = new  
> GBeanData(LocalConfigStore.getGBeanInfo());
> +            GBeanData store = new GBeanData(storeName,  
> LocalConfigStore.getGBeanInfo());
>              store.setAttribute("root", root.toURI());
>
> -            kernel.loadGBean(storeName, store,  
> getClass().getClassLoader());
> +            kernel.loadGBean(store, getClass().getClassLoader());
>              kernel.startGBean(storeName);
>
>              GBeanMBean gbean = new  
> GBeanMBean(Configuration.GBEAN_INFO);
>


Re: svn commit: rev 56340 - in geronimo/trunk/modules: deployment/src/java/org/apache/geronimo/deployment deployment/src/java/org/apache/geronimo/deployment/service kernel/src/java/org/apache/geronimo/gbean kernel/src/java/org/apache/geronimo/gbean/jmx kernel/src/java/org/apache/geronimo/kernel kernel/src/java/org/apache/geronimo/kernel/config system/src/java/org/apache/geronimo/system/configuration system/src/test/org/apache/geronimo/system/configuration

Posted by Dain Sundstrom <ds...@gluecode.com>.
DOH!  I'm about to run out... I'll fix it when I get back.

-dain


On Nov 1, 2004, at 7:48 PM, David Jencks wrote:

> Is MockGBean really supposed to be in java rather than test?
>
> david jencks
>
> On Nov 1, 2004, at 7:45 PM, dain@apache.org wrote:
>
>> Author: dain
>> Date: Mon Nov  1 19:45:48 2004
>> New Revision: 56340
>>
>> Added:
>>     
>> geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/ 
>> configuration/MockGBean.java
>> Modified:
>>     
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/DeploymentContext.java
>>     
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/service/GBeanBuilder.java
>>     
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/service/GBeanHelper.java
>>     
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/ 
>> GBeanData.java
>>     
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/ 
>> GBeanMBean.java
>>     
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
>> Kernel.java
>>     
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
>> config/Configuration.java
>>     
>> geronimo/trunk/modules/system/src/test/org/apache/geronimo/system/ 
>> configuration/LocalConfigStoreTest.java
>> Log:
>> Moved object name into GBeanData
>>
>>
>> Modified:  
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/DeploymentContext.java
>> ====================================================================== 
>> ========
>> ---  
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/DeploymentContext.java	(original)
>> +++  
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/DeploymentContext.java	Mon Nov  1 19:45:48 2004
>> @@ -155,9 +155,9 @@
>>          gbeans.put(name, gbean);
>>      }
>>
>> -    public void addGBean(ObjectName name, GBeanData gbean,  
>> ClassLoader classLoader) {
>> +    public void addGBean(GBeanData gbean, ClassLoader classLoader) {
>>          GBeanMBean gbeanMBean = new GBeanMBean(gbean, classLoader);
>> -        gbeans.put(name, gbeanMBean);
>> +        gbeans.put(gbean.getName(), gbeanMBean);
>>      }
>>
>>      public void addDependency(URI uri) {
>>
>> Modified:  
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/service/GBeanBuilder.java
>> ====================================================================== 
>> ========
>> ---  
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/service/GBeanBuilder.java	(original)
>> +++  
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/service/GBeanBuilder.java	Mon Nov  1 19:45:48 2004
>> @@ -35,13 +35,13 @@
>>   * @version $Rev$ $Date$
>>   */
>>  public class GBeanBuilder {
>> -    private final ObjectName name;
>>      private final GBeanData gbean;
>>      private final ClassLoader classLoader;
>>
>>      public GBeanBuilder(String name, ClassLoader classLoader, String  
>> className) throws DeploymentException {
>> +        ObjectName objectName;
>>          try {
>> -            this.name = new ObjectName(name);
>> +            objectName = new ObjectName(name);
>>          } catch (MalformedObjectNameException e) {
>>              throw new DeploymentException("Invalid ObjectName: " +  
>> name, e);
>>          }
>> @@ -49,7 +49,7 @@
>>          this.classLoader = classLoader;
>>
>>          try {
>> -            gbean = new GBeanData(GBeanInfo.getGBeanInfo(className,  
>> classLoader));
>> +            gbean = new GBeanData(objectName,  
>> GBeanInfo.getGBeanInfo(className, classLoader));
>>          } catch (Exception e) {
>>              throw new DeploymentException("Unable to create GBean  
>> from class " + className, e);
>>          }
>> @@ -95,9 +95,5 @@
>>
>>      public GBeanData getGBeanData() {
>>          return gbean;
>> -    }
>> -
>> -    public ObjectName getName() {
>> -        return name;
>>      }
>>  }
>>
>> Modified:  
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/service/GBeanHelper.java
>> ====================================================================== 
>> ========
>> ---  
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/service/GBeanHelper.java	(original)
>> +++  
>> geronimo/trunk/modules/deployment/src/java/org/apache/geronimo/ 
>> deployment/service/GBeanHelper.java	Mon Nov  1 19:45:48 2004
>> @@ -45,6 +45,6 @@
>>              builder.setReference(gbean.getReferencesName(j),  
>> gbean.getReferencesPatternArray(j));
>>          }
>>
>> -        context.addGBean(builder.getName(), builder.getGBeanData(),  
>> cl);
>> +        context.addGBean(builder.getGBeanData(), cl);
>>      }
>>  }
>>
>> Modified:  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/ 
>> GBeanData.java
>> ====================================================================== 
>> ========
>> ---  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/ 
>> GBeanData.java	(original)
>> +++  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/ 
>> GBeanData.java	Mon Nov  1 19:45:48 2004
>> @@ -32,6 +32,7 @@
>>   * @version $Rev$ $Date$
>>   */
>>  public class GBeanData implements Externalizable {
>> +    private ObjectName name;
>>      private GBeanInfo gbeanInfo;
>>      private final Map attributes;
>>      private final Map references;
>> @@ -41,18 +42,28 @@
>>          references = new HashMap();
>>      }
>>
>> -    public GBeanData(GBeanInfo gbeanInfo) {
>> +    public GBeanData(ObjectName name, GBeanInfo gbeanInfo) {
>> +        this.name = name;
>>          this.gbeanInfo = gbeanInfo;
>>          attributes = new HashMap();
>>          references = new HashMap();
>>      }
>>
>>      public GBeanData(GBeanData gbeanData) {
>> +        name = gbeanData.name;
>>          gbeanInfo = gbeanData.gbeanInfo;
>>          attributes = new HashMap(gbeanData.attributes);
>>          references = new HashMap(gbeanData.references);
>>      }
>>
>> +    public ObjectName getName() {
>> +        return name;
>> +    }
>> +
>> +    public void setName(ObjectName name) {
>> +        this.name = name;
>> +    }
>> +
>>      public GBeanInfo getGBeanInfo() {
>>          return gbeanInfo;
>>      }
>> @@ -101,6 +112,9 @@
>>          // write the gbean info
>>          out.writeObject(gbeanInfo);
>>
>> +        // write the object name
>> +        out.writeObject(name);
>> +
>>          // write the attributes
>>          out.writeInt(attributes.size());
>>          for (Iterator iterator = attributes.entrySet().iterator();  
>> iterator.hasNext();) {
>> @@ -135,16 +149,29 @@
>>          // read the gbean info
>>          gbeanInfo = (GBeanInfo) in.readObject();
>>
>> -        // read the attributes
>> -        int attributeCount = in.readInt();
>> -        for (int i = 0; i < attributeCount; i++) {
>> -            setAttribute((String) in.readObject(), in.readObject());
>> +        // read the object name
>> +        try {
>> +            name = (ObjectName) in.readObject();
>> +        } catch (IOException e) {
>> +            throw (IOException) new IOException("Unable to  
>> deserialize ObjectName for GBeanData of type " +  
>> gbeanInfo.getClassName()).initCause(e);
>>          }
>>
>> -        // read the references
>> -        int endpointCount = in.readInt();
>> -        for (int i = 0; i < endpointCount; i++) {
>> -            setReferencePatterns((String) in.readObject(), (Set)  
>> in.readObject());
>> +        try {
>> +            // read the attributes
>> +            int attributeCount = in.readInt();
>> +            for (int i = 0; i < attributeCount; i++) {
>> +                setAttribute((String) in.readObject(),  
>> in.readObject());
>> +            }
>> +
>> +            // read the references
>> +            int endpointCount = in.readInt();
>> +            for (int i = 0; i < endpointCount; i++) {
>> +                setReferencePatterns((String) in.readObject(), (Set)  
>> in.readObject());
>> +            }
>> +        } catch (IOException e) {
>> +            throw (IOException) new IOException("Unable to  
>> deserialize GBeanData " + name).initCause(e);
>> +        } catch (ClassNotFoundException e) {
>> +            throw new ClassNotFoundException("Unable to find class  
>> used in GBeanData " + name, e);
>>          }
>>      }
>>  }
>>
>> Modified:  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/ 
>> GBeanMBean.java
>> ====================================================================== 
>> ========
>> ---  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/ 
>> GBeanMBean.java	(original)
>> +++  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/gbean/jmx/ 
>> GBeanMBean.java	Mon Nov  1 19:45:48 2004
>> @@ -684,10 +684,7 @@
>>       * @return the gbean data
>>       */
>>      public GBeanData getGBeanData() {
>> -        GBeanData gbeanData = new GBeanData();
>> -
>> -        // add the gbean info
>> -        gbeanData.setGBeanInfo(gbeanInfo);
>> +        GBeanData gbeanData = new GBeanData(objectName, gbeanInfo);
>>
>>          // add the attributes
>>          for (int i = 0; i < attributes.length; i++) {
>>
>> Modified:  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
>> Kernel.java
>> ====================================================================== 
>> ========
>> ---  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
>> Kernel.java	(original)
>> +++  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
>> Kernel.java	Mon Nov  1 19:45:48 2004
>> @@ -282,14 +282,14 @@
>>          }
>>      }
>>
>> -    public void loadGBean(ObjectName name, GBeanData gbeanData,  
>> ClassLoader classLoader) throws InstanceAlreadyExistsException,  
>> InvalidConfigException {
>> +    public void loadGBean(GBeanData gbeanData, ClassLoader  
>> classLoader) throws InstanceAlreadyExistsException,  
>> InvalidConfigException {
>>          try {
>>              GBeanMBean gbean = new GBeanMBean(gbeanData,  
>> classLoader);
>> -            mbServer.registerMBean(gbean, name);
>> +            mbServer.registerMBean(gbean, gbeanData.getName());
>>          } catch (MBeanRegistrationException e) {
>> -            throw new InvalidConfigException("Invalid GBean  
>> configuration for " + name, e);
>> +            throw new InvalidConfigException("Invalid GBean  
>> configuration for " + gbeanData.getName(), e);
>>          } catch (NotCompliantMBeanException e) {
>> -            throw new InvalidConfigException("Invalid GBean  
>> configuration for " + name, e);
>> +            throw new InvalidConfigException("Invalid GBean  
>> configuration for " + gbeanData.getName(), e);
>>          }
>>      }
>>
>>
>> Modified:  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
>> config/Configuration.java
>> ====================================================================== 
>> ========
>> ---  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
>> config/Configuration.java	(original)
>> +++  
>> geronimo/trunk/modules/kernel/src/java/org/apache/geronimo/kernel/ 
>> config/Configuration.java	Mon Nov  1 19:45:48 2004
>> @@ -349,18 +349,15 @@
>>       */
>>      private static Map loadGBeans(byte[] gbeanState, ClassLoader cl)  
>> throws InvalidConfigException {
>>          Map gbeans = new HashMap();
>> -        ObjectName objectName = null;
>>          try {
>>              ObjectInputStream ois = new ConfigInputStream(new  
>> ByteArrayInputStream(gbeanState), cl);
>>              try {
>>                  while (true) {
>> -                    objectName = (ObjectName) ois.readObject();
>> -
>>                      GBeanData gbeanData = new GBeanData();
>>                      gbeanData.readExternal(ois);
>>                      GBeanMBean gbean = new GBeanMBean(gbeanData, cl);
>>
>> -                    gbeans.put(objectName, gbean);
>> +                    gbeans.put(gbeanData.getName(), gbean);
>>                  }
>>              } catch (EOFException e) {
>>                  // ok
>> @@ -369,8 +366,7 @@
>>              }
>>              return gbeans;
>>          } catch (Exception e) {
>> -            throw new InvalidConfigException("Unable to deserialize  
>> GBeanState" +
>> -                    (objectName == null ? "" : " " + objectName), e);
>> +            throw new InvalidConfigException("Unable to deserialize  
>> GBeanState", e);
>>          }
>>      }
>>
>> @@ -401,8 +397,11 @@
>>              ObjectName objectName = (ObjectName) entry.getKey();
>>              GBeanMBean gbean = (GBeanMBean) entry.getValue();
>>              try {
>> -                oos.writeObject(objectName);
>> -                gbean.getGBeanData().writeExternal(oos);
>> +                GBeanData gbeanData = gbean.getGBeanData();
>> +                // todo we must explicitly set the bean name here  
>> from the gbean key because the gbean mbean may
>> +                // not have been brought online, so the object namve  
>> in the gbean mbean will be null
>> +                gbeanData.setName(objectName);
>> +                gbeanData.writeExternal(oos);
>>              } catch (Exception e) {
>>                  throw new InvalidConfigException("Unable to  
>> serialize GBeanState for " + objectName, e);
>>              }
>>
>> Added:  
>> geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/ 
>> configuration/MockGBean.java
>> ====================================================================== 
>> ========
>> --- (empty file)
>> +++  
>> geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/ 
>> configuration/MockGBean.java	Mon Nov  1 19:45:48 2004
>> @@ -0,0 +1,49 @@
>> +/**
>> + *
>> + * Copyright 2003-2004 The Apache Software Foundation
>> + *
>> + *  Licensed under the Apache License, Version 2.0 (the "License");
>> + *  you may not use this file except in compliance with the License.
>> + *  You may obtain a copy of the License at
>> + *
>> + *     http://www.apache.org/licenses/LICENSE-2.0
>> + *
>> + *  Unless required by applicable law or agreed to in writing,  
>> software
>> + *  distributed under the License is distributed on an "AS IS" BASIS,
>> + *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  
>> implied.
>> + *  See the License for the specific language governing permissions  
>> and
>> + *  limitations under the License.
>> + */
>> +
>> +package org.apache.geronimo.system.configuration;
>> +
>> +import org.apache.geronimo.gbean.GBeanInfo;
>> +import org.apache.geronimo.gbean.GBeanInfoBuilder;
>> +
>> +/**
>> + * @version $Rev: 46019 $ $Date: 2004-09-14 02:56:06 -0700 (Tue, 14  
>> Sep 2004) $
>> + */
>> +public class MockGBean {
>> +    private static final GBeanInfo GBEAN_INFO;
>> +
>> +    private String value;
>> +
>> +    public String getValue() {
>> +        return value;
>> +    }
>> +
>> +    public void setValue(String value) {
>> +        this.value = value;
>> +    }
>> +
>> +    public static GBeanInfo getGBeanInfo() {
>> +        return GBEAN_INFO;
>> +    }
>> +
>> +    static {
>> +        GBeanInfoBuilder infoBuilder = new  
>> GBeanInfoBuilder("MockGBean", MockGBean.class);
>> +        infoBuilder.addAttribute("value", String.class, true);
>> +
>> +        GBEAN_INFO = infoBuilder.getBeanInfo();
>> +    }
>> +}
>>
>> Modified:  
>> geronimo/trunk/modules/system/src/test/org/apache/geronimo/system/ 
>> configuration/LocalConfigStoreTest.java
>> ====================================================================== 
>> ========
>> ---  
>> geronimo/trunk/modules/system/src/test/org/apache/geronimo/system/ 
>> configuration/LocalConfigStoreTest.java	(original)
>> +++  
>> geronimo/trunk/modules/system/src/test/org/apache/geronimo/system/ 
>> configuration/LocalConfigStoreTest.java	Mon Nov  1 19:45:48 2004
>> @@ -130,10 +130,10 @@
>>              root.mkdir();
>>
>>              storeName = new  
>> ObjectName("geronimo.test: 
>> role=ConfigurationStore,name=LocalConfigStore");
>> -            GBeanData store = new  
>> GBeanData(LocalConfigStore.getGBeanInfo());
>> +            GBeanData store = new GBeanData(storeName,  
>> LocalConfigStore.getGBeanInfo());
>>              store.setAttribute("root", root.toURI());
>>
>> -            kernel.loadGBean(storeName, store,  
>> getClass().getClassLoader());
>> +            kernel.loadGBean(store, getClass().getClassLoader());
>>              kernel.startGBean(storeName);
>>
>>              GBeanMBean gbean = new  
>> GBeanMBean(Configuration.GBEAN_INFO);
>>