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 2007/12/18 16:29:27 UTC

svn commit: r605234 - in /directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor: model/io/OpenLdapSchemaFileImporter.java view/wizards/ImportSchemasFromOpenLdapWizard.java

Author: pamarcelot
Date: Tue Dec 18 07:29:26 2007
New Revision: 605234

URL: http://svn.apache.org/viewvc?rev=605234&view=rev
Log:
Fix for DIRSTUDIO-239 (No error message when importing a bad schema).

Modified:
    directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/io/OpenLdapSchemaFileImporter.java
    directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/ImportSchemasFromOpenLdapWizard.java

Modified: directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/io/OpenLdapSchemaFileImporter.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/io/OpenLdapSchemaFileImporter.java?rev=605234&r1=605233&r2=605234&view=diff
==============================================================================
--- directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/io/OpenLdapSchemaFileImporter.java (original)
+++ directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/model/io/OpenLdapSchemaFileImporter.java Tue Dec 18 07:29:26 2007
@@ -20,11 +20,14 @@
 package org.apache.directory.studio.schemaeditor.model.io;
 
 
+import java.io.ByteArrayInputStream;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.text.ParseException;
 import java.util.List;
+import java.util.Scanner;
+import java.util.regex.MatchResult;
 
 import org.apache.directory.server.core.tools.schema.AttributeTypeLiteral;
 import org.apache.directory.server.core.tools.schema.ObjectClassLiteral;
@@ -77,7 +80,12 @@
         }
         catch ( ParseException e )
         {
-            throw new OpenLdapSchemaFileImportException( "The file '" + path + "' can not be read correctly." );
+            ExceptionMessage exceptionMessage = parseExceptionMessage( e.getMessage() );
+            throw new OpenLdapSchemaFileImportException( "The file '"
+                + path
+                + "' can not be read correctly."
+                + ( exceptionMessage == null ? "" : "\nLine: " + exceptionMessage.lineNumber + ", Column: "
+                    + exceptionMessage.columnNumber + ", Cause: " + exceptionMessage.cause ) );
         }
 
         String schemaName = getNameFromPath( path );
@@ -175,5 +183,45 @@
         newOC.setMayNamesList( oc.getMay() );
 
         return newOC;
+    }
+
+
+    /**
+     * Parses the exception message and fills an {@link ExceptionMessage}.
+     *
+     * @param message
+     *      the exception message to parse
+     * @return
+     *      the corresponding {@link ExceptionMessage}, or <code>null</code>
+     */
+    private static ExceptionMessage parseExceptionMessage( String message )
+    {
+        Scanner scanner = new Scanner( new ByteArrayInputStream( message.getBytes() ) );
+        String foundString = scanner.findWithinHorizon( ".*line (\\d+):(\\d+): *([^\\n]*).*", message.length() );
+        if ( foundString != null )
+        {
+            MatchResult result = scanner.match();
+            if ( result.groupCount() == 3 )
+            {
+                ExceptionMessage exceptionMessage = new ExceptionMessage();
+                exceptionMessage.lineNumber = result.group( 1 );
+                exceptionMessage.columnNumber = result.group( 2 );
+                exceptionMessage.cause = result.group( 3 );
+
+                scanner.close();
+                return exceptionMessage;
+            }
+
+        }
+
+        scanner.close();
+        return null;
+    }
+
+    private static class ExceptionMessage
+    {
+        String lineNumber;
+        String columnNumber;
+        String cause;
     }
 }

Modified: directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/ImportSchemasFromOpenLdapWizard.java
URL: http://svn.apache.org/viewvc/directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/ImportSchemasFromOpenLdapWizard.java?rev=605234&r1=605233&r2=605234&view=diff
==============================================================================
--- directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/ImportSchemasFromOpenLdapWizard.java (original)
+++ directory/studio/trunk/studio-schemaeditor/src/main/java/org/apache/directory/studio/schemaeditor/view/wizards/ImportSchemasFromOpenLdapWizard.java Tue Dec 18 07:29:26 2007
@@ -88,7 +88,7 @@
 
         try
         {
-            getContainer().run( true, false, new IRunnableWithProgress()
+            getContainer().run( false, false, new IRunnableWithProgress()
             {
                 public void run( IProgressMonitor monitor )
                 {
@@ -99,27 +99,39 @@
                         monitor.subTask( schemaFile.getName() );
                         try
                         {
-                            Schema schema = OpenLdapSchemaFileImporter.getSchema( new FileInputStream( schemaFile), schemaFile.getAbsolutePath() );
+                            Schema schema = OpenLdapSchemaFileImporter.getSchema( new FileInputStream( schemaFile ),
+                                schemaFile.getAbsolutePath() );
                             schemaHandler.addSchema( schema );
                         }
                         catch ( OpenLdapSchemaFileImportException e )
                         {
-                            PluginUtils.logError( "An error occured when importing the schema " + schemaFile.getName()
-                                + ".", e );
-                            ViewUtils.displayErrorMessageBox( "Error", "An error occured when importing the schema "
-                                + schemaFile.getName() + "." );
+                            reportError( e, schemaFile );
                         }
                         catch ( FileNotFoundException e )
                         {
-                            PluginUtils.logError( "An error occured when importing the schema " + schemaFile.getName()
-                                + ".", e );
-                            ViewUtils.displayErrorMessageBox( "Error", "An error occured when importing the schema "
-                                + schemaFile.getName() + "." );
+                            reportError( e, schemaFile );
                         }
                         monitor.worked( 1 );
                     }
 
                     monitor.done();
+                }
+
+
+                /**
+                 * Reports the error raised.
+                 *
+                 * @param e
+                 *      the exception
+                 * @param schemaFile
+                 *      the schema file
+                 */
+                private void reportError( Exception e, File schemaFile )
+                {
+                    PluginUtils
+                        .logError( "An error occured when importing the schema " + schemaFile.getName() + ".", e );
+                    ViewUtils.displayErrorMessageBox( "Error", "An error occured when importing the schema "
+                        + schemaFile.getName() + "." + "\n\n" + e.getMessage() );
                 }
             } );
         }