001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: *
015: * See the License for the specific language governing permissions and
016: * limitations under the License.
017: */
018:
019: /**
020: * @author Mikhail A. Markov
021: * @version $Revision: 1.1.2.2 $
022: */package org.apache.harmony.rmi.remoteref;
023:
024: import java.io.IOException;
025: import java.io.ObjectInput;
026: import java.io.ObjectOutput;
027: import java.rmi.server.ObjID;
028: import java.rmi.server.RMIClientSocketFactory;
029:
030: import org.apache.harmony.rmi.transport.Endpoint;
031:
032: /**
033: * Handle of remote objects using custom client socket factory.
034: *
035: * @author Mikhail A. Markov
036: * @version $Revision: 1.1.2.2 $
037: */
038: public class UnicastRef2 extends UnicastRef {
039:
040: private static final long serialVersionUID = 1358245507919642056L;
041:
042: /**
043: * Default constructor: constructs an empty instance of this class.
044: */
045: public UnicastRef2() {
046: super ();
047: }
048:
049: /**
050: * Constructs UnicastRef2.
051: *
052: * @param host host name where remote object impl. is located.
053: * @param port port on remote host where remote object accepts RMI calls
054: * @param objId Object ID of remoteObject
055: * @param csf client-side socket factory; if null - then default socket
056: * factory will be used (call RMISocketFactory.getSocketFactory
057: * method and if it returns null, then call
058: * RMISocketFactory.getDefaultSocketFactory)
059: */
060: public UnicastRef2(String host, int port,
061: RMIClientSocketFactory csf, ObjID objId) {
062: this (new Endpoint(host, port, csf, null), objId);
063: }
064:
065: /**
066: * Constructs UnicastRef2 using specified Endpoint.
067: *
068: * @param ep Endpoint for remote calls
069: * @param objId Object ID of remote object
070: */
071: public UnicastRef2(Endpoint ep, ObjID objId) {
072: super (ep, objId);
073: }
074:
075: /**
076: * Constructs UnicastRef2 using specified Endpoint and objId.
077: *
078: * @param ep Endpoint for remote calls
079: * @param objId Object ID of remote object
080: * @param isLocal if true this UnicastRef2 belongs to local object
081: */
082: public UnicastRef2(Endpoint ep, ObjID objId, boolean isLocal) {
083: super (ep, objId, isLocal);
084: }
085:
086: /**
087: * @see RemoteRef.getRefClass(ObjectOutput)
088: */
089: public String getRefClass(ObjectOutput out) {
090: return "UnicastRef2"; //$NON-NLS-1$
091: }
092:
093: /**
094: * Writes this UnicastRef2 object to the specified output stream.
095: *
096: * @param out the stream to write the object to
097: *
098: * @throws IOException if any I/O error occurred or class is not serializable
099: */
100: public void writeExternal(ObjectOutput out) throws IOException {
101: ep.writeExternal(out, true);
102: writeCommon(out);
103: }
104:
105: /**
106: * Reads data for creating RemoteRef object from the specified input stream.
107: *
108: * @param in the stream to read data from
109: *
110: * @throws IOException if any I/O error occurred
111: * @throws ClassNotFoundException if class could not be loaded by current
112: * class loader
113: */
114: public void readExternal(ObjectInput in) throws IOException,
115: ClassNotFoundException {
116: ep = Endpoint.readExternal(in, true);
117: readCommon(in);
118: }
119: }
|