1 /* 2 * junixsocket 3 * 4 * Copyright 2009-2024 Christian Kohlschütter 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 package org.newsclub.net.unix.rmi; 19 20 import java.net.MalformedURLException; 21 import java.rmi.AccessException; 22 import java.rmi.AlreadyBoundException; 23 import java.rmi.NotBoundException; 24 import java.rmi.Remote; 25 import java.rmi.RemoteException; 26 import java.util.concurrent.TimeUnit; 27 28 abstract class AFRegistryAccess { 29 /** 30 * Returns a reference to the existing RMI registry. 31 * 32 * If there's no registry running at this port, an exception is thrown. 33 * 34 * @return The registry. 35 * @throws RemoteException If there was a problem. 36 */ 37 public abstract AFRegistry getRegistry() throws RemoteException; 38 39 /** 40 * Convenience method for {@code getRegistry().lookup}. 41 * 42 * @param name the name for the remote reference to look up 43 * @return The instance 44 * @throws NotBoundException upon error 45 * @throws MalformedURLException upon error 46 * @throws RemoteException upon error 47 * @see AFRegistry#lookup(String) 48 */ 49 public Remote lookup(String name) throws NotBoundException, MalformedURLException, 50 RemoteException { 51 return getRegistry().lookup(name); 52 } 53 54 /** 55 * Convenience method for {@code getRegistry().lookup}. 56 * 57 * @param name the name for the remote reference to look up 58 * @param timeout The timeout value. 59 * @param unit The timeout unit. 60 * @return The instance 61 * @throws NotBoundException upon error 62 * @throws MalformedURLException upon error 63 * @throws RemoteException upon error 64 * @see AFRegistry#lookup(String, long, TimeUnit) 65 */ 66 public Remote lookup(String name, long timeout, TimeUnit unit) throws NotBoundException, 67 MalformedURLException, RemoteException { 68 return getRegistry().lookup(name, timeout, unit); 69 } 70 71 /** 72 * Convenience method for {@code getRegistry().unbind}. 73 * 74 * @param name the name for the remote reference to unbind 75 * @throws RemoteException upon error 76 * @throws NotBoundException upon error 77 * @throws MalformedURLException upon error 78 * @see AFRegistry#unbind(String) 79 */ 80 public void unbind(String name) throws RemoteException, NotBoundException, MalformedURLException { 81 getRegistry().unbind(name); 82 } 83 84 /** 85 * Convenience method for {@code getRegistry().bind}. 86 * 87 * @param name the name for the remote reference to bind 88 * @param obj the remote reference to bind 89 * @throws RemoteException upon error 90 * @throws AlreadyBoundException upon error 91 * @throws MalformedURLException upon error 92 * @see AFRegistry#bind(String, Remote) 93 */ 94 public void bind(String name, Remote obj) throws AlreadyBoundException, MalformedURLException, 95 RemoteException { 96 getRegistry().bind(name, obj); 97 } 98 99 /** 100 * Convenience method for {@code getRegistry().rebind}. 101 * 102 * @param name the name for the remote reference to rebind 103 * @param obj the remote reference to rebind 104 * @throws RemoteException upon error 105 * @throws MalformedURLException upon error 106 * @see AFRegistry#rebind(String, Remote) 107 */ 108 public void rebind(String name, Remote obj) throws MalformedURLException, RemoteException { 109 getRegistry().rebind(name, obj); 110 } 111 112 /** 113 * Convenience method for {@code getRegistry().list}. 114 * 115 * Unlike {@link AFRegistry#list()}, in case the registry has been shut down already, an empty 116 * array is returned. 117 * 118 * @return an array of the names bound in this registry 119 * @throws RemoteException upon error 120 * @throws AccessException upon error 121 */ 122 public String[] list() throws RemoteException, AccessException { 123 try { 124 return getRegistry().list(); 125 } catch (ShutdownException e) { 126 return new String[0]; 127 } 128 } 129 }