View Javadoc
1   /*
2    *   Licensed to the Apache Software Foundation (ASF) under one
3    *   or more contributor license agreements.  See the NOTICE file
4    *   distributed with apiService work for additional information
5    *   regarding copyright ownership.  The ASF licenses apiService file
6    *   to you under the Apache License, Version 2.0 (the
7    *   "License"); you may not use apiService 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  package org.apache.directory.api.ldap.codec.standalone;
21  
22  
23  import java.util.Map;
24  
25  import org.apache.directory.api.ldap.codec.api.ControlFactory;
26  import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
27  import org.apache.directory.api.ldap.codec.api.LdapApiService;
28  import org.apache.directory.api.ldap.codec.controls.cascade.CascadeFactory;
29  import org.apache.directory.api.ldap.codec.controls.manageDsaIT.ManageDsaITFactory;
30  import org.apache.directory.api.ldap.codec.controls.proxiedauthz.ProxiedAuthzFactory;
31  import org.apache.directory.api.ldap.codec.controls.search.entryChange.EntryChangeFactory;
32  import org.apache.directory.api.ldap.codec.controls.search.pagedSearch.PagedResultsFactory;
33  import org.apache.directory.api.ldap.codec.controls.search.persistentSearch.PersistentSearchFactory;
34  import org.apache.directory.api.ldap.codec.controls.search.subentries.SubentriesFactory;
35  import org.apache.directory.api.ldap.codec.controls.sort.SortRequestFactory;
36  import org.apache.directory.api.ldap.codec.controls.sort.SortResponseFactory;
37  import org.apache.directory.api.ldap.extras.controls.ad.AdDirSync;
38  import org.apache.directory.api.ldap.extras.controls.ad_impl.AdDirSyncFactory;
39  import org.apache.directory.api.ldap.extras.controls.ppolicy.PasswordPolicy;
40  import org.apache.directory.api.ldap.extras.controls.ppolicy_impl.PasswordPolicyFactory;
41  import org.apache.directory.api.ldap.extras.controls.syncrepl.syncDone.SyncDoneValue;
42  import org.apache.directory.api.ldap.extras.controls.syncrepl.syncInfoValue.SyncInfoValue;
43  import org.apache.directory.api.ldap.extras.controls.syncrepl.syncInfoValue.SyncRequestValue;
44  import org.apache.directory.api.ldap.extras.controls.syncrepl.syncState.SyncStateValue;
45  import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncDoneValueFactory;
46  import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncInfoValueFactory;
47  import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncRequestValueFactory;
48  import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncStateValueFactory;
49  import org.apache.directory.api.ldap.extras.controls.vlv.VirtualListViewRequest;
50  import org.apache.directory.api.ldap.extras.controls.vlv.VirtualListViewResponse;
51  import org.apache.directory.api.ldap.extras.controls.vlv_impl.VirtualListViewRequestFactory;
52  import org.apache.directory.api.ldap.extras.controls.vlv_impl.VirtualListViewResponseFactory;
53  import org.apache.directory.api.ldap.extras.extended.ads_impl.cancel.CancelFactory;
54  import org.apache.directory.api.ldap.extras.extended.ads_impl.certGeneration.CertGenerationFactory;
55  import org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectFactory;
56  import org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulShutdown.GracefulShutdownFactory;
57  import org.apache.directory.api.ldap.extras.extended.ads_impl.pwdModify.PasswordModifyFactory;
58  import org.apache.directory.api.ldap.extras.extended.ads_impl.startTls.StartTlsFactory;
59  import org.apache.directory.api.ldap.extras.extended.ads_impl.storedProcedure.StoredProcedureFactory;
60  import org.apache.directory.api.ldap.extras.extended.ads_impl.whoAmI.WhoAmIFactory;
61  import org.apache.directory.api.ldap.model.message.controls.Cascade;
62  import org.apache.directory.api.ldap.model.message.controls.EntryChange;
63  import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
64  import org.apache.directory.api.ldap.model.message.controls.PagedResults;
65  import org.apache.directory.api.ldap.model.message.controls.PersistentSearch;
66  import org.apache.directory.api.ldap.model.message.controls.ProxiedAuthz;
67  import org.apache.directory.api.ldap.model.message.controls.SortRequest;
68  import org.apache.directory.api.ldap.model.message.controls.SortResponse;
69  import org.apache.directory.api.ldap.model.message.controls.Subentries;
70  import org.slf4j.Logger;
71  import org.slf4j.LoggerFactory;
72  
73  
74  /**
75   * A utility class for adding Codec and extended operation factories.
76   *
77   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
78   */
79  public class CodecFactoryUtil
80  {
81      private static final Logger LOG = LoggerFactory.getLogger( CodecFactoryUtil.class );
82  
83  
84      /**
85       * Loads the Controls implement out of the box in the codec.
86       */
87      public static void loadStockControls( Map<String, ControlFactory<?>> controlFactories, LdapApiService apiService )
88      {
89          ControlFactory<Cascade> cascadeFactory = new CascadeFactory( apiService );
90          controlFactories.put( cascadeFactory.getOid(), cascadeFactory );
91          LOG.info( "Registered pre-bundled control factory: {}", cascadeFactory.getOid() );
92  
93          ControlFactory<EntryChange> entryChangeFactory = new EntryChangeFactory( apiService );
94          controlFactories.put( entryChangeFactory.getOid(), entryChangeFactory );
95          LOG.info( "Registered pre-bundled control factory: {}", entryChangeFactory.getOid() );
96  
97          ControlFactory<ManageDsaIT> manageDsaITFactory = new ManageDsaITFactory( apiService );
98          controlFactories.put( manageDsaITFactory.getOid(), manageDsaITFactory );
99          LOG.info( "Registered pre-bundled control factory: {}", manageDsaITFactory.getOid() );
100 
101         ControlFactory<ProxiedAuthz> proxiedAuthzFactory = new ProxiedAuthzFactory( apiService );
102         controlFactories.put( proxiedAuthzFactory.getOid(), proxiedAuthzFactory );
103         LOG.info( "Registered pre-bundled control factory: {}", proxiedAuthzFactory.getOid() );
104 
105         ControlFactory<PagedResults> pagedResultsFactory = new PagedResultsFactory( apiService );
106         controlFactories.put( pagedResultsFactory.getOid(), pagedResultsFactory );
107         LOG.info( "Registered pre-bundled control factory: {}", pagedResultsFactory.getOid() );
108 
109         ControlFactory<PersistentSearch> persistentSearchFactory = new PersistentSearchFactory( apiService );
110         controlFactories.put( persistentSearchFactory.getOid(), persistentSearchFactory );
111         LOG.info( "Registered pre-bundled control factory: {}", persistentSearchFactory.getOid() );
112 
113         ControlFactory<Subentries> SubentriesFactory = new SubentriesFactory( apiService );
114         controlFactories.put( SubentriesFactory.getOid(), SubentriesFactory );
115         LOG.info( "Registered pre-bundled control factory: {}", SubentriesFactory.getOid() );
116 
117         ControlFactory<PasswordPolicy> passwordPolicyFactory = new PasswordPolicyFactory( apiService );
118         controlFactories.put( passwordPolicyFactory.getOid(), passwordPolicyFactory );
119         LOG.info( "Registered pre-bundled control factory: {}", passwordPolicyFactory.getOid() );
120 
121         ControlFactory<VirtualListViewRequest> virtualListViewRequestFactory = new VirtualListViewRequestFactory(
122             apiService );
123         controlFactories.put( virtualListViewRequestFactory.getOid(), virtualListViewRequestFactory );
124         LOG.info( "Registered pre-bundled control factory: {}", virtualListViewRequestFactory.getOid() );
125 
126         ControlFactory<VirtualListViewResponse> virtualListViewResponseFactory = new VirtualListViewResponseFactory(
127             apiService );
128         controlFactories.put( virtualListViewResponseFactory.getOid(), virtualListViewResponseFactory );
129         LOG.info( "Registered pre-bundled control factory: {}", virtualListViewResponseFactory.getOid() );
130 
131         ControlFactory<SyncDoneValue> SyncDoneValueFactory = new SyncDoneValueFactory( apiService );
132         controlFactories.put( SyncDoneValueFactory.getOid(), SyncDoneValueFactory );
133         LOG.info( "Registered pre-bundled control factory: {}", SyncDoneValueFactory.getOid() );
134 
135         ControlFactory<SyncInfoValue> syncInfoValueFactory = new SyncInfoValueFactory( apiService );
136         controlFactories.put( syncInfoValueFactory.getOid(), syncInfoValueFactory );
137         LOG.info( "Registered pre-bundled control factory: {}", syncInfoValueFactory.getOid() );
138 
139         ControlFactory<SyncRequestValue> syncRequestValueFactory = new SyncRequestValueFactory( apiService );
140         controlFactories.put( syncRequestValueFactory.getOid(), syncRequestValueFactory );
141         LOG.info( "Registered pre-bundled control factory: {}", syncRequestValueFactory.getOid() );
142 
143         ControlFactory<SyncStateValue> syncStateValueFactory = new SyncStateValueFactory( apiService );
144         controlFactories.put( syncStateValueFactory.getOid(), syncStateValueFactory );
145         LOG.info( "Registered pre-bundled control factory: {}", syncStateValueFactory.getOid() );
146 
147         ControlFactory<SortRequest> sortRequestFactory = new SortRequestFactory( apiService );
148         controlFactories.put( sortRequestFactory.getOid(), sortRequestFactory );
149         LOG.info( "Registered pre-bundled control factory: {}", sortRequestFactory.getOid() );
150 
151         ControlFactory<SortResponse> sortResponseFactory = new SortResponseFactory( apiService );
152         controlFactories.put( sortResponseFactory.getOid(), sortResponseFactory );
153         LOG.info( "Registered pre-bundled control factory: {}", sortResponseFactory.getOid() );
154 
155         ControlFactory<AdDirSync> adDirSyncFactory = new AdDirSyncFactory( apiService );
156         controlFactories.put( adDirSyncFactory.getOid(), adDirSyncFactory );
157         LOG.info( "Registered pre-bundled control factory: {}", adDirSyncFactory.getOid() );
158     }
159 
160 
161     public static void loadStockExtendedOperations(
162         Map<String, ExtendedOperationFactory> extendendOperationsFactories, LdapApiService apiService )
163     {
164         CancelFactory cancelFactory = new CancelFactory( apiService );
165         extendendOperationsFactories.put( cancelFactory.getOid(), cancelFactory );
166         LOG.info( "Registered pre-bundled extended operation factory: {}", cancelFactory.getOid() );
167 
168         CertGenerationFactory certGenerationFactory = new CertGenerationFactory( apiService );
169         extendendOperationsFactories.put( certGenerationFactory.getOid(), certGenerationFactory );
170         LOG.info( "Registered pre-bundled extended operation factory: {}", certGenerationFactory.getOid() );
171 
172         GracefulShutdownFactory gracefulShutdownFactory = new GracefulShutdownFactory( apiService );
173         extendendOperationsFactories.put( gracefulShutdownFactory.getOid(), gracefulShutdownFactory );
174         LOG.info( "Registered pre-bundled extended operation factory: {}", gracefulShutdownFactory.getOid() );
175 
176         StoredProcedureFactory storedProcedureFactory = new StoredProcedureFactory( apiService );
177         extendendOperationsFactories.put( storedProcedureFactory.getOid(), storedProcedureFactory );
178         LOG.info( "Registered pre-bundled extended operation factory: {}", storedProcedureFactory.getOid() );
179 
180         GracefulDisconnectFactory gracefulDisconnectFactory = new GracefulDisconnectFactory( apiService );
181         extendendOperationsFactories.put( gracefulDisconnectFactory.getOid(), gracefulDisconnectFactory );
182         LOG.info( "Registered pre-bundled extended operation factory: {}", gracefulDisconnectFactory.getOid() );
183 
184         PasswordModifyFactory passwordModifyFactory = new PasswordModifyFactory( apiService );
185         extendendOperationsFactories.put( passwordModifyFactory.getOid(), passwordModifyFactory );
186         LOG.info( "Registered pre-bundled extended operation factory: {}", passwordModifyFactory.getOid() );
187 
188         WhoAmIFactory whoAmIFactory = new WhoAmIFactory( apiService );
189         extendendOperationsFactories.put( whoAmIFactory.getOid(), whoAmIFactory );
190         LOG.info( "Registered pre-bundled extended operation factory: {}", whoAmIFactory.getOid() );
191 
192         StartTlsFactory startTlsFactory = new StartTlsFactory( apiService );
193         extendendOperationsFactories.put( startTlsFactory.getOid(), startTlsFactory );
194         LOG.info( "Registered pre-bundled extended operation factory: {}", startTlsFactory.getOid() );
195     }
196 }