Frames | No Frames |
1: /* CorbaOutput.java -- 2: Copyright (C) 2005 Free Software Foundation, Inc. 3: 4: This file is part of GNU Classpath. 5: 6: GNU Classpath is free software; you can redistribute it and/or modify 7: it under the terms of the GNU General Public License as published by 8: the Free Software Foundation; either version 2, or (at your option) 9: any later version. 10: 11: GNU Classpath is distributed in the hope that it will be useful, but 12: WITHOUT ANY WARRANTY; without even the implied warranty of 13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14: General Public License for more details. 15: 16: You should have received a copy of the GNU General Public License 17: along with GNU Classpath; see the file COPYING. If not, write to the 18: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19: 02110-1301 USA. 20: 21: Linking this library statically or dynamically with other modules is 22: making a combined work based on this library. Thus, the terms and 23: conditions of the GNU General Public License cover the whole 24: combination. 25: 26: As a special exception, the copyright holders of this library give you 27: permission to link this library with independent modules to produce an 28: executable, regardless of the license terms of these independent 29: modules, and to copy and distribute the resulting executable under 30: terms of your choice, provided that you also meet, for each linked 31: independent module, the terms and conditions of the license of that 32: module. An independent module is a module which is not derived from 33: or based on this library. If you modify this library, you may extend 34: this exception to your version of the library, but you are not 35: obligated to do so. If you do not wish to do so, delete this 36: exception statement from your version. */ 37: 38: 39: package gnu.javax.rmi.CORBA; 40: 41: import org.omg.CORBA_2_3.portable.OutputStream; 42: 43: import java.io.IOException; 44: import java.io.ObjectOutput; 45: import java.io.ObjectOutputStream; 46: import java.io.Serializable; 47: 48: /** 49: * A class to substitute as an ObjectOutputStream for objects using writeObject 50: * method. 51: * 52: * @author Audrius Meskauskas, Lithuania (AudriusA@Bioinformatics.org) 53: */ 54: public class CorbaOutput 55: extends ObjectOutputStream 56: implements ObjectOutput 57: { 58: /** 59: * A CORBA stream where the output is forwarded. 60: */ 61: final OutputStream stream; 62: 63: /** 64: * The utility class to write the object fields in default way. 65: */ 66: final RmiUtilities util; 67: 68: /** 69: * The object currently being written. 70: */ 71: Object current; 72: 73: /** 74: * Create an instance, delegating calls to the given CORBA stream. 75: */ 76: public CorbaOutput(OutputStream an_output, Object firstObject, 77: RmiUtilities an_util) 78: throws Exception 79: { 80: stream = an_output; 81: current = firstObject; 82: util = an_util; 83: } 84: 85: /** 86: * No action. 87: */ 88: public void close() 89: throws IOException 90: { 91: } 92: 93: /** @inheritDoc */ 94: public void flush() 95: throws IOException 96: { 97: stream.flush(); 98: } 99: 100: /** @inheritDoc */ 101: public void write(byte[] buf, int off, int len) 102: throws IOException 103: { 104: stream.write(buf, off, len); 105: } 106: 107: /** @inheritDoc */ 108: public void write(byte[] buf) 109: throws IOException 110: { 111: stream.write(buf); 112: } 113: 114: /** @inheritDoc */ 115: public void write(int val) 116: throws IOException 117: { 118: stream.write(val); 119: } 120: 121: /** @inheritDoc */ 122: public void writeBoolean(boolean val) 123: throws IOException 124: { 125: stream.write_boolean(val); 126: } 127: 128: /** @inheritDoc */ 129: public void writeByte(int val) 130: throws IOException 131: { 132: stream.write(val); 133: } 134: 135: /** @inheritDoc */ 136: public void writeBytes(String str) 137: throws IOException 138: { 139: stream.write_string(str); 140: } 141: 142: /** @inheritDoc */ 143: public void writeChar(int val) 144: throws IOException 145: { 146: stream.write_wchar((char) val); 147: } 148: 149: /** @inheritDoc */ 150: public void writeChars(String str) 151: throws IOException 152: { 153: stream.write_char_array(str.toCharArray(), 0, str.length()); 154: } 155: 156: /** @inheritDoc */ 157: public void writeDouble(double val) 158: throws IOException 159: { 160: stream.write_double(val); 161: } 162: 163: /** @inheritDoc */ 164: public void writeFloat(float val) 165: throws IOException 166: { 167: stream.write_float(val); 168: } 169: 170: /** @inheritDoc */ 171: public void writeInt(int val) 172: throws IOException 173: { 174: stream.write_long(val); 175: } 176: 177: /** @inheritDoc */ 178: public void writeLong(long val) 179: throws IOException 180: { 181: stream.write_longlong(val); 182: } 183: 184: /** 185: * Objects are written as abstract interfaces. 186: */ 187: protected void writeObjectOverride(Object obj) 188: throws IOException 189: { 190: current = obj; 191: stream.write_abstract_interface(obj); 192: } 193: 194: /** @inheritDoc */ 195: public void writeShort(int val) 196: throws IOException 197: { 198: stream.write_short((short) val); 199: } 200: 201: /** 202: * Such strings are written as wide strings, not as UTF. 203: */ 204: public void writeUTF(String str) 205: throws IOException 206: { 207: stream.write_wstring(str); 208: } 209: 210: /** 211: * @inheritDoc 212: */ 213: public void defaultWriteObject() 214: throws IOException 215: { 216: util.writeFields(stream, (Serializable) current); 217: } 218: 219: }