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.standalone; 021 022 023import java.util.Map; 024 025import org.apache.directory.api.ldap.codec.api.ControlFactory; 026import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory; 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.search.entryChange.EntryChangeFactory; 031import org.apache.directory.api.ldap.codec.controls.search.pagedSearch.PagedResultsFactory; 032import org.apache.directory.api.ldap.codec.controls.search.persistentSearch.PersistentSearchFactory; 033import org.apache.directory.api.ldap.codec.controls.search.subentries.SubentriesFactory; 034import org.apache.directory.api.ldap.codec.controls.sort.SortRequestFactory; 035import org.apache.directory.api.ldap.codec.controls.sort.SortResponseFactory; 036import org.apache.directory.api.ldap.extras.controls.ad.AdDirSync; 037import org.apache.directory.api.ldap.extras.controls.ad.AdDirSyncFactory; 038import org.apache.directory.api.ldap.extras.controls.ppolicy.PasswordPolicy; 039import org.apache.directory.api.ldap.extras.controls.ppolicy_impl.PasswordPolicyFactory; 040import org.apache.directory.api.ldap.extras.controls.syncrepl.syncDone.SyncDoneValue; 041import org.apache.directory.api.ldap.extras.controls.syncrepl.syncInfoValue.SyncInfoValue; 042import org.apache.directory.api.ldap.extras.controls.syncrepl.syncInfoValue.SyncRequestValue; 043import org.apache.directory.api.ldap.extras.controls.syncrepl.syncState.SyncStateValue; 044import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncDoneValueFactory; 045import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncInfoValueFactory; 046import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncRequestValueFactory; 047import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncStateValueFactory; 048import org.apache.directory.api.ldap.extras.extended.ads_impl.cancel.CancelFactory; 049import org.apache.directory.api.ldap.extras.extended.ads_impl.certGeneration.CertGenerationFactory; 050import org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectFactory; 051import org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulShutdown.GracefulShutdownFactory; 052import org.apache.directory.api.ldap.extras.extended.ads_impl.pwdModify.PasswordModifyFactory; 053import org.apache.directory.api.ldap.extras.extended.ads_impl.startTls.StartTlsFactory; 054import org.apache.directory.api.ldap.extras.extended.ads_impl.storedProcedure.StoredProcedureFactory; 055import org.apache.directory.api.ldap.extras.extended.ads_impl.whoAmI.WhoAmIFactory; 056import org.apache.directory.api.ldap.model.message.controls.Cascade; 057import org.apache.directory.api.ldap.model.message.controls.EntryChange; 058import org.apache.directory.api.ldap.model.message.controls.ManageDsaIT; 059import org.apache.directory.api.ldap.model.message.controls.PagedResults; 060import org.apache.directory.api.ldap.model.message.controls.PersistentSearch; 061import org.apache.directory.api.ldap.model.message.controls.SortRequest; 062import org.apache.directory.api.ldap.model.message.controls.SortResponse; 063import org.apache.directory.api.ldap.model.message.controls.Subentries; 064import org.slf4j.Logger; 065import org.slf4j.LoggerFactory; 066 067 068/** 069 * A utility class for adding Codec and extended operation factories. 070 * 071 * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a> 072 */ 073public class CodecFactoryUtil 074{ 075 private static final Logger LOG = LoggerFactory.getLogger( CodecFactoryUtil.class ); 076 077 078 /** 079 * Loads the Controls implement out of the box in the codec. 080 */ 081 public static void loadStockControls( Map<String, ControlFactory<?>> controlFactories, LdapApiService apiService ) 082 { 083 ControlFactory<Cascade> cascadeFactory = new CascadeFactory( apiService ); 084 controlFactories.put( cascadeFactory.getOid(), cascadeFactory ); 085 LOG.info( "Registered pre-bundled control factory: {}", cascadeFactory.getOid() ); 086 087 ControlFactory<EntryChange> entryChangeFactory = new EntryChangeFactory( apiService ); 088 controlFactories.put( entryChangeFactory.getOid(), entryChangeFactory ); 089 LOG.info( "Registered pre-bundled control factory: {}", entryChangeFactory.getOid() ); 090 091 ControlFactory<ManageDsaIT> manageDsaITFactory = new ManageDsaITFactory( apiService ); 092 controlFactories.put( manageDsaITFactory.getOid(), manageDsaITFactory ); 093 LOG.info( "Registered pre-bundled control factory: {}", manageDsaITFactory.getOid() ); 094 095 ControlFactory<PagedResults> pagedResultsFactory = new PagedResultsFactory( apiService ); 096 controlFactories.put( pagedResultsFactory.getOid(), pagedResultsFactory ); 097 LOG.info( "Registered pre-bundled control factory: {}", pagedResultsFactory.getOid() ); 098 099 ControlFactory<PersistentSearch> persistentSearchFactory = new PersistentSearchFactory( apiService ); 100 controlFactories.put( persistentSearchFactory.getOid(), persistentSearchFactory ); 101 LOG.info( "Registered pre-bundled control factory: {}", persistentSearchFactory.getOid() ); 102 103 ControlFactory<Subentries> SubentriesFactory = new SubentriesFactory( apiService ); 104 controlFactories.put( SubentriesFactory.getOid(), SubentriesFactory ); 105 LOG.info( "Registered pre-bundled control factory: {}", SubentriesFactory.getOid() ); 106 107 ControlFactory<PasswordPolicy> passwordPolicyFactory = new PasswordPolicyFactory( apiService ); 108 controlFactories.put( passwordPolicyFactory.getOid(), passwordPolicyFactory ); 109 LOG.info( "Registered pre-bundled control factory: {}", passwordPolicyFactory.getOid() ); 110 111 ControlFactory<SyncDoneValue> SyncDoneValueFactory = new SyncDoneValueFactory( apiService ); 112 controlFactories.put( SyncDoneValueFactory.getOid(), SyncDoneValueFactory ); 113 LOG.info( "Registered pre-bundled control factory: {}", SyncDoneValueFactory.getOid() ); 114 115 ControlFactory<SyncInfoValue> syncInfoValueFactory = new SyncInfoValueFactory( apiService ); 116 controlFactories.put( syncInfoValueFactory.getOid(), syncInfoValueFactory ); 117 LOG.info( "Registered pre-bundled control factory: {}", syncInfoValueFactory.getOid() ); 118 119 ControlFactory<SyncRequestValue> syncRequestValueFactory = new SyncRequestValueFactory( apiService ); 120 controlFactories.put( syncRequestValueFactory.getOid(), syncRequestValueFactory ); 121 LOG.info( "Registered pre-bundled control factory: {}", syncRequestValueFactory.getOid() ); 122 123 ControlFactory<SyncStateValue> syncStateValueFactory = new SyncStateValueFactory( apiService ); 124 controlFactories.put( syncStateValueFactory.getOid(), syncStateValueFactory ); 125 LOG.info( "Registered pre-bundled control factory: {}", syncStateValueFactory.getOid() ); 126 127 ControlFactory<SortRequest> sortRequestFactory = new SortRequestFactory( apiService ); 128 controlFactories.put( sortRequestFactory.getOid(), sortRequestFactory ); 129 LOG.info( "Registered pre-bundled control factory: {}", sortRequestFactory.getOid() ); 130 131 ControlFactory<SortResponse> sortResponseFactory = new SortResponseFactory( apiService ); 132 controlFactories.put( sortResponseFactory.getOid(), sortResponseFactory ); 133 LOG.info( "Registered pre-bundled control factory: {}", sortResponseFactory.getOid() ); 134 135 ControlFactory<AdDirSync> adDirSyncFactory = new AdDirSyncFactory( apiService ); 136 controlFactories.put( adDirSyncFactory.getOid(), adDirSyncFactory ); 137 LOG.info( "Registered pre-bundled control factory: {}", adDirSyncFactory.getOid() ); 138 } 139 140 141 public static void loadStockExtendedOperations( 142 Map<String, ExtendedOperationFactory> extendendOperationsFactories, LdapApiService apiService ) 143 { 144 CancelFactory cancelFactory = new CancelFactory( apiService ); 145 extendendOperationsFactories.put( cancelFactory.getOid(), cancelFactory ); 146 LOG.info( "Registered pre-bundled extended operation factory: {}", cancelFactory.getOid() ); 147 148 CertGenerationFactory certGenerationFactory = new CertGenerationFactory( apiService ); 149 extendendOperationsFactories.put( certGenerationFactory.getOid(), certGenerationFactory ); 150 LOG.info( "Registered pre-bundled extended operation factory: {}", certGenerationFactory.getOid() ); 151 152 GracefulShutdownFactory gracefulShutdownFactory = new GracefulShutdownFactory( apiService ); 153 extendendOperationsFactories.put( gracefulShutdownFactory.getOid(), gracefulShutdownFactory ); 154 LOG.info( "Registered pre-bundled extended operation factory: {}", gracefulShutdownFactory.getOid() ); 155 156 StoredProcedureFactory storedProcedureFactory = new StoredProcedureFactory( apiService ); 157 extendendOperationsFactories.put( storedProcedureFactory.getOid(), storedProcedureFactory ); 158 LOG.info( "Registered pre-bundled extended operation factory: {}", storedProcedureFactory.getOid() ); 159 160 GracefulDisconnectFactory gracefulDisconnectFactory = new GracefulDisconnectFactory( apiService ); 161 extendendOperationsFactories.put( gracefulDisconnectFactory.getOid(), gracefulDisconnectFactory ); 162 LOG.info( "Registered pre-bundled extended operation factory: {}", gracefulDisconnectFactory.getOid() ); 163 164 PasswordModifyFactory passwordModifyFactory = new PasswordModifyFactory( apiService ); 165 extendendOperationsFactories.put( passwordModifyFactory.getOid(), passwordModifyFactory ); 166 LOG.info( "Registered pre-bundled extended operation factory: {}", passwordModifyFactory.getOid() ); 167 168 WhoAmIFactory whoAmIFactory = new WhoAmIFactory( apiService ); 169 extendendOperationsFactories.put( whoAmIFactory.getOid(), whoAmIFactory ); 170 LOG.info( "Registered pre-bundled extended operation factory: {}", whoAmIFactory.getOid() ); 171 172 StartTlsFactory startTlsFactory = new StartTlsFactory( apiService ); 173 extendendOperationsFactories.put( startTlsFactory.getOid(), startTlsFactory ); 174 LOG.info( "Registered pre-bundled extended operation factory: {}", startTlsFactory.getOid() ); 175 } 176}