Author: erodriguez
Date: Tue Feb 8 20:58:39 2005
New Revision: 153008
URL: http://svn.apache.org/viewcvs?view=rev&rev=153008
Log:
Enhanced the error handling subsystem to return explanatory data in Kerberos
error messages.
Modified:
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/ErrorService.java
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/KerberosException.java
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/messages/ErrorMessage.java
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/messages/ErrorMessageModifier.java
Modified:
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/ErrorService.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/ErrorService.java?view=diff&r1=153007&r2=153008
==============================================================================
---
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/ErrorService.java
(original)
+++
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/ErrorService.java
Tue Feb 8 20:58:39 2005
@@ -14,29 +14,38 @@
* limitations under the License.
*
*/
+
package org.apache.kerberos.kdc;
-import org.apache.kerberos.messages.*;
-import org.apache.kerberos.messages.value.*;
+import org.apache.kerberos.messages.ErrorMessage;
+import org.apache.kerberos.messages.ErrorMessageModifier;
+import org.apache.kerberos.messages.value.KerberosTime;
-public class ErrorService {
- private KdcConfiguration _config;
+public class ErrorService
+{
+ private KdcConfiguration config;
+
- public ErrorService(KdcConfiguration config) {
- _config = config;
+ public ErrorService( KdcConfiguration config )
+ {
+ this.config = config;
}
- public ErrorMessage getReplyFor(KerberosException exception) {
+
+ public ErrorMessage getReplyFor( KerberosException exception )
+ {
ErrorMessageModifier modifier = new ErrorMessageModifier();
KerberosTime now = new KerberosTime();
- modifier.setErrorCode(exception.getOrdinal());
- modifier.setExplanatoryText(exception.getMessage());
- modifier.setServerPrincipal(_config.getKdcPrincipal());
- modifier.setServerTime(now);
- modifier.setServerMicroSecond(0);
+ modifier.setErrorCode( exception.getOrdinal() );
+ modifier.setExplanatoryText( exception.getMessage() );
+ modifier.setServerPrincipal( config.getKdcPrincipal() );
+ modifier.setServerTime( now );
+ modifier.setServerMicroSecond( 0 );
+
+ modifier.setExplanatoryData( exception.getExplanatoryData() );
return modifier.getErrorMessage();
}
Modified:
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/KerberosException.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/KerberosException.java?view=diff&r1=153007&r2=153008
==============================================================================
---
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/KerberosException.java
(original)
+++
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/kdc/KerberosException.java
Tue Feb 8 20:58:39 2005
@@ -14,47 +14,12 @@
* limitations under the License.
*
*/
+
package org.apache.kerberos.kdc;
public class KerberosException extends Exception
{
-
-/*
- * Not a good idea to create constant exceptions that are thrown in different
- * places at different times by different threads. This will be a problem when
- * they have different stack traces from different worker threads. You're
asking
- * for a race condition here where one stack trace will overwrite another if
- * the same exception is thrown in two places. Try just creating constants for
- * various messages and their codes like (String) KDC_ERR_NONE_MSG and (int)
- * KDC_ERR_NONE_CODE. This may become unmanageable though.
- *
- * Another alternative would be to just create a KerberosException hierarchy
- * and hardcode the messages and type values into the subclasses. You should
- * always create and throw a new exception rather than trying to reuse them as
- * constants.
- *
- * Don't bother thinking about wasting an object creation everytime. This is
- * how it should happen. Secondly exceptions are not common pathways within
- * processing. So they should not be occurring frequently. It will not slow
- * you down to create the exception from scratch. As an example I started off
- * the hierarchy within the new exception package so it does not conflict with
- * this class.
- *
- * However I do have the feeling that you probably want a type safe enum here
- * rather than exception codes only because things like KDC_ERR_NONE represent
- * the absense of an error. It seems like a protocol response code. So I'd
- * separate that out into its own type safe enum but use that enum within
- * subclasses of the KerberosException. This infact is exactly what I have
- * done in the LDAP side and it works well. When I bubble up an exception from
- * deep down I catch it and return a PDU with the error code (LdapResultCode) I
- * get from the exception. Works out rather nicely athough initial setup costs
- * some typing.
- *
- * Cheers,
- * -aok
- */
-
public static final KerberosException KDC_ERR_NONE = new
KerberosException(0,
"No error");
public static final KerberosException KDC_ERR_NAME_EXP = new
KerberosException(1,
@@ -187,23 +152,43 @@
"Client names do not match");
public static final KerberosException KRB_ERR_KDC_NAME_MISMATCH = new
KerberosException(76,
"KDC names do not match");
-
- public String toString() {
- return _fName;
+
+ private final int ordinal;
+ private final String name;
+
+ private byte[] explanatoryData;
+
+
+ protected KerberosException( int ordinal, String name )
+ {
+ super( name );
+
+ this.ordinal = ordinal;
+ this.name = name;
}
- public int getOrdinal() {
- return _fOrdinal;
+ protected KerberosException( int ordinal, String name, byte[]
explanatoryData )
+ {
+ super( name );
+
+ this.ordinal = ordinal;
+ this.name = name;
+ this.explanatoryData = explanatoryData;
}
-
- /// PRIVATE /////
- private final String _fName;
- private final int _fOrdinal;
-
- protected KerberosException(int ordinal, String name) {
- super(name);
- _fOrdinal = ordinal;
- _fName = name;
+
+ public String toString()
+ {
+ return name;
+ }
+
+ public int getOrdinal()
+ {
+ return ordinal;
+ }
+
+ public byte[] getExplanatoryData()
+ {
+ return explanatoryData;
}
}
Modified:
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/messages/ErrorMessage.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/messages/ErrorMessage.java?view=diff&r1=153007&r2=153008
==============================================================================
---
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/messages/ErrorMessage.java
(original)
+++
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/messages/ErrorMessage.java
Tue Feb 8 20:58:39 2005
@@ -14,66 +14,88 @@
* limitations under the License.
*
*/
-package org.apache.kerberos.messages;
-import org.apache.kerberos.messages.value.*;
+package org.apache.kerberos.messages;
-import javax.security.auth.kerberos.*;
+import javax.security.auth.kerberos.KerberosPrincipal;
-public class ErrorMessage extends KerberosMessage {
+import org.apache.kerberos.messages.value.KerberosTime;
- private KerberosTime _clientTime; //optional
- private Integer _cusec; //optional
- private KerberosTime _serverTime;
- private int _susec;
- private int _errorCode;
- private KerberosPrincipal _clientPrincipal; //optional
- private KerberosPrincipal _serverPrincipal;
- private String _explanatoryText; //optional
- private byte[] _explanatoryData; //optional
- public ErrorMessage(KerberosTime clientTime, Integer cusec,
KerberosTime serverTime, int susec,
- int errorCode, KerberosPrincipal clientPrincipal,
KerberosPrincipal serverPrincipal,
- String explanatoryText, byte[] explanatoryData) {
+public class ErrorMessage extends KerberosMessage
+{
+ private KerberosTime clientTime; //optional
+ private Integer clientMicroSecond; //optional
+ private KerberosTime serverTime;
+ private int serverMicroSecond;
+ private int errorCode;
+ private KerberosPrincipal clientPrincipal; //optional
+ private KerberosPrincipal serverPrincipal;
+ private String explanatoryText; //optional
+ private byte[] explanatoryData; //optional
+
+
+ public ErrorMessage( KerberosTime clientTime, Integer
clientMicroSecond, KerberosTime serverTime,
+ int serverMicroSecond, int errorCode, KerberosPrincipal
clientPrincipal,
+ KerberosPrincipal serverPrincipal, String explanatoryText,
byte[] explanatoryData )
+ {
+ super( MessageType.KRB_ERROR );
- super(MessageType.KRB_ERROR);
- _clientTime = clientTime;
- _cusec = cusec;
- _serverTime = serverTime;
- _susec = susec;
- _errorCode = errorCode;
- _clientPrincipal = clientPrincipal;
- _serverPrincipal = serverPrincipal;
- _explanatoryText = explanatoryText;
- _explanatoryData = explanatoryData;
- }
-
- public KerberosPrincipal getClientPrincipal() {
- return _clientPrincipal;
- }
- public KerberosTime getClientTime() {
- return _clientTime;
- }
- public Integer getClientMicroSecond() {
- return _cusec;
- }
- public byte[] getExplanatoryData() {
- return _explanatoryData;
- }
- public int getErrorCode() {
- return _errorCode;
- }
- public String getExplanatoryText() {
- return _explanatoryText;
- }
- public KerberosPrincipal getServerPrincipal() {
- return _serverPrincipal;
- }
- public KerberosTime getServerTime() {
- return _serverTime;
- }
- public int getServerMicroSecond() {
- return _susec;
+ this.clientTime = clientTime;
+ this.clientMicroSecond = clientMicroSecond;
+ this.serverTime = serverTime;
+ this.serverMicroSecond = serverMicroSecond;
+ this.errorCode = errorCode;
+ this.clientPrincipal = clientPrincipal;
+ this.serverPrincipal = serverPrincipal;
+ this.explanatoryText = explanatoryText;
+ this.explanatoryData = explanatoryData;
+ }
+
+
+ public KerberosPrincipal getClientPrincipal()
+ {
+ return clientPrincipal;
+ }
+
+ public KerberosTime getClientTime()
+ {
+ return clientTime;
+ }
+
+ public Integer getClientMicroSecond()
+ {
+ return clientMicroSecond;
+ }
+
+ public byte[] getExplanatoryData()
+ {
+ return explanatoryData;
+ }
+
+ public int getErrorCode()
+ {
+ return errorCode;
+ }
+
+ public String getExplanatoryText()
+ {
+ return explanatoryText;
+ }
+
+ public KerberosPrincipal getServerPrincipal()
+ {
+ return serverPrincipal;
+ }
+
+ public KerberosTime getServerTime()
+ {
+ return serverTime;
+ }
+
+ public int getServerMicroSecond()
+ {
+ return serverMicroSecond;
}
}
Modified:
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/messages/ErrorMessageModifier.java
URL:
http://svn.apache.org/viewcvs/incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/messages/ErrorMessageModifier.java?view=diff&r1=153007&r2=153008
==============================================================================
---
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/messages/ErrorMessageModifier.java
(original)
+++
incubator/directory/protocols/kerberos/trunk/core/src/java/org/apache/kerberos/messages/ErrorMessageModifier.java
Tue Feb 8 20:58:39 2005
@@ -14,55 +14,77 @@
* limitations under the License.
*
*/
-package org.apache.kerberos.messages;
-import org.apache.kerberos.messages.value.*;
+package org.apache.kerberos.messages;
-import javax.security.auth.kerberos.*;
+import javax.security.auth.kerberos.KerberosPrincipal;
-public class ErrorMessageModifier {
+import org.apache.kerberos.messages.value.KerberosTime;
- private KerberosTime _clientTime; //optional
- private Integer _cusec; //optional
- private KerberosTime _serverTime;
- private int _susec;
- private int _errorCode;
- private KerberosPrincipal _clientPrincipal; //optional
- private KerberosPrincipal _serverPrincipal;
- private String _explanatoryText; //optional
- private byte[] _explanatoryData; //optional
- public ErrorMessage getErrorMessage() {
- return new ErrorMessage(_clientTime, _cusec, _serverTime,
_susec, _errorCode,
- _clientPrincipal, _serverPrincipal, _explanatoryText,
_explanatoryData);
- }
+public class ErrorMessageModifier
+{
+ private KerberosTime clientTime; //optional
+ private Integer clientMicroSecond; //optional
+ private KerberosTime serverTime;
+ private int serverMicroSecond;
+ private int errorCode;
+ private KerberosPrincipal clientPrincipal; //optional
+ private KerberosPrincipal serverPrincipal;
+ private String explanatoryText; //optional
+ private byte[] explanatoryData; //optional
+
- public void setClientPrincipal(KerberosPrincipal principal) {
- _clientPrincipal = principal;
+ public ErrorMessage getErrorMessage()
+ {
+ return new ErrorMessage( clientTime, clientMicroSecond,
serverTime, serverMicroSecond,
+ errorCode, clientPrincipal, serverPrincipal,
explanatoryText, explanatoryData );
}
- public void setClientTime(KerberosTime time) {
- _clientTime = time;
+
+
+ public void setClientPrincipal( KerberosPrincipal principal )
+ {
+ this.clientPrincipal = principal;
}
- public void setClientMicroSecond(Integer cusec) {
- _cusec = cusec;
+
+ public void setClientTime( KerberosTime time )
+ {
+ this.clientTime = time;
}
- public void setExplanatoryData(byte[] data) {
- _explanatoryData = data;
+
+ public void setClientMicroSecond( Integer clientMicroSecond )
+ {
+ this.clientMicroSecond = clientMicroSecond;
}
- public void setErrorCode(int code) {
- _errorCode = code;
+
+ public void setExplanatoryData( byte[] data )
+ {
+ this.explanatoryData = data;
}
- public void setExplanatoryText(String text) {
- _explanatoryText = text;
+
+ public void setErrorCode( int code )
+ {
+ this.errorCode = code;
}
- public void setServerPrincipal(KerberosPrincipal principal) {
- _serverPrincipal = principal;
+
+ public void setExplanatoryText( String text )
+ {
+ this.explanatoryText = text;
}
- public void setServerTime(KerberosTime time) {
- _serverTime = time;
+
+ public void setServerPrincipal( KerberosPrincipal principal )
+ {
+ this.serverPrincipal = principal;
}
- public void setServerMicroSecond(int susec) {
- _susec = susec;
+
+ public void setServerTime( KerberosTime time )
+ {
+ this.serverTime = time;
}
+
+ public void setServerMicroSecond( int serverMicroSecond )
+ {
+ this.serverMicroSecond = serverMicroSecond;
+ }
}