View Javadoc
1 /* 2 * Copyright (C) The Apache Software Foundation. All rights reserved. 3 * 4 * This software is published under the terms of the Apache Software License 5 * version 1.1, a copy of which has been included with this distribution in 6 * the LICENSE file. 7 */ 8 package org.apache.avalon.excalibur.naming.rmi.server; 9 10 import java.io.Serializable; 11 import java.rmi.Remote; 12 import java.util.ArrayList; 13 import javax.naming.Binding; 14 import javax.naming.CompositeName; 15 import javax.naming.Context; 16 import javax.naming.Name; 17 import javax.naming.NameClassPair; 18 import javax.naming.NameParser; 19 import javax.naming.NamingEnumeration; 20 import javax.naming.NamingException; 21 import org.apache.avalon.excalibur.naming.RemoteContext; 22 import org.apache.avalon.excalibur.naming.rmi.RMINamingProvider; 23 24 /*** 25 * The RMI implementation of provider. 26 * 27 * @author <a href="mailto:donaldp@apache.org">Peter Donald</a> 28 * @version $Revision: 1.2 $ 29 */ 30 public class RMINamingProviderImpl 31 implements Serializable, RMINamingProvider 32 { 33 protected Context m_root; 34 35 public RMINamingProviderImpl( final Context root ) 36 { 37 m_root = root; 38 } 39 40 public NameParser getNameParser() 41 throws NamingException 42 { 43 return m_root.getNameParser( new CompositeName() ); 44 } 45 46 public void bind( final Name name, final String className, final Object object ) 47 throws NamingException 48 { 49 final Binding binding = new Binding( name.toString(), className, object, true ); 50 m_root.bind( name, binding ); 51 } 52 53 public void rebind( final Name name, final String className, final Object object ) 54 throws NamingException 55 { 56 final Binding binding = new Binding( name.toString(), className, object, true ); 57 m_root.rebind( name, binding ); 58 } 59 60 public Context createSubcontext( final Name name ) 61 throws NamingException 62 { 63 m_root.createSubcontext( name ); 64 65 final RemoteContext context = new RemoteContext( null, name ); 66 return context; 67 } 68 69 public void destroySubcontext( final Name name ) 70 throws NamingException 71 { 72 m_root.destroySubcontext( name ); 73 } 74 75 public NameClassPair[] list( final Name name ) 76 throws NamingException 77 { 78 //Remember that the bindings returned by this 79 //actually have a nested Binding as an object 80 final NamingEnumeration enum = m_root.listBindings( name ); 81 final ArrayList pairs = new ArrayList(); 82 83 while( enum.hasMore() ) 84 { 85 final Binding binding = (Binding)enum.next(); 86 final Object object = binding.getObject(); 87 88 String className = null; 89 90 //check if it is an entry or a context 91 if( object instanceof Binding ) 92 { 93 //must be an entry 94 final Binding entry = (Binding)binding.getObject(); 95 className = entry.getObject().getClass().getName(); 96 } 97 else if( object instanceof Context ) 98 { 99 //must be a context 100 className = RemoteContext.class.getName(); 101 } 102 else 103 { 104 className = object.getClass().getName(); 105 } 106 107 pairs.add( new NameClassPair( binding.getName(), className ) ); 108 } 109 110 return (NameClassPair[])pairs.toArray( new NameClassPair[ 0 ] ); 111 } 112 113 public Binding[] listBindings( final Name name ) 114 throws NamingException 115 { 116 //Remember that the bindings returned by this 117 //actually have a nested Binding as an object 118 final NamingEnumeration enum = m_root.listBindings( name ); 119 final ArrayList bindings = new ArrayList(); 120 121 while( enum.hasMore() ) 122 { 123 final Binding binding = (Binding)enum.next(); 124 Object object = binding.getObject(); 125 String className = null; 126 127 //check if it is an entry or a context 128 if( object instanceof Binding ) 129 { 130 //must be an entry 131 final Binding entry = (Binding)binding.getObject(); 132 object = entry.getObject(); 133 className = object.getClass().getName(); 134 } 135 else if( object instanceof Context ) 136 { 137 //must be a context 138 className = RemoteContext.class.getName(); 139 object = new RemoteContext( null, name ); 140 } 141 else 142 { 143 className = object.getClass().getName(); 144 } 145 146 final Binding result = 147 new Binding( binding.getName(), className, object ); 148 bindings.add( result ); 149 } 150 151 return (Binding[])bindings.toArray( new Binding[ 0 ] ); 152 } 153 154 public Object lookup( final Name name ) 155 throws NamingException 156 { 157 Object object = m_root.lookup( name ); 158 159 //check if it is an entry or a context 160 if( object instanceof Binding ) 161 { 162 object = ((Binding)object).getObject(); 163 } 164 else if( object instanceof Context ) 165 { 166 //must be a context 167 object = new RemoteContext( null, name.getPrefix( name.size() - 1 ) ); 168 } 169 170 return object; 171 } 172 173 public void unbind( final Name name ) 174 throws NamingException 175 { 176 m_root.unbind( name ); 177 } 178 }

This page was automatically generated by Maven