You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2006/04/29 21:33:10 UTC

svn commit: r398226 - in /incubator/cayenne/trunk/cayenne-jpa/src: main/java/org/apache/cayenne/jpa/bridge/ main/java/org/apache/cayenne/jpa/cspi/ main/java/org/apache/cayenne/jpa/map/ test/java/org/apache/cayenne/jpa/bridge/

Author: aadamchik
Date: Sat Apr 29 12:33:09 2006
New Revision: 398226

URL: http://svn.apache.org/viewcvs?rev=398226&view=rev
Log:
provider logging

Added:
    incubator/cayenne/trunk/cayenne-jpa/src/test/java/org/apache/cayenne/jpa/bridge/CayenneQueryHintsTest.java
Modified:
    incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/bridge/CayenneQueryHints.java
    incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/bridge/DataMapConverter.java
    incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/cspi/CjpaPersistenceProvider.java
    incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/map/JpaEntityMap.java

Modified: incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/bridge/CayenneQueryHints.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/bridge/CayenneQueryHints.java?rev=398226&r1=398225&r2=398226&view=diff
==============================================================================
--- incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/bridge/CayenneQueryHints.java (original)
+++ incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/bridge/CayenneQueryHints.java Sat Apr 29 12:33:09 2006
@@ -15,15 +15,15 @@
  */
 package org.apache.cayenne.jpa.bridge;
 
-import org.objectstyle.cayenne.query.ProcedureQuery;
-import org.objectstyle.cayenne.query.SQLTemplate;
-import org.objectstyle.cayenne.query.SelectQuery;
 
 public interface CayenneQueryHints {
 
     public static final String QUERY_TYPE_HINT = "cayenne.query.type";
 
-    public static final String QUERY_TYPE_HINT_SELECT_QUERY = SelectQuery.class.getName();
-    public static final String QUERY_TYPE_HINT_PROCEDURE_QUERY = ProcedureQuery.class.getName();
-    public static final String QUERY_TYPE_HINT_SQL_TEMPLATE_QUERY = SQLTemplate.class.getName();
+    // must use strings instead of Class.getName() as otherwise Eclipse complains when the
+    // constant is used in annotations. Is this an Eclipse bug?
+
+    public static final String SELECT_QUERY = "org.apache.cayenne.jpa.bridge.JpaSelectQuery";
+    public static final String PROCEDURE_QUERY = "org.apache.cayenne.jpa.bridge.JpaProcedureQuery";
+    public static final String SQL_TEMPLATE_QUERY = "org.apache.cayenne.jpa.bridge.JpaSQLTemplate";
 }

Modified: incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/bridge/DataMapConverter.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/bridge/DataMapConverter.java?rev=398226&r1=398225&r2=398226&view=diff
==============================================================================
--- incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/bridge/DataMapConverter.java (original)
+++ incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/bridge/DataMapConverter.java Sat Apr 29 12:33:09 2006
@@ -236,21 +236,19 @@
             JpaQueryHint hint = jpaQuery.getHint(CayenneQueryHints.QUERY_TYPE_HINT);
             if (hint != null && !Util.isEmptyString(hint.getValue())) {
                 try {
-                    Object cayenneQueryObject = Class.forName(
-                            hint.getValue(),
-                            true,
-                            Thread.currentThread().getContextClassLoader());
+                    Class cayenneQueryClass = Class.forName(hint.getValue(), true, Thread
+                            .currentThread()
+                            .getContextClassLoader());
 
-                    if (!(cayenneQueryObject instanceof JpaIndirectQuery)) {
+                    if (!JpaIndirectQuery.class.isAssignableFrom(cayenneQueryClass)) {
                         recordConflict(path, "Unknown type for Cayenne query '"
                                 + jpaQuery.getName()
                                 + "': "
-                                + cayenneQueryObject.getClass().getName());
+                                + cayenneQueryClass.getName());
                         return null;
                     }
 
-                    cayenneQuery = (JpaIndirectQuery) cayenneQueryObject;
-
+                    cayenneQuery = (JpaIndirectQuery) cayenneQueryClass.newInstance();
                 }
                 catch (Exception e) {
                     recordConflict(path, "Problem while creating Cayenne query '"

Modified: incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/cspi/CjpaPersistenceProvider.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/cspi/CjpaPersistenceProvider.java?rev=398226&r1=398225&r2=398226&view=diff
==============================================================================
--- incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/cspi/CjpaPersistenceProvider.java (original)
+++ incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/cspi/CjpaPersistenceProvider.java Sat Apr 29 12:33:09 2006
@@ -25,10 +25,13 @@
 import org.apache.cayenne.jpa.conf.EntityMapLoader;
 import org.apache.cayenne.jpa.map.JpaEntityMap;
 import org.apache.cayenne.jpa.spi.JpaPersistenceProvider;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.objectstyle.cayenne.access.DataDomain;
 import org.objectstyle.cayenne.conf.Configuration;
 import org.objectstyle.cayenne.map.DataMap;
 import org.objectstyle.cayenne.util.ResourceLocator;
+import org.objectstyle.cayenne.validation.ValidationResult;
 
 /**
  * A PersistenceProvider implementation based on Cayenne stack. Wraps a Cayenne
@@ -39,6 +42,7 @@
 public class CjpaPersistenceProvider extends JpaPersistenceProvider {
 
     protected Configuration configuration;
+    protected Log logger;
 
     /**
      * Creates a new PersistenceProvider with properties configured to run in a standalone
@@ -51,6 +55,11 @@
     public CjpaPersistenceProvider(boolean validateDescriptors) {
         super(validateDescriptors);
 
+        // hookup Cayenne logging...
+        Configuration.configureCommonLogging();
+
+        this.logger = LogFactory.getLog(getClass());
+
         // override default properties
         defaultProperties.put(DATA_SOURCE_FACTORY_PROPERTY, CjpaDataSourceFactory.class
                 .getName());
@@ -77,15 +86,21 @@
             domain = new DataDomain(name);
             configuration.addDomain(domain);
 
-            // TODO: andrus, 4/29/2006 - report conflicts...
-
             EntityMapLoader loader = new EntityMapLoader(info);
             JpaEntityMap jpaMap = loader.getEntityMap();
-            
+
             DataMapConverter converter = new DataMapConverter(loader.getContext());
             DataMap cayenneMap = converter.toDataMap(name, jpaMap);
 
             domain.addMap(cayenneMap);
+
+            // report conflicts...
+            ValidationResult conflicts = loader.getContext().getConflicts();
+            if (conflicts.hasFailures()) {
+                for (Object failure : conflicts.getFailures()) {
+                    logger.info("*** mapping conflict: " + failure);
+                }
+            }
         }
 
         return new CjpaEntityManagerFactory(domain, info);

Modified: incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/map/JpaEntityMap.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/map/JpaEntityMap.java?rev=398226&r1=398225&r2=398226&view=diff
==============================================================================
--- incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/map/JpaEntityMap.java (original)
+++ incubator/cayenne/trunk/cayenne-jpa/src/main/java/org/apache/cayenne/jpa/map/JpaEntityMap.java Sat Apr 29 12:33:09 2006
@@ -49,19 +49,6 @@
     protected JpaEntityListeners defaultEntityListeners;
     protected Collection<CascadeType> cascades;
 
-    public boolean isEmpty() {
-        return (entities == null || entities.isEmpty())
-                && (embeddables == null || embeddables.isEmpty())
-                && (mappedSuperclasses == null || mappedSuperclasses.isEmpty())
-                && (namedQueries == null || namedQueries.isEmpty())
-                && (namedNativeQueries == null || namedNativeQueries.isEmpty())
-                && (sqlResultSetMappings == null || sqlResultSetMappings.isEmpty())
-                && (sequenceGenerators == null || sequenceGenerators.isEmpty())
-                && (tableGenerators == null || tableGenerators.isEmpty())
-                && (cascades == null || cascades.isEmpty())
-                && defaultEntityListeners == null;
-    }
-
     /**
      * Returns a JpaEntity describing a given persistent class.
      */

Added: incubator/cayenne/trunk/cayenne-jpa/src/test/java/org/apache/cayenne/jpa/bridge/CayenneQueryHintsTest.java
URL: http://svn.apache.org/viewcvs/incubator/cayenne/trunk/cayenne-jpa/src/test/java/org/apache/cayenne/jpa/bridge/CayenneQueryHintsTest.java?rev=398226&view=auto
==============================================================================
--- incubator/cayenne/trunk/cayenne-jpa/src/test/java/org/apache/cayenne/jpa/bridge/CayenneQueryHintsTest.java (added)
+++ incubator/cayenne/trunk/cayenne-jpa/src/test/java/org/apache/cayenne/jpa/bridge/CayenneQueryHintsTest.java Sat Apr 29 12:33:09 2006
@@ -0,0 +1,29 @@
+/*
+ *  Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed 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.jpa.bridge;
+
+import junit.framework.TestCase;
+
+public class CayenneQueryHintsTest extends TestCase {
+
+    public void testQueryTypes() throws Exception {
+        assertEquals(JpaProcedureQuery.class, Class
+                .forName(CayenneQueryHints.PROCEDURE_QUERY));
+        assertEquals(JpaSelectQuery.class, Class.forName(CayenneQueryHints.SELECT_QUERY));
+        assertEquals(JpaSQLTemplate.class, Class
+                .forName(CayenneQueryHints.SQL_TEMPLATE_QUERY));
+    }
+}