You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by od...@apache.org on 2008/08/04 16:57:13 UTC
svn commit: r682413 - in
/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool:
control/ model/ view/
Author: odeakin
Date: Mon Aug 4 07:57:13 2008
New Revision: 682413
URL: http://svn.apache.org/viewvc?rev=682413&view=rev
Log:
Apply patch for HARMONY-5927 (Progress on policytool)
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/model/Permission.java
harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/model/Principal.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/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/ListAndEditPanel.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=682413&r1=682412&r2=682413&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 Mon Aug 4 07:57:13 2008
@@ -104,7 +104,7 @@
* This method checks whether there are unsaved changes, and if so, ask 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.
- *
+ *
* @param operationName name of the operation which will be included in the confirmation messages
* @return true, if the operation now can be performed safely; false otherwise
*/
@@ -163,7 +163,7 @@
*/
public void stateChanged( final ChangeEvent ce ) {
final EditorPanel newActiveEditorPanel = (EditorPanel) ( (JTabbedPane) ce.getSource() ).getSelectedComponent();
-
+
newActiveEditorPanel.loadPolicyText( activeEditorPanel.getPolicyText() );
newActiveEditorPanel.setHasDirty ( activeEditorPanel.getHasDirty () );
activeEditorPanel = newActiveEditorPanel;
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=682413&r1=682412&r2=682413&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 Mon Aug 4 07:57:13 2008
@@ -20,7 +20,7 @@
/**
* Represents a principal for the grant entries.
*/
-public class Permission {
+public class Permission implements Cloneable {
/** Name of the class of the permission. */
private String className;
@@ -95,4 +95,15 @@
this.signedBy = signedBy;
}
+ @Override
+ public Object clone() {
+ try {
+ return super.clone();
+ } catch ( final CloneNotSupportedException cnse ) {
+ // This never gonna happen.
+ cnse.printStackTrace();
+ return null;
+ }
+ }
+
}
Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/model/Principal.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/model/Principal.java?rev=682413&r1=682412&r2=682413&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/model/Principal.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/model/Principal.java Mon Aug 4 07:57:13 2008
@@ -20,7 +20,7 @@
/**
* Represents a principal for the grant entries.
*/
-public class Principal {
+public class Principal implements Cloneable {
/** Type of the principal. */
private String type;
@@ -64,4 +64,15 @@
return "Principal " + type + " \"" + name + '"';
}
+ @Override
+ public Object clone() {
+ try {
+ return super.clone();
+ } catch ( final CloneNotSupportedException cnse ) {
+ // This never gonna happen.
+ cnse.printStackTrace();
+ return null;
+ }
+ }
+
}
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=682413&r1=682412&r2=682413&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 Mon Aug 4 07:57:13 2008
@@ -148,7 +148,16 @@
* Finishes a successful edit action.
*/
protected void finishSuccessfulEdit() {
- ownerEditorPanel.setHasDirty( true );
+ finishSuccessfulEdit( true );
+ }
+
+ /**
+ * Finishes a successful edit action.
+ * @param setDirtyFlag tells whether dirty flag has to be set (to true)
+ */
+ protected void finishSuccessfulEdit( final boolean setDirtyFlag ) {
+ if ( setDirtyFlag )
+ ownerEditorPanel.setHasDirty( true );
dispose();
}
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=682413&r1=682412&r2=682413&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 Mon Aug 4 07:57:13 2008
@@ -20,6 +20,7 @@
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Frame;
+import java.util.ArrayList;
import java.util.List;
import javax.swing.Box;
@@ -41,10 +42,21 @@
private final GrantEntry initialGrantEntry;
/** List of policy entries where to store if new entry is to be created. */
private final List< PolicyEntry > policyEntryList;
-
+
/** Holds the reference to the new granty entry in case of we are creating a new one. */
private final GrantEntry newGrantEntry;
+ /** A deep clone of the edited grant entry's principal list.<br>
+ * This is necessary because we have to be able to restore the original principal list
+ * (which are edited by another instance of LAEFormDialog)
+ * if cancel action is performed here on the grant entry's LAEFormDialog. */
+ private final List< Principal > tempPrincipalList;
+ /** A deep clone of the edited grant entry's permission list.<br>
+ * This is necessary because we have to be able to restore the original permission list
+ * (which are edited by another instance of LAEFormDialog)
+ * if cancel action is performed here on the grant entry's LAEFormDialog. */
+ private final List< Permission > tempPermissionList;
+
/** Text field to view and edit the value of code base. */
private final JTextField codeBaseTextField = new JTextField();
/** Text field to view and edit the value of signed by. */
@@ -64,10 +76,44 @@
this.policyEntryList = policyEntryList;
newGrantEntry = initialGrantEntry == null ? new GrantEntry() : null;
+ tempPrincipalList = deepclonePrincipalList ( ( initialGrantEntry == null ? newGrantEntry : initialGrantEntry ).getPrincipalList () );
+ tempPermissionList = deepclonePermissionList( ( initialGrantEntry == null ? newGrantEntry : initialGrantEntry ).getPermissionList() );
prepareForDisplay();
}
+ /**
+ * Deepclones a principal list and returns it.<br>
+ * This method uses the <code>Object.clone()</code> clone the elements.
+ *
+ * @param principalList principal list to be deepcloned
+ * @return a deepcloned principal list
+ */
+ private static List< Principal > deepclonePrincipalList( final List< Principal > principalList ) {
+ final List< Principal > deepclonedPrincipalList = new ArrayList< Principal >( principalList.size() );
+
+ for ( final Principal principal : principalList )
+ deepclonedPrincipalList.add( (Principal) principal.clone() );
+
+ return deepclonedPrincipalList;
+ }
+
+ /**
+ * Deepclones a permission list and returns it.<br>
+ * This method uses the <code>Object.clone()</code> clone the elements.
+ *
+ * @param permissionList permission list to be deepcloned
+ * @return a deepcloned permission list
+ */
+ private static List< Permission > deepclonePermissionList( final List< Permission > permissionList ) {
+ final List< Permission > deepclonedPermissionList = new ArrayList< Permission >( permissionList.size() );
+
+ for ( final Permission permission : permissionList )
+ deepclonedPermissionList.add( (Permission) permission.clone() );
+
+ return deepclonedPermissionList;
+ }
+
@Override
protected void buildGUI() {
final JPanel panel = new JPanel( new BorderLayout( 2,15 ) );
@@ -100,10 +146,10 @@
panel.add( verticalBox, BorderLayout.NORTH );
// ListAndEdit component for Principals
- panel.add( new ListAndEditPanel< Principal >( "Principals:", "Principal", ( initialGrantEntry == null ? newGrantEntry : initialGrantEntry ).getPrincipalList(),
+ panel.add( new ListAndEditPanel< Principal >( "Principals:", "Principal", tempPrincipalList,
new ListAndEditPanel.LAEFormDialogFactory< Principal > () {
public LAEFormDialog createFactoryForAddOrEdit( final Principal selectedEntity ) {
- return new PrincipalEditFormDialog( GrantEntryEditFormDialog.this, ownerEditorPanel, selectedEntity, ( initialGrantEntry == null ? newGrantEntry : initialGrantEntry ).getPrincipalList() );
+ return new PrincipalEditFormDialog( GrantEntryEditFormDialog.this, ownerEditorPanel, selectedEntity, tempPrincipalList );
}
}
), BorderLayout.CENTER );
@@ -114,10 +160,10 @@
// ListAndEdit component for Permissions
final ListAndEditPanel< Permission > permissionsLAE =
- new ListAndEditPanel< Permission >( "Permissions:", "Permission", ( initialGrantEntry == null ? newGrantEntry : initialGrantEntry ).getPermissionList(),
+ new ListAndEditPanel< Permission >( "Permissions:", "Permission", tempPermissionList,
new ListAndEditPanel.LAEFormDialogFactory< Permission > () {
public LAEFormDialog createFactoryForAddOrEdit( final Permission selectedEntity ) {
- return null;
+ return new PermissionEditFormDialog( GrantEntryEditFormDialog.this, ownerEditorPanel, selectedEntity, tempPermissionList );
}
}
);
@@ -131,8 +177,10 @@
final GrantEntry grantEntry = initialGrantEntry == null ? newGrantEntry : initialGrantEntry;
- grantEntry.setCodeBase( codeBaseTextField.getText() );
- grantEntry.setSignedBy( signedByTextField.getText() );
+ grantEntry.setCodeBase ( codeBaseTextField.getText() );
+ grantEntry.setSignedBy ( signedByTextField.getText() );
+ grantEntry.setPrincipalList ( tempPrincipalList );
+ grantEntry.setPermissionList( tempPermissionList );
if ( initialGrantEntry == null ) {
policyEntryList.add( grantEntry );
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=682413&r1=682412&r2=682413&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 Mon Aug 4 07:57:13 2008
@@ -32,11 +32,13 @@
public class GraphicalEditorPanel extends EditorPanel {
/** Holds the invalid policy text or null if the loaded policy text is valid. */
- private String invalidPolicyText;
+ private String invalidPolicyText;
/** The list of the policy text's entries or null if invalid policy text was loaded. */
- private List< PolicyEntry > policyEntryList = new ArrayList< PolicyEntry >();
+ private List< PolicyEntry > policyEntryList = new ArrayList< PolicyEntry >();
+ /** ListAndEditPanel for handling the grant entries. */
+ private ListAndEditPanel< PolicyEntry > grantEntryLAEPanel;
/**
* Creates a new GraphicalEditorPanel.<br>
* Sets a BorderLayout as the layout manager.
@@ -45,8 +47,18 @@
public GraphicalEditorPanel( final MainFrame mainFrame ) {
super( mainFrame, "Graphical editing", new BorderLayout(), true );
- // buildGUI:
- add( new ListAndEditPanel< PolicyEntry >( "Policy entries:", "Policy Entry", policyEntryList,
+ buildGUI();
+ }
+
+ /**
+ * Builds the graphical user interface.<br>
+ * Creates and adds a new LAE panel to this editor panel which will be responsible to handle the grant entries.
+ */
+ private void buildGUI() {
+ if ( grantEntryLAEPanel != null )
+ remove( grantEntryLAEPanel );
+
+ grantEntryLAEPanel = new ListAndEditPanel< PolicyEntry >( "Policy entries:", "Policy Entry", policyEntryList,
new ListAndEditPanel.Filter< PolicyEntry > () {
public boolean includeEntity( final PolicyEntry entity ) {
return entity instanceof GrantEntry;
@@ -57,7 +69,9 @@
return new GrantEntryEditFormDialog( mainFrame, GraphicalEditorPanel.this, (GrantEntry) selectedEntity, policyEntryList );
}
}
- ), BorderLayout.CENTER );
+ );
+
+ add( grantEntryLAEPanel, BorderLayout.CENTER );
}
@Override
@@ -66,6 +80,9 @@
policyEntryList = new ArrayList< PolicyEntry >();
+ //TODO: uncomment when loadPolicyText() is implemented
+ //buildGUI();
+
return true;
}
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=682413&r1=682412&r2=682413&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 Mon Aug 4 07:57:13 2008
@@ -94,7 +94,7 @@
}
if ( initialKeystorePasswordURLEntry != null ) {
- keystorePasswordURLTextField.setText( initialKeystorePasswordURLEntry.getUrl() );
+ keystorePasswordURLTextField.setText( initialKeystorePasswordURLEntry.getUrl() );
}
final JPanel flowPanel = new JPanel();
Modified: harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/ListAndEditPanel.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/ListAndEditPanel.java?rev=682413&r1=682412&r2=682413&view=diff
==============================================================================
--- harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/ListAndEditPanel.java (original)
+++ harmony/enhanced/jdktools/trunk/modules/tools/src/main/java/org/apache/harmony/tools/policytool/view/ListAndEditPanel.java Mon Aug 4 07:57:13 2008
@@ -31,7 +31,7 @@
/**
* The abstraction of a panel which can list entities and provide GUI components to offer and handle certain actions on the entities.<br>
- * The entities are listed in a listbox,
+ * The entities are listed in a listbox.
* @param <EntityType> type of the entities listed on and edited by this panel
*/
public class ListAndEditPanel< EntityType > extends JPanel implements ActionListener {
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=682413&r1=682412&r2=682413&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 Mon Aug 4 07:57:13 2008
@@ -94,11 +94,11 @@
if ( initialPrincipal.getType() != null )
for ( int i = 0; i < DEFAULT_PRINCIPAL_TYPE_CLASS_NAMES.length; i++ )
if ( DEFAULT_PRINCIPAL_TYPE_CLASS_NAMES[ i ] != null && DEFAULT_PRINCIPAL_TYPE_CLASS_NAMES[ i ].equals( initialPrincipal.getType() ) ) {
- principalTypeComboBox .setSelectedIndex( i );
+ principalTypeComboBox.setSelectedIndex( i );
break;
}
- principalTypeTextField.setText( initialPrincipal.getType() );
- principalNameTextField.setText( initialPrincipal.getName() );
+ principalTypeTextField.setText( initialPrincipal.getType() );
+ principalNameTextField.setText( initialPrincipal.getName() );
}
final JPanel flowPanel = new JPanel();
@@ -121,7 +121,7 @@
} else
refreshVisualizationList();
- finishSuccessfulEdit();
+ finishSuccessfulEdit( false );
}
}