001/*
002 *   Licensed to the Apache Software Foundation (ASF) under one
003 *   or more contributor license agreements.  See the NOTICE file
004 *   distributed with apiService work for additional information
005 *   regarding copyright ownership.  The ASF licenses apiService file
006 *   to you under the Apache License, Version 2.0 (the
007 *   "License"); you may not use apiService file except in compliance
008 *   with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 *   Unless required by applicable law or agreed to in writing,
013 *   software distributed under the License is distributed on an
014 *   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 *   KIND, either express or implied.  See the License for the
016 *   specific language governing permissions and limitations
017 *   under the License.
018 *
019 */
020package org.apache.directory.api.ldap.codec;
021
022
023import java.util.Map;
024
025import org.apache.directory.api.i18n.I18n;
026import org.apache.directory.api.ldap.codec.api.ControlFactory;
027import org.apache.directory.api.ldap.codec.api.LdapApiService;
028import org.apache.directory.api.ldap.codec.controls.cascade.CascadeFactory;
029import org.apache.directory.api.ldap.codec.controls.manageDsaIT.ManageDsaITFactory;
030import org.apache.directory.api.ldap.codec.controls.proxiedauthz.ProxiedAuthzFactory;
031import org.apache.directory.api.ldap.codec.controls.search.entryChange.EntryChangeFactory;
032import org.apache.directory.api.ldap.codec.controls.search.pagedSearch.PagedResultsFactory;
033import org.apache.directory.api.ldap.codec.controls.search.persistentSearch.PersistentSearchFactory;
034import org.apache.directory.api.ldap.codec.controls.search.subentries.SubentriesFactory;
035import org.apache.directory.api.ldap.codec.controls.sort.SortRequestFactory;
036import org.apache.directory.api.ldap.codec.controls.sort.SortResponseFactory;
037import org.apache.directory.api.ldap.model.message.Control;
038import org.apache.directory.api.ldap.model.message.controls.Cascade;
039import org.apache.directory.api.ldap.model.message.controls.EntryChange;
040import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT;
041import org.apache.directory.api.ldap.model.message.controls.PagedResults;
042import org.apache.directory.api.ldap.model.message.controls.PersistentSearch;
043import org.apache.directory.api.ldap.model.message.controls.ProxiedAuthz;
044import org.apache.directory.api.ldap.model.message.controls.SortRequest;
045import org.apache.directory.api.ldap.model.message.controls.SortResponse;
046import org.apache.directory.api.ldap.model.message.controls.Subentries;
047import org.slf4j.Logger;
048import org.slf4j.LoggerFactory;
049
050
051/**
052 * A utility class for adding Codec and extended operation factories.
053 *
054 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
055 */
056public final class StockCodecFactoryUtil
057{
058    private static final Logger LOG = LoggerFactory.getLogger( StockCodecFactoryUtil.class );
059
060
061    private StockCodecFactoryUtil()
062    {
063    }
064
065
066    /**
067     * Loads the Controls implement out of the box in the codec.
068     *
069     * @param apiService The LDAP Service instance to use
070     */
071    public static void loadStockControls( LdapApiService apiService )
072    {
073        Map<String, ControlFactory<? extends Control>> requestControlFactories = apiService
074            .getRequestControlFactories();
075        Map<String, ControlFactory<? extends Control>> responseControlFactories = apiService
076            .getResponseControlFactories();
077
078        // Standard controls
079        // Cascade
080        ControlFactory<Cascade> cascadeFactory = new CascadeFactory( apiService );
081        requestControlFactories.put( cascadeFactory.getOid(), cascadeFactory );
082
083        if ( LOG.isInfoEnabled() )
084        {
085            LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, cascadeFactory.getOid() ) );
086        }
087
088        // EntryChange
089        ControlFactory<EntryChange> entryChangeFactory = new EntryChangeFactory( apiService );
090        responseControlFactories.put( entryChangeFactory.getOid(), entryChangeFactory );
091
092        if ( LOG.isInfoEnabled() )
093        {
094            LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, entryChangeFactory.getOid() ) );
095        }
096
097        // ManageDsaIT
098        ControlFactory<ManageDsaIT> manageDsaITFactory = new ManageDsaITFactory( apiService );
099        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}