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: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package javax.naming;
019:
020: import java.util.Hashtable;
021:
022: /**
023: * A <code>ReferralException</code> is an abstract class used by service
024: * providers when dealing with referral exceptions.
025: */
026: public abstract class ReferralException extends NamingException {
027:
028: /*
029: * This constant is used during deserialization to check the version which
030: * created the serialized object.
031: */
032: private static final long serialVersionUID = -2881363844695698876L;
033:
034: /**
035: * Constructs a <code>ReferralException</code> instance with all data
036: * initialized to null.
037: */
038: protected ReferralException() {
039: super ();
040: }
041:
042: /**
043: * Constructs a <code>ReferralException</code> instance with the specified
044: * message. All other fields are initialized to null.
045: *
046: * @param s
047: * The detail message for this exception. It may be null.
048: */
049: protected ReferralException(String s) {
050: super (s);
051: }
052:
053: /**
054: * Returns the <code>Context</code> where the method should be resumed
055: * following a referral exception. This should not return null.
056: *
057: * @return the <code>Context</code> where the method should be resumed
058: * following a referral exception. This should not return null.
059: * @throws NamingException
060: */
061: public abstract Context getReferralContext() throws NamingException;
062:
063: /**
064: * The same as <code>getReferralContext()</code> except that a
065: * <code>Hashtable</code> containing environment properties can be taken
066: * to override the environment properties associated with the context that
067: * threw this referral exception. This should not return null.
068: *
069: * @param h
070: * the environment properties. It may be null and then behaves
071: * the same as <code>getReferralContext()</code>.
072: * @return the <code>Context</code> where the method should be resumed
073: * following a referral exception. This should not return null.
074: * @throws NamingException
075: */
076: public abstract Context getReferralContext(Hashtable<?, ?> h)
077: throws NamingException;
078:
079: /**
080: * Returns the information relating to the exception. This should not return
081: * null.
082: *
083: * @return the information relating to the exception. This should not return
084: * null.
085: */
086: public abstract Object getReferralInfo();
087:
088: /**
089: * Returns true when further referral processing is outstanding.
090: *
091: * @return true when further referral processing is outstanding.
092: */
093: public abstract boolean skipReferral();
094:
095: /**
096: * Retry this referral.
097: */
098: public abstract void retryReferral();
099:
100: }
|