You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2018/08/29 11:39:29 UTC

[1/9] cayenne git commit: CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer

Repository: cayenne
Updated Branches:
  refs/heads/STABLE-4.0 5a5f07ada -> e448b4f64


CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/0cc396e6
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/0cc396e6
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/0cc396e6

Branch: refs/heads/STABLE-4.0
Commit: 0cc396e6bbdd7a1cda6e6a82afe5d2086eede31d
Parents: 5a5f07a
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 29 14:04:47 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 29 14:04:47 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                                  |  9 +++++++++
 .../java/org/apache/cayenne/exp/Expression.java    |  2 +-
 .../org/apache/cayenne/exp/ExpressionTest.java     | 17 +++++++++++++++++
 3 files changed, 27 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/0cc396e6/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index fbbf372..5e1bfad 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -8,6 +8,15 @@ To browse individual bug reports check out project issue tracker:
 https://issues.apache.org/jira/browse/CAY
 
 ----------------------------------
+Release: 4.0.1
+Date:
+----------------------------------
+
+Bug Fixes:
+
+CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer
+
+----------------------------------
 Release: 4.0
 Date: August 06, 2018
 ----------------------------------

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0cc396e6/cayenne-server/src/main/java/org/apache/cayenne/exp/Expression.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/exp/Expression.java b/cayenne-server/src/main/java/org/apache/cayenne/exp/Expression.java
index 0d35cea..7f4c288 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/exp/Expression.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/exp/Expression.java
@@ -671,7 +671,7 @@ public abstract class Expression implements Serializable, XMLSerializable {
 		}
 
 		// all the children are processed, only now transform this copy
-		return (transformer != null) ? (Expression) transformer.transform(copy) : copy;
+		return (transformer != null) ? transformer.transform(copy) : copy;
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/cayenne/blob/0cc396e6/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionTest.java
index e0e306b..be71289 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/ExpressionTest.java
@@ -26,8 +26,10 @@ import java.util.Date;
 import java.util.List;
 
 import org.apache.cayenne.ObjectId;
+import org.apache.cayenne.exp.parser.ASTFalse;
 import org.apache.cayenne.exp.parser.SimpleNode;
 import org.apache.cayenne.testdo.testmap.Artist;
+import org.apache.commons.collections.Transformer;
 import org.junit.Test;
 
 public class ExpressionTest {
@@ -429,4 +431,19 @@ public class ExpressionTest {
 		assertEquals("a = enum:org.apache.cayenne.exp.ExpEnum1.TWO", buffer.toString());
 	}
 
+	@Test
+	public void testCustomPruneTransform() {
+		Expression exp = ExpressionFactory.exp("(false and true) and true");
+		Expression transformed = exp.transform(new Transformer() {
+			@Override
+			public Object transform(Object node) {
+				if (node instanceof ASTFalse) {
+					return Expression.PRUNED_NODE;
+				}
+				return node;
+			}
+		});
+		assertEquals("true and true", transformed.toString());
+	}
+
 }


[5/9] cayenne git commit: CAY-2450 Modeler: Impossible to update Attribute title after syncing ObjEntity

Posted by nt...@apache.org.
CAY-2450 Modeler: Impossible to update Attribute title after syncing ObjEntity


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/9aaad9c2
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/9aaad9c2
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/9aaad9c2

Branch: refs/heads/STABLE-4.0
Commit: 9aaad9c21dc5c844e3a33199c79d399abeac062b
Parents: a146cef
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 29 14:15:47 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 29 14:15:47 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                                             | 1 +
 .../modeler/dialog/objentity/ObjAttributeInfoDialog.java      | 7 +++++--
 2 files changed, 6 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/9aaad9c2/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 0de5067..be528a3 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -15,6 +15,7 @@ Date:
 Bug Fixes:
 
 CAY-2449 Modeler: Needless scrollbar in Generate DB Schema result menu
+CAY-2450 Modeler: Impossible to update Attribute title after syncing ObjEntity
 CAY-2451 Modeler: ObjEntity "Edit" button doesn't open editor for Relationship
 CAY-2459 Paste function is not working
 CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer

http://git-wip-us.apache.org/repos/asf/cayenne/blob/9aaad9c2/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
index 11b4a68..8e4c5f8 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjAttributeInfoDialog.java
@@ -354,7 +354,9 @@ public class ObjAttributeInfoDialog extends CayenneController implements TreeSel
 	public boolean setPath(boolean isChange) {
 
 		if (isChange()) {
-			attributeSaved.setType(view.getTypeComboBox().getSelectedItem().toString());
+			if(view.getTypeComboBox().getSelectedItem() != null) {
+				attributeSaved.setType(view.getTypeComboBox().getSelectedItem().toString());
+			}
 			attributeSaved.setName(view.getAttributeName().getText());
 		}
 
@@ -392,7 +394,8 @@ public class ObjAttributeInfoDialog extends CayenneController implements TreeSel
 			view.getCurrentPathLabel().setText(pathStr.toString());
 
 			if (attribute.getDbAttributePath() != null
-					&& !embeddableNames.contains(view.getTypeComboBox().getSelectedItem().toString())) {
+					 && ((view.getTypeComboBox().getSelectedItem() != null && !embeddableNames.contains(view.getTypeComboBox().getSelectedItem().toString()))
+			|| view.getTypeComboBox().getSelectedItem() == null)) {
 				if (!attribute.getDbAttributePath().equals(attributePath.toString())) {
 					attributeSaved.setDbAttributePath(attributePath.toString());
 


[3/9] cayenne git commit: CAY-2449 Modeler: Needless scrollbar in Generate DB Schema result menu

Posted by nt...@apache.org.
CAY-2449 Modeler: Needless scrollbar in Generate DB Schema result menu


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/51cc84f2
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/51cc84f2
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/51cc84f2

Branch: refs/heads/STABLE-4.0
Commit: 51cc84f2b374599a900517f0e3e728317202c3f8
Parents: 5ec7f38
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 29 14:13:36 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 29 14:13:36 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                                 |  1 +
 .../dialog/ValidationResultBrowserView.java       | 18 +++++++-----------
 2 files changed, 8 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/51cc84f2/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index d7da77c..56a4c32 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -14,6 +14,7 @@ Date:
 
 Bug Fixes:
 
+CAY-2449 Modeler: Needless scrollbar in Generate DB Schema result menu
 CAY-2459 Paste function is not working
 CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/51cc84f2/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ValidationResultBrowserView.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ValidationResultBrowserView.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ValidationResultBrowserView.java
index f186c3b..6c143d6 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ValidationResultBrowserView.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/ValidationResultBrowserView.java
@@ -20,9 +20,9 @@
 
 package org.apache.cayenne.modeler.dialog;
 
-import java.awt.BorderLayout;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
+import com.jgoodies.forms.builder.PanelBuilder;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
 
 import javax.swing.JButton;
 import javax.swing.JComponent;
@@ -31,10 +31,9 @@ import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 import javax.swing.ScrollPaneConstants;
-
-import com.jgoodies.forms.builder.PanelBuilder;
-import com.jgoodies.forms.layout.CellConstraints;
-import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.Dimension;
+import java.awt.FlowLayout;
 
 /**
  */
@@ -63,10 +62,7 @@ public class ValidationResultBrowserView extends JDialog {
                 "fill:min(50dlu;pref):grow",
                 "fill:20dlu, 9dlu, p, 3dlu, fill:40dlu:grow"));
         builder.setDefaultDialogBorder();
-        builder.add(new JScrollPane(
-                messageLabel,
-                ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
-                ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER), cc.xy(1, 1));
+        builder.add(messageLabel, cc.xy(1, 1));
         builder.addSeparator("Details", cc.xy(1, 3));
         builder.add(new JScrollPane(
                 errorsDisplay,


[2/9] cayenne git commit: CAY-2459 Modeler: DataMap paste function is not working

Posted by nt...@apache.org.
CAY-2459 Modeler: DataMap paste function is not working


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/5ec7f38a
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/5ec7f38a
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/5ec7f38a

Branch: refs/heads/STABLE-4.0
Commit: 5ec7f38acc543c9f251930efc184c0da81240070
Parents: 0cc396e
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 29 14:10:17 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 29 14:10:17 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                                      |  1 +
 .../src/main/java/org/apache/cayenne/modeler/Main.java |  2 +-
 .../org/apache/cayenne/modeler/action/PasteAction.java | 13 ++++++++++---
 3 files changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/5ec7f38a/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 5e1bfad..d7da77c 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -14,6 +14,7 @@ Date:
 
 Bug Fixes:
 
+CAY-2459 Paste function is not working
 CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer
 
 ----------------------------------

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5ec7f38a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
index ff5f225..c5c5dd5 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/Main.java
@@ -32,7 +32,7 @@ import org.apache.cayenne.project.ProjectModule;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.swing.*;
+import javax.swing.SwingUtilities;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.Collection;

http://git-wip-us.apache.org/repos/asf/cayenne/blob/5ec7f38a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
index 94162ee..853080d 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/PasteAction.java
@@ -49,9 +49,9 @@ import org.apache.cayenne.modeler.util.CayenneAction;
 import org.apache.cayenne.modeler.util.CayenneTransferable;
 import org.apache.cayenne.query.Query;
 
-import javax.swing.*;
+import javax.swing.KeyStroke;
 import javax.swing.undo.UndoableEdit;
-import java.awt.*;
+import java.awt.Toolkit;
 import java.awt.datatransfer.FlavorEvent;
 import java.awt.datatransfer.FlavorListener;
 import java.awt.datatransfer.UnsupportedFlavorException;
@@ -66,7 +66,7 @@ import java.util.Map;
  */
 public class PasteAction extends CayenneAction implements FlavorListener {
 
-    private static final String COPY_PATTERN = "Copy of %s (%d)";
+    private static final String COPY_PATTERN = "copy of %s (%d)";
 
     /**
      * Constructor for PasteAction
@@ -106,6 +106,10 @@ public class PasteAction extends CayenneAction implements FlavorListener {
 
             Object currentObject = getProjectController().getCurrentObject();
 
+            if(content instanceof DataMap) {
+                currentObject = getProjectController().getProject().getRootNode();
+            }
+
             if (content != null && currentObject != null) {
                 DataChannelDescriptor domain = (DataChannelDescriptor) getProjectController()
                         .getProject()
@@ -516,6 +520,9 @@ public class PasteAction extends CayenneAction implements FlavorListener {
                     (currentObject instanceof DataMap && isTreeLeaf(content))
                     ||
 
+                    (currentObject instanceof DataMap && content instanceof DataMap)
+                    ||
+
                     (currentObject instanceof DbEntity && (content instanceof DbAttribute
                             || content instanceof DbRelationship || isTreeLeaf(content)))
                     ||


[6/9] cayenne git commit: CAY-2454 Modeler: Unable to read validation message if it's truncated

Posted by nt...@apache.org.
CAY-2454 Modeler: Unable to read validation message if it's truncated


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/6f8513ca
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/6f8513ca
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/6f8513ca

Branch: refs/heads/STABLE-4.0
Commit: 6f8513cab9b75dd25a0258afeaf7ec3ab72b69df
Parents: 9aaad9c
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 29 14:17:19 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 29 14:17:19 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                               |  3 +-
 .../dialog/validator/ValidatorDialog.java       | 39 ++++++++++----------
 2 files changed, 21 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/6f8513ca/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index be528a3..181b90b 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -17,7 +17,8 @@ Bug Fixes:
 CAY-2449 Modeler: Needless scrollbar in Generate DB Schema result menu
 CAY-2450 Modeler: Impossible to update Attribute title after syncing ObjEntity
 CAY-2451 Modeler: ObjEntity "Edit" button doesn't open editor for Relationship
-CAY-2459 Paste function is not working
+CAY-2454 Modeler: Unable to read validation message if it's truncated
+CAY-2459 Modeler: DataMap Paste function is not working
 CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer
 
 ----------------------------------

http://git-wip-us.apache.org/repos/asf/cayenne/blob/6f8513ca/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/validator/ValidatorDialog.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/validator/ValidatorDialog.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/validator/ValidatorDialog.java
index d4fda65..8e83718 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/validator/ValidatorDialog.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/validator/ValidatorDialog.java
@@ -19,16 +19,14 @@
 
 package org.apache.cayenne.modeler.dialog.validator;
 
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.FlowLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import java.util.Collections;
-import java.util.List;
+import com.jgoodies.forms.builder.PanelBuilder;
+import com.jgoodies.forms.layout.CellConstraints;
+import com.jgoodies.forms.layout.FormLayout;
+import org.apache.cayenne.modeler.Application;
+import org.apache.cayenne.modeler.CayenneModelerFrame;
+import org.apache.cayenne.modeler.action.ValidateAction;
+import org.apache.cayenne.modeler.util.CayenneDialog;
+import org.apache.cayenne.validation.ValidationFailure;
 
 import javax.swing.JButton;
 import javax.swing.JDialog;
@@ -40,16 +38,16 @@ import javax.swing.event.ListSelectionEvent;
 import javax.swing.event.ListSelectionListener;
 import javax.swing.table.AbstractTableModel;
 import javax.swing.table.DefaultTableCellRenderer;
-
-import org.apache.cayenne.modeler.Application;
-import org.apache.cayenne.modeler.CayenneModelerFrame;
-import org.apache.cayenne.modeler.action.ValidateAction;
-import org.apache.cayenne.modeler.util.CayenneDialog;
-import org.apache.cayenne.validation.ValidationFailure;
-
-import com.jgoodies.forms.builder.PanelBuilder;
-import com.jgoodies.forms.layout.CellConstraints;
-import com.jgoodies.forms.layout.FormLayout;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.FlowLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.util.Collections;
+import java.util.List;
 
 /**
  * Dialog for displaying validation errors.
@@ -217,6 +215,7 @@ public class ValidatorDialog extends CayenneDialog {
             if (value != null) {
                 ValidationFailure info = (ValidationFailure) value;
                 value = info.getDescription();
+                setToolTipText(info.getDescription());
             }
 
             setBackground(error ? ERROR_COLOR : WARNING_COLOR);


[4/9] cayenne git commit: CAY-2451 Modeler: ObjEntity "Edit" button doesn't open editor for Relationship

Posted by nt...@apache.org.
CAY-2451 Modeler: ObjEntity "Edit" button doesn't open editor for Relationship


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/a146cef5
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/a146cef5
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/a146cef5

Branch: refs/heads/STABLE-4.0
Commit: a146cef5192d668adc6819b340caa0592ee5a285
Parents: 51cc84f
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 29 14:14:30 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 29 14:14:30 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                                              | 1 +
 .../cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java  | 6 ++++--
 2 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/a146cef5/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 56a4c32..0de5067 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -15,6 +15,7 @@ Date:
 Bug Fixes:
 
 CAY-2449 Modeler: Needless scrollbar in Generate DB Schema result menu
+CAY-2451 Modeler: ObjEntity "Edit" button doesn't open editor for Relationship
 CAY-2459 Paste function is not working
 CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/a146cef5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
index d9af4ae..b312f87 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/dialog/objentity/ObjRelationshipInfo.java
@@ -41,11 +41,12 @@ import org.apache.cayenne.modeler.util.NameGeneratorPreferences;
 import org.apache.cayenne.util.DeleteRuleUpdater;
 import org.apache.cayenne.util.Util;
 
-import javax.swing.*;
+import javax.swing.JOptionPane;
+import javax.swing.WindowConstants;
 import javax.swing.event.TreeSelectionEvent;
 import javax.swing.event.TreeSelectionListener;
 import javax.swing.tree.TreePath;
-import java.awt.*;
+import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
@@ -701,6 +702,7 @@ public class ObjRelationshipInfo extends CayenneController implements TreeSelect
         }
 
         if (getStartEntity() == null) {
+            JOptionPane.showMessageDialog(getView(), "Can't map relationship without source DbEntity. Set source DbEntity.");
             throw new CayenneRuntimeException("Can't map relationship without source DbEntity.");
         }
     }


[9/9] cayenne git commit: Docs: allow cayenne version override

Posted by nt...@apache.org.
Docs: allow cayenne version override


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/e448b4f6
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/e448b4f6
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/e448b4f6

Branch: refs/heads/STABLE-4.0
Commit: e448b4f643f67b15e4a534f8954da8e836e89af3
Parents: 2559472
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 29 14:26:40 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 29 14:26:40 2018 +0300

----------------------------------------------------------------------
 docs/asciidoc/pom.xml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/e448b4f6/docs/asciidoc/pom.xml
----------------------------------------------------------------------
diff --git a/docs/asciidoc/pom.xml b/docs/asciidoc/pom.xml
index 8949979..567ce6c 100644
--- a/docs/asciidoc/pom.xml
+++ b/docs/asciidoc/pom.xml
@@ -45,6 +45,7 @@
         <asciidoctor.maven.plugin.version>1.5.6</asciidoctor.maven.plugin.version>
         <asciidoctorj.pdf.version>1.5.0-alpha.16</asciidoctorj.pdf.version>
         <jruby.version>9.1.17.0</jruby.version>
+        <cayenne.version>${project.version}</cayenne.version>
         <cayenne.major.version>4.0</cayenne.major.version>
     </properties>
 
@@ -92,7 +93,7 @@
 
                         <basedir>${project.basedir}</basedir>
                         <sourcedir>${project.build.sourceDirectory}</sourcedir>
-                        <project-version>${project.version}</project-version>
+                        <project-version>${cayenne.version}</project-version>
                         <project-major-version>${cayenne.major.version}</project-major-version>
 
                         <imagesdir>images</imagesdir>


[7/9] cayenne git commit: CAY-2462 Modeler: Clipboard holds old content after application was reloaded

Posted by nt...@apache.org.
CAY-2462 Modeler: Clipboard holds old content after application was reloaded


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/48fe22c5
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/48fe22c5
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/48fe22c5

Branch: refs/heads/STABLE-4.0
Commit: 48fe22c5fbf6a1227eb399013772b1c7353b0565
Parents: 6f8513c
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 29 14:19:51 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 29 14:19:51 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                               |  1 +
 .../modeler/action/OpenProjectAction.java       | 20 ++++++++++++++++++++
 2 files changed, 21 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/48fe22c5/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 181b90b..bcdeef0 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -19,6 +19,7 @@ CAY-2450 Modeler: Impossible to update Attribute title after syncing ObjEntity
 CAY-2451 Modeler: ObjEntity "Edit" button doesn't open editor for Relationship
 CAY-2454 Modeler: Unable to read validation message if it's truncated
 CAY-2459 Modeler: DataMap Paste function is not working
+CAY-2462 Modeler: Clipboard holds old content after application was reloaded
 CAY-2464 ClassCastException when returning PRUNED_NODE in expression transformer
 
 ----------------------------------

http://git-wip-us.apache.org/repos/asf/cayenne/blob/48fe22c5/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
index e7fcb56..de8e555 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/OpenProjectAction.java
@@ -20,6 +20,9 @@
 package org.apache.cayenne.modeler.action;
 
 import java.awt.Toolkit;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.datatransfer.UnsupportedFlavorException;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
 import java.io.File;
@@ -56,6 +59,7 @@ public class OpenProjectAction extends ProjectAction {
     public OpenProjectAction(Application application) {
         super(getActionName(), application);
         this.fileChooser = new ProjectOpener();
+        resetClipboard();
     }
 
     @Override
@@ -193,4 +197,20 @@ public class OpenProjectAction extends ProjectAction {
                 JOptionPane.YES_NO_OPTION);
         return returnCode != JOptionPane.NO_OPTION;
     }
+
+    private void resetClipboard() {
+        Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new Transferable() {
+            public DataFlavor[] getTransferDataFlavors() {
+                return new DataFlavor[0];
+            }
+
+            public boolean isDataFlavorSupported(DataFlavor flavor) {
+                return false;
+            }
+
+            public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
+                throw new UnsupportedFlavorException(flavor);
+            }
+        }, null);
+    }
 }


[8/9] cayenne git commit: CAY-2320 Modeler: Limit input into numeric fields to 10 digits

Posted by nt...@apache.org.
CAY-2320 Modeler: Limit input into numeric fields to 10 digits


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/25594726
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/25594726
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/25594726

Branch: refs/heads/STABLE-4.0
Commit: 255947264868b03a99b471a1c52037c1611a1aaf
Parents: 48fe22c
Author: Nikita Timofeev <st...@gmail.com>
Authored: Wed Aug 29 14:24:51 2018 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Wed Aug 29 14:24:51 2018 +0300

----------------------------------------------------------------------
 RELEASE-NOTES.txt                               |  1 +
 .../modeler/editor/ProcedureParameterTab.java   | 48 +++++++++-------
 .../editor/ProcedureParameterTableModel.java    | 15 +++--
 .../editor/dbentity/DbAttributeTableModel.java  | 25 ++++++---
 .../editor/dbentity/DbEntityAttributePanel.java |  9 +++
 .../swing/components/LimitedTextField.java      | 59 ++++++++++++++++++++
 6 files changed, 120 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/25594726/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index bcdeef0..dfcad7f 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -14,6 +14,7 @@ Date:
 
 Bug Fixes:
 
+CAY-2320 Modeler: Limit input into numeric fields to 10 digits
 CAY-2449 Modeler: Needless scrollbar in Generate DB Schema result menu
 CAY-2450 Modeler: Impossible to update Attribute title after syncing ObjEntity
 CAY-2451 Modeler: ObjEntity "Edit" button doesn't open editor for Relationship

http://git-wip-us.apache.org/repos/asf/cayenne/blob/25594726/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTab.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTab.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTab.java
index c1be0d4..f9d61fe 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTab.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTab.java
@@ -19,26 +19,6 @@
 
 package org.apache.cayenne.modeler.editor;
 
-import java.awt.BorderLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.EventObject;
-import java.util.List;
-
-import javax.swing.Icon;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JMenuItem;
-import javax.swing.JPanel;
-import javax.swing.JPopupMenu;
-import javax.swing.JToolBar;
-import javax.swing.SwingConstants;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ListSelectionEvent;
-import javax.swing.event.ListSelectionListener;
-import javax.swing.table.DefaultTableCellRenderer;
-import javax.swing.table.TableColumn;
-
 import org.apache.cayenne.configuration.DataChannelDescriptor;
 import org.apache.cayenne.configuration.event.ProcedureEvent;
 import org.apache.cayenne.configuration.event.ProcedureParameterEvent;
@@ -67,8 +47,28 @@ import org.apache.cayenne.modeler.util.ModelerUtil;
 import org.apache.cayenne.modeler.util.PanelFactory;
 import org.apache.cayenne.modeler.util.UIUtil;
 import org.apache.cayenne.modeler.util.combo.AutoCompletion;
+import org.apache.cayenne.swing.components.LimitedTextField;
 import org.apache.cayenne.swing.components.image.FilteredIconFactory;
 
+import javax.swing.Icon;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JMenuItem;
+import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
+import javax.swing.JToolBar;
+import javax.swing.SwingConstants;
+import javax.swing.event.ChangeEvent;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.TableColumn;
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.EventObject;
+import java.util.List;
+
 public class ProcedureParameterTab extends JPanel implements ProcedureParameterListener,
         ProcedureDisplayListener, ExistingSelectionProcessor, ActionListener {
 
@@ -303,6 +303,14 @@ public class ProcedureParameterTab extends JPanel implements ProcedureParameterL
         directionEditor.setEditable(false);
         directionColumn.setCellEditor(new CayenneCellEditor(directionEditor));
 
+        TableColumn precisionColumn = table.getColumnModel().getColumn(ProcedureParameterTableModel.PARAMETER_PRECISION);
+        LimitedTextField limitedPrecisionField = new LimitedTextField(10);
+        precisionColumn.setCellEditor(Application.getWidgetFactory().createCellEditor(limitedPrecisionField));
+
+        TableColumn lengthColumn = table.getColumnModel().getColumn(ProcedureParameterTableModel.PARAMETER_LENGTH);
+        LimitedTextField limitedLengthField = new LimitedTextField(10);
+        lengthColumn.setCellEditor(Application.getWidgetFactory().createCellEditor(limitedLengthField));
+
         moveUp.setEnabled(false);
         moveDown.setEnabled(false);
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/25594726/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTableModel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTableModel.java
index 40005fc..b316270 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/ProcedureParameterTableModel.java
@@ -19,10 +19,6 @@
 
 package org.apache.cayenne.modeler.editor;
 
-import java.util.ArrayList;
-
-import javax.swing.JOptionPane;
-
 import org.apache.cayenne.configuration.event.ProcedureParameterEvent;
 import org.apache.cayenne.dba.TypesMapping;
 import org.apache.cayenne.map.Procedure;
@@ -31,6 +27,9 @@ import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.util.CayenneTableModel;
 import org.apache.cayenne.modeler.util.ProjectUtil;
 
+import javax.swing.JOptionPane;
+import java.util.ArrayList;
+
 public class ProcedureParameterTableModel extends CayenneTableModel<ProcedureParameter> {
 
     public static final int PARAMETER_NUMBER    = 0;
@@ -127,10 +126,10 @@ public class ProcedureParameterTableModel extends CayenneTableModel<ProcedurePar
                 parameter.setMaxLength(Integer.parseInt(newVal));
             } catch (NumberFormatException ex) {
                 JOptionPane.showMessageDialog(
-                    null,
-                    "Invalid Max Length (" + newVal + "), only numbers are allowed",
-                    "Invalid Maximum Length",
-                    JOptionPane.ERROR_MESSAGE);
+                        null,
+                        "Invalid Max Length (" + newVal + "), only numbers are allowed",
+                        "Invalid Maximum Length",
+                        JOptionPane.ERROR_MESSAGE);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/25594726/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbAttributeTableModel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbAttributeTableModel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbAttributeTableModel.java
index 66451fd..aa2add4 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbAttributeTableModel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbAttributeTableModel.java
@@ -19,15 +19,6 @@
 
 package org.apache.cayenne.modeler.editor.dbentity;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.swing.JOptionPane;
-
 import org.apache.cayenne.dba.TypesMapping;
 import org.apache.cayenne.map.DbAttribute;
 import org.apache.cayenne.map.DbEntity;
@@ -38,6 +29,14 @@ import org.apache.cayenne.modeler.ProjectController;
 import org.apache.cayenne.modeler.util.CayenneTableModel;
 import org.apache.cayenne.modeler.util.ProjectUtil;
 
+import javax.swing.JOptionPane;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.List;
+
 /**
  * Model for DbEntity attributes. Allows adding/removing attributes, modifying types and
  * names.
@@ -75,6 +74,14 @@ public class DbAttributeTableModel extends CayenneTableModel {
         return DB_ATTRIBUTE_TYPE;
     }
 
+    public int lengthColumnId(){
+        return DB_ATTRIBUTE_MAX;
+    }
+
+    public int scaleColumnId(){
+        return DB_ATTRIBUTE_SCALE;
+    }
+
     public int mandatoryColumnInd() {
         return DB_ATTRIBUTE_MANDATORY;
     }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/25594726/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributePanel.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributePanel.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributePanel.java
index 337ebe7..adccd1b 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributePanel.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/editor/dbentity/DbEntityAttributePanel.java
@@ -39,6 +39,7 @@ import org.apache.cayenne.modeler.util.CayenneTable;
 import org.apache.cayenne.modeler.util.PanelFactory;
 import org.apache.cayenne.modeler.util.UIUtil;
 import org.apache.cayenne.modeler.util.combo.AutoCompletion;
+import org.apache.cayenne.swing.components.LimitedTextField;
 
 import javax.swing.JComboBox;
 import javax.swing.JPanel;
@@ -180,6 +181,14 @@ public class DbEntityAttributePanel extends JPanel implements DbEntityDisplayLis
 
         col.setCellEditor(Application.getWidgetFactory().createCellEditor(comboBox));
 
+        TableColumn lengthColumn = table.getColumnModel().getColumn(model.lengthColumnId());
+        LimitedTextField limitedLengthField = new LimitedTextField(10);
+        lengthColumn.setCellEditor(Application.getWidgetFactory().createCellEditor(limitedLengthField));
+
+        TableColumn scaleColumn = table.getColumnModel().getColumn(model.scaleColumnId());
+        LimitedTextField limitedScaleField = new LimitedTextField(10);
+        scaleColumn.setCellEditor(Application.getWidgetFactory().createCellEditor(limitedScaleField));
+
         tablePreferences.bind(table, null, null, null, model.nameColumnInd(), true);
     }
 

http://git-wip-us.apache.org/repos/asf/cayenne/blob/25594726/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/LimitedTextField.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/LimitedTextField.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/LimitedTextField.java
new file mode 100644
index 0000000..e8eba92
--- /dev/null
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/components/LimitedTextField.java
@@ -0,0 +1,59 @@
+/*****************************************************************
+ *   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.cayenne.swing.components;
+
+import javax.swing.JTextField;
+import javax.swing.text.AttributeSet;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.PlainDocument;
+
+/**
+ * Text field that limits input length
+ *
+ * @since 4.0.1
+ */
+public class LimitedTextField extends JTextField {
+
+    private static final long serialVersionUID = 5615520143950793884L;
+
+    public LimitedTextField(int limit) {
+        setDocument(new LimitedDocument(limit));
+    }
+
+    private static class LimitedDocument extends PlainDocument {
+
+        private static final long serialVersionUID = 2371422073526259311L;
+
+        private int limit;
+
+        LimitedDocument(int limit) {
+            super();
+            this.limit = limit;
+        }
+
+        public void insertString( int offset, String  str, AttributeSet attr ) throws BadLocationException {
+            if (str == null) return;
+
+            if ((getLength() + str.length()) <= limit) {
+                super.insertString(offset, str, attr);
+            }
+        }
+    }
+}