blob: b1d6f3ae6aff1c0ac51d129453fad14da7f9adad [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with apiService work for additional information
* regarding copyright ownership. The ASF licenses apiService file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use apiService file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.directory.api.ldap.extras;
import java.util.Map;
import org.apache.directory.api.i18n.I18n;
import org.apache.directory.api.ldap.codec.api.ControlFactory;
import org.apache.directory.api.ldap.codec.api.ExtendedOperationFactory;
import org.apache.directory.api.ldap.codec.api.IntermediateOperationFactory;
import org.apache.directory.api.ldap.codec.api.LdapApiService;
import org.apache.directory.api.ldap.extras.controls.ad.AdDirSyncRequest;
import org.apache.directory.api.ldap.extras.controls.ad.AdDirSyncResponse;
import org.apache.directory.api.ldap.extras.controls.ad.AdPolicyHints;
import org.apache.directory.api.ldap.extras.controls.ad.AdShowDeleted;
import org.apache.directory.api.ldap.extras.controls.ad_impl.AdDirSyncRequestFactory;
import org.apache.directory.api.ldap.extras.controls.ad_impl.AdDirSyncResponseFactory;
import org.apache.directory.api.ldap.extras.controls.ad_impl.AdPolicyHintsFactory;
import org.apache.directory.api.ldap.extras.controls.ad_impl.AdShowDeletedFactory;
import org.apache.directory.api.ldap.extras.controls.changeNotifications.ChangeNotifications;
import org.apache.directory.api.ldap.extras.controls.changeNotifications_impl.ChangeNotificationsFactory;
import org.apache.directory.api.ldap.extras.controls.passwordExpired.PasswordExpiredResponse;
import org.apache.directory.api.ldap.extras.controls.passwordExpired_impl.PasswordExpiredResponseFactory;
import org.apache.directory.api.ldap.extras.controls.permissiveModify.PermissiveModify;
import org.apache.directory.api.ldap.extras.controls.permissiveModify_impl.PermissiveModifyFactory;
import org.apache.directory.api.ldap.extras.controls.ppolicy.PasswordPolicyRequest;
import org.apache.directory.api.ldap.extras.controls.ppolicy.PasswordPolicyResponse;
import org.apache.directory.api.ldap.extras.controls.ppolicy_impl.PasswordPolicyRequestFactory;
import org.apache.directory.api.ldap.extras.controls.ppolicy_impl.PasswordPolicyResponseFactory;
import org.apache.directory.api.ldap.extras.controls.syncrepl.syncDone.SyncDoneValue;
import org.apache.directory.api.ldap.extras.controls.syncrepl.syncRequest.SyncRequestValue;
import org.apache.directory.api.ldap.extras.controls.syncrepl.syncState.SyncStateValue;
import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncDoneValueFactory;
import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncRequestValueFactory;
import org.apache.directory.api.ldap.extras.controls.syncrepl_impl.SyncStateValueFactory;
import org.apache.directory.api.ldap.extras.controls.transaction.TransactionSpecification;
import org.apache.directory.api.ldap.extras.controls.transaction_impl.TransactionSpecificationFactory;
import org.apache.directory.api.ldap.extras.controls.vlv.VirtualListViewRequest;
import org.apache.directory.api.ldap.extras.controls.vlv.VirtualListViewResponse;
import org.apache.directory.api.ldap.extras.controls.vlv_impl.VirtualListViewRequestFactory;
import org.apache.directory.api.ldap.extras.controls.vlv_impl.VirtualListViewResponseFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.cancel.CancelFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.certGeneration.CertGenerationFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.endTransaction.EndTransactionFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulDisconnect.GracefulDisconnectFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.gracefulShutdown.GracefulShutdownFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.nod.NoDFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.pwdModify.PasswordModifyFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.startTls.StartTlsFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.startTransaction.StartTransactionFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.storedProcedure.StoredProcedureFactory;
import org.apache.directory.api.ldap.extras.extended.ads_impl.whoAmI.WhoAmIFactory;
import org.apache.directory.api.ldap.extras.intermediate.syncrepl_impl.SyncInfoValueFactory;
import org.apache.directory.api.ldap.model.message.Control;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* A utility class for adding Codec and extended operation factories.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
public final class ExtrasCodecFactoryUtil
{
private static final Logger LOG = LoggerFactory.getLogger( ExtrasCodecFactoryUtil.class );
private ExtrasCodecFactoryUtil()
{
}
/**
* Loads the extras controls.
*
* @param apiService The LDAP Service instance to use
*/
public static void loadExtrasControls( LdapApiService apiService )
{
Map<String, ControlFactory<? extends Control>> requestControlFactories = apiService
.getRequestControlFactories();
Map<String, ControlFactory<? extends Control>> responseControlFactories = apiService
.getResponseControlFactories();
// Extra controls
// AdDirSync request
ControlFactory<AdDirSyncRequest> adDirSyncRequestFactory = new AdDirSyncRequestFactory( apiService );
requestControlFactories.put( adDirSyncRequestFactory.getOid(), adDirSyncRequestFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, adDirSyncRequestFactory.getOid() ) );
}
// AdDirSync response
ControlFactory<AdDirSyncResponse> adDirSyncResponseFactory = new AdDirSyncResponseFactory( apiService );
responseControlFactories.put( adDirSyncResponseFactory.getOid(), adDirSyncResponseFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, adDirSyncRequestFactory.getOid() ) );
}
// AdPolicyHints
ControlFactory<AdPolicyHints> adPolicyHintsFactory = new AdPolicyHintsFactory( apiService );
requestControlFactories.put( adPolicyHintsFactory.getOid(), adPolicyHintsFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, adPolicyHintsFactory.getOid() ) );
}
// AdShowDelete
ControlFactory<AdShowDeleted> adShowDeletedFactory = new AdShowDeletedFactory( apiService );
requestControlFactories.put( adShowDeletedFactory.getOid(), adShowDeletedFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, adShowDeletedFactory.getOid() ) );
}
// ChangeNotification
ControlFactory<ChangeNotifications> changeNotificationsFactory = new ChangeNotificationsFactory( apiService );
requestControlFactories.put( changeNotificationsFactory.getOid(), changeNotificationsFactory );
responseControlFactories.put( changeNotificationsFactory.getOid(), changeNotificationsFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, changeNotificationsFactory.getOid() ) );
}
// PasswordExpired response
ControlFactory<PasswordExpiredResponse> passwordExpiredResponseFactory = new PasswordExpiredResponseFactory( apiService );
responseControlFactories.put( passwordExpiredResponseFactory.getOid(), passwordExpiredResponseFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, passwordExpiredResponseFactory.getOid() ) );
}
// PasswordPolicy request
ControlFactory<PasswordPolicyRequest> passwordPolicyRequestFactory = new PasswordPolicyRequestFactory( apiService );
requestControlFactories.put( passwordPolicyRequestFactory.getOid(), passwordPolicyRequestFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, passwordPolicyRequestFactory.getOid() ) );
}
// PasswordPolicy response
ControlFactory<PasswordPolicyResponse> passwordPolicyResponseFactory = new PasswordPolicyResponseFactory( apiService );
responseControlFactories.put( passwordPolicyResponseFactory.getOid(), passwordPolicyResponseFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, passwordPolicyResponseFactory.getOid() ) );
}
// PermissiveModify
ControlFactory<PermissiveModify> permissiveModifyFactory = new PermissiveModifyFactory( apiService );
requestControlFactories.put( permissiveModifyFactory.getOid(), permissiveModifyFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, permissiveModifyFactory.getOid() ) );
}
// SyncDoneValue
ControlFactory<SyncDoneValue> syncDoneValueFactory = new SyncDoneValueFactory( apiService );
responseControlFactories.put( syncDoneValueFactory.getOid(), syncDoneValueFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, syncDoneValueFactory.getOid() ) );
}
// SyncRequestValue
ControlFactory<SyncRequestValue> syncRequestValueFactory = new SyncRequestValueFactory( apiService );
requestControlFactories.put( syncRequestValueFactory.getOid(), syncRequestValueFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, syncRequestValueFactory.getOid() ) );
}
// SyncStateValue
ControlFactory<SyncStateValue> syncStateValueFactory = new SyncStateValueFactory( apiService );
requestControlFactories.put( syncStateValueFactory.getOid(), syncStateValueFactory );
responseControlFactories.put( syncStateValueFactory.getOid(), syncStateValueFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, syncStateValueFactory.getOid() ) );
}
// TransactionSpecification
ControlFactory<TransactionSpecification> transactionSpecificationFactory = new TransactionSpecificationFactory( apiService );
requestControlFactories.put( transactionSpecificationFactory.getOid(), transactionSpecificationFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, transactionSpecificationFactory.getOid() ) );
}
// VirtualListViewRequest
ControlFactory<VirtualListViewRequest> virtualListViewRequestFactory = new VirtualListViewRequestFactory(
apiService );
requestControlFactories.put( virtualListViewRequestFactory.getOid(), virtualListViewRequestFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, virtualListViewRequestFactory.getOid() ) );
}
// VirtualListViewResponse
ControlFactory<VirtualListViewResponse> virtualListViewResponseFactory = new VirtualListViewResponseFactory(
apiService );
responseControlFactories.put( virtualListViewResponseFactory.getOid(), virtualListViewResponseFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06000_REGISTERED_CONTROL_FACTORY, virtualListViewResponseFactory.getOid() ) );
}
}
/**
* Load the extras extended operations :
* <ul>
* <li>cancel</li>
* <li>certGeneration</li>
* <li>gracefuShutdown</li>
* <li>storedProcedure</li>
* <li>gracefulDisconnect</li>
* <li>passwordModify</li>
* <li>whoAmI</li>
* <li>startTls</li>
* <li>startTransaction</li>
* </ul>
*
* @param apiService The LdapApiService to use
*/
public static void loadExtrasExtendedOperations( LdapApiService apiService )
{
Map<String, ExtendedOperationFactory> extendedRequestFactories = apiService.getExtendedRequestFactories();
Map<String, ExtendedOperationFactory> extendedResponseFactories = apiService.getExtendedResponseFactories();
CancelFactory cancelFactory = new CancelFactory( apiService );
extendedRequestFactories.put( cancelFactory.getOid(), cancelFactory );
extendedResponseFactories.put( cancelFactory.getOid(), cancelFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, cancelFactory.getOid() ) );
}
CertGenerationFactory certGenerationFactory = new CertGenerationFactory( apiService );
extendedRequestFactories.put( certGenerationFactory.getOid(), certGenerationFactory );
extendedResponseFactories.put( certGenerationFactory.getOid(), certGenerationFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, certGenerationFactory.getOid() ) );
}
EndTransactionFactory endTransactionFactory = new EndTransactionFactory( apiService );
extendedRequestFactories.put( endTransactionFactory.getOid(), endTransactionFactory );
extendedResponseFactories.put( endTransactionFactory.getOid(), endTransactionFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, endTransactionFactory.getOid() ) );
}
GracefulDisconnectFactory gracefulDisconnectFactory = new GracefulDisconnectFactory( apiService );
extendedResponseFactories.put( gracefulDisconnectFactory.getOid(), gracefulDisconnectFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, gracefulDisconnectFactory.getOid() ) );
}
GracefulShutdownFactory gracefulShutdownFactory = new GracefulShutdownFactory( apiService );
extendedRequestFactories.put( gracefulShutdownFactory.getOid(), gracefulShutdownFactory );
extendedResponseFactories.put( gracefulShutdownFactory.getOid(), gracefulShutdownFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, gracefulShutdownFactory.getOid() ) );
}
NoDFactory noticeOfDisconnectFactory = new NoDFactory( apiService );
extendedResponseFactories.put( noticeOfDisconnectFactory.getOid(), noticeOfDisconnectFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, noticeOfDisconnectFactory.getOid() ) );
}
PasswordModifyFactory passwordModifyFactory = new PasswordModifyFactory( apiService );
extendedRequestFactories.put( passwordModifyFactory.getOid(), passwordModifyFactory );
extendedResponseFactories.put( passwordModifyFactory.getOid(), passwordModifyFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, passwordModifyFactory.getOid() ) );
}
StartTlsFactory startTlsFactory = new StartTlsFactory( apiService );
extendedRequestFactories.put( startTlsFactory.getOid(), startTlsFactory );
extendedResponseFactories.put( startTlsFactory.getOid(), startTlsFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, startTlsFactory.getOid() ) );
}
StartTransactionFactory startTransactionFactory = new StartTransactionFactory( apiService );
extendedRequestFactories.put( startTransactionFactory.getOid(), startTransactionFactory );
extendedResponseFactories.put( startTransactionFactory.getOid(), startTransactionFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, startTransactionFactory.getOid() ) );
}
StoredProcedureFactory storedProcedureFactory = new StoredProcedureFactory( apiService );
extendedRequestFactories.put( storedProcedureFactory.getOid(), storedProcedureFactory );
extendedResponseFactories.put( storedProcedureFactory.getOid(), storedProcedureFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, storedProcedureFactory.getOid() ) );
}
WhoAmIFactory whoAmIFactory = new WhoAmIFactory( apiService );
extendedRequestFactories.put( whoAmIFactory.getOid(), whoAmIFactory );
extendedResponseFactories.put( whoAmIFactory.getOid(), whoAmIFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06001_REGISTERED_EXTENDED_OP_FACTORY, whoAmIFactory.getOid() ) );
}
}
/**
* Load the extras intermediate responses :
* <ul>
* <li>syncInfovalue</li>
* </ul>
*
* @param apiService The LdapApiService to use
*/
public static void loadExtrasIntermediateResponses( LdapApiService apiService )
{
Map<String, IntermediateOperationFactory> intermediateResponseFactories = apiService
.getIntermediateResponseFactories();
SyncInfoValueFactory syncInfoValueFactory = new SyncInfoValueFactory();
intermediateResponseFactories.put( syncInfoValueFactory.getOid(), syncInfoValueFactory );
if ( LOG.isInfoEnabled() )
{
LOG.info( I18n.msg( I18n.MSG_06002_REGISTERED_INTERMEDIATE_FACTORY, syncInfoValueFactory.getOid() ) );
}
}
}