/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package javax.naming.spi;
import javax.naming.Name;
import javax.naming.NamingException;
/**
* The <code>Resolver</code> interface describes an intermediate context which
* may be used in name resolution. In some context implementations, it is
* possible that subtypes of <code>Context</code> may not be supported; in
* such cases, a class implementing the <code>Resolver</code> interface
* becomes useful to obtain a context which is of a specified subtype of
* <code>Context</code>.
*/
public interface Resolver {
/**
* Partially resolves the name specified by name <code>n</code> stopping
* at the first context object which is of the <code>Context</code>
* subtype specified by class <code>c</code>.
*
* @param n
* a name
* @param c
* a context
* @return details of the resolved context object and the part of the name
* remaining to be resolved in a non-null <code>ResolveResult</code>
* object.
* @throws javax.naming.NotContextException
* if no context of the specified subtype is found.
* @throws NamingException
* if other naming errors occur
*/
ResolveResult resolveToClass(Name n, Class<? extends javax.naming.Context> c)
throws NamingException;
/**
* Partially resolves the name specified by name <code>n</code> stopping
* at the first context object which is of the <code>Context</code>
* subtype specified by class <code>c</code>.
*
* @param n
* a name in string
* @param c
* a context
* @return details of the resolved context object and the part of the name
* remaining to be resolved in a non-null <code>ResolveResult</code>
* object.
* @throws javax.naming.NotContextException
* if no context of the specified subtype is found.
* @throws NamingException
* if other naming errors occur
*/
ResolveResult resolveToClass(String n,
Class<? extends javax.naming.Context> c) throws NamingException;
}