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); >