You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/03/07 10:07:51 UTC

[causeway] branch spring6 updated: CAUSEWAY-3275: [Demo] fixes Demo JDO launch issue

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

ahuber pushed a commit to branch spring6
in repository https://gitbox.apache.org/repos/asf/causeway.git


The following commit(s) were added to refs/heads/spring6 by this push:
     new df4d06a02f CAUSEWAY-3275: [Demo] fixes Demo JDO launch issue
df4d06a02f is described below

commit df4d06a02f9a15f9beaf4d8e7f88def71cd47a99
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Mar 7 11:07:45 2023 +0100

    CAUSEWAY-3275: [Demo] fixes Demo JDO launch issue
    
    - it seems the mix of JDA and JPA present on the classpath does require
    an EntityManagerFactory bean - so we provide a dummy (spring6 branch
    only)
---
 .../webapp/wicket/jdo/DemoAppWicketJdo.java        | 46 ++++++++++++++++++++++
 1 file changed, 46 insertions(+)

diff --git a/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java b/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
index f6cd187c06..a85dd38634 100644
--- a/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
+++ b/examples/demo/wicket/jdo/src/main/java/demoapp/webapp/wicket/jdo/DemoAppWicketJdo.java
@@ -18,9 +18,22 @@
  */
 package demoapp.webapp.wicket.jdo;
 
+import java.util.Map;
+
+import jakarta.persistence.Cache;
+import jakarta.persistence.EntityGraph;
+import jakarta.persistence.EntityManager;
+import jakarta.persistence.EntityManagerFactory;
+import jakarta.persistence.PersistenceUnitUtil;
+import jakarta.persistence.Query;
+import jakarta.persistence.SynchronizationType;
+import jakarta.persistence.criteria.CriteriaBuilder;
+import jakarta.persistence.metamodel.Metamodel;
+
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Import;
 
 import org.apache.causeway.commons.internal.os._OsUtil;
@@ -74,6 +87,8 @@ import demoapp.webapp.wicket.common.ui.DemoAppWicketCommon;
 
     //XrayEnable.class // for debugging only
     //WicketViewerXrayEnable.class // for debugging only
+
+    DemoAppWicketJdo.WorkaroundJpaEntityManagerFactoryRequired.class
 })
 //@Log4j2
 public class DemoAppWicketJdo extends SpringBootServletInitializer {
@@ -97,8 +112,39 @@ public class DemoAppWicketJdo extends SpringBootServletInitializer {
 
         CausewayModuleExtCommandLogApplib.honorSystemEnvironment();
 
+
         SpringApplication.run(new Class[] { DemoAppWicketJdo.class }, args);
 
     }
 
+    /**
+     * maybe this workaround is not need, if we remove the right JPA artifacts from the class-path;
+     * however, don't know which one that would be
+     */
+    static class WorkaroundJpaEntityManagerFactoryRequired {
+
+        @Bean
+        public EntityManagerFactory entityManagerFactory() {
+            return new EntityManagerFactory() {
+                @Override public <T> T unwrap(final Class<T> cls) { return null; }
+                @Override public boolean isOpen() { return false; }
+                @Override public Map<String, Object> getProperties() { return null; }
+                @Override public PersistenceUnitUtil getPersistenceUnitUtil() { return null; }
+                @Override public Metamodel getMetamodel() { return null; }
+                @Override public CriteriaBuilder getCriteriaBuilder() { return null; }
+                @Override public Cache getCache() { return null; }
+                @Override public EntityManager createEntityManager(
+                        final SynchronizationType synchronizationType, final Map map) { return null; }
+                @Override public EntityManager createEntityManager(
+                        final SynchronizationType synchronizationType) { return null; }
+                @Override public EntityManager createEntityManager(final Map map) { return null; }
+                @Override public EntityManager createEntityManager() { return null; }
+                @Override public void close() {}
+                @Override public void addNamedQuery(final String name, final Query query) {}
+                @Override public <T> void addNamedEntityGraph(
+                        final String graphName, final EntityGraph<T> entityGraph) {}
+            };
+        }
+    }
+
 }