You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by pa...@apache.org on 2011/04/27 17:26:28 UTC

svn commit: r1097144 - in /directory/studio/trunk/plugins/connection.core/src/main: java/org/apache/directory/studio/connection/core/ java/org/apache/directory/studio/connection/core/io/api/ resources/org/apache/directory/studio/connection/core/

Author: pamarcelot
Date: Wed Apr 27 15:26:27 2011
New Revision: 1097144

URL: http://svn.apache.org/viewvc?rev=1097144&view=rev
Log:
Improved error reporting for the LDAP API connection wrapper by appending the generic result code description in the case where no message is returned by the server.

Added:
    directory/studio/trunk/plugins/connection.core/src/main/resources/org/apache/directory/studio/connection/core/ResultCodeDescriptions.properties
Modified:
    directory/studio/trunk/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/Utils.java
    directory/studio/trunk/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/DirectoryApiConnectionWrapper.java

Modified: directory/studio/trunk/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/Utils.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/Utils.java?rev=1097144&r1=1097143&r2=1097144&view=diff
==============================================================================
--- directory/studio/trunk/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/Utils.java (original)
+++ directory/studio/trunk/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/Utils.java Wed Apr 27 15:26:27 2011
@@ -59,6 +59,21 @@ public class Utils
         }
     }
 
+    public static ResourceBundle resultCodeDescriptions = null;
+    // Load RessourceBundle with OID descriptions
+    static
+    {
+        try
+        {
+            resultCodeDescriptions = ResourceBundle
+                .getBundle( "org.apache.directory.studio.connection.core.ResultCodeDescriptions" );
+        }
+        catch ( Exception e )
+        {
+            e.printStackTrace();
+        }
+    }
+
 
     /**
      * Gets the textual OID description for the given numeric OID.
@@ -73,8 +88,31 @@ public class Utils
         {
             try
             {
-                String description = oidDescriptions.getString( oid );
-                return description;
+                return oidDescriptions.getString( oid );
+            }
+            catch ( MissingResourceException ignored )
+            {
+            }
+        }
+
+        return null;
+    }
+
+
+    /**
+     * Gets the textual result code description for the given numeric result code.
+     * 
+     * @param code the result code
+     * 
+     * @return the OID description, null if the numeric OID is unknown
+     */
+    public static String getResultCodeDescription( int code )
+    {
+        if ( resultCodeDescriptions != null )
+        {
+            try
+            {
+                return resultCodeDescriptions.getString( "" + code );
             }
             catch ( MissingResourceException ignored )
             {
@@ -146,7 +184,7 @@ public class Utils
             return null;
         }
 
-        byte[] b = Strings.getBytesUtf8(s);
+        byte[] b = Strings.getBytesUtf8( s );
         StringBuffer sb = new StringBuffer();
         for ( int i = 0; i < b.length; i++ )
         {

Modified: directory/studio/trunk/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/DirectoryApiConnectionWrapper.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/DirectoryApiConnectionWrapper.java?rev=1097144&r1=1097143&r2=1097144&view=diff
==============================================================================
--- directory/studio/trunk/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/DirectoryApiConnectionWrapper.java (original)
+++ directory/studio/trunk/plugins/connection.core/src/main/java/org/apache/directory/studio/connection/core/io/api/DirectoryApiConnectionWrapper.java Wed Apr 27 15:26:27 2011
@@ -40,6 +40,7 @@ import javax.security.auth.login.AppConf
 import javax.security.auth.login.AppConfigurationEntry.LoginModuleControlFlag;
 import javax.security.auth.login.Configuration;
 
+import org.apache.commons.lang.StringUtils;
 import org.apache.directory.ldap.client.api.CramMd5Request;
 import org.apache.directory.ldap.client.api.DigestMd5Request;
 import org.apache.directory.ldap.client.api.GssApiRequest;
@@ -86,6 +87,7 @@ import org.apache.directory.studio.conne
 import org.apache.directory.studio.connection.core.ICredentials;
 import org.apache.directory.studio.connection.core.IJndiLogger;
 import org.apache.directory.studio.connection.core.Messages;
+import org.apache.directory.studio.connection.core.Utils;
 import org.apache.directory.studio.connection.core.io.ConnectionWrapper;
 import org.apache.directory.studio.connection.core.io.StudioNamingEnumeration;
 import org.apache.directory.studio.connection.core.io.StudioTrustManager;
@@ -1230,8 +1232,18 @@ public class DirectoryApiConnectionWrapp
                 // Different from SUCCESS, we throw a generic exception
                 else if ( !ResultCodeEnum.SUCCESS.equals( ldapResult.getResultCode() ) )
                 {
+                    int code = ldapResult.getResultCode().getResultCode();
+                    String message = ldapResult.getDiagnosticMessage();
+
+                    // Checking if we got a message from the LDAP result
+                    if ( StringUtils.isEmpty( message ) )
+                    {
+                        // Assigning the generic result code description
+                        message = Utils.getResultCodeDescription( code );
+                    }
+
                     throw new Exception( NLS.bind( "[LDAP: error code {0} - {1}]", new String[]
-                        { ldapResult.getResultCode().getResultCode() + "", ldapResult.getDiagnosticMessage() } ) );
+                        { code + "", message } ) );
                 }
             }
         }

Added: directory/studio/trunk/plugins/connection.core/src/main/resources/org/apache/directory/studio/connection/core/ResultCodeDescriptions.properties
URL: http://svn.apache.org/viewvc/directory/studio/trunk/plugins/connection.core/src/main/resources/org/apache/directory/studio/connection/core/ResultCodeDescriptions.properties?rev=1097144&view=auto
==============================================================================
--- directory/studio/trunk/plugins/connection.core/src/main/resources/org/apache/directory/studio/connection/core/ResultCodeDescriptions.properties (added)
+++ directory/studio/trunk/plugins/connection.core/src/main/resources/org/apache/directory/studio/connection/core/ResultCodeDescriptions.properties Wed Apr 27 15:26:27 2011
@@ -0,0 +1,46 @@
+0=Success
+1=Operations Error
+2=Protocol Error
+3=Time Limit Exceeded
+4=Size Limit Exceeded
+5=Compare False
+6=Compare True
+7=Auth Method Not Supported
+8=Strong Auth Required
+9=Partial Results
+10=Referral
+11=Admin Limit Exceeded
+12=Unavailable Critical Extension
+13=Confidentiality Required
+14=SASL Bind In Progress
+16=No Such Attribute
+17=Undefined Attribute Type
+18=Inappropriate Matching
+19=Constraint Violation
+20=Attribute Or Value Exists
+21=Invalid Attribute Syntax
+32=No Such Object
+33=Alias Problem
+34=Invalid DN Syntax
+36=Alias Dereferencing Problem
+48=Inappropriate Authentication
+49=Invalid Credentials
+50=Insufficient Access Rights
+51=Busy
+52=Unavailable
+53=UnwillingToPerform
+54=Loop Detect
+64=Naming Violation
+65=Object Class Violation
+66=Not Allowed On Non Leaf
+67=Not Allowed On RDN
+68=Entry Already Exists
+69=Object Class Mods Prohibited
+71=Affects Multiple DSAs
+80=Other
+118=Canceled
+119=No Such Operation
+120=Too Late
+121=Cannot Cancel
+4096=eSync Refresh Required
+122=Unknown
\ No newline at end of file