You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2016/11/16 18:48:10 UTC
[1/4] cayenne git commit: Exception in Infer relationships Exception
in importing datamap with query name conflicts (unfinished patch) Fix db path
selection in ObjAttribute
Repository: cayenne
Updated Branches:
refs/heads/master 74e5e2f3c -> e308a16f7
Exception in Infer relationships
Exception in importing datamap with query name conflicts (unfinished patch)
Fix db path selection in ObjAttribute
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/c81cb742
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/c81cb742
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/c81cb742
Branch: refs/heads/master
Commit: c81cb742642f990d6a4b7bb0d91860fdbf9e0373
Parents: 56906f0
Author: Nikita Timofeev <st...@gmail.com>
Authored: Mon Nov 14 12:31:17 2016 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Mon Nov 14 12:31:17 2016 +0300
----------------------------------------------------------------------
.../naming/DefaultObjectNameGenerator.java | 4 +++
.../org/apache/cayenne/map/MappingCache.java | 8 +++--
.../modeler/util/DefaultWidgetFactory.java | 20 +++++------
.../util/PathChooserComboBoxCellEditor.java | 37 +++++++++++++++-----
.../cayenne/modeler/util/WidgetFactory.java | 10 +++---
5 files changed, 53 insertions(+), 26 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c81cb742/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGenerator.java
----------------------------------------------------------------------
diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGenerator.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGenerator.java
index ecfebc3..4559ab6 100644
--- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGenerator.java
+++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/naming/DefaultObjectNameGenerator.java
@@ -38,6 +38,10 @@ public class DefaultObjectNameGenerator implements ObjectNameGenerator {
private DbEntityNameStemmer dbEntityNameStemmer;
+ public DefaultObjectNameGenerator() {
+ this.dbEntityNameStemmer = NoStemStemmer.getInstance();
+ }
+
public DefaultObjectNameGenerator(DbEntityNameStemmer dbEntityNameStemmer) {
this.dbEntityNameStemmer = dbEntityNameStemmer;
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c81cb742/cayenne-server/src/main/java/org/apache/cayenne/map/MappingCache.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/MappingCache.java b/cayenne-server/src/main/java/org/apache/cayenne/map/MappingCache.java
index d2704fd..8c7f8c2 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/MappingCache.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/MappingCache.java
@@ -117,9 +117,11 @@ class MappingCache implements MappingNamespace {
String name = queryDescriptor.getName();
QueryDescriptor existingQueryDescriptor = queryDesriptors.put(name, queryDescriptor);
- if (existingQueryDescriptor != null && queryDescriptor != existingQueryDescriptor) {
- throw new CayenneRuntimeException("More than one QueryDescriptor for name: " + name);
- }
+ // No exception is thrown in case of any other entity's name conflict.
+ // Why do we throw it here!?
+// if (existingQueryDescriptor != null && queryDescriptor != existingQueryDescriptor) {
+// throw new CayenneRuntimeException("More than one QueryDescriptor for name: " + name);
+// }
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c81cb742/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
index da6463f..e4fea78 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/DefaultWidgetFactory.java
@@ -40,29 +40,29 @@ public class DefaultWidgetFactory implements WidgetFactory {
/**
* Creates a new JComboBox with a collection of model objects.
*/
- public JComboBox createComboBox(Collection<String> model, boolean sort) {
- return createComboBox(model.toArray(), sort);
+ public JComboBox<String> createComboBox(Collection<String> model, boolean sort) {
+ return createComboBox(model.toArray(new String[0]), sort);
}
/**
* Creates a new JComboBox with an array of model objects.
*/
- public JComboBox createComboBox(Object[] model, boolean sort) {
- JComboBox comboBox = createComboBox();
+ public <T> JComboBox<T> createComboBox(T[] model, boolean sort) {
+ JComboBox<T> comboBox = createComboBox();
if (sort) {
Arrays.sort(model);
}
- comboBox.setModel(new DefaultComboBoxModel(model));
+ comboBox.setModel(new DefaultComboBoxModel<>(model));
return comboBox;
}
/**
* Creates a new JComboBox.
*/
- public JComboBox createComboBox() {
- JComboBox comboBox = new JComboBox();
+ public <T> JComboBox<T> createComboBox() {
+ JComboBox<T> comboBox = new JComboBox<>();
comboBox.setFont(new Font("Verdana", Font.PLAIN , 12));
comboBox.setBackground(Color.WHITE);
comboBox.setMaximumRowCount(ModelerPreferences.COMBOBOX_MAX_VISIBLE_SIZE);
@@ -73,8 +73,8 @@ public class DefaultWidgetFactory implements WidgetFactory {
* Creates undoable JComboBox.
*
*/
- public JComboBox createUndoableComboBox() {
- JComboBox comboBox = new JComboBox();
+ public <T> JComboBox<T> createUndoableComboBox() {
+ JComboBox<T> comboBox = new JComboBox<>();
comboBox.addItemListener(new JComboBoxUndoListener());
comboBox.setBackground(Color.WHITE);
comboBox.setMaximumRowCount(ModelerPreferences.COMBOBOX_MAX_VISIBLE_SIZE);
@@ -95,7 +95,7 @@ public class DefaultWidgetFactory implements WidgetFactory {
*
* @param combo JComboBox to be used as editor component
*/
- public TableCellEditor createCellEditor(JComboBox combo) {
+ public TableCellEditor createCellEditor(JComboBox<?> combo) {
combo.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
if (Boolean.TRUE.equals(combo
.getClientProperty(AutoCompletion.AUTOCOMPLETION_PROPERTY))) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c81cb742/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/PathChooserComboBoxCellEditor.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/PathChooserComboBoxCellEditor.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/PathChooserComboBoxCellEditor.java
index fd796f8..433267f 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/PathChooserComboBoxCellEditor.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/PathChooserComboBoxCellEditor.java
@@ -36,6 +36,8 @@ import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.ListCellRenderer;
+import javax.swing.event.PopupMenuEvent;
+import javax.swing.event.PopupMenuListener;
import javax.swing.table.TableCellEditor;
import javax.swing.text.JTextComponent;
import java.awt.BorderLayout;
@@ -53,9 +55,10 @@ import java.util.regex.Pattern;
* This class used as cell editor, when you need to
* choose path in comboBox and use autocompletion.
*/
-public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
+@SuppressWarnings("WeakerAccess")
+public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener, PopupMenuListener {
- protected JComboBox comboBoxPathChooser;
+ protected JComboBox<String> comboBoxPathChooser;
protected int previousEmbeddedLevel = 0;
protected EntityTreeModel treeModel;
protected int row;
@@ -92,15 +95,17 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
comboBoxPathChooser.setBorder(BorderFactory.createEmptyBorder(0,5,0,0));
comboBoxPathChooser.setRenderer(new PathChooserComboBoxCellRenderer());
comboBoxPathChooser.addActionListener(this);
+ comboBoxPathChooser.addPopupMenuListener(this);
}
private void setComboModelAccordingToPath(String pathString) {
List<String> currentNodeChildren = new ArrayList<>();
currentNodeChildren.addAll(getChildren(getCurrentNode(pathString), pathString));
- comboBoxPathChooser.setModel(new DefaultComboBoxModel(currentNodeChildren.toArray()));
+ comboBoxPathChooser.setModel(new DefaultComboBoxModel<>(currentNodeChildren.toArray(new String[0])));
comboBoxPathChooser.setSelectedItem(pathString);
- comboBoxPathChooser.showPopup();
- comboBoxPathChooser.setPopupVisible(true);
+ if(!pathString.isEmpty()) {
+ comboBoxPathChooser.showPopup();
+ }
}
protected void parsePathString(char lastEnteredCharacter) {
@@ -127,9 +132,8 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
pathString = pathString.replaceAll(lastStringInPath + "$", "");
List<String> currentNodeChildren = new ArrayList<>();
currentNodeChildren.addAll(getChildren(getCurrentNode(pathString), pathString));
- comboBoxPathChooser.setModel(new DefaultComboBoxModel(currentNodeChildren.toArray()));
+ comboBoxPathChooser.setModel(new DefaultComboBoxModel<>(currentNodeChildren.toArray(new String[0])));
comboBoxPathChooser.setSelectedItem(saveDbAttributePath);
- return;
}
}
@@ -171,7 +175,7 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
/**
* find current node by path
*
- * @param pathString
+ * @param pathString db path
* @return last node in path which matches DbRelationship or DbAttribute
*/
protected Object getCurrentNode(String pathString) {
@@ -215,14 +219,31 @@ public abstract class PathChooserComboBoxCellEditor extends AbstractCellEditor i
if (comboBoxPathChooser.getSelectedIndex() != (-1)) {
((JTextComponent) (comboBoxPathChooser).
getEditor().getEditorComponent()).setText(comboBoxPathChooser.getSelectedItem().toString());
+ }
+ }
+
+ @Override
+ public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
+ if (comboBoxPathChooser.getSelectedIndex() != -1 &&
+ !((JTextComponent) (comboBoxPathChooser).
+ getEditor().getEditorComponent()).getText().isEmpty()) {
enterPressed(table);
}
}
+ @Override
+ public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
+ }
+
+ @Override
+ public void popupMenuCanceled(PopupMenuEvent e) {
+ }
+
private final class PathChooserComboBoxCellRenderer extends DefaultListCellRenderer {
private final ImageIcon rightArrow = ModelerUtil.buildIcon("scroll_right.gif");
+ @SuppressWarnings("unchecked")
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
http://git-wip-us.apache.org/repos/asf/cayenne/blob/c81cb742/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/WidgetFactory.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/WidgetFactory.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/WidgetFactory.java
index f258d6d..7cae4d8 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/WidgetFactory.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/util/WidgetFactory.java
@@ -37,22 +37,22 @@ public interface WidgetFactory {
/**
* Creates a new JComboBox with a collection of model objects.
*/
- JComboBox createComboBox(Collection<String> model, boolean sort);
+ JComboBox<String> createComboBox(Collection<String> model, boolean sort);
/**
* Creates a new JComboBox with an array of model objects.
*/
- JComboBox createComboBox(Object[] model, boolean sort);
+ <E> JComboBox<E> createComboBox(E[] model, boolean sort);
/**
* Creates a new JComboBox.
*/
- JComboBox createComboBox();
+ <E> JComboBox<E> createComboBox();
/**
* Creates undoable JComboBox.
*/
- JComboBox createUndoableComboBox();
+ <E> JComboBox<E> createUndoableComboBox();
/**
* Creates cell editor for text field
@@ -65,7 +65,7 @@ public interface WidgetFactory {
*
* @param combo JComboBox to be used as editor component
*/
- TableCellEditor createCellEditor(JComboBox combo);
+ TableCellEditor createCellEditor(JComboBox<?> combo);
/**
* Creates and returns a JEdit text component with syntax highlighing
[2/4] cayenne git commit: Merge branch 'master' into
modeler-small-fixes
Posted by sk...@apache.org.
Merge branch 'master' into modeler-small-fixes
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/d2f44044
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/d2f44044
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/d2f44044
Branch: refs/heads/master
Commit: d2f440440249eada0dd5bac6eb5882a4bd8516a1
Parents: c81cb74 5708e35
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Nov 15 14:30:50 2016 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Tue Nov 15 14:30:50 2016 +0300
----------------------------------------------------------------------
assembly/pom.xml | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
[3/4] cayenne git commit: Update query name validator to check names
across all data maps MappingCache skip query descriptor name uniqueness check
Small code clean up
Posted by sk...@apache.org.
Update query name validator to check names across all data maps
MappingCache skip query descriptor name uniqueness check
Small code clean up
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/eeebf008
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/eeebf008
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/eeebf008
Branch: refs/heads/master
Commit: eeebf0087779d1f1d7140eb51fdfba7aaf3136a9
Parents: d2f4404
Author: Nikita Timofeev <st...@gmail.com>
Authored: Tue Nov 15 15:27:51 2016 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Tue Nov 15 15:27:51 2016 +0300
----------------------------------------------------------------------
.../project/validation/BaseQueryValidator.java | 86 ++++++++++++++++++++
.../validation/ProcedureQueryValidator.java | 35 +-------
.../validation/SQLTemplateValidator.java | 29 +------
.../validation/SelectQueryValidator.java | 32 +-------
.../org/apache/cayenne/map/MappingCache.java | 38 ++-------
.../modeler/CayenneModelerController.java | 20 ++---
.../modeler/FileClassLoadingService.java | 10 +--
.../ChangeObjEntityListenerClassAction.java | 1 +
.../cayenne/modeler/graph/DbGraphBuilder.java | 5 ++
9 files changed, 120 insertions(+), 136 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/eeebf008/cayenne-project/src/main/java/org/apache/cayenne/project/validation/BaseQueryValidator.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/BaseQueryValidator.java b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/BaseQueryValidator.java
new file mode 100644
index 0000000..2c73270
--- /dev/null
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/BaseQueryValidator.java
@@ -0,0 +1,86 @@
+/*****************************************************************
+ * 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.project.validation;
+
+import org.apache.cayenne.configuration.DataChannelDescriptor;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.QueryDescriptor;
+import org.apache.cayenne.util.Util;
+import org.apache.cayenne.validation.ValidationResult;
+
+
+/**
+ * Base validation for all query types
+ */
+class BaseQueryValidator extends ConfigurationNodeValidator {
+
+ void validateName(QueryDescriptor query, ValidationResult validationResult) {
+ final String name = query.getName();
+
+ // Must have name
+ if (Util.isEmptyString(name)) {
+ addFailure(validationResult, query, "Unnamed " + query.getType());
+ return;
+ }
+
+ DataMap map = query.getDataMap();
+ if (map == null) {
+ return;
+ }
+
+ // check for duplicate names in the parent context
+ if(hasDuplicateQueryDescriptorInDataMap(query, map)) {
+ addFailure(validationResult, query, "Duplicate query name: %s", name);
+ return;
+ }
+
+ DataChannelDescriptor domain = query.getDataMap().getDataChannelDescriptor();
+ if (domain == null) {
+ return;
+ }
+
+ // check for duplicate names in sibling contexts
+ for (DataMap nextMap : domain.getDataMaps()) {
+ if (nextMap == map) {
+ continue;
+ }
+
+ if (hasDuplicateQueryDescriptorInDataMap(query, nextMap)) {
+ addFailure(validationResult, query,
+ "Duplicate %s name in another DataMap: %s",
+ query.getType(), name);
+ return;
+ }
+ }
+ }
+
+ private boolean hasDuplicateQueryDescriptorInDataMap(QueryDescriptor queryDescriptor, DataMap dataMap) {
+ for (final QueryDescriptor otherQuery : dataMap.getQueryDescriptors()) {
+ if (otherQuery == queryDescriptor) {
+ continue;
+ }
+
+ if (queryDescriptor.getName().equals(otherQuery.getName())) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/eeebf008/cayenne-project/src/main/java/org/apache/cayenne/project/validation/ProcedureQueryValidator.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/ProcedureQueryValidator.java b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/ProcedureQueryValidator.java
index 9f031a5..4cac694 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/ProcedureQueryValidator.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/ProcedureQueryValidator.java
@@ -21,11 +21,9 @@ package org.apache.cayenne.project.validation;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureQueryDescriptor;
-import org.apache.cayenne.map.QueryDescriptor;
-import org.apache.cayenne.util.Util;
import org.apache.cayenne.validation.ValidationResult;
-class ProcedureQueryValidator extends ConfigurationNodeValidator {
+class ProcedureQueryValidator extends BaseQueryValidator {
void validate(ProcedureQueryDescriptor query, ValidationResult validationResult) {
validateName(query, validationResult);
@@ -70,35 +68,4 @@ class ProcedureQueryValidator extends ConfigurationNodeValidator {
}
}
}
-
- void validateName(QueryDescriptor query, ValidationResult validationResult) {
- String name = query.getName();
-
- // Must have name
- if (Util.isEmptyString(name)) {
- addFailure(validationResult, query, "Unnamed ProcedureQuery");
- return;
- }
-
- DataMap map = query.getDataMap();
- if (map == null) {
- return;
- }
-
- // check for duplicate names in the parent context
- for (final QueryDescriptor otherQuery : map.getQueryDescriptors()) {
- if (otherQuery == query) {
- continue;
- }
-
- if (name.equals(otherQuery.getName())) {
- addFailure(
- validationResult,
- query,
- "Dulicate ProcedureQuery name: %s",
- name);
- break;
- }
- }
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/eeebf008/cayenne-project/src/main/java/org/apache/cayenne/project/validation/SQLTemplateValidator.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/SQLTemplateValidator.java b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/SQLTemplateValidator.java
index 8b55418..80e1cbe 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/SQLTemplateValidator.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/SQLTemplateValidator.java
@@ -26,7 +26,7 @@ import org.apache.cayenne.validation.ValidationResult;
import java.util.Map;
-class SQLTemplateValidator extends ConfigurationNodeValidator {
+class SQLTemplateValidator extends BaseQueryValidator {
void validate(SQLTemplateDescriptor query, ValidationResult validationResult) {
validateName(query, validationResult);
@@ -63,31 +63,4 @@ class SQLTemplateValidator extends ConfigurationNodeValidator {
query.getName());
}
}
-
- void validateName(QueryDescriptor query, ValidationResult validationResult) {
- String name = query.getName();
-
- // Must have name
- if (Util.isEmptyString(name)) {
- addFailure(validationResult, query, "Unnamed SQLTemplate");
- return;
- }
-
- DataMap map = query.getDataMap();
- if (map == null) {
- return;
- }
-
- // check for duplicate names in the parent context
- for (final QueryDescriptor otherQuery : map.getQueryDescriptors()) {
- if (otherQuery == query) {
- continue;
- }
-
- if (name.equals(otherQuery.getName())) {
- addFailure(validationResult, query, "Duplicate query name: %s", name);
- break;
- }
- }
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/eeebf008/cayenne-project/src/main/java/org/apache/cayenne/project/validation/SelectQueryValidator.java
----------------------------------------------------------------------
diff --git a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/SelectQueryValidator.java b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/SelectQueryValidator.java
index c0bb5bc..f9c0843 100644
--- a/cayenne-project/src/main/java/org/apache/cayenne/project/validation/SelectQueryValidator.java
+++ b/cayenne-project/src/main/java/org/apache/cayenne/project/validation/SelectQueryValidator.java
@@ -26,12 +26,11 @@ import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.QueryDescriptor;
import org.apache.cayenne.map.SelectQueryDescriptor;
-import org.apache.cayenne.query.*;
+import org.apache.cayenne.query.Ordering;
import org.apache.cayenne.util.CayenneMapEntry;
-import org.apache.cayenne.util.Util;
import org.apache.cayenne.validation.ValidationResult;
-class SelectQueryValidator extends ConfigurationNodeValidator {
+class SelectQueryValidator extends BaseQueryValidator {
void validate(SelectQueryDescriptor query, ValidationResult validationResult) {
@@ -126,31 +125,4 @@ class SelectQueryValidator extends ConfigurationNodeValidator {
return null;
}
- void validateName(QueryDescriptor query, ValidationResult validationResult) {
- String name = query.getName();
-
- // Must have name
- if (Util.isEmptyString(name)) {
- addFailure(validationResult, query, "Unnamed SelectQuery");
- return;
- }
-
- DataMap map = query.getDataMap();
- if (map == null) {
- return;
- }
-
- // check for duplicate names in the parent context
-
- for (final QueryDescriptor otherQuery : map.getQueryDescriptors()) {
- if (otherQuery == query) {
- continue;
- }
-
- if (name.equals(otherQuery.getName())) {
- addFailure(validationResult, query, "Duplicate query name: %s", name);
- break;
- }
- }
- }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/eeebf008/cayenne-server/src/main/java/org/apache/cayenne/map/MappingCache.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/MappingCache.java b/cayenne-server/src/main/java/org/apache/cayenne/map/MappingCache.java
index 8c7f8c2..ad4bc89 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/MappingCache.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/MappingCache.java
@@ -69,23 +69,17 @@ class MappingCache implements MappingNamespace {
// index DbEntities separately and before ObjEntities to avoid infinite
// loops when looking up DbEntities during ObjEntity index op
-
for (DataMap map : maps) {
- for (DbEntity de : map.getDbEntities()) {
- dbEntities.put(de.getName(), de);
- }
+ dbEntities.putAll(map.getDbEntityMap());
}
for (DataMap map : maps) {
+ // index ObjEntities by name
+ objEntities.putAll(map.getObjEntityMap());
- // index ObjEntities
+ // index ObjEntities by class name
for (ObjEntity oe : map.getObjEntities()) {
-
- // index by name
- objEntities.put(oe.getName(), oe);
-
- // index by class.. use class name as a key to avoid class
- // loading here...
+ // use class name as a key to avoid class loading here...
String className = oe.getJavaClassName();
if (className == null) {
continue;
@@ -94,35 +88,21 @@ class MappingCache implements MappingNamespace {
// allow duplicates, but put a special marker indicating
// that this entity can't be looked up by class
Object existing = objEntitiesByClassName.get(className);
- if (existing != null) {
-
- if (existing != OBJ_DUPLICATE_MARKER) {
- objEntitiesByClassName.put(className, OBJ_DUPLICATE_MARKER);
- }
+ if (existing != null && existing != OBJ_DUPLICATE_MARKER) {
+ objEntitiesByClassName.put(className, OBJ_DUPLICATE_MARKER);
} else {
objEntitiesByClassName.put(className, oe);
}
}
// index stored procedures
- for (Procedure proc : map.getProcedures()) {
- procedures.put(proc.getName(), proc);
- }
+ procedures.putAll(map.getProcedureMap());
// index embeddables
embeddables.putAll(map.getEmbeddableMap());
// index query descriptors
- for (QueryDescriptor queryDescriptor : map.getQueryDescriptors()) {
- String name = queryDescriptor.getName();
- QueryDescriptor existingQueryDescriptor = queryDesriptors.put(name, queryDescriptor);
-
- // No exception is thrown in case of any other entity's name conflict.
- // Why do we throw it here!?
-// if (existingQueryDescriptor != null && queryDescriptor != existingQueryDescriptor) {
-// throw new CayenneRuntimeException("More than one QueryDescriptor for name: " + name);
-// }
- }
+ queryDesriptors.putAll(map.getQueryDescriptorMap());
}
// restart the map iterator to index inheritance
http://git-wip-us.apache.org/repos/asf/cayenne/blob/eeebf008/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
index b7a84b0..30fdebc 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/CayenneModelerController.java
@@ -140,12 +140,13 @@ public class CayenneModelerController extends CayenneController {
geometry.bind(frame, 650, 550, 0);
}
+
+ @SuppressWarnings("unchecked")
private boolean processDropAction(Transferable transferable) {
List<File> fileList;
try {
- fileList = (List) transferable.getTransferData(DataFlavor.javaFileListFlavor);
- }
- catch (Exception e) {
+ fileList = (List<File>) transferable.getTransferData(DataFlavor.javaFileListFlavor);
+ } catch (Exception e) {
return false;
}
@@ -260,7 +261,7 @@ public class CayenneModelerController extends CayenneController {
// for validation purposes combine load failures with post-load validation (not
// sure if that'll cause duplicate messages?).
- List<ValidationFailure> allFailures = new ArrayList<ValidationFailure>();
+ List<ValidationFailure> allFailures = new ArrayList<>();
Collection<ValidationFailure> loadFailures = project
.getConfigurationTree()
.getLoadFailures();
@@ -305,14 +306,13 @@ public class CayenneModelerController extends CayenneController {
try {
frefLastProjFiles.clear();
- }
- catch (BackingStoreException e) {
+ } catch (BackingStoreException ignored) {
// ignore exception
}
int size = arr.size();
for (int i = 0; i < size; i++) {
- frefLastProjFiles.put(String.valueOf(i), arr.get(i).toString());
+ frefLastProjFiles.put(String.valueOf(i), arr.get(i));
}
}
@@ -331,10 +331,10 @@ public class CayenneModelerController extends CayenneController {
class ExpireThread extends Thread {
- protected int seconds;
+ int seconds;
protected String message;
- public ExpireThread(String message, int seconds) {
+ ExpireThread(String message, int seconds) {
this.seconds = seconds;
this.message = message;
}
@@ -380,7 +380,7 @@ public class CayenneModelerController extends CayenneController {
int size = arr.size();
for (int i = 0; i < size; i++) {
- frefLastProjFiles.put(String.valueOf(i), arr.get(i).toString());
+ frefLastProjFiles.put(String.valueOf(i), arr.get(i));
}
getLastDirectory().setDirectory(new File(newPath));
http://git-wip-us.apache.org/repos/asf/cayenne/blob/eeebf008/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/FileClassLoadingService.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/FileClassLoadingService.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/FileClassLoadingService.java
index 2827405..f834378 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/FileClassLoadingService.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/FileClassLoadingService.java
@@ -36,17 +36,17 @@ import java.util.List;
public class FileClassLoadingService implements ClassLoadingService {
private FileClassLoader classLoader;
- protected List<File> pathFiles;
+ private List<File> pathFiles;
public FileClassLoadingService() {
- this.pathFiles = new ArrayList<File>(15);
+ this.pathFiles = new ArrayList<>(15);
}
/**
* Returns class for a given name, loading it if needed from configured
* locations.
*/
- @SuppressWarnings("all")
+ @SuppressWarnings("unchecked")
public <T> Class<T> loadClass(Class<T> interfaceType, String className) throws ClassNotFoundException {
return (Class<T>) nonNullClassLoader().loadClass(className);
}
@@ -106,7 +106,7 @@ public class FileClassLoadingService implements ClassLoadingService {
}
// URLClassLoader with addURL method exposed.
- static class FileClassLoader extends URLClassLoader {
+ private static class FileClassLoader extends URLClassLoader {
FileClassLoader(ClassLoader parent) {
super(new URL[0], parent);
@@ -119,7 +119,7 @@ public class FileClassLoadingService implements ClassLoadingService {
// I guess here we have to quetly ignore invalid URLs...
try {
addURL(file.toURI().toURL());
- } catch (MalformedURLException ex) {
+ } catch (MalformedURLException ignored) {
}
}
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/eeebf008/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ChangeObjEntityListenerClassAction.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ChangeObjEntityListenerClassAction.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ChangeObjEntityListenerClassAction.java
index d7d44fa..c06c017 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ChangeObjEntityListenerClassAction.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/action/ChangeObjEntityListenerClassAction.java
@@ -32,6 +32,7 @@ import org.apache.cayenne.modeler.util.CayenneAction;
* Action class for renaming entity listener class for ObjEntity
*
* @version 1.0 Oct 30, 2007
+ * @deprecated
*/
public class ChangeObjEntityListenerClassAction extends CayenneAction {
/**
http://git-wip-us.apache.org/repos/asf/cayenne/blob/eeebf008/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbGraphBuilder.java
----------------------------------------------------------------------
diff --git a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbGraphBuilder.java b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbGraphBuilder.java
index 6a320e3..5e6ffd6 100644
--- a/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbGraphBuilder.java
+++ b/modeler/cayenne-modeler/src/main/java/org/apache/cayenne/modeler/graph/DbGraphBuilder.java
@@ -22,6 +22,7 @@ import java.awt.Color;
import java.util.Collection;
import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DetectedDbEntity;
import org.apache.cayenne.map.Entity;
import org.apache.cayenne.map.Relationship;
import org.apache.cayenne.map.event.AttributeEvent;
@@ -90,6 +91,10 @@ class DbGraphBuilder extends BaseGraphBuilder implements DbEntityListener,
}
public void dbEntityAdded(EntityEvent e) {
+ // skip new entities from DbLoader
+ if(e.getEntity() instanceof DetectedDbEntity) {
+ return;
+ }
insertEntityCell(e.getEntity());
}
[4/4] cayenne git commit: Merge branch '132'
Posted by sk...@apache.org.
Merge branch '132'
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/e308a16f
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/e308a16f
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/e308a16f
Branch: refs/heads/master
Commit: e308a16f7b761d50c7529459609e562075c8dda4
Parents: 74e5e2f eeebf00
Author: Savva Kolbachev <s....@gmail.com>
Authored: Wed Nov 16 21:47:15 2016 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Wed Nov 16 21:47:15 2016 +0300
----------------------------------------------------------------------
.../naming/DefaultObjectNameGenerator.java | 4 +
.../project/validation/BaseQueryValidator.java | 86 ++++++++++++++++++++
.../validation/ProcedureQueryValidator.java | 35 +-------
.../validation/SQLTemplateValidator.java | 29 +------
.../validation/SelectQueryValidator.java | 32 +-------
.../org/apache/cayenne/map/MappingCache.java | 36 ++------
.../modeler/CayenneModelerController.java | 20 ++---
.../modeler/FileClassLoadingService.java | 10 +--
.../ChangeObjEntityListenerClassAction.java | 1 +
.../cayenne/modeler/graph/DbGraphBuilder.java | 5 ++
.../modeler/util/DefaultWidgetFactory.java | 20 ++---
.../util/PathChooserComboBoxCellEditor.java | 37 +++++++--
.../cayenne/modeler/util/WidgetFactory.java | 10 +--
13 files changed, 168 insertions(+), 157 deletions(-)
----------------------------------------------------------------------