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);
+ }
}
}