This is an automated email from the ASF dual-hosted git repository.

aadamchik pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new bb821375c CAY-2918 Remove OGNL Binding Architecture from CayenneModeler
bb821375c is described below

commit bb821375c1dbb9db132c721a67ab273ad8488a79
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun Apr 12 15:45:08 2026 -0400

    CAY-2918 Remove OGNL Binding Architecture from CayenneModeler
    
    getting rid of "bindToTextField"
---
 .../org/apache/cayenne/swing/ActionBinding.java    |  56 --------
 .../apache/cayenne/swing/BeanActionBinding.java    |  93 --------------
 .../java/org/apache/cayenne/swing/BindingBase.java |   2 +-
 .../org/apache/cayenne/swing/BindingBuilder.java   |  10 --
 .../org/apache/cayenne/swing/BindingDelegate.java  |   4 +-
 .../org/apache/cayenne/swing/BindingException.java |   8 --
 .../org/apache/cayenne/swing/BindingFactory.java   |  43 +------
 .../org/apache/cayenne/swing/CheckBoxBinding.java  |  16 +--
 .../apache/cayenne/swing/ImageRendererColumn.java  |  10 +-
 .../apache/cayenne/swing/TableBindingBuilder.java  |   7 +-
 .../java/org/apache/cayenne/swing/TextBinding.java | 143 ---------------------
 11 files changed, 12 insertions(+), 380 deletions(-)

diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ActionBinding.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ActionBinding.java
deleted file mode 100644
index 35651c1ce..000000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ActionBinding.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*****************************************************************
- *   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
- *
- *    https://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;
-
-import java.awt.Component;
-
-import javax.swing.AbstractButton;
-
-public class ActionBinding extends BindingBase {
-
-    protected Component view;
-
-    public ActionBinding(AbstractButton button, String propertyExpression) {
-        super(propertyExpression);
-        button.addActionListener(e -> fireAction());
-        this.view = button;
-    }
-
-    public ActionBinding(BoundComponent component, String propertyExpression, 
String boundExpression) {
-        super(propertyExpression);
-        component.addPropertyChangeListener(boundExpression, event -> 
fireAction());
-        this.view = component.getView();
-    }
-
-    public Component getView() {
-        if (view == null) {
-            throw new BindingException("headless action");
-        }
-        return view;
-    }
-
-    public void updateView() {
-        // noop
-    }
-
-    protected void fireAction() {
-        getValue();
-    }
-}
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BeanActionBinding.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BeanActionBinding.java
deleted file mode 100644
index 77b8da4a6..000000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BeanActionBinding.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*****************************************************************
- *   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
- *
- *    https://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;
-
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.beans.BeanInfo;
-import java.beans.EventSetDescriptor;
-import java.beans.Introspector;
-
-import org.apache.cayenne.CayenneRuntimeException;
-
-/**
- * A binding that registers for action events of an arbitrary Component 
JavaBean that
- * provides a way to add an ActionListener via BeanDescriptor.
- * 
- */
-public class BeanActionBinding extends BindingBase {
-
-    protected Component view;
-
-    public BeanActionBinding(Component component, String actionExpression) {
-        super(actionExpression);
-        this.view = component;
-
-        boolean foundActionEvents = false;
-
-        try {
-            BeanInfo info = Introspector.getBeanInfo(component.getClass());
-            EventSetDescriptor[] events = info.getEventSetDescriptors();
-
-            if (events != null && events.length > 0) {
-                for (EventSetDescriptor event : events) {
-                    if (ActionListener.class
-                            .isAssignableFrom(event.getListenerType())) {
-
-                        event.getAddListenerMethod().invoke(component, new 
ActionListener() {
-                                    public void actionPerformed(ActionEvent e) 
{
-                                        fireAction();
-                                    }
-                                });
-
-                        foundActionEvents = true;
-                        break;
-                    }
-                }
-            }
-
-        }
-        catch (Exception e) {
-            throw new CayenneRuntimeException("Error binding to component", e);
-        }
-
-        if (!foundActionEvents) {
-            throw new CayenneRuntimeException("Component does not define 
action events: %s", component);
-        }
-    }
-
-    public Component getView() {
-        if (view == null) {
-            throw new BindingException("headless action");
-        }
-
-        return view;
-    }
-
-    public void updateView() {
-        // noop
-    }
-
-    protected void fireAction() {
-        // TODO: catch exceptions...
-        getValue();
-    }
-}
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBase.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBase.java
index 29dc826a8..a41a5f854 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBase.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBase.java
@@ -30,7 +30,7 @@ import org.apache.cayenne.validation.ValidationException;
  */
 public abstract class BindingBase implements ObjectBinding {
 
-    private Object compiled;
+    private final Object compiled;
 
     protected Object context;
     protected String expression;
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java
index 187345a19..04ca79a9d 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingBuilder.java
@@ -128,16 +128,6 @@ public class BindingBuilder {
         return initBinding(binding, getActionDelegate(action));
     }
 
-    public ObjectBinding bindToTextArea(JTextArea component, String property) {
-        ObjectBinding binding = factory.bindToTextArea(component, property);
-        return initBinding(binding, delegate);
-    }
-
-    public ObjectBinding bindToTextField(JTextField component, String 
property) {
-        ObjectBinding binding = factory.bindToTextField(component, property);
-        return initBinding(binding, delegate);
-    }
-
     public ObjectBinding bindToCheckBox(JCheckBox component, String property) {
         ObjectBinding binding = factory.bindToCheckBox(component, property);
         return initBinding(binding, delegate);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingDelegate.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingDelegate.java
index 754e38357..f3c26050b 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingDelegate.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingDelegate.java
@@ -23,12 +23,12 @@ package org.apache.cayenne.swing;
  * Defines an API of a delegate notified by bindings whenever values are 
pushed from the
  * view to the model. The value of delegate is that it allows to track changes 
to the
  * model properties that themselves do not fire property change events.
- * 
+ *
  */
 public interface BindingDelegate {
 
     /**
      * Called by a binding to notify that a model value was updated.
      */
-    public void modelUpdated(ObjectBinding binding, Object oldValue, Object 
newValue);
+    void modelUpdated(ObjectBinding binding, Object oldValue, Object newValue);
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingException.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingException.java
index 7e9a7e1c3..be668f573 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingException.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingException.java
@@ -23,10 +23,6 @@ import org.apache.cayenne.CayenneRuntimeException;
 
 public class BindingException extends CayenneRuntimeException {
 
-    public BindingException() {
-        super();
-    }
-
     public BindingException(String messageFormat, Object... messageArgs) {
         super(messageFormat, messageArgs);
     }
@@ -34,8 +30,4 @@ public class BindingException extends CayenneRuntimeException 
{
     public BindingException(String messageFormat, Throwable cause, Object... 
messageArgs) {
         super(messageFormat, cause, messageArgs);
     }
-
-    public BindingException(Throwable cause) {
-        super(cause);
-    }
 }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingFactory.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingFactory.java
index 938d97135..16b002955 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingFactory.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/BindingFactory.java
@@ -19,9 +19,8 @@
 
 package org.apache.cayenne.swing;
 
-import java.awt.Component;
-
 import javax.swing.*;
+import java.awt.*;
 
 /**
  * A factory for a number of common bindings.
@@ -75,33 +74,6 @@ public class BindingFactory {
         return prepareBinding(binding);
     }
 
-    /**
-     * Binds to AbstractButton action events. Most common AbstractButton 
subclasses are
-     * JButton, JCheckBox, JRadioButton.
-     */
-    public ObjectBinding bindToAction(AbstractButton button, String action) {
-        ActionBinding binding = new ActionBinding(button, action);
-        return prepareBinding(binding);
-    }
-
-    /**
-     * Binds to a generic component. Action events support is discovered via
-     * introspection. If component class does not define action events, an 
exception is
-     * thrown.
-     */
-    public ObjectBinding bindToAction(Component component, String action) {
-        BeanActionBinding binding = new BeanActionBinding(component, action);
-        return prepareBinding(binding);
-    }
-
-    public ObjectBinding bindToAction(
-            BoundComponent component,
-            String action,
-            String boundExpression) {
-        ActionBinding binding = new ActionBinding(component, action, 
boundExpression);
-        return prepareBinding(binding);
-    }
-
     public ObjectBinding bindToComboSelection(
             JComboBox component,
             String property,
@@ -113,19 +85,6 @@ public class BindingFactory {
         return prepareBinding(binding);
     }
 
-    public ObjectBinding bindToTextArea(JTextArea component, String property) {
-        TextBinding binding = new TextBinding(component, property);
-        return prepareBinding(binding);
-    }
-
-    /**
-     * Creates a binding that updates a property on text field text changes.
-     */
-    public ObjectBinding bindToTextField(JTextField component, String 
property) {
-        TextBinding binding = new TextBinding(component, property);
-        return prepareBinding(binding);
-    }
-
     public ObjectBinding bindToCheckBox(JCheckBox component, String property) {
         CheckBoxBinding binding = new CheckBoxBinding(component, property);
         return prepareBinding(binding);
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/CheckBoxBinding.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/CheckBoxBinding.java
index a67aa3cd9..7c1b009db 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/CheckBoxBinding.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/CheckBoxBinding.java
@@ -18,11 +18,8 @@
  ****************************************************************/
 package org.apache.cayenne.swing;
 
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.JCheckBox;
+import javax.swing.*;
+import java.awt.*;
 
 /**
  * A generic adapter that binds a check box to a bean property.
@@ -36,12 +33,9 @@ public class CheckBoxBinding extends BindingBase {
         super(propertyExpression);
         this.checkBox = checkBox;
 
-        this.checkBox.addActionListener(new ActionListener()
-        {
-            public void actionPerformed(final ActionEvent event) {
-                if (!modelUpdateDisabled) {
-                    updateModel();
-                }
+        this.checkBox.addActionListener(event -> {
+            if (!modelUpdateDisabled) {
+                updateModel();
             }
         });
     }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ImageRendererColumn.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ImageRendererColumn.java
index 11ea7ede3..f4eaa7931 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ImageRendererColumn.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/ImageRendererColumn.java
@@ -18,15 +18,9 @@
  ****************************************************************/
 package org.apache.cayenne.swing;
 
-import java.awt.Component;
-
-import javax.swing.BorderFactory;
-import javax.swing.Icon;
-import javax.swing.JLabel;
-import javax.swing.JTable;
+import javax.swing.*;
 import javax.swing.table.DefaultTableCellRenderer;
-
-import org.apache.cayenne.swing.components.image.FilteredIconFactory;
+import java.awt.*;
 
 public class ImageRendererColumn extends DefaultTableCellRenderer {
 
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TableBindingBuilder.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TableBindingBuilder.java
index 5f868cf8f..755862f9e 100644
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TableBindingBuilder.java
+++ 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TableBindingBuilder.java
@@ -20,11 +20,10 @@
 
 package org.apache.cayenne.swing;
 
+import javax.swing.*;
 import java.util.ArrayList;
 import java.util.List;
 
-import javax.swing.JTable;
-
 /**
  * A builder for a JTable binding.
  * 
@@ -34,10 +33,6 @@ public class TableBindingBuilder {
     protected BindingBuilder helper;
     protected List columns;
 
-    public TableBindingBuilder(BindingFactory factory, Object context) {
-        this(new BindingBuilder(factory, context));
-    }
-
     public TableBindingBuilder(BindingBuilder helper) {
         this.helper = helper;
     }
diff --git 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TextBinding.java
 
b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TextBinding.java
deleted file mode 100644
index 30f119369..000000000
--- 
a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/swing/TextBinding.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*****************************************************************
- *   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
- *
- *    https://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;
-
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-
-import javax.swing.InputVerifier;
-import javax.swing.JComponent;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
-import javax.swing.text.JTextComponent;
-
-import org.apache.cayenne.modeler.dialog.validator.ValidatorDialog;
-import org.apache.cayenne.validation.ValidationException;
-
-/**
- * A generic text adapter that is bound to a bean property.
- * 
- */
-public class TextBinding extends BindingBase {
-
-    protected JTextComponent textComponent;
-
-    protected Color defaultBGColor;
-    protected Color errorColor;
-    protected String defaultToolTip;
-
-    public TextBinding(JTextField textField, String expression) {
-        super(expression);
-        this.textComponent = textField;
-        initComponentDefaults();
-
-        textField.addActionListener(new ActionListener() {
-
-            public void actionPerformed(ActionEvent e) {
-                if (!modelUpdateDisabled) {
-                    updateModel();
-                }
-            }
-        });
-
-        textComponent.setInputVerifier(new InputVerifier() {
-
-            public boolean verify(JComponent c) {
-                updateModel();
-                // release focus after coloring the field...
-                return true;
-            }
-        });
-
-    }
-
-    public TextBinding(JTextArea textArea, String property) {
-        super(property);
-        this.textComponent = textArea;
-        initComponentDefaults();
-
-        textComponent.getDocument().addDocumentListener(new DocumentListener() 
{
-
-            public void insertUpdate(DocumentEvent e) {
-                verifyTextChange(e);
-            }
-
-            public void changedUpdate(DocumentEvent e) {
-                verifyTextChange(e);
-            }
-
-            public void removeUpdate(DocumentEvent e) {
-                verifyTextChange(e);
-            }
-
-            void verifyTextChange(DocumentEvent e) {
-                if (!modelUpdateDisabled) {
-                    updateModel();
-                }
-            }
-        });
-    }
-
-    protected void initComponentDefaults() {
-        this.errorColor = ValidatorDialog.WARNING_COLOR;
-        this.defaultBGColor = textComponent.getBackground();
-        this.defaultToolTip = textComponent.getToolTipText();
-    }
-
-    public void updateView() {
-        Object value = getValue();
-        String text = (value != null) ? value.toString() : null;
-
-        modelUpdateDisabled = true;
-        try {
-            clear();
-            textComponent.setText(text);
-        }
-        finally {
-            modelUpdateDisabled = false;
-        }
-    }
-
-    /**
-     * Returns internal text component.
-     */
-    public Component getView() {
-        return textComponent;
-    }
-
-    protected void updateModel() {
-        try {
-            setValue(textComponent.getText());
-            clear();
-        }
-        catch (ValidationException vex) {
-            textComponent.setBackground(errorColor);
-            textComponent.setToolTipText(vex.getUnlabeledMessage());
-        }
-    }
-
-    protected void clear() {
-        textComponent.setBackground(defaultBGColor);
-        textComponent.setToolTipText(defaultToolTip);
-    }
-}

Reply via email to