You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by sj...@apache.org on 2008/08/21 12:27:55 UTC

svn commit: r687695 - in /harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool: control/ model/ view/

Author: sjanuary
Date: Thu Aug 21 03:27:53 2008
New Revision: 687695

URL: http://svn.apache.org/viewvc?rev=687695&view=rev
Log:
Apply patch for HARMONY-5952 (Progress on policytool)

Added:
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/WarningLogDialog.java   (with props)
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/apache.gif   (with props)
Modified:
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/control/Controller.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/control/PolicyTextParser.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/model/Permission.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/BaseFormDialog.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/EditorPanel.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/GrantEntryEditFormDialog.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/GraphicalEditorPanel.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/KeystoreEntryEditFormDialog.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/LAEFormDialog.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/MainFrame.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/PermissionEditFormDialog.java
    harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/PrincipalEditFormDialog.java

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/control/Controller.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/control/Controller.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/control/Controller.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/control/Controller.java Thu Aug 21 03:27:53 2008
@@ -31,6 +31,7 @@
 import org.apache.harmony.tools.policytool.view.EditorPanel;
 import org.apache.harmony.tools.policytool.view.GraphicalEditorPanel;
 import org.apache.harmony.tools.policytool.view.MainFrame;
+import org.apache.harmony.tools.policytool.view.WarningLogDialog;
 import org.apache.harmony.tools.policytool.view.MainFrame.MenuItemEnum;
 
 /**
@@ -38,6 +39,9 @@
  */
 public class Controller implements ChangeListener, ActionListener{
 
+    /** Thee warning log dialog. */
+    private static WarningLogDialog warningLogDialog;
+
     /** Reference to the main frame.              */
     private final MainFrame     mainFrame;
     /** Array of the editor panels.               */
@@ -52,6 +56,22 @@
     private File                editedPolicyFile;
 
     /**
+     * Logs an error message to the warning/error log.
+     * @param errorMessage error message to be logged
+     */
+    public static void logError( final String errorMessage ) {
+        warningLogDialog.addMessage( "Error: " + errorMessage );
+    }
+
+    /**
+     * Logs a warning message to the warning/error log.
+     * @param warningMessage warning message to be logged
+     */
+    public static void logWarning( final String warningMessage ) {
+        warningLogDialog.addMessage( "Warning: " + warningMessage );
+    }
+
+    /**
      * Creates a new Controller.
      * @param mainFrame reference to the main frame
      * @param editorPanels array of the editor panels
@@ -60,6 +80,7 @@
     public Controller( final MainFrame mainFrame, final EditorPanel[] editorPanels, final String policyFileName ) {
         this.mainFrame    = mainFrame;
         this.editorPanels = editorPanels;
+        warningLogDialog  = new WarningLogDialog( mainFrame );
         activeEditorPanel = editorPanels[ 0 ];
 
         PolicyFileHandler.setDialogParentComponent( mainFrame );
@@ -101,7 +122,7 @@
      * Determines if a dirty sensitive operation is allowed to be executed.<br>
      * There are operation which will throw away the edited policy text currently hold in the active editor
      * (for example exit or load a file, or start a new).<br>
-     * This method checks whether there are unsaved changes, and if so, ask confirmation on what to do with them.<br>
+     * This method checks whether there are unsaved changes, and if so, asks confirmation on what to do with them.<br>
      * Finally returns true, if the dirty data can be thrown away or has been saved successfully.
      * Returns false, if the effect of the operation (throwing away unsaved changes) is unwanted and therefore the operation is disallowed.
      * 
@@ -186,7 +207,7 @@
 
         case NEW :
             if ( allowedDirtySensitiveOperation( "starting new file" ) ) {
-                activeEditorPanel.loadPolicyText( null );
+                activeEditorPanel.loadPolicyText( "" );
                 setEditedPolicyFile( null );
             }
             break;
@@ -221,6 +242,7 @@
             break;
 
         case VIEW_WARNING_LOG :
+            warningLogDialog.setVisible( true );
             break;
 
         case EXIT :

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/control/PolicyTextParser.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/control/PolicyTextParser.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/control/PolicyTextParser.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/control/PolicyTextParser.java Thu Aug 21 03:27:53 2008
@@ -363,7 +363,7 @@
                         if ( peekNextNonWhiteSpaceChar( signedByIndices[ 1 ] ) != PolicyEntry.TERMINATOR_CHAR )
                             throw new InvalidPolicyTextException( "Was expecting semicolon but found something else!" );
                         else
-                            newIndex = skipWhiteSpaces( newIndex ) + 1;
+                            newIndex = skipWhiteSpaces( signedByIndices[ 1 ] ) + 1;
                     }
                     else
                         newIndex = skipWhiteSpaces( newIndex ) + 1;

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/model/Permission.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/model/Permission.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/model/Permission.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/model/Permission.java Thu Aug 21 03:27:53 2008
@@ -113,7 +113,7 @@
         if ( actions != null && actions.length() > 0 )
             stringBuilder.append( ", \"" ).append( actions ).append( '"');
         if ( signedBy != null && signedBy.length() > 0 )
-            stringBuilder.append( "," ).append( signedByPartPrefix ).append( "signedBy \"" ).append( signedBy ).append( '"' );
+            stringBuilder.append( ", " ).append( signedByPartPrefix ).append( "signedBy \"" ).append( signedBy ).append( '"' );
 
         return stringBuilder.toString();
     }

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/BaseFormDialog.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/BaseFormDialog.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/BaseFormDialog.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/BaseFormDialog.java Thu Aug 21 03:27:53 2008
@@ -33,6 +33,9 @@
  */
 public abstract class BaseFormDialog extends JDialog implements ActionListener {
 
+    /** Error message for not allowed quotation marks. */
+    public static final String NOT_ALLOWED_QUOTATION_MARKS_MESSAGE = "The following fields may not contain quotation marks: ";
+
     /** Reference to the owner window.    */
     protected final Window      ownerWindow;
 
@@ -130,7 +133,7 @@
     }
 
     /**
-     * Handles the action events of the dialog's ok and cancel button.
+     * Handles the action events of the dialog's ok and cancel buttons.
      */
     public void actionPerformed( final ActionEvent ae ) {
         if ( ae.getSource() == okButton )

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/EditorPanel.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/EditorPanel.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/EditorPanel.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/EditorPanel.java Thu Aug 21 03:27:53 2008
@@ -43,7 +43,6 @@
      * @param mainFrame reference to the main frame
      * @param panelTitle the title of the panel
      * @param layoutManager layout manager to be used
-     * @param supportsGraphicalKeystoreEdit true if this editor panel supports graphical keystore edit; false otherwise
      */
     public EditorPanel( final MainFrame mainFrame, final String panelTitle, final LayoutManager layoutManager ) {
         this( mainFrame, panelTitle, layoutManager, false );

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/GrantEntryEditFormDialog.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/GrantEntryEditFormDialog.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/GrantEntryEditFormDialog.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/GrantEntryEditFormDialog.java Thu Aug 21 03:27:53 2008
@@ -20,14 +20,18 @@
 import java.awt.BorderLayout;
 import java.awt.Dimension;
 import java.awt.Frame;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
 import javax.swing.Box;
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 
+import org.apache.harmony.tools.policytool.control.Controller;
 import org.apache.harmony.tools.policytool.model.GrantEntry;
 import org.apache.harmony.tools.policytool.model.Permission;
 import org.apache.harmony.tools.policytool.model.PolicyEntry;
@@ -173,7 +177,34 @@
 
     @Override
     public void onOkButtonPressed() {
-        // TODO: validation
+        // validation
+        final StringBuilder errorStringBuilder = new StringBuilder( NOT_ALLOWED_QUOTATION_MARKS_MESSAGE );
+        boolean validationFails = false;
+        if ( codeBaseTextField.getText().indexOf( '"' ) >= 0 ) {
+            validationFails = true;
+            errorStringBuilder.append( "codeBase" );
+        }
+        if ( signedByTextField.getText().indexOf( '"' ) >= 0 ) {
+            validationFails = true;
+            errorStringBuilder.append( validationFails ? ", signedBy" : "signedBy" );
+        }
+
+        if ( !validationFails && codeBaseTextField.getText().length() > 0 ) {
+            try {
+                new URL( codeBaseTextField.getText() );
+            } catch ( final MalformedURLException mue ) {
+                validationFails = true;
+                errorStringBuilder.setLength( 0 );
+                errorStringBuilder.append( "CodeBase contains a malformed URL: " + mue.getMessage() );
+            }
+        }
+
+        if ( validationFails ) {
+            Controller.logError( errorStringBuilder.toString() );
+            JOptionPane.showMessageDialog( this, errorStringBuilder.toString(), "Error!", JOptionPane.ERROR_MESSAGE );
+            return;
+        }
+        // validation end
 
         final GrantEntry grantEntry = initialGrantEntry == null ? newGrantEntry : initialGrantEntry;
 

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/GraphicalEditorPanel.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/GraphicalEditorPanel.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/GraphicalEditorPanel.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/GraphicalEditorPanel.java Thu Aug 21 03:27:53 2008
@@ -24,6 +24,7 @@
 import javax.swing.JOptionPane;
 
 import org.apache.harmony.tools.policytool.Consts;
+import org.apache.harmony.tools.policytool.control.Controller;
 import org.apache.harmony.tools.policytool.control.InvalidPolicyTextException;
 import org.apache.harmony.tools.policytool.control.PolicyTextParser;
 import org.apache.harmony.tools.policytool.model.GrantEntry;
@@ -93,6 +94,7 @@
             policyEntryList   = PolicyTextParser.parsePolicyText( policyText );
 
         } catch ( final InvalidPolicyTextException ipte ) {
+            Controller.logError( ipte.getMessage() );
             JOptionPane.showMessageDialog( this, new String[] { ipte.getMessage(), " ", "Graphical editor is disabled, correct the error in the direct editor or load a valid policy file." }, "Parse error!", JOptionPane.ERROR_MESSAGE );
             invalidPolicyText = policyText;
             policyEntryList   = new ArrayList< PolicyEntry >();

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/KeystoreEntryEditFormDialog.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/KeystoreEntryEditFormDialog.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/KeystoreEntryEditFormDialog.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/KeystoreEntryEditFormDialog.java Thu Aug 21 03:27:53 2008
@@ -20,13 +20,17 @@
 import java.awt.BorderLayout;
 import java.awt.Frame;
 import java.awt.GridLayout;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.List;
 
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTextField;
 
+import org.apache.harmony.tools.policytool.control.Controller;
 import org.apache.harmony.tools.policytool.model.CommentEntry;
 import org.apache.harmony.tools.policytool.model.KeystoreEntry;
 import org.apache.harmony.tools.policytool.model.KeystorePasswordURLEntry;
@@ -104,7 +108,52 @@
 
     @Override
     public void onOkButtonPressed() {
-        // TODO: validation
+        // validation
+        final StringBuilder errorStringBuilder = new StringBuilder( NOT_ALLOWED_QUOTATION_MARKS_MESSAGE );
+        boolean validationFails = false;
+        if ( keystoreURLTextField.getText().indexOf( '"' ) >= 0 ) {
+            validationFails = true;
+            errorStringBuilder.append( "Keystore URL" );
+        }
+        if ( keystoreTypeTextField.getText().indexOf( '"' ) >= 0 ) {
+            errorStringBuilder.append( validationFails ? ", Keystore Type" : "Keystore Type" );
+            validationFails = true;
+        }
+        if ( keystoreProviderTextField.getText().indexOf( '"' ) >= 0 ) {
+            errorStringBuilder.append( validationFails ? ", Keystore Provider" : "Keystore Provider" );
+            validationFails = true;
+        }
+        if ( keystorePasswordURLTextField.getText().indexOf( '"' ) >= 0 ) {
+            errorStringBuilder.append( validationFails ? ", Keystore Password URL" : "Keystore Password URL" );
+            validationFails = true;
+        }
+
+        if ( !validationFails && keystoreURLTextField.getText().length() > 0 ) {
+            try {
+                new URL( keystoreURLTextField.getText() );
+            } catch ( final MalformedURLException mue ) {
+                validationFails = true;
+                errorStringBuilder.setLength( 0 );
+                errorStringBuilder.append( "Keystore URL contains a malformed URL: " + mue.getMessage() );
+            }
+        }
+
+        if ( !validationFails && keystorePasswordURLTextField.getText().length() > 0 ) {
+            try {
+                new URL( keystorePasswordURLTextField.getText() );
+            } catch ( final MalformedURLException mue ) {
+                validationFails = true;
+                errorStringBuilder.setLength( 0 );
+                errorStringBuilder.append( "Keystore Password URL contains a malformed URL: " + mue.getMessage() );
+            }
+        }
+
+        if ( validationFails ) {
+            Controller.logError( errorStringBuilder.toString() );
+            JOptionPane.showMessageDialog( this, errorStringBuilder.toString(), "Error!", JOptionPane.ERROR_MESSAGE );
+            return;
+        }
+        // validation end
 
         final KeystoreEntry keystoreEntry = initialKeystoreEntry == null ? new KeystoreEntry() : initialKeystoreEntry;
 

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/LAEFormDialog.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/LAEFormDialog.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/LAEFormDialog.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/LAEFormDialog.java Thu Aug 21 03:27:53 2008
@@ -75,8 +75,12 @@
      * Should be called if the entities of the list might have changed but the list model was not modified.
      */
     public void refreshVisualizationList() {
-        visualizationJListforLAE.revalidate();
-        visualizationJListforLAE.repaint();
+        final Object newTempItem = new String();
+        // There is a bug if we edit an item, we change it in a way that its toString() method will return a very long string
+        // (long as it won't fit in the displayed width), its string will be truncated (ended with "..."), and no scrollbars will be displayed
+        // The addElement() operation causes to recalculate the viewport size.
+        listModel.addElement   ( newTempItem );
+        listModel.removeElement( newTempItem );
     }
 
 }

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/MainFrame.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/MainFrame.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/MainFrame.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/MainFrame.java Thu Aug 21 03:27:53 2008
@@ -22,7 +22,9 @@
 import java.awt.event.WindowEvent;
 import java.io.File;
 import java.io.IOException;
+import java.net.URL;
 
+import javax.swing.ImageIcon;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JMenu;
@@ -57,6 +59,12 @@
     public MainFrame( final String policyFileName ) {
         super( Consts.APPLICATION_NAME );
 
+        // I set icon image before controller, because controller creates WarningLogDialog passign main frame as owner,
+        // and icon image is inherited. This way Warning Log Dialog will have the same icon.
+        final URL apahceIconURL = MainFrame.class.getResource( "apache.gif" );
+        if ( apahceIconURL != null )
+            setIconImage( new ImageIcon( apahceIconURL ).getImage() );
+
         final EditorPanel[] editorPanels = new EditorPanel[] { new GraphicalEditorPanel( this ), new DirectTextEditorPanel( this ) };
         final Controller    controller   = new Controller( this, editorPanels, policyFileName );
 

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/PermissionEditFormDialog.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/PermissionEditFormDialog.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/PermissionEditFormDialog.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/PermissionEditFormDialog.java Thu Aug 21 03:27:53 2008
@@ -34,6 +34,7 @@
 import javax.swing.JScrollPane;
 import javax.swing.JTextField;
 
+import org.apache.harmony.tools.policytool.control.Controller;
 import org.apache.harmony.tools.policytool.model.Permission;
 
 /**
@@ -230,11 +231,35 @@
 
     @Override
     public void onOkButtonPressed() {
-        // TODO: validation
-        if ( permissionTypeTextField.getText().length() == 0 || targetNameTextField.isEnabled() && targetNameTextField.getText().length() == 0 ) {
-            JOptionPane.showMessageDialog( this, "Permission and target name must have a value!", "Error", JOptionPane.ERROR_MESSAGE );
+        // validation
+        final StringBuilder errorStringBuilder = new StringBuilder( NOT_ALLOWED_QUOTATION_MARKS_MESSAGE );
+        boolean validationFails = false;
+        if ( targetNameTextField.getText().indexOf( '"' ) >= 0 ) {
+            validationFails = true;
+            errorStringBuilder.append( "Target Name" );
+        }
+        if ( actionsTextField.getText().indexOf( '"' ) >= 0 ) {
+            errorStringBuilder.append( validationFails ? ", Actions" : "Actions" );
+            validationFails = true;
+        }
+        if ( signedByTextField.getText().indexOf( '"' ) >= 0 ) {
+            errorStringBuilder.append( validationFails ? ", Signed By" : "Signed By" );
+            validationFails = true;
+        }
+
+        if ( !validationFails )
+            if ( permissionTypeTextField.getText().length() == 0 || targetNameTextField.isEnabled() && targetNameTextField.getText().length() == 0 ) {
+                validationFails = true;
+                errorStringBuilder.setLength( 0 );
+                errorStringBuilder.append( "Permission and target name must have a value!" );
+            }
+
+        if ( validationFails ) {
+            Controller.logError( errorStringBuilder.toString() );
+            JOptionPane.showMessageDialog( this, errorStringBuilder.toString(), "Error!", JOptionPane.ERROR_MESSAGE );
             return;
         }
+        // validation end
 
         final Permission permission = initialPermission == null ? new Permission() : initialPermission;
 

Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/PrincipalEditFormDialog.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/PrincipalEditFormDialog.java?rev=687695&r1=687694&r2=687695&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/PrincipalEditFormDialog.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/PrincipalEditFormDialog.java Thu Aug 21 03:27:53 2008
@@ -26,10 +26,12 @@
 
 import javax.swing.JComboBox;
 import javax.swing.JLabel;
+import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTextField;
 
+import org.apache.harmony.tools.policytool.control.Controller;
 import org.apache.harmony.tools.policytool.model.Principal;
 
 /**
@@ -108,8 +110,27 @@
 
     @Override
     public void onOkButtonPressed() {
-        // TODO: validation
-        // Class name and target name are mandatory!
+        // validation
+        final StringBuilder errorStringBuilder = new StringBuilder( NOT_ALLOWED_QUOTATION_MARKS_MESSAGE );
+        boolean validationFails = false;
+        if ( principalNameTextField.getText().indexOf( '"' ) >= 0 ) {
+            validationFails = true;
+            errorStringBuilder.append( "Principal Name" );
+        }
+
+        if ( !validationFails )
+            if ( principalTypeTextField.getText().length() == 0 || principalNameTextField.getText().length() == 0 ) {
+                validationFails = true;
+                errorStringBuilder.setLength( 0 );
+                errorStringBuilder.append( "Principal Type and Principal Name must have a value!" );
+            }
+
+        if ( validationFails ) {
+            Controller.logError( errorStringBuilder.toString() );
+            JOptionPane.showMessageDialog( this, errorStringBuilder.toString(), "Error!", JOptionPane.ERROR_MESSAGE );
+            return;
+        }
+        // validation end
 
         final Principal principal = initialPrincipal == null ? new Principal() : initialPrincipal;
 

Added: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/WarningLogDialog.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/WarningLogDialog.java?rev=687695&view=auto
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/WarningLogDialog.java (added)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/WarningLogDialog.java Thu Aug 21 03:27:53 2008
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.harmony.tools.policytool.view;
+
+import java.awt.BorderLayout;
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.apache.harmony.tools.policytool.Consts;
+
+/**
+ * Dialog to view the warning and error logs.
+ */
+public class WarningLogDialog extends JDialog implements ActionListener {
+
+    /** Text area to store and display the log. */
+    private final JTextArea logTextArea; 
+    /** Reference to the owner frame.           */
+    private final Frame     ownerFrame;
+    
+    /**
+     * Creates a new WarningLogDialog.
+     * @param ownerFrame reference to the owner frame
+     */
+    public WarningLogDialog( final Frame ownerFrame ) {
+        super( ownerFrame, "Warning log", false );
+        this.ownerFrame = ownerFrame;
+        setDefaultCloseOperation( HIDE_ON_CLOSE );
+
+        logTextArea = new JTextArea( 15, 50 );
+        logTextArea.setEditable( false );
+        add( new JScrollPane( logTextArea ), BorderLayout.CENTER );
+
+        final JPanel  panel       = new JPanel();
+
+        final JButton closeButton = new JButton( "Close" );
+        closeButton.setMnemonic( closeButton.getText().charAt( 0 ) );
+        closeButton.addActionListener( this );
+        panel.add( closeButton );
+
+        add( panel, BorderLayout.SOUTH );
+
+        pack();
+    }
+
+    /**
+     * If parameter <code>visibility</code> is true, first centers the dialog. Calls <code>super.setVisible()</code> afterwards.
+     */
+    @Override
+    public void setVisible( final boolean visibility ) {
+        if ( visibility )
+            setLocation( ownerFrame.getX() + ownerFrame.getWidth () / 2 - getWidth () / 2,
+                         ownerFrame.getY() + ownerFrame.getHeight() / 2 - getHeight() / 2 );
+        super.setVisible( visibility );
+    }
+
+    /**
+     * Adds a message to the log.
+     * @param message message to be added
+     */
+    public void addMessage( final String message ) {
+        logTextArea.append( message );
+        logTextArea.append( Consts.NEW_LINE_STRING );
+        logTextArea.setCaretPosition( logTextArea.getDocument().getLength() );
+    }
+
+    /**
+     * Handles the action events of the close button.
+     */
+    public void actionPerformed( final ActionEvent ae ) {
+        setVisible( false );
+    }
+
+}

Propchange: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/WarningLogDialog.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/WarningLogDialog.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/apache.gif
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/apache.gif?rev=687695&view=auto
==============================================================================
Binary file - no diff available.

Propchange: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/apache.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream