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

Reply via email to