KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jboss > tm > remoting > RemoteProxy


1 /*
2   * JBoss, Home of Professional Open Source
3   * Copyright 2005, JBoss Inc., and individual contributors as indicated
4   * by the @authors tag. See the copyright.txt in the distribution for a
5   * full listing of individual contributors.
6   *
7   * This is free software; you can redistribute it and/or modify it
8   * under the terms of the GNU Lesser General Public License as
9   * published by the Free Software Foundation; either version 2.1 of
10   * the License, or (at your option) any later version.
11   *
12   * This software is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15   * Lesser General Public License for more details.
16   *
17   * You should have received a copy of the GNU Lesser General Public
18   * License along with this software; if not, write to the Free
19   * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20   * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
21   */

22 package org.jboss.tm.remoting;
23
24 import java.lang.reflect.Proxy JavaDoc;
25
26 import org.jboss.remoting.InvokerLocator;
27
28 /**
29  * Utility class for creating remote proxies, converting them to strings and
30  * converting strings to remote proxies.
31  *
32  * @author <a HREF="mailto:reverbel@ime.usp.br">Francisco Reverbel</a>
33  * @version $Revision: 37459 $
34  */

35 public class RemoteProxy
36 {
37    /**
38     * Create a remote proxy given a DTM interface, a target object id and
39     * an array of <code>InvokerLocator</code>s.
40     *
41     * @param interf the DTM interface to be implemented by the proxy
42     * @param oid the id of the remote object proxified
43     * @param locators the array of invoker locators
44     * @return a newly created proxy
45     */

46    public static Object JavaDoc create(Class JavaDoc interf,
47                                long oid,
48                                InvokerLocator[] locators)
49    {
50       try
51       {
52          ClientInvocationHandler handler =
53             new ClientInvocationHandler(interf, oid, locators);
54          return Proxy.newProxyInstance(interf.getClassLoader(),
55                                        new Class JavaDoc[] { interf },
56                                        handler);
57       }
58       catch (Exception JavaDoc e)
59       {
60          e.printStackTrace();
61          return null;
62       }
63    }
64    
65    /**
66     * Converts a DTM proxy to String
67     *
68     * @param p a DTM proxy
69     * @return the string representation of the proxy
70     */

71    public static String JavaDoc toString(Proxy JavaDoc p)
72    {
73       ClientInvocationHandler handler =
74             (ClientInvocationHandler) Proxy.getInvocationHandler(p);
75       return handler.toString();
76    }
77    
78    /**
79     * Converts a stringfied DTM proxy back into a proxy instance.
80     *
81     * @param s the string representation of a DTM proxy
82     * @return a DTM proxy
83     * @throws Exception
84     */

85    public static Object JavaDoc fromString(String JavaDoc s)
86          throws Exception JavaDoc
87    {
88       ClientInvocationHandler handler = ClientInvocationHandler.fromString(s);
89       Class JavaDoc interf = handler.getClientInterface();
90       return Proxy.newProxyInstance(interf.getClassLoader(),
91                                     new Class JavaDoc[] { interf },
92                                     handler);
93    }
94
95 }
96
Popular Tags