You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2011/03/21 12:59:55 UTC

svn commit: r1083748 - in /cayenne/main/trunk: docs/doc/src/main/resources/ modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/ modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/

Author: aadamchik
Date: Mon Mar 21 11:59:55 2011
New Revision: 1083748

URL: http://svn.apache.org/viewvc?rev=1083748&view=rev
Log:
CAY-1526 Preferences: java.lang.IllegalArgumentException: Key too long

a patch by Dzmitry Kazimirchyk

Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
    cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java

Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=1083748&r1=1083747&r2=1083748&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Mon Mar 21 11:59:55 2011
@@ -19,6 +19,7 @@ CAY-1549 Migrate BatchQueryBuilderFactor
 
 Bug Fixes Since 3.1M2:
 
+CAY-1526 Preferences: java.lang.IllegalArgumentException: Key too long
 CAY-1546 cayenne-lifecycle: UuidBatchFault concurrency issues
 
 ----------------------------------

Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java?rev=1083748&r1=1083747&r2=1083748&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Application.java Mon Mar 21 11:59:55 2011
@@ -261,16 +261,20 @@ public class Application {
 
         Collection details = new ArrayList<String>();
         String[] keys = null;
+        ArrayList<String> values = new ArrayList<String>();
 
         try {
             keys = classLoaderPreference.keys();
+            for (String cpKey : keys) {
+            	values.add(classLoaderPreference.get(cpKey, ""));
+            }
         }
         catch (BackingStoreException e) {
             // do nothing
         }
 
-        for (int i = 0; i < keys.length; i++) {
-            details.add(keys[i]);
+        for (int i = 0; i < values.size(); i++) {
+            details.add(values.get(i));
         }
 
         if (details.size() > 0) {

Modified: cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java?rev=1083748&r1=1083747&r2=1083748&view=diff
==============================================================================
--- cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java (original)
+++ cayenne/main/trunk/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/pref/ClasspathPreferences.java Mon Mar 21 11:59:55 2011
@@ -23,6 +23,7 @@ import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.io.File;
+import java.util.Arrays;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -47,6 +48,8 @@ public class ClasspathPreferences extend
     protected List<String> classPathEntries;
     protected ClasspathTableModel tableModel;
     protected CayennePreferenceEditor editor;
+    protected List<String> classPathKeys;
+    private int counter;
 
     public ClasspathPreferences(PreferenceDialog parentController) {
         super(parentController);
@@ -58,16 +61,35 @@ public class ClasspathPreferences extend
             this.editor = (CayennePreferenceEditor) editor;
         }
 
-        String[] arr = null;
+        ArrayList<String> cpEntries = new ArrayList<String>();
+        ArrayList<String> cpEntryKeys = new ArrayList<String>();
+        this.counter = 0;
         try {
-            arr = getClassLoader().keys();
+        	String[] cpKeys = getClassLoader().keys();
+        	for (String cpKey : cpKeys) {
+        		
+        		try {
+        			int c = Integer.parseInt(cpKey);
+        			if (c > this.counter) {
+        				this.counter = c;
+        			}
+        			String tempValue = getClassLoader().get(cpKey, "");
+            		if (!"".equals(tempValue)) {
+            			cpEntries.add(tempValue);
+            			cpEntryKeys.add(cpKey);
+            		}
+        		} catch (NumberFormatException e) {
+        			
+        			//remove wrong entry (key must be number)
+        			addRemovedPreferences(cpKey);
+        		}
+        		
+        	}
         }
         catch (BackingStoreException e) {
         }
-        this.classPathEntries = new ArrayList<String>();
-        for (int i = 0; i < arr.length; i++) {
-            classPathEntries.add(arr[i]);
-        }
+        this.classPathEntries = cpEntries;
+        this.classPathKeys = cpEntryKeys;
 
         this.tableModel = new ClasspathTableModel();
 
@@ -126,9 +148,11 @@ public class ClasspathPreferences extend
         if (selected < 0) {
             return;
         }
-
-        addRemovedPreferences((String) classPathEntries.get(selected));
+  
+        addRemovedPreferences(classPathKeys.get(selected));
         classPathEntries.remove(selected);
+        classPathKeys.remove(selected);
+        
         tableModel.fireTableRowsDeleted(selected, selected);
     }
 
@@ -153,14 +177,20 @@ public class ClasspathPreferences extend
         }
 
         if (selected != null) {
-            // store last dir in preferences
-            getLastDirectory().updateFromChooser(chooser);
-
-            int len = classPathEntries.size();
-            String key = selected.getAbsolutePath();
-            addChangedPreferences(key, "");
-            classPathEntries.add(key);
-            tableModel.fireTableRowsInserted(len, len);
+        	if (!classPathEntries.contains(selected.getAbsolutePath())) {
+        		// store last dir in preferences
+        		getLastDirectory().updateFromChooser(chooser);
+
+        		int len = classPathEntries.size();
+        		int key = ++counter;
+        		
+        		String value = selected.getAbsolutePath();
+        		addChangedPreferences(Integer.toString(key), value);
+        		classPathEntries.add(value);
+        		classPathKeys.add(Integer.toString(key));
+        		
+        		tableModel.fireTableRowsInserted(len, len);
+        	}
         }
     }