You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2005/10/28 05:51:51 UTC

svn commit: r329072 - in /directory/protocol-providers/changepw/trunk: ./ src/java/org/apache/changepw/ src/java/org/apache/changepw/protocol/ src/java/org/apache/changepw/service/

Author: erodriguez
Date: Thu Oct 27 20:51:44 2005
New Revision: 329072

URL: http://svn.apache.org/viewcvs?rev=329072&view=rev
Log:
Refactoring in the Change Password protocol provider:
o  Moved server wrapper out of the OSGi bundle.
o  Cleaned-up configuration.
o  Standardized configuration location to top of hierarchy.
o  Added deps on MINA 0.8.0 and apacheds-core for configuration.

Added:
    directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordConfiguration.java
      - copied, changed from r327935, directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordConfiguration.java
    directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordServer.java   (with props)
Removed:
    directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordConfiguration.java
Modified:
    directory/protocol-providers/changepw/trunk/project.xml
    directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/protocol/ChangePasswordProtocolHandler.java
    directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/protocol/ChangePasswordProtocolProvider.java
    directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordContext.java
    directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordExceptionHandler.java
    directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/CheckPasswordPolicy.java
    directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/VerifyServiceTicket.java

Modified: directory/protocol-providers/changepw/trunk/project.xml
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/changepw/trunk/project.xml?rev=329072&r1=329071&r2=329072&view=diff
==============================================================================
--- directory/protocol-providers/changepw/trunk/project.xml (original)
+++ directory/protocol-providers/changepw/trunk/project.xml Thu Oct 27 20:51:44 2005
@@ -100,13 +100,19 @@
     <dependency>
       <groupId>directory-network</groupId>
       <artifactId>mina</artifactId>
-      <version>0.7.3-SNAPSHOT</version>
+      <version>0.8.0</version>
     </dependency>
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>nlog4j</artifactId>
       <version>1.2.17</version>
       <url>http://slf4j.org/nlog4j</url>
+    </dependency>
+    <dependency>
+      <!-- required to load Configuration and LDIFs -->
+      <groupId>directory</groupId>
+      <artifactId>apacheds-core</artifactId>
+      <version>0.9.3-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>junit</groupId>

Copied: directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordConfiguration.java (from r327935, directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordConfiguration.java)
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordConfiguration.java?p2=directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordConfiguration.java&p1=directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordConfiguration.java&r1=327935&r2=329072&rev=329072&view=diff
==============================================================================
--- directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordConfiguration.java (original)
+++ directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordConfiguration.java Thu Oct 27 20:51:44 2005
@@ -14,224 +14,279 @@
  *   limitations under the License.
  *
  */
-package org.apache.changepw.service;
+package org.apache.changepw;
 
 import java.util.ArrayList;
-import java.util.Hashtable;
+import java.util.Dictionary;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Properties;
+import java.util.Map;
 
 import javax.security.auth.kerberos.KerberosPrincipal;
 
 import org.apache.kerberos.crypto.encryption.EncryptionType;
+import org.apache.ldap.server.DirectoryService;
+import org.apache.ldap.server.configuration.ConfigurationException;
+import org.apache.protocol.common.LoadStrategy;
+import org.apache.protocol.common.ServiceConfiguration;
 
-public class ChangePasswordConfiguration
+public class ChangePasswordConfiguration extends ServiceConfiguration
 {
-    /** the number of milliseconds in a minute */
-    private static final int MINUTE = 60000;
-
     /** the prop key const for changepw.principal */
-    private static final String CHANGEPW_PRINCIPAL_KEY = "changepw.principal";
+    private static final String PRINCIPAL_KEY = "principal";
 
     /** the default change password principal */
-    private static final String CHANGEPW_DEFAULT_PRINCIPAL = "kadmin/changepw@EXAMPLE.COM";
+    private static final String DEFAULT_PRINCIPAL = "kadmin/changepw@EXAMPLE.COM";
 
-    /** the prop key const for changepw.primary.realm */
-    private static final String CHANGEPW_PRIMARY_REALM_KEY = "changepw.primary.realm";
+    /** the prop key const for primary.realm */
+    private static final String REALM_KEY = "realm";
 
     /** the default change password realm */
-    private static final String CHANGEPW_DEFAULT_REALM = "EXAMPLE.COM";
-
-    /** the prop key const for changepw.port */
-    private static final String CHANGEPW_PORT_KEY = "changepw.port";
+    private static final String DEFAULT_REALM = "EXAMPLE.COM";
 
     /** the default change password port */
-    private static final int CHANGEPW_DEFAULT_PORT = 464;
+    private static final String DEFAULT_IP_PORT = "464";
 
-    /** the prop key const for changepw.encryption.types */
-    private static final String CHANGEPW_ENCRYPTION_TYPES_KEY = "changepw.encryption.types";
+    /** the prop key const for encryption.types */
+    private static final String ENCRYPTION_TYPES_KEY = "encryption.types";
 
     /** the default encryption types */
-    public static final String[] CHANGEPW_DEFAULT_ENCRYPTION_TYPES = new String[] { "des-cbc-md5" };
+    public static final String[] DEFAULT_ENCRYPTION_TYPES = new String[] { "des-cbc-md5" };
 
-    /** the prop key const for changepw.buffer.size */
-    private static final String CHANGEPW_BUFFER_SIZE_KEY = "changepw.buffer.size";
+    /** the prop key const for allowable.clockskew */
+    private static final String ALLOWABLE_CLOCKSKEW_KEY = "allowable.clockskew";
 
     /** the default changepw buffer size */
-    private static final int CHANGEPW_DEFAULT_BUFFER_SIZE = 1024;
+    private static final long DEFAULT_ALLOWABLE_CLOCKSKEW = 5 * MINUTE;
 
-    /** the prop key const for changepw.empty.addresses.allowed */
-    private static final String CHANGEPW_EMPTY_ADDRESSES_ALLOWED_KEY = "changepw.empty.addresses.allowed";
+    /** the prop key const for empty.addresses.allowed */
+    private static final String EMPTY_ADDRESSES_ALLOWED_KEY = "empty.addresses.allowed";
 
     /** the default empty addresses */
-    private static final boolean CHANGEPW_DEFAULT_EMPTY_ADDRESSES_ALLOWED = true;
-
-    /** the prop key const for changepw.allowable.clockskew */
-    private static final String CHANGEPW_ALLOWABLE_CLOCKSKEW_KEY = "changepw.allowable.clockskew";
-
-    /** the default changepw buffer size */
-    private static final long CHANGEPW_DEFAULT_ALLOWABLE_CLOCKSKEW = 5 * MINUTE;
+    private static final boolean DEFAULT_EMPTY_ADDRESSES_ALLOWED = true;
 
     /** the prop key constants for password policy */
-    public static final String CHANGEPW_PASSWORD_LENGTH_KEY = "changepw.password.length";
-    public static final String CHANGEPW_CATEGORY_COUNT_KEY = "changepw.category.count";
-    public static final String CHANGEPW_TOKEN_SIZE_KEY = "changepw.token.size";
+    public static final String PASSWORD_LENGTH_KEY = "password.length";
+    public static final String CATEGORY_COUNT_KEY = "category.count";
+    public static final String TOKEN_SIZE_KEY = "token.size";
 
     /** the default change password password policies */
-    public static final int CHANGEPW_DEFAULT_PASSWORD_LENGTH = 6;
-    public static final int CHANGEPW_DEFAULT_CATEGORY_COUNT = 3;
-    public static final int CHANGEPW_DEFAULT_TOKEN_SIZE = 3;
+    public static final int DEFAULT_PASSWORD_LENGTH = 6;
+    public static final int DEFAULT_CATEGORY_COUNT = 3;
+    public static final int DEFAULT_TOKEN_SIZE = 3;
+
+    private static final String DEFAULT_PID = "org.apache.changepw";
+    private static final String DEFAULT_NAME = "Apache Change Password Service";
+    private static final String DEFAULT_PREFIX = "changepw.";
 
-    private final Properties properties = new Properties();
     private EncryptionType[] encryptionTypes;
 
+    /**
+     * Creates a new instance with default settings.
+     */
     public ChangePasswordConfiguration()
     {
-        prepareEncryptionTypes();
+        this( getDefaultConfig(), LoadStrategy.LDAP );
+    }
+
+    /**
+     * Creates a new instance with default settings that operates on the
+     * {@link DirectoryService} with the specified ID.
+     */
+    public ChangePasswordConfiguration( String instanceId )
+    {
+        this( getDefaultConfig(), LoadStrategy.LDAP );
+        setInstanceId( instanceId );
+    }
+
+    public ChangePasswordConfiguration( Map properties )
+    {
+        this( properties, LoadStrategy.LDAP );
     }
 
-    public ChangePasswordConfiguration( Properties properties )
+    public ChangePasswordConfiguration( Map properties, int strategy )
     {
-        this.properties.putAll( properties );
+        if ( properties == null )
+        {
+            configuration = getDefaultConfig();
+        }
+        else
+        {
+            loadProperties( DEFAULT_PREFIX, properties, strategy );
+        }
+
+        int port = getPort();
+
+        if ( port < 1 || port > 0xFFFF )
+        {
+            throw new ConfigurationException( "Invalid value:  " + IP_PORT_KEY + "=" + port );
+        }
 
         prepareEncryptionTypes();
     }
 
-    public String getPrimaryRealm()
+    public static Map getDefaultConfig()
+    {
+        Map defaults = new HashMap();
+
+        defaults.put( SERVICE_PID, DEFAULT_PID );
+        defaults.put( IP_PORT_KEY, DEFAULT_IP_PORT );
+
+        return defaults;
+    }
+
+    public boolean isDifferent( Dictionary config )
     {
-        String key = CHANGEPW_PRIMARY_REALM_KEY;
+        int port = getPort();
 
-        if ( properties.containsKey( key ) )
+        if ( port == Integer.parseInt( (String) config.get( IP_PORT_KEY ) ) )
         {
-            return properties.getProperty( key );
+            return false;
         }
 
-        return CHANGEPW_DEFAULT_REALM;
+        return true;
     }
 
-    public EncryptionType[] getEncryptionTypes()
+    public String getName()
     {
-        return encryptionTypes;
+        return DEFAULT_NAME;
     }
 
-    public Hashtable getProperties()
+    public int getPort()
     {
-        // Request that the krb5key value be returned as binary
-        properties.setProperty( "java.naming.ldap.attributes.binary", "krb5Key" );
+        String key = IP_PORT_KEY;
 
-        return properties;
+        if ( configuration.containsKey( key ) )
+        {
+            return Integer.parseInt( get( key ) );
+        }
+
+        return Integer.parseInt( DEFAULT_IP_PORT );
     }
 
-    public long getClockSkew()
+    public String getPrimaryRealm()
     {
-        String key = CHANGEPW_ALLOWABLE_CLOCKSKEW_KEY;
+        String key = REALM_KEY;
 
-        if ( properties.containsKey( key ) )
+        if ( configuration.containsKey( key ) )
         {
-            return MINUTE * Long.parseLong( properties.getProperty( key ) );
+            return get( key );
         }
 
-        return CHANGEPW_DEFAULT_ALLOWABLE_CLOCKSKEW;
+        return DEFAULT_REALM;
     }
 
-    public int getBufferSize()
+    public EncryptionType[] getEncryptionTypes()
+    {
+        return encryptionTypes;
+    }
+
+    public Map getProperties()
+    {
+        // Request that the krb5key value be returned as binary
+        configuration.put( "java.naming.ldap.attributes.binary", "krb5Key" );
+
+        return configuration;
+    }
+
+    public long getClockSkew()
     {
-        String key = CHANGEPW_BUFFER_SIZE_KEY;
+        String key = ALLOWABLE_CLOCKSKEW_KEY;
 
-        if ( properties.containsKey( key ) )
+        if ( configuration.containsKey( key ) )
         {
-            return Integer.parseInt( properties.getProperty( key ) );
+            return MINUTE * Long.parseLong( get( key ) );
         }
 
-        return CHANGEPW_DEFAULT_BUFFER_SIZE;
+        return DEFAULT_ALLOWABLE_CLOCKSKEW;
     }
 
-    public int getChangepwPort()
+    public int getBufferSize()
     {
-        String key = CHANGEPW_PORT_KEY;
+        String key = BUFFER_SIZE_KEY;
 
-        if ( properties.containsKey( key ) )
+        if ( configuration.containsKey( key ) )
         {
-            return Integer.parseInt( properties.getProperty( key ) );
+            return Integer.parseInt( get( key ) );
         }
 
-        return CHANGEPW_DEFAULT_PORT;
+        return DEFAULT_BUFFER_SIZE;
     }
 
     public KerberosPrincipal getChangepwPrincipal()
     {
-        String key = CHANGEPW_PRINCIPAL_KEY;
+        String key = PRINCIPAL_KEY;
 
-        if ( properties.containsKey( key ) )
+        if ( configuration.containsKey( key ) )
         {
-            return new KerberosPrincipal( properties.getProperty( key ) );
+            return new KerberosPrincipal( get( key ) );
         }
 
-        return new KerberosPrincipal( CHANGEPW_DEFAULT_PRINCIPAL );
+        return new KerberosPrincipal( DEFAULT_PRINCIPAL );
     }
 
     public boolean isEmptyAddressesAllowed()
     {
-        String key = CHANGEPW_EMPTY_ADDRESSES_ALLOWED_KEY;
+        String key = EMPTY_ADDRESSES_ALLOWED_KEY;
 
-        if ( properties.containsKey( key ) )
+        if ( configuration.containsKey( key ) )
         {
-            return "true".equalsIgnoreCase( properties.getProperty( key ) );
+            return "true".equalsIgnoreCase( get( key ) );
         }
 
-        return CHANGEPW_DEFAULT_EMPTY_ADDRESSES_ALLOWED;
+        return DEFAULT_EMPTY_ADDRESSES_ALLOWED;
     }
 
     public int getPasswordLengthPolicy()
     {
-        String key = CHANGEPW_PASSWORD_LENGTH_KEY;
+        String key = PASSWORD_LENGTH_KEY;
 
-        if ( properties.containsKey( key ) )
+        if ( configuration.containsKey( key ) )
         {
-            return Integer.parseInt( properties.getProperty( key ) );
+            return Integer.parseInt( get( key ) );
         }
 
-        return CHANGEPW_DEFAULT_PASSWORD_LENGTH;
+        return DEFAULT_PASSWORD_LENGTH;
     }
 
     public int getCategoryCountPolicy()
     {
-        String key = CHANGEPW_CATEGORY_COUNT_KEY;
+        String key = CATEGORY_COUNT_KEY;
 
-        if ( properties.containsKey( key ) )
+        if ( configuration.containsKey( key ) )
         {
-            return Integer.parseInt( properties.getProperty( key ) );
+            return Integer.parseInt( get( key ) );
         }
 
-        return CHANGEPW_DEFAULT_CATEGORY_COUNT;
+        return DEFAULT_CATEGORY_COUNT;
     }
 
     public int getTokenSizePolicy()
     {
-        String key = CHANGEPW_TOKEN_SIZE_KEY;
+        String key = TOKEN_SIZE_KEY;
 
-        if ( properties.containsKey( key ) )
+        if ( configuration.containsKey( key ) )
         {
-            return Integer.parseInt( properties.getProperty( key ) );
+            return Integer.parseInt( get( key ) );
         }
 
-        return CHANGEPW_DEFAULT_TOKEN_SIZE;
+        return DEFAULT_TOKEN_SIZE;
     }
 
     private void prepareEncryptionTypes()
     {
         String[] encryptionTypeStrings = null;
 
-        String key = CHANGEPW_ENCRYPTION_TYPES_KEY;
+        String key = ENCRYPTION_TYPES_KEY;
 
-        if ( properties.containsKey( key ) )
+        if ( configuration.containsKey( key ) )
         {
-            encryptionTypeStrings = ( properties.getProperty( key ) ).split( "\\s" );
+            encryptionTypeStrings = ( get( key ) ).split( "\\s" );
         }
         else
         {
-            encryptionTypeStrings = CHANGEPW_DEFAULT_ENCRYPTION_TYPES;
+            encryptionTypeStrings = DEFAULT_ENCRYPTION_TYPES;
         }
 
         List encTypes = new ArrayList();

Added: directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordServer.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordServer.java?rev=329072&view=auto
==============================================================================
--- directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordServer.java (added)
+++ directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordServer.java Thu Oct 27 20:51:44 2005
@@ -0,0 +1,96 @@
+/*
+ *   Copyright 2005 The Apache Software Foundation
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this 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.changepw;
+
+import java.io.IOException;
+import java.util.Dictionary;
+
+import org.apache.changepw.protocol.ChangePasswordProtocolProvider;
+import org.apache.kerberos.store.PrincipalStore;
+import org.apache.mina.common.TransportType;
+import org.apache.mina.protocol.ProtocolProvider;
+import org.apache.mina.registry.Service;
+import org.apache.mina.registry.ServiceRegistry;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * A wrapper encapsulating configuration, a MINA registry, and a PrincipalStore
+ * to implement a complete Change Password server. 
+ *
+ * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
+ * @version $Rev$, $Date$
+ */
+public class ChangePasswordServer
+{
+    /** the log for this class */
+    private static final Logger log = LoggerFactory.getLogger( ChangePasswordServer.class );
+
+    private ChangePasswordConfiguration config;
+    private ServiceRegistry registry;
+    private PrincipalStore store;
+
+    private ProtocolProvider provider;
+    private Service tcpService;
+    private Service udpService;
+
+    public ChangePasswordServer( ChangePasswordConfiguration config, ServiceRegistry registry, PrincipalStore store )
+    {
+        this.config = config;
+        this.registry = registry;
+        this.store = store;
+
+        String name = config.getName();
+        int port = config.getPort();
+
+        try
+        {
+            provider = new ChangePasswordProtocolProvider( config, this.store );
+
+            udpService = new Service( name, TransportType.DATAGRAM, port );
+            tcpService = new Service( name, TransportType.SOCKET, port );
+
+            registry.bind( udpService, provider );
+            registry.bind( tcpService, provider );
+
+            log.debug( name + " listening on port " + port );
+        }
+        catch ( IOException ioe )
+        {
+            log.error( ioe.getMessage(), ioe );
+        }
+    }
+
+    public boolean isDifferent( Dictionary newConfig )
+    {
+        return config.isDifferent( newConfig );
+    }
+
+    public void destroy()
+    {
+        registry.unbind( udpService );
+        registry.unbind( tcpService );
+
+        registry = null;
+        provider = null;
+        udpService = null;
+        tcpService = null;
+
+        log.debug( config.getName() + " has stopped listening on port " + config.getPort() );
+    }
+}

Propchange: directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/ChangePasswordServer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/protocol/ChangePasswordProtocolHandler.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/protocol/ChangePasswordProtocolHandler.java?rev=329072&r1=329071&r2=329072&view=diff
==============================================================================
--- directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/protocol/ChangePasswordProtocolHandler.java (original)
+++ directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/protocol/ChangePasswordProtocolHandler.java Thu Oct 27 20:51:44 2005
@@ -20,9 +20,9 @@
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 
+import org.apache.changepw.ChangePasswordConfiguration;
 import org.apache.changepw.messages.ChangePasswordRequest;
 import org.apache.changepw.service.ChangePasswordChain;
-import org.apache.changepw.service.ChangePasswordConfiguration;
 import org.apache.changepw.service.ChangePasswordContext;
 import org.apache.kerberos.store.PrincipalStore;
 import org.apache.mina.common.IdleStatus;

Modified: directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/protocol/ChangePasswordProtocolProvider.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/protocol/ChangePasswordProtocolProvider.java?rev=329072&r1=329071&r2=329072&view=diff
==============================================================================
--- directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/protocol/ChangePasswordProtocolProvider.java (original)
+++ directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/protocol/ChangePasswordProtocolProvider.java Thu Oct 27 20:51:44 2005
@@ -17,7 +17,7 @@
 
 package org.apache.changepw.protocol;
 
-import org.apache.changepw.service.ChangePasswordConfiguration;
+import org.apache.changepw.ChangePasswordConfiguration;
 import org.apache.kerberos.store.PrincipalStore;
 import org.apache.mina.protocol.ProtocolCodecFactory;
 import org.apache.mina.protocol.ProtocolDecoder;

Modified: directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordContext.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordContext.java?rev=329072&r1=329071&r2=329072&view=diff
==============================================================================
--- directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordContext.java (original)
+++ directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordContext.java Thu Oct 27 20:51:44 2005
@@ -18,6 +18,7 @@
 
 import java.net.InetAddress;
 
+import org.apache.changepw.ChangePasswordConfiguration;
 import org.apache.changepw.messages.AbstractPasswordMessage;
 import org.apache.kerberos.messages.ApplicationRequest;
 import org.apache.kerberos.messages.components.Authenticator;

Modified: directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordExceptionHandler.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordExceptionHandler.java?rev=329072&r1=329071&r2=329072&view=diff
==============================================================================
--- directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordExceptionHandler.java (original)
+++ directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/ChangePasswordExceptionHandler.java Thu Oct 27 20:51:44 2005
@@ -20,6 +20,7 @@
 
 import javax.security.auth.kerberos.KerberosPrincipal;
 
+import org.apache.changepw.ChangePasswordConfiguration;
 import org.apache.changepw.exceptions.ChangePasswordException;
 import org.apache.changepw.messages.ChangePasswordErrorModifier;
 import org.apache.kerberos.exceptions.KerberosException;

Modified: directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/CheckPasswordPolicy.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/CheckPasswordPolicy.java?rev=329072&r1=329071&r2=329072&view=diff
==============================================================================
--- directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/CheckPasswordPolicy.java (original)
+++ directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/CheckPasswordPolicy.java Thu Oct 27 20:51:44 2005
@@ -22,6 +22,7 @@
 
 import javax.security.auth.kerberos.KerberosPrincipal;
 
+import org.apache.changepw.ChangePasswordConfiguration;
 import org.apache.changepw.exceptions.ChangePasswordException;
 import org.apache.changepw.exceptions.ErrorType;
 import org.apache.kerberos.messages.components.Authenticator;

Modified: directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/VerifyServiceTicket.java
URL: http://svn.apache.org/viewcvs/directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/VerifyServiceTicket.java?rev=329072&r1=329071&r2=329072&view=diff
==============================================================================
--- directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/VerifyServiceTicket.java (original)
+++ directory/protocol-providers/changepw/trunk/src/java/org/apache/changepw/service/VerifyServiceTicket.java Thu Oct 27 20:51:44 2005
@@ -18,6 +18,7 @@
 
 import javax.security.auth.kerberos.KerberosPrincipal;
 
+import org.apache.changepw.ChangePasswordConfiguration;
 import org.apache.kerberos.messages.components.Ticket;
 import org.apache.kerberos.service.VerifyTicket;
 import org.apache.protocol.common.chain.Context;