You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by pe...@apache.org on 2023/02/03 21:40:22 UTC

[netbeans] branch master updated: Improve TomEE support for JPA (Fix 4146) (#5415)

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

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


The following commit(s) were added to refs/heads/master by this push:
     new fc936ecc50 Improve TomEE support for JPA (Fix 4146) (#5415)
fc936ecc50 is described below

commit fc936ecc500cc2f5c915b0b8c0130e3351e3ee45
Author: José Contreras <pe...@apache.org>
AuthorDate: Fri Feb 3 15:40:13 2023 -0600

    Improve TomEE support for JPA (Fix 4146) (#5415)
    
    - Add logic to support two default provider for TomEE PluME
    - Add logic to support up to JPA 2.1
    - Add methods to support JPA 2.2 and 3.0; when available in NetBeans
    - Remove redundant logging, already logged the first time a server is
      registered
---
 .../modules/tomcat5/deploy/TomcatManager.java      | 33 ++++++++++++++++-
 .../modules/tomcat5/j2ee/JpaSupportImpl.java       | 42 +++++++++++++++++-----
 .../modules/tomcat5/j2ee/TomcatPlatformImpl.java   |  2 +-
 3 files changed, 67 insertions(+), 10 deletions(-)

diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/deploy/TomcatManager.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/deploy/TomcatManager.java
index c1d7fa0ff6..006a3c708c 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/deploy/TomcatManager.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/deploy/TomcatManager.java
@@ -498,6 +498,38 @@ public class TomcatManager implements DeploymentManager {
                 return false;
         }
     }
+    
+    public boolean isTomEE9() {
+        return tomEEVersion == TomEEVersion.TOMEE_90;
+    }
+    
+    public boolean isTomEE8() {
+        return tomEEVersion == TomEEVersion.TOMEE_80;
+    }
+    
+    public boolean isTomEEplume() {
+        return tomEEType == TomEEType.TOMEE_PLUME;
+    }
+    
+    public boolean isJpa30() {
+        return isTomEE9();
+    }
+    
+    public boolean isJpa22() {
+        return isTomEE8();
+    }
+    
+    public boolean isJpa21() {
+        return tomEEVersion.isAtLeast(TomEEVersion.TOMEE_70) && !isTomEE9();
+    }
+    
+    public boolean isJpa20() {
+        return tomEEVersion.isAtLeast(TomEEVersion.TOMEE_15) && !isTomEE9();
+    }
+    
+    public boolean isJpa10() {
+        return isJpa20(); // All TomEE versions up to 8 support JPA 1.0
+    }
 
     /** Returns Tomcat lib folder: "lib" for  Tomcat 6.0 or greater and "common/lib" for Tomcat 5.x or less*/
     public String libFolder() {
@@ -523,7 +555,6 @@ public class TomcatManager implements DeploymentManager {
         boolean fireListener = false;
         synchronized (this) {
             if (tomEEChecked) {
-                LOGGER.log(Level.INFO, "TomEE version {0}, type {1}", new Object[] {tomEEVersion, tomEEType});
                 return;
             }
             assert tomEEWarListener == null;
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/JpaSupportImpl.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/JpaSupportImpl.java
index b3ff67d42c..2362b78d2e 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/JpaSupportImpl.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/JpaSupportImpl.java
@@ -18,32 +18,58 @@
  */
 package org.netbeans.modules.tomcat5.j2ee;
 
-import java.util.Collections;
+import java.util.HashSet;
 import java.util.Set;
 import org.netbeans.modules.javaee.specs.support.api.JpaProvider;
 import org.netbeans.modules.javaee.specs.support.spi.JpaProviderFactory;
 import org.netbeans.modules.javaee.specs.support.spi.JpaSupportImplementation;
+import org.netbeans.modules.tomcat5.deploy.TomcatManager;
 
 /**
- * This is TomEE only class.
- * @author Petr Hejl
+ * This is TomEE only class. TomEE PluME support two implementations: {@code OpenJPA}
+ * and {@code EclipseLink}, </p> every other TomEE flavor only support {@code OpenJPA}
+ * @author Petr Hejl, José Contreras
  */
-public class JpaSupportImpl implements JpaSupportImplementation {
+class JpaSupportImpl implements JpaSupportImplementation {
 
     private static final String OPENJPA_JPA_PROVIDER = "org.apache.openjpa.persistence.PersistenceProviderImpl"; // NOI18N
+    private static final String ECLIPSELINK_JPA_PROVIDER = "org.eclipse.persistence.jpa.PersistenceProvider"; // NOI18N
+    private final TomcatManager instance;
 
-    public JpaSupportImpl() {
-        super();
+    
+    JpaSupportImpl(TomcatManager instance) {
+        this.instance = instance;
     }
 
     @Override
     public JpaProvider getDefaultProvider() {
-        return JpaProviderFactory.createJpaProvider(OPENJPA_JPA_PROVIDER, true, true, true, false);
+        return JpaProviderFactory.createJpaProvider(
+                    OPENJPA_JPA_PROVIDER, 
+                    true, 
+                    instance.isJpa10(), 
+                    instance.isJpa20(), 
+                    instance.isJpa21());
     }
 
     @Override
     public Set<JpaProvider> getProviders() {
-        return Collections.singleton(getDefaultProvider());
+        Set<JpaProvider> providers = new HashSet<>();
+        providers.add(JpaProviderFactory.createJpaProvider(
+                OPENJPA_JPA_PROVIDER, 
+                true, 
+                instance.isJpa10(), 
+                instance.isJpa20(), 
+                instance.isJpa21()));
+        // TomEE PluME has Eclipselink and OpenJPA
+        if (instance.isTomEEplume()) {
+            providers.add(JpaProviderFactory.createJpaProvider(
+                    ECLIPSELINK_JPA_PROVIDER, 
+                    true, 
+                    instance.isJpa10(), 
+                    instance.isJpa20(), 
+                    instance.isJpa21()));
+        }
+        return providers;
     }
 
 }
diff --git a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java
index 05e39a6846..fed6b746a3 100644
--- a/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java
+++ b/enterprise/tomcat5/src/org/netbeans/modules/tomcat5/j2ee/TomcatPlatformImpl.java
@@ -614,7 +614,7 @@ public class TomcatPlatformImpl extends J2eePlatformImpl2 {
         Collections.addAll(content, tp.getCatalinaHome(),
                 new EjbSupportImpl(manager), wsStack);
         if (manager.isTomEE()) {
-            content.add(new JpaSupportImpl());
+            content.add(new JpaSupportImpl(manager));
             if (manager.isTomEEJaxRS()) {
                 content.add(new JaxRsStackSupportImpl(this));
             }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists