Author: erodriguez
Date: Wed Nov  3 11:24:57 2004
New Revision: 56515

Added:
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/changepw/ChangePasswordErrorService.java
   
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/changepw/io/ChangePasswordErrorEncoder.java
Log:
Error message handling for change password service.

Added: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/changepw/ChangePasswordErrorService.java
==============================================================================
--- (empty file)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/changepw/ChangePasswordErrorService.java
 Wed Nov  3 11:24:57 2004
@@ -0,0 +1,60 @@
+/*
+ *   Copyright 2004 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.kerberos.changepw;
+
+import org.apache.kerberos.changepw.messages.*;
+import org.apache.kerberos.kdc.*;
+import org.apache.kerberos.messages.*;
+import org.apache.kerberos.messages.value.*;
+
+public class ChangePasswordErrorService {
+
+       private KdcConfiguration _config;
+       
+       public ChangePasswordErrorService(KdcConfiguration config) {
+               _config = config;
+       }
+       
+       public ChangePasswordError getReplyFor(KerberosException exception) {
+               
+               ErrorMessage errorMessage = getErrorMessage(exception);
+               
+               ChangePasswordErrorModifier modifier = new 
ChangePasswordErrorModifier();
+               modifier.setErrorMessage(errorMessage);
+               
+               return modifier.getChangePasswordError();
+       }
+       
+       // TODO - near duplicate with main KDC error service; refactor
+       public ErrorMessage getErrorMessage(KerberosException exception) {
+               ErrorMessageModifier modifier = new ErrorMessageModifier();
+               
+               KerberosTime now = new KerberosTime();
+               
+               modifier.setErrorCode(exception.getOrdinal());
+               modifier.setExplanatoryText(exception.getMessage());
+               
+               // this is the only difference with main KDC error service; 
refactor
+               modifier.setServerPrincipal(_config.getChangepwPrincipal());
+               
+               modifier.setServerTime(now);
+               modifier.setServerMicroSecond(0);
+               
+               return modifier.getErrorMessage();
+       }
+}
+

Added: 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/changepw/io/ChangePasswordErrorEncoder.java
==============================================================================
--- (empty file)
+++ 
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/changepw/io/ChangePasswordErrorEncoder.java
      Wed Nov  3 11:24:57 2004
@@ -0,0 +1,57 @@
+/*
+ *   Copyright 2004 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.kerberos.changepw.io;
+
+import org.apache.kerberos.changepw.messages.*;
+import org.apache.kerberos.io.encoder.*;
+import org.apache.kerberos.messages.*;
+
+import java.io.*;
+import java.nio.*;
+
+public class ChangePasswordErrorEncoder {
+       
+       public byte[] encode(ChangePasswordError message) throws IOException {
+               
+               // Build error message bytes
+               ErrorMessage errorMessage = message.getErrorMessage();
+               ErrorMessageEncoder errorEncoder = new ErrorMessageEncoder();
+               byte[] errorBytes = errorEncoder.encode(errorMessage);
+               
+               ByteBuffer buf = ByteBuffer.allocate(512);
+               
+               short headerLength = 6;
+               
+               short messageLength = (short)(headerLength + errorBytes.length);
+               
+               short protocolVersion     = 1;
+               short zeroIndicatesError  = 0;
+               
+               buf.putShort(messageLength);
+               buf.putShort(protocolVersion);
+               buf.putShort(zeroIndicatesError);
+               
+               buf.put(errorBytes);
+               
+               byte[] reply = new byte[buf.position()];
+               buf.rewind();
+               buf.get(reply, 0, reply.length);
+               
+               return reply;
+       }
+}
+

Reply via email to