Great work (I've been meaning to get on to this for a while) but I don't see
this patch on Classpath HEAD.
--
Andrew :)
On Wednesday 04 April 2007 19:27, Andrew Haley wrote:
> Another patch for JBoss.
>
> Andrew.
>
>
> 2007-04-04 Andrew Haley <[EMAIL PROTECTED]>
>
> * javax/management/ObjectName.java serialVersionUID: Declare.
> Make all fields transient.
> (parse): Break out from constructor.
> (writeObject, readObject): New methods.
>
> Index: ObjectName.java
> ===================================================================
> --- ObjectName.java (revision 123473)
> +++ ObjectName.java (working copy)
> @@ -45,6 +45,11 @@
> import java.util.Map;
> import java.util.TreeMap;
>
> +import java.io.IOException;
> +import java.io.InvalidObjectException;
> +import java.io.ObjectInputStream;
> +import java.io.ObjectOutputStream;
> +
> /**
> * <p>
> * An [EMAIL PROTECTED] ObjectName} instance represents the name of a
> management
> @@ -97,30 +102,32 @@
> implements Serializable, QueryExp
> {
>
> + private static final long serialVersionUID = 1081892073854801359L;
> +
> /**
> * The domain of the name.
> */
> - private String domain;
> + private transient String domain;
>
> /**
> * The properties, as key-value pairs.
> */
> - private TreeMap<String,String> properties = new
> TreeMap<String,String>(); + private transient TreeMap<String,String>
> properties;
>
> /**
> * The properties as a string (stored for ordering).
> */
> - private String propertyListString;
> + private transient String propertyListString;
>
> /**
> * True if this object name is a property pattern.
> */
> - private boolean propertyPattern;
> + private transient boolean propertyPattern;
>
> /**
> * The management server associated with this object name.
> */
> - private MBeanServer server;
> + private transient MBeanServer server;
>
> /**
> * Constructs an [EMAIL PROTECTED] ObjectName} instance from the given
> string,
> @@ -145,12 +152,23 @@
> {
> if (name.length() == 0)
> name = "*:*";
> + parse(name);
> + }
> +
> + /**
> + * Parse the name in the same form as the constructor. Used by
> + * readObject().
> + */
>
> + private void parse(String name)
> + throws MalformedObjectNameException
> + {
> int domainSep = name.indexOf(':');
> if (domainSep == -1)
> throw new MalformedObjectNameException("No domain separator was
> found."); domain = name.substring(0, domainSep);
> String rest = name.substring(domainSep + 1);
> + properties = new TreeMap<String,String>();
> if (rest.equals("*"))
> propertyPattern = true;
> else
> @@ -199,6 +217,7 @@
> throws MalformedObjectNameException
> {
> this.domain = domain;
> + properties = new TreeMap<String,String>();
> properties.put(key, value);
> checkComponents();
> }
> @@ -221,6 +240,7 @@
> throws MalformedObjectNameException
> {
> this.domain = domain;
> + this.properties = new TreeMap<String,String>();
> this.properties.putAll(properties);
> checkComponents();
> }
> @@ -741,6 +761,46 @@
> return getCanonicalName();
> }
>
> +
> + /**
> + * Serialization methods. The serialized form is the same as the
> + * string parsed by the constructor.
> + */
> +
> + private void writeObject(ObjectOutputStream out)
> + throws IOException
> + {
> + out.defaultWriteObject();
> + StringBuffer buffer = new StringBuffer(getDomain());
> + buffer.append(':');
> + String properties = getKeyPropertyListString();
> + buffer.append(properties);
> + if (isPropertyPattern())
> + {
> + if (properties.length() == 0)
> + buffer.append("*");
> + else
> + buffer.append(",*");
> + }
> + out.writeObject(buffer.toString());
> + }
> +
> + private void readObject(ObjectInputStream in)
> + throws IOException, ClassNotFoundException
> + {
> + in.defaultReadObject();
> + String objectName = (String)in.readObject();
> + try
> + {
> + parse(objectName);
> + }
> + catch (MalformedObjectNameException x)
> + {
> + throw new InvalidObjectException(x.toString());
> + }
> + }
> +
> +
> /**
> * Unquotes the supplied string. The quotation marks are removed as
> * are the backslashes preceding the escaped characters ('"', '?',
--
--
Andrew :)
PhD Student
Verification and Testing Research Group
The University of Sheffield
http://www.dcs.shef.ac.uk/~andrew