Commit 2f69f684 by Andrew Haley Committed by Andrew Haley

TaggedComponentHelper.java (read): Use read_octet_array(), not read().

2007-04-16  Andrew Haley  <aph@redhat.com>

        * org/omg/IOP/TaggedComponentHelper.java (read): Use
        read_octet_array(), not read().
        (write): Use write_octet_array(), not write().

        * org/omg/PortableServer/Servant.java (_get_delegate): Throw if no
        delegate has been set.

        * javax/management/ObjectName.java serialVersionUID: Declare.
        Make all fields transient.
        (parse): Break out from constructor.
        (writeObject, readObject): New methods.

From-SVN: r123864
parent 8dd58f01
2007-04-16 Andrew Haley <aph@redhat.com>
* org/omg/IOP/TaggedComponentHelper.java (read): Use
read_octet_array(), not read().
(write): Use write_octet_array(), not write().
* org/omg/PortableServer/Servant.java (_get_delegate): Throw if no
delegate has been set.
* javax/management/ObjectName.java serialVersionUID: Declare.
Make all fields transient.
(parse): Break out from constructor.
(writeObject, readObject): New methods.
2007-04-02 Keith Seitz <keiths@redhat.com> 2007-04-02 Keith Seitz <keiths@redhat.com>
* gnu/classpath/jdwp/event/ThreadStartEvent.java (Event): * gnu/classpath/jdwp/event/ThreadStartEvent.java (Event):
...@@ -45,6 +45,11 @@ import java.util.Iterator; ...@@ -45,6 +45,11 @@ import java.util.Iterator;
import java.util.Map; import java.util.Map;
import java.util.TreeMap; import java.util.TreeMap;
import java.io.IOException;
import java.io.InvalidObjectException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/** /**
* <p> * <p>
* An {@link ObjectName} instance represents the name of a management * An {@link ObjectName} instance represents the name of a management
...@@ -97,30 +102,32 @@ public class ObjectName ...@@ -97,30 +102,32 @@ public class ObjectName
implements Serializable, QueryExp implements Serializable, QueryExp
{ {
private static final long serialVersionUID = 1081892073854801359L;
/** /**
* The domain of the name. * The domain of the name.
*/ */
private String domain; private transient String domain;
/** /**
* The properties, as key-value pairs. * 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). * The properties as a string (stored for ordering).
*/ */
private String propertyListString; private transient String propertyListString;
/** /**
* True if this object name is a property pattern. * True if this object name is a property pattern.
*/ */
private boolean propertyPattern; private transient boolean propertyPattern;
/** /**
* The management server associated with this object name. * The management server associated with this object name.
*/ */
private MBeanServer server; private transient MBeanServer server;
/** /**
* Constructs an {@link ObjectName} instance from the given string, * Constructs an {@link ObjectName} instance from the given string,
...@@ -145,12 +152,23 @@ public class ObjectName ...@@ -145,12 +152,23 @@ public class ObjectName
{ {
if (name.length() == 0) if (name.length() == 0)
name = "*:*"; 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(':'); int domainSep = name.indexOf(':');
if (domainSep == -1) if (domainSep == -1)
throw new MalformedObjectNameException("No domain separator was found."); throw new MalformedObjectNameException("No domain separator was found.");
domain = name.substring(0, domainSep); domain = name.substring(0, domainSep);
String rest = name.substring(domainSep + 1); String rest = name.substring(domainSep + 1);
properties = new TreeMap<String,String>();
if (rest.equals("*")) if (rest.equals("*"))
propertyPattern = true; propertyPattern = true;
else else
...@@ -199,6 +217,7 @@ public class ObjectName ...@@ -199,6 +217,7 @@ public class ObjectName
throws MalformedObjectNameException throws MalformedObjectNameException
{ {
this.domain = domain; this.domain = domain;
properties = new TreeMap<String,String>();
properties.put(key, value); properties.put(key, value);
checkComponents(); checkComponents();
} }
...@@ -221,6 +240,7 @@ public class ObjectName ...@@ -221,6 +240,7 @@ public class ObjectName
throws MalformedObjectNameException throws MalformedObjectNameException
{ {
this.domain = domain; this.domain = domain;
this.properties = new TreeMap<String,String>();
this.properties.putAll(properties); this.properties.putAll(properties);
checkComponents(); checkComponents();
} }
...@@ -741,6 +761,46 @@ public class ObjectName ...@@ -741,6 +761,46 @@ public class ObjectName
return getCanonicalName(); 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 * Unquotes the supplied string. The quotation marks are removed as
* are the backslashes preceding the escaped characters ('"', '?', * are the backslashes preceding the escaped characters ('"', '?',
......
...@@ -136,18 +136,9 @@ public abstract class TaggedComponentHelper ...@@ -136,18 +136,9 @@ public abstract class TaggedComponentHelper
{ {
TaggedComponent value = new TaggedComponent(); TaggedComponent value = new TaggedComponent();
value.tag = input.read_long(); value.tag = input.read_long();
value.component_data = new byte[input.read_long()]; int length = input.read_long();
try value.component_data = new byte[length];
{ input.read_octet_array(value.component_data, 0, length);
input.read(value.component_data);
}
catch (IOException e)
{
MARSHAL m = new MARSHAL();
m.minor = Minor.Encapsulation;
m.initCause(e);
throw m;
}
return value; return value;
} }
...@@ -163,17 +154,6 @@ public abstract class TaggedComponentHelper ...@@ -163,17 +154,6 @@ public abstract class TaggedComponentHelper
{ {
output.write_long(value.tag); output.write_long(value.tag);
output.write_long(value.component_data.length); output.write_long(value.component_data.length);
output.write_octet_array(value.component_data, 0, value.component_data.length);
try
{
output.write(value.component_data);
}
catch (IOException e)
{
MARSHAL m = new MARSHAL();
m.minor = Minor.Encapsulation;
m.initCause(e);
throw m;
}
} }
} }
\ No newline at end of file
...@@ -39,6 +39,7 @@ exception statement from your version. */ ...@@ -39,6 +39,7 @@ exception statement from your version. */
package org.omg.PortableServer; package org.omg.PortableServer;
import org.omg.CORBA.BAD_OPERATION; import org.omg.CORBA.BAD_OPERATION;
import org.omg.CORBA.BAD_INV_ORDER;
import org.omg.CORBA.NO_IMPLEMENT; import org.omg.CORBA.NO_IMPLEMENT;
import org.omg.CORBA.OBJECT_NOT_EXIST; import org.omg.CORBA.OBJECT_NOT_EXIST;
import org.omg.CORBA.ORB; import org.omg.CORBA.ORB;
...@@ -109,6 +110,10 @@ public abstract class Servant ...@@ -109,6 +110,10 @@ public abstract class Servant
*/ */
public final Delegate _get_delegate() public final Delegate _get_delegate()
{ {
if (delegate == null) {
throw new BAD_INV_ORDER
("The Servant has not been associated with an ORBinstance");
}
return delegate; return delegate;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment