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 Alexei Y. Zakharov
021: * @version $Revision: 1.1.2.4 $
022: */package org.apache.harmony.jndi.provider.dns;
023:
024: import java.util.Hashtable;
025:
026: import javax.naming.Binding;
027: import javax.naming.Context;
028: import javax.naming.NameClassPair;
029: import javax.naming.NamingEnumeration;
030: import javax.naming.NamingException;
031: import javax.naming.directory.Attributes;
032:
033: import org.apache.harmony.jndi.internal.nls.Messages;
034:
035: /**
036: * DNS context that is capable of serving requests with DNS URL's given as
037: * names.
038: */
039: public class dnsURLContext extends DNSContext {
040:
041: /**
042: * Constructs new DNS URL context.
043: *
044: * @param env
045: * environment
046: * @throws NamingException
047: * if such exception was encountered
048: */
049: public dnsURLContext(Hashtable<?, ?> env) throws NamingException {
050: super (env);
051: }
052:
053: /**
054: * @param name
055: * well formed DNS URL that points to some context
056: * @param attrNames
057: * array of attribute identifiers
058: * @return collection of attributes
059: * @throws NamingException
060: * if such exception was encountered
061: * @throws NullPointerException
062: * if <code>name</code> is null
063: * @see DNSContext#getAttributes(String, String[])
064: */
065: @Override
066: public Attributes getAttributes(String name, String[] attrNames)
067: throws NamingException {
068: process(name);
069: return super .getAttributes(new DNSName(), attrNames);
070: }
071:
072: /**
073: * @param name
074: * well formed DNS URL
075: * @return retrieved collection of attributes
076: * @throws NamingException
077: * if such exception was encountered
078: * @throws NullPointerException
079: * if <code>name</code> is null
080: * @see DNSContext#getAttributes(String)
081: */
082: @Override
083: public Attributes getAttributes(String name) throws NamingException {
084: return getAttributes(name, null);
085: }
086:
087: /**
088: * @param name
089: * well formed DNS URL
090: * @return collection of <code>NameClassPair</code>
091: * @throws NamingException
092: * if such exception was encountered
093: * @throws NullPointerException
094: * if <code>name</code> is null
095: * @see DNSContext#list(String)
096: */
097: @Override
098: public NamingEnumeration<NameClassPair> list(String name)
099: throws NamingException {
100: process(name);
101: return super .list(new DNSName());
102: }
103:
104: /**
105: * @param name
106: * well formed DNS URL
107: * @return collection of <code>Binding</code>
108: * @throws NamingException
109: * if such exception was encountered
110: * @throws NullPointerException
111: * if <code>name</code> is null
112: * @see DNSContext#listBindings(String)
113: */
114: @Override
115: public NamingEnumeration<Binding> listBindings(String name)
116: throws NamingException {
117: process(name);
118: return super .listBindings(new DNSName());
119: }
120:
121: /**
122: * @param name
123: * well formed DNS URL
124: * @return found object
125: * @throws NamingException
126: * if such exception was encountered
127: * @throws NullPointerException
128: * if <code>name</code> is null
129: * @see DNSContext#lookup(String)
130: */
131: @Override
132: public Object lookup(String name) throws NamingException {
133: process(name);
134: return super .lookup(new DNSName());
135: }
136:
137: /**
138: * @param name
139: * well formed DNS URL
140: * @return found object
141: * @throws NamingException
142: * if such exception was encountered
143: * @throws NullPointerException
144: * if <code>name</code> is null
145: * @see DNSContext#lookupLink(String)
146: */
147: @Override
148: public Object lookupLink(String name) throws NamingException {
149: return lookup(name);
150: }
151:
152: /**
153: * Service method
154: *
155: * @param name
156: * DNS URL
157: * @throws NamingException
158: * if was encountered
159: * @throws NullPointerException
160: * if name is null
161: */
162: private void process(String name) throws NamingException {
163: if (name == null) {
164: // jndi.2E=The name is null
165: throw new NullPointerException(Messages
166: .getString("jndi.2E")); //$NON-NLS-1$
167: }
168: addToEnvironment(Context.PROVIDER_URL, name);
169: }
170:
171: }
|