KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > directory > ldapstudio > browser > core > internal > model > ReferralException


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. 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,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  *
19  */

20
21 package org.apache.directory.ldapstudio.browser.core.internal.model;
22
23
24 import java.util.ArrayList JavaDoc;
25 import java.util.List JavaDoc;
26
27 import org.apache.directory.ldapstudio.browser.core.BrowserCoreMessages;
28 import org.apache.directory.ldapstudio.browser.core.BrowserCorePlugin;
29 import org.apache.directory.ldapstudio.browser.core.model.IConnection;
30 import org.apache.directory.ldapstudio.browser.core.model.IReferralHandler;
31 import org.apache.directory.ldapstudio.browser.core.model.ISearch;
32 import org.apache.directory.ldapstudio.browser.core.model.SearchParameter;
33 import org.apache.directory.ldapstudio.browser.core.model.URL;
34
35
36 public class ReferralException extends ConnectionException
37 {
38
39     private static final long serialVersionUID = 1L;
40
41     private SearchParameter originalSearchParameter;
42
43     private String JavaDoc[] referrals;
44
45
46     public ReferralException( SearchParameter originalSearchParameter, String JavaDoc[] referrals, int ldapStatusCode,
47         String JavaDoc message, Throwable JavaDoc originalThrowable )
48     {
49         super( ldapStatusCode, message, originalThrowable );
50         this.originalSearchParameter = originalSearchParameter;
51         this.referrals = referrals;
52     }
53
54
55     public String JavaDoc[] getReferrals()
56     {
57         return referrals;
58     }
59
60
61     public ISearch[] getReferralSearches() throws ConnectionException
62     {
63
64         // get referral handler
65
IReferralHandler referralHandler = BrowserCorePlugin.getDefault().getReferralHandler();
66         if ( referralHandler == null )
67         {
68             throw new ConnectionException( BrowserCoreMessages.model__no_referral_handler );
69         }
70
71         List JavaDoc referralSearchList = new ArrayList JavaDoc( getReferrals().length );
72
73         for ( int i = 0; i < getReferrals().length; i++ )
74         {
75
76             // parse referral URL
77
String JavaDoc referral = getReferrals()[i];
78             URL referralUrl = new URL( referral );
79
80             // get referral connection
81
IConnection referralConnection = referralHandler.getReferralConnection( referralUrl );
82             if ( referralConnection == null )
83             {
84                 // throw new
85
// ConnectionException(BrowserCoreMessages.model__no_referral_connection);
86
continue;
87             }
88
89             // create search
90
try
91             {
92                 ISearch referralSearch = new Search(
93                     null, //
94
referralConnection, //
95
referralUrl.hasDn() ? referralUrl.getDn() : originalSearchParameter.getSearchBase(), referralUrl
96                         .hasFilter() ? referralUrl.getFilter() : originalSearchParameter.getFilter(),
97                     originalSearchParameter.getReturningAttributes(), referralUrl.hasScope() ? referralUrl.getScope()
98                         : originalSearchParameter.getScope(), originalSearchParameter.getCountLimit(),
99                     originalSearchParameter.getTimeLimit(), originalSearchParameter.getAliasesDereferencingMethod(),
100                     originalSearchParameter.getReferralsHandlingMethod(), originalSearchParameter.isInitHasChildrenFlag(),
101                     originalSearchParameter.isInitAliasAndReferralFlag(), originalSearchParameter.getControls() );
102                 referralSearchList.add( referralSearch );
103             }
104             catch ( NoSuchFieldException JavaDoc nsfe )
105             {
106             }
107
108         }
109
110         ISearch[] referralSearches = ( ISearch[] ) referralSearchList.toArray( new ISearch[referralSearchList.size()] );
111         return referralSearches;
112     }
113
114 }
115
Popular Tags