You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by jr...@apache.org on 2010/01/19 23:33:11 UTC

svn commit: r900985 - in /openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/ openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/ openjpa-lib/src/test/java/org/a...

Author: jrbauer
Date: Tue Jan 19 22:33:11 2010
New Revision: 900985

URL: http://svn.apache.org/viewvc?rev=900985&view=rev
Log:
OPENJPA-1115 Eliminate alias conversion on configurations that do not require conversion.

Modified:
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DBIdentifierUtilImpl.java
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DefaultIdentifierConfiguration.java
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
    openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierConfiguration.java
    openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierUtilImpl.java
    openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/identifier/IdConfigurationTestImpl.java
    openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/identifier/NewIdConfigurationTestImpl.java

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DBIdentifierUtilImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DBIdentifierUtilImpl.java?rev=900985&r1=900984&r2=900985&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DBIdentifierUtilImpl.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DBIdentifierUtilImpl.java Tue Jan 19 22:33:11 2010
@@ -419,6 +419,10 @@
      * Converts a column alias to use the appropriate delimiters
      */
     public String convertAlias(String alias) {
+        if (!needsConversion(getIdentifierConfiguration())) {
+            return alias;
+        }
+
         String[] names = Normalizer.splitName(alias);
         if (names.length <= 1) {
             // Nothing to split

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DefaultIdentifierConfiguration.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DefaultIdentifierConfiguration.java?rev=900985&r1=900984&r2=900985&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DefaultIdentifierConfiguration.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/identifier/DefaultIdentifierConfiguration.java Tue Jan 19 22:33:11 2010
@@ -29,6 +29,7 @@
 
     private DBIdentifierRule normalizingRule = new DBIdentifierRule();
     private Map<String, IdentifierRule> normalizingRules = new HashMap<String, IdentifierRule>();
+    private final String conversionKey = getLeadingDelimiter() + getIdentifierDelimiter() + getTrailingDelimiter();
 
     public DefaultIdentifierConfiguration() {
         normalizingRules.put(IdentifierRule.DEFAULT_RULE, normalizingRule);
@@ -78,4 +79,8 @@
     public boolean getSupportsDelimitedIdentifiers() {
         return true;
     }
+    
+    public String getConversionKey() {
+        return conversionKey;
+    }
 }

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=900985&r1=900984&r2=900985&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Tue Jan 19 22:33:11 2010
@@ -373,6 +373,7 @@
     public String delimitedCase = SCHEMA_CASE_PRESERVE;
     public String catalogSeparator = ".";
     private String defaultSchemaName = null;
+    private String conversionKey = null;
        
     // Naming utility and naming rules
     private DBIdentifierUtil namingUtil = null;
@@ -5361,4 +5362,12 @@
     public String getDefaultSchemaName() {
         return defaultSchemaName;
     }
+    
+    public String getConversionKey() {
+        if (conversionKey == null) {
+            conversionKey = getLeadingDelimiter() + getIdentifierDelimiter() +
+            getTrailingDelimiter();
+        }
+        return conversionKey;
+    }
 }

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierConfiguration.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierConfiguration.java?rev=900985&r1=900984&r2=900985&view=diff
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierConfiguration.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierConfiguration.java Tue Jan 19 22:33:11 2010
@@ -86,4 +86,13 @@
      * @return upper, lower, or preserve
      */
     public String getSchemaCase();
+    
+    /**
+     * Returns a key that can be used to determine whether conversion
+     * should take place.  Id configurations should create a key unique
+     * to their configuration.  The typical key is:
+     * leading delimiter (") + name separator(.) + trailing delimiter(")
+     * @return
+     */
+    public String getConversionKey();
 }

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierUtilImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierUtilImpl.java?rev=900985&r1=900984&r2=900985&view=diff
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierUtilImpl.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierUtilImpl.java Tue Jan 19 22:33:11 2010
@@ -503,10 +503,8 @@
     }    
 
 
-    private boolean needsConversion(IdentifierConfiguration config) {
-        return !(config.getLeadingDelimiter().equals(getIdentifierConfiguration().getLeadingDelimiter()) &&
-                 config.getTrailingDelimiter().equals(getIdentifierConfiguration().getTrailingDelimiter()) &&
-                 config.getIdentifierDelimiter().equals(getIdentifierConfiguration().getIdentifierDelimiter()));
+    protected boolean needsConversion(IdentifierConfiguration config) {
+        return !(config.getConversionKey().equals(getIdentifierConfiguration().getConversionKey()));
     }
 
     private IdentifierRule[] getNamingRules(String[] rules) {

Modified: openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/identifier/IdConfigurationTestImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/identifier/IdConfigurationTestImpl.java?rev=900985&r1=900984&r2=900985&view=diff
==============================================================================
--- openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/identifier/IdConfigurationTestImpl.java (original)
+++ openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/identifier/IdConfigurationTestImpl.java Tue Jan 19 22:33:11 2010
@@ -28,7 +28,8 @@
 public class IdConfigurationTestImpl implements IdentifierConfiguration {
 
     Map<String, IdentifierRule> _rules = new HashMap<String, IdentifierRule>();
-    
+    private final String conversionKey = getLeadingDelimiter() + getIdentifierDelimiter() + getTrailingDelimiter();
+
     public IdConfigurationTestImpl() {
         _rules.put("DEFAULT", _defRule);
     }
@@ -84,4 +85,7 @@
         return true;
     }
 
+    public String getConversionKey() {
+        return conversionKey;
+    }
 }

Modified: openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/identifier/NewIdConfigurationTestImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/identifier/NewIdConfigurationTestImpl.java?rev=900985&r1=900984&r2=900985&view=diff
==============================================================================
--- openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/identifier/NewIdConfigurationTestImpl.java (original)
+++ openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/identifier/NewIdConfigurationTestImpl.java Tue Jan 19 22:33:11 2010
@@ -28,7 +28,8 @@
 public class NewIdConfigurationTestImpl implements IdentifierConfiguration {
 
     Map<String, IdentifierRule> _rules = new HashMap<String, IdentifierRule>();
-    
+    private final String conversionKey = getLeadingDelimiter() + getIdentifierDelimiter() + getTrailingDelimiter();
+
     public NewIdConfigurationTestImpl() {
         _rules.put("DEFAULT", _defRule);
     }
@@ -84,4 +85,7 @@
         return true;
     }
 
+    public String getConversionKey() {
+        return conversionKey;
+    }
 }