2005-05-25 Audrius Meskauskas <[EMAIL PROTECTED]>
* org/omg/CORBA/ValueBaseHelper.java, org/omg/CORBA/ValueBaseHolder.java, org/omg/CORBA/portable/ValueBase.java: New files.* gnu/CORBA/gnuAny.java (insert_Value, extract_Value): Implementing dependent methods.
ValueBase.patch
Description: Binary data
/* ValueBaseHolder.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package org.omg.CORBA;
import org.omg.CORBA.portable.InputStream;
import org.omg.CORBA.portable.OutputStream;
import org.omg.CORBA.portable.Streamable;
import java.io.Serializable;
/**
* A holder to store a [EMAIL PROTECTED] ValueBase} that is handled as
* [EMAIL PROTECTED] Serializable} here.
*
* @author Audrius Meskauskas, Lithuania ([EMAIL PROTECTED])
*/
public class ValueBaseHolder
implements Streamable
{
/**
* A stored value of the value base type.
*/
public Serializable value;
/**
* Create an unitialised instance.
*/
public ValueBaseHolder()
{
}
/**
* Create an instance, initialised into the given value.
*
* @param initial an initial value.
*/
public ValueBaseHolder(Serializable initial)
{
value = initial;
}
/**
* Read fill in the value field by reading an instance from the
* given input stream. Uses [EMAIL PROTECTED] ValueBaseHelper.}
*
* @param input a stream to read from.
*/
public void _read(InputStream input)
{
value = ValueBaseHelper.read(input);
}
/**
* Get the typecode of the stored instance. Uses [EMAIL PROTECTED] ValueBaseHelper.}
*/
public TypeCode _type()
{
return ValueBaseHelper.type();
}
/**
* Write the stored instance to the given input stream.
* Uses [EMAIL PROTECTED] ValueBaseHelper.}
*
* @param input a stream to read from.
*/
public void _write(OutputStream output)
{
ValueBaseHelper.write(output, value);
}
}/* ValueBaseHelper.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package org.omg.CORBA;
import gnu.CORBA.recordTypeCode;
import org.omg.CORBA.portable.InputStream;
import org.omg.CORBA.portable.OutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
* A helper operations for the value base type ([EMAIL PROTECTED] ValueBase}).
*
* @author Audrius Meskauskas, Lithuania ([EMAIL PROTECTED])
*/
public abstract class ValueBaseHelper
{
/**
* Extract the value type from the given Any.
*
* @param a the Any to extract from.
*
* @return the extracted value type.
*/
public static Serializable extract(Any a)
{
return a.extract_Value();
}
/**
* Return the value base helper repository id.
*
* @return IDL:omg.org/CORBA/ValueBase:1.0, always.
*/
public static String id()
{
return "IDL:omg.org/CORBA/ValueBase:1.0";
}
/**
* Insert the value base that is Serializable into
* the given Any.
*
* @param a the Any to insert into.
* @param that the value base to insert.
*/
public static void insert(Any a, Serializable that)
{
a.insert_Value(that);
}
/**
* Read the value base from the given input stream.
* This implementation initialises the [EMAIL PROTECTED] ObjectInputStream}
* and reads from it.
*
* @param istream a stream to read from.
*
* @return the loaded value.
*
* @throws MARSHAL if the reading has failed due any reason.
*/
public static Serializable read(InputStream output)
{
// Explicitly prevent the stream from closing as we may need
// to read the subsequent bytes as well. Stream may be auto-closed
// in its finalizer.
try
{
ObjectInputStream oin =
new ObjectInputStream(output)
{
public void close()
{
}
};
return (Serializable) oin.readObject();
}
catch (Exception ex)
{
throw new MARSHAL(ex + ":" + ex.getMessage());
}
}
/**
* Get the typecode of the value type.
* @return
*/
public static TypeCode type()
{
recordTypeCode r = new recordTypeCode(TCKind.tk_value);
return r;
}
/**
* Write the value base into the given stream. This implementation
* initialises the [EMAIL PROTECTED] ObjectOutputStream} and writes through it.
*
* @param ostream a stream to write to.
*
* @param value a value to write.
*
* @throws MARSHAL if the writing failed due any reason.
*/
public static void write(OutputStream input, Serializable value)
{
// Explicitly prevent the stream from closing as we may need
// to read the subsequent bytes as well. Stream may be auto-closed
// in its finalizer.
try
{
ObjectOutputStream oout =
new ObjectOutputStream(input)
{
public void close()
throws IOException
{
flush();
}
};
oout.writeObject(value);
oout.flush();
}
catch (IOException ex)
{
throw new MARSHAL(ex + ":" + ex.getMessage());
}
}
}/* ValueBase.java --
Copyright (C) 2005 Free Software Foundation, Inc.
This file is part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; see the file COPYING. If not, write to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA.
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version. */
package org.omg.CORBA.portable;
/**
* ValueBase is the basic interface for all CORBA value data types. A value
* type is something between CORBA structure and CORBA object. Like CORBA
* object, it can have methods, supporting some IDL-defined interface.
* However, like structures, they are always local and passed by value,
* not by IOR reference. The Sun's implementation transfers the value types
* using java serialization mechanism.
*
* Unlike CORBA objects, values are not connected to any ORB by
* default; they hanlde the implemented functionality locally. The classes,
* required to implement that functionality, should either be pre-defined
* or they can be downloaded from the certain URL, defined as CodeBase.
*
* The value types can have both public and private members. They support
* inheritance. Value types can also be abstract.
*
* @author Audrius Meskauskas, Lithuania ([EMAIL PROTECTED])
*/
public interface ValueBase
extends IDLEntity
{
/**
* Get the truncatable repository ids.
*
* @return the array of repository ids, defining the base types, to that
* basic types this value base can be truncated.
*/
String[] _truncatable_ids();
}_______________________________________________ Classpath-patches mailing list [email protected] http://lists.gnu.org/mailman/listinfo/classpath-patches
