This is an automated email from the ASF dual-hosted git repository.
matthiasblaesing 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 0a4be7b6fe Detect JPA provider on classpath, removing requirement to
have it as legacy library
new 1b075fe0c8 Merge pull request #6748 from
matthiasblaesing/jpa_provider_on_classpath
0a4be7b6fe is described below
commit 0a4be7b6fe6532fe818e83ce09a824c9f6ccffd8
Author: Matthias Bläsing <[email protected]>
AuthorDate: Fri Nov 24 22:13:57 2023 +0100
Detect JPA provider on classpath, removing requirement to have it as legacy
library
In addition fixes typo in JPA 3.1 detection (duplicate ".class" suffix)
---
.../j2ee/persistence/provider/Provider.java | 2 +-
.../util/PersistenceProviderComboboxHelper.java | 51 ++++++++++++++++------
2 files changed, 38 insertions(+), 15 deletions(-)
diff --git
a/java/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/provider/Provider.java
b/java/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/provider/Provider.java
index 9a5a074067..41ad72980a 100644
---
a/java/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/provider/Provider.java
+++
b/java/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/provider/Provider.java
@@ -84,7 +84,7 @@ public abstract class Provider {
if(ret && version != null)
{
if(Persistence.VERSION_3_1.equals(version)){
- ret &=
cp.findResource("jakarta/persistence/spi/TransformerException.class.class") !=
null;
+ ret &=
cp.findResource("jakarta/persistence/spi/TransformerException.class") != null;
} else if(Persistence.VERSION_3_0.equals(version)){
ret &= cp.findResource("jakarta/persistence/Entity.class") !=
null;
} else if (Persistence.VERSION_2_2.equals(version)) {
diff --git
a/java/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/util/PersistenceProviderComboboxHelper.java
b/java/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/util/PersistenceProviderComboboxHelper.java
index e0d7f83796..30ae85ea9d 100644
---
a/java/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/util/PersistenceProviderComboboxHelper.java
+++
b/java/j2ee.persistence/src/org/netbeans/modules/j2ee/persistence/util/PersistenceProviderComboboxHelper.java
@@ -35,7 +35,11 @@ import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JList;
import javax.swing.JSeparator;
+import org.netbeans.api.java.classpath.ClassPath;
+import org.netbeans.api.java.project.JavaProjectConstants;
import org.netbeans.api.project.Project;
+import org.netbeans.api.project.ProjectUtils;
+import org.netbeans.api.project.SourceGroup;
import org.netbeans.api.project.libraries.LibrariesCustomizer;
import org.netbeans.modules.j2ee.persistence.dd.common.Persistence;
import org.netbeans.modules.j2ee.persistence.provider.DefaultProvider;
@@ -45,6 +49,7 @@ import
org.netbeans.modules.j2ee.persistence.spi.provider.PersistenceProviderSup
import org.netbeans.modules.j2ee.persistence.wizard.Util;
import
org.netbeans.modules.j2ee.persistence.wizard.library.PersistenceLibraryCustomizer;
import
org.netbeans.modules.j2ee.persistence.wizard.library.PersistenceLibrarySupport;
+import org.netbeans.spi.java.classpath.support.ClassPathSupport;
import org.openide.util.NbBundle;
import org.openide.util.Parameters;
@@ -79,7 +84,7 @@ public final class PersistenceProviderComboboxHelper {
if (aProviderSupplier == null){
// a java se project
- aProviderSupplier = new DefaultPersistenceProviderSupplier();
+ aProviderSupplier = new
DefaultPersistenceProviderSupplier(project);
}
this.project = project;
this.providerSupplier = aProviderSupplier;
@@ -114,8 +119,8 @@ public final class PersistenceProviderComboboxHelper {
providerCombo.addActionListener(new ActionListener() {
- Object currentItem = providerCombo.getSelectedItem();
- int currentIndex = providerCombo.getSelectedIndex();
+ private Object currentItem = providerCombo.getSelectedItem();
+ private int currentIndex = providerCombo.getSelectedIndex();
@Override
public void actionPerformed(ActionEvent e) {
@@ -290,20 +295,38 @@ public final class PersistenceProviderComboboxHelper {
* for instance for Java SE projects).
*/
private static class DefaultPersistenceProviderSupplier implements
PersistenceProviderSupplier{
-
+
+ private final Project project;
+
+ public DefaultPersistenceProviderSupplier(Project project) {
+ this.project = project;
+ }
+
@Override
public List<Provider> getSupportedProviders() {
ArrayList<Provider> providers = new ArrayList<>();
- for (Provider each :
PersistenceLibrarySupport.getProvidersFromLibraries()){
- boolean found = false;
- for (int i = 0; i < providers.size(); i++) {
- Object elem = providers.get(i);
- if (elem instanceof Provider && each.equals(elem)){
- found = true;
- break;
- }
+
+ SourceGroup[] sourceGroups = ProjectUtils
+ .getSources(project)
+ .getSourceGroups(JavaProjectConstants.SOURCES_TYPE_JAVA);
+
+ List<ClassPath> classPaths = new ArrayList<>();
+ if (sourceGroups != null) {
+ for (SourceGroup sourceGroup : sourceGroups) {
+ ClassPath cp =
ClassPath.getClassPath(sourceGroup.getRootFolder(), ClassPath.COMPILE);
+ classPaths.add(cp);
}
- if (!found){
+ }
+ ClassPath cp =
ClassPathSupport.createProxyClassPath(classPaths.toArray(ClassPath[]::new));
+
+ for(Provider p: ProviderUtil.getAllProviders()) {
+ if (p.isOnClassPath(cp) && !providers.contains(p)) {
+ providers.add(p);
+ }
+ }
+
+ for (Provider each :
PersistenceLibrarySupport.getProvidersFromLibraries()){
+ if (! providers.contains(each)){
providers.add(each);
}
}
@@ -314,5 +337,5 @@ public final class PersistenceProviderComboboxHelper {
public boolean supportsDefaultProvider() {
return false;
}
-}
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists