001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this 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 */
020 package org.apache.directory.server.core.trigger;
021
022
023 import java.util.Map;
024
025 import org.apache.directory.server.core.interceptor.context.OperationContext;
026 import org.apache.directory.shared.ldap.exception.LdapInvalidDnException;
027 import org.apache.directory.shared.ldap.name.DN;
028 import org.apache.directory.shared.ldap.name.RDN;
029 import org.apache.directory.shared.ldap.trigger.StoredProcedureParameter;
030
031
032 public class ModifyDNStoredProcedureParameterInjector extends AbstractStoredProcedureParameterInjector
033 {
034 private boolean deleteOldRn;
035 private DN oldRDN;
036 private RDN newRDN;
037 private DN oldSuperiorDN;
038 private DN newSuperiorDN;
039 private DN oldDN;
040 private DN newDN;
041
042
043 public ModifyDNStoredProcedureParameterInjector( OperationContext opContext, boolean deleteOldRn,
044 DN oldRDN, RDN newRDN, DN oldSuperiorDN, DN newSuperiorDN, DN oldDN, DN newDN)
045 {
046 super( opContext );
047 this.deleteOldRn = deleteOldRn;
048 this.oldRDN = oldRDN;
049 this.newRDN = newRDN;
050 this.oldSuperiorDN = oldSuperiorDN;
051 this.newSuperiorDN = newSuperiorDN;
052 this.oldDN = oldDN;
053 this.newDN = newDN;
054
055 Map<Class<?>, MicroInjector> injectors = super.getInjectors();
056 injectors.put( StoredProcedureParameter.ModifyDN_ENTRY.class, $entryInjector );
057 injectors.put( StoredProcedureParameter.ModifyDN_NEW_RDN.class, $newrdnInjector );
058 injectors.put( StoredProcedureParameter.ModifyDN_DELETE_OLD_RDN.class, $deleteoldrdnInjector );
059 injectors.put( StoredProcedureParameter.ModifyDN_NEW_SUPERIOR.class, $newSuperiorInjector );
060 injectors.put( StoredProcedureParameter.ModifyDN_OLD_RDN.class, $oldRDNInjector );
061 injectors.put( StoredProcedureParameter.ModifyDN_OLD_SUPERIOR_DN.class, $oldSuperiorDNInjector );
062 injectors.put( StoredProcedureParameter.ModifyDN_NEW_DN.class, $newDNInjector );
063
064 }
065 /**
066 * Injector for 'entry' parameter of ModifyDNRequest as in RFC4511.
067 */
068 MicroInjector $entryInjector = new MicroInjector()
069 {
070 public Object inject( OperationContext opContext, StoredProcedureParameter param ) throws LdapInvalidDnException
071 {
072 // Return a safe copy constructed with user provided name.
073 return new DN( oldDN.getName() );
074 }
075 };
076
077 /**
078 * Injector for 'newrdn' parameter of ModifyDNRequest as in RFC4511.
079 */
080 MicroInjector $newrdnInjector = new MicroInjector()
081 {
082 public Object inject( OperationContext opContext, StoredProcedureParameter param ) throws LdapInvalidDnException
083 {
084 // Return a safe copy constructed with user provided name.
085 return new DN( newRDN.getName() );
086 }
087 };
088
089 /**
090 * Injector for 'newrdn' parameter of ModifyDNRequest as in RFC4511.
091 */
092 MicroInjector $deleteoldrdnInjector = new MicroInjector()
093 {
094 public Object inject( OperationContext opContext, StoredProcedureParameter param ) throws LdapInvalidDnException
095 {
096 // Return a safe copy constructed with user provided name.
097 return deleteOldRn;
098 }
099 };
100
101 /**
102 * Injector for 'newSuperior' parameter of ModifyDNRequest as in RFC4511.
103 */
104 MicroInjector $newSuperiorInjector = new MicroInjector()
105 {
106 public Object inject( OperationContext opContext, StoredProcedureParameter param ) throws LdapInvalidDnException
107 {
108 // Return a safe copy constructed with user provided name.
109 return new DN( newSuperiorDN.getName() );
110 }
111 };
112
113 /**
114 * Extra injector for 'oldRDN' which can be derived from parameters specified for ModifyDNRequest as in RFC4511.
115 */
116 MicroInjector $oldRDNInjector = new MicroInjector()
117 {
118 public Object inject( OperationContext opContext, StoredProcedureParameter param ) throws LdapInvalidDnException
119 {
120 // Return a safe copy constructed with user provided name.
121 return new DN( oldRDN.getName() );
122 }
123 };
124
125 /**
126 * Extra injector for 'oldRDN' which can be derived from parameters specified for ModifyDNRequest as in RFC4511.
127 */
128 MicroInjector $oldSuperiorDNInjector = new MicroInjector()
129 {
130 public Object inject( OperationContext opContext, StoredProcedureParameter param ) throws LdapInvalidDnException
131 {
132 // Return a safe copy constructed with user provided name.
133 return new DN( oldSuperiorDN.getName() );
134 }
135 };
136
137 /**
138 * Extra injector for 'newDN' which can be derived from parameters specified for ModifyDNRequest as in RFC4511.
139 */
140 MicroInjector $newDNInjector = new MicroInjector()
141 {
142 public Object inject( OperationContext opContext, StoredProcedureParameter param ) throws LdapInvalidDnException
143 {
144 // Return a safe copy constructed with user provided name.
145 return new DN( newDN.getName() );
146 }
147 };
148
149 }