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}