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   *     https://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;
21  
22  
23  import java.util.Map;
24  
25  import org.apache.directory.api.i18n.I18n;
26  import org.apache.directory.api.ldap.codec.api.ControlFactory;
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.model.message.Control;
38  import org.apache.directory.api.ldap.model.message.controls.Cascade;
39  import org.apache.directory.api.ldap.model.message.controls.EntryChange;
40  import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
41  import org.apache.directory.api.ldap.model.message.controls.PagedResults;
42  import org.apache.directory.api.ldap.model.message.controls.PersistentSearch;
43  import org.apache.directory.api.ldap.model.message.controls.ProxiedAuthz;
44  import org.apache.directory.api.ldap.model.message.controls.SortRequest;
45  import org.apache.directory.api.ldap.model.message.controls.SortResponse;
46  import org.apache.directory.api.ldap.model.message.controls.Subentries;
47  import org.slf4j.Logger;
48  import org.slf4j.LoggerFactory;
49  
50  
51  /**
52   * A utility class for adding Codec and extended operation factories.
53   *
54   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
55   */
56  public final class StockCodecFactoryUtil
57  {
58      private static final Logger LOG = LoggerFactory.getLogger( StockCodecFactoryUtil.class );
59  
60  
61      private StockCodecFactoryUtil()
62      {
63      }
64  
65  
66      /**
67       * Loads the Controls implement out of the box in the codec.
68       *
69       * @param apiService The LDAP Service instance to use
70       */
71      public static void loadStockControls( LdapApiService apiService )
72      {
73          Map<String, ControlFactory<? extends Control>> requestControlFactories = apiService
74              .getRequestControlFactories();
75          Map<String, ControlFactory<? extends Control>> responseControlFactories = apiService
76              .getResponseControlFactories();
77  
78          // Standard controls
79          // Cascade
80          ControlFactory<Cascade> cascadeFactory = new CascadeFactory( apiService );
81          requestControlFactories.put( cascadeFactory.getOid(), cascadeFactory );
82  
83          if ( LOG.isInfoEnabled() )
84          {
85              LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, cascadeFactory.getOid() ) );
86          }
87  
88          // EntryChange
89          ControlFactory<EntryChange> entryChangeFactory = new EntryChangeFactory( apiService );
90          responseControlFactories.put( entryChangeFactory.getOid(), entryChangeFactory );
91  
92          if ( LOG.isInfoEnabled() )
93          {
94              LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, entryChangeFactory.getOid() ) );
95          }
96  
97          // ManageDsaIT
98          ControlFactory<ManageDsaIT> manageDsaITFactory = new ManageDsaITFactory( apiService );
99          requestControlFactories.put( manageDsaITFactory.getOid(), manageDsaITFactory );
100 
101         if ( LOG.isInfoEnabled() )
102         {
103             LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, manageDsaITFactory.getOid() ) );
104         }
105 
106         // pagedResults (both a request and response control)
107         ControlFactory<PagedResults> pagedResultsFactory = new PagedResultsFactory( apiService );
108         requestControlFactories.put( pagedResultsFactory.getOid(), pagedResultsFactory );
109         responseControlFactories.put( pagedResultsFactory.getOid(), pagedResultsFactory );
110 
111         if ( LOG.isInfoEnabled() )
112         {
113             LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, pagedResultsFactory.getOid() ) );
114         }
115 
116         // PersistentSearch
117         ControlFactory<PersistentSearch> persistentSearchFactory = new PersistentSearchFactory( apiService );
118         requestControlFactories.put( persistentSearchFactory.getOid(), persistentSearchFactory );
119 
120         if ( LOG.isInfoEnabled() )
121         {
122             LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, persistentSearchFactory.getOid() ) );
123         }
124 
125         // Proxied
126         ControlFactory<ProxiedAuthz> proxiedAuthzFactory = new ProxiedAuthzFactory( apiService );
127         requestControlFactories.put( proxiedAuthzFactory.getOid(), proxiedAuthzFactory );
128 
129         if ( LOG.isInfoEnabled() )
130         {
131             LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, proxiedAuthzFactory.getOid() ) );
132         }
133 
134         // SortRequest
135         ControlFactory<SortRequest> sortRequestFactory = new SortRequestFactory( apiService );
136         requestControlFactories.put( sortRequestFactory.getOid(), sortRequestFactory );
137 
138         if ( LOG.isInfoEnabled() )
139         {
140             LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, sortRequestFactory.getOid() ) );
141         }
142 
143         // SortResponse
144         ControlFactory<SortResponse> sortResponseFactory = new SortResponseFactory( apiService );
145         responseControlFactories.put( sortResponseFactory.getOid(), sortResponseFactory );
146 
147         if ( LOG.isInfoEnabled() )
148         {
149             LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, sortResponseFactory.getOid() ) );
150         }
151 
152         // Subentries
153         ControlFactory<Subentries> subentriesFactory = new SubentriesFactory( apiService );
154         requestControlFactories.put( subentriesFactory.getOid(), subentriesFactory );
155 
156         if ( LOG.isInfoEnabled() )
157         {
158             LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, subentriesFactory.getOid() ) );
159         }
160     }
161 
162 }