00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 package org.objectweb.proactive.core.body.jini;
00032
00033 import org.objectweb.proactive.core.ProActiveException;
00034 import org.objectweb.proactive.core.body.BodyAdapterImpl;
00035 import org.objectweb.proactive.core.body.RemoteBody;
00036 import org.objectweb.proactive.core.body.UniversalBody;
00037 import org.objectweb.proactive.core.body.rmi.RmiRemoteBody;
00038
00039
00047 public class JiniBodyAdapter extends BodyAdapterImpl {
00048
00049
00050
00051 public JiniBodyAdapter() {
00052 }
00053
00054 public JiniBodyAdapter(RemoteBody remoteBody) throws ProActiveException {
00055 construct(remoteBody);
00056 }
00057
00058 public JiniBodyAdapter(UniversalBody body) throws ProActiveException {
00059 try {
00060 RemoteBody remoteBody = new JiniRemoteBodyImpl(body);
00061 construct(remoteBody);
00062 } catch (java.rmi.RemoteException e) {
00063 throw new ProActiveException(e);
00064 }
00065 }
00066
00074 public void register(String url) throws java.io.IOException {
00075 java.rmi.Naming.rebind(url, (RmiRemoteBody) proxiedRemoteBody);
00076 }
00077
00083 public void unregister(String url) throws java.io.IOException {
00084 try {
00085 java.rmi.Naming.unbind(url);
00086 } catch (java.rmi.NotBoundException e) {
00087 throw new java.io.IOException(
00088 "No object is bound to the given url : " + url);
00089 }
00090 }
00091
00101 public UniversalBody lookup(String url) throws java.io.IOException {
00102 Object o = null;
00103
00104
00105 try {
00106 o = java.rmi.Naming.lookup(url);
00107 } catch (java.rmi.NotBoundException e) {
00108 throw new java.io.IOException("The url " + url +
00109 " is not bound to any known object");
00110 }
00111
00112 if (o instanceof RmiRemoteBody) {
00113 try {
00114 construct((RmiRemoteBody) o);
00115 } catch (ProActiveException e1) {
00116 throw new java.io.IOException(
00117 "The remote object at " + url + " is not accessible ");
00118 }
00119
00120 return this;
00121 } else {
00122 throw new java.io.IOException(
00123 "The given url does exist but doesn't point to a jini body url=" +
00124 url + " class found is " + o.getClass().getName());
00125 }
00126 }
00127 }