? src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/.cvsignore
Index: .cvsignore
===================================================================
RCS file: /cvs/j2ee/ejbcore/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.1.106.1
diff -u -r1.1 -r1.1.106.1
--- .cvsignore 31 May 2005 22:11:25 -0000 1.1
+++ .cvsignore 26 Mar 2007 09:49:02 -0000 1.1.106.1
@@ -1 +1,2 @@
build
+.swp
Index: nbproject/project.xml
===================================================================
RCS file: /cvs/j2ee/ejbcore/nbproject/project.xml,v
retrieving revision 1.11.4.1
retrieving revision 1.11.4.1.2.1
diff -u -r1.11.4.1 -r1.11.4.1.2.1
--- nbproject/project.xml 28 Feb 2007 18:01:53 -0000 1.11.4.1
+++ nbproject/project.xml 26 Mar 2007 09:49:02 -0000 1.11.4.1.2.1
@@ -368,6 +368,14 @@
6.2
+
+ org.netbeans.api.web.webmodule
+
+
+
+ 1.8
+
+
Index: src/org/netbeans/modules/j2ee/ejbcore/action/UseDatabaseGenerator.java
===================================================================
RCS file: /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/action/UseDatabaseGenerator.java,v
retrieving revision 1.4.4.1
retrieving revision 1.4.4.1.2.1
diff -u -r1.4.4.1 -r1.4.4.1.2.1
--- src/org/netbeans/modules/j2ee/ejbcore/action/UseDatabaseGenerator.java 28 Feb 2007 18:01:59 -0000 1.4.4.1
+++ src/org/netbeans/modules/j2ee/ejbcore/action/UseDatabaseGenerator.java 26 Mar 2007 09:49:03 -0000 1.4.4.1.2.1
@@ -13,7 +13,7 @@
* "Portions Copyrighted [year] [name of copyright owner]"
*
* The Original Software is NetBeans. The Initial Developer of the Original
- * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
+ * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
* Microsystems, Inc. All Rights Reserved.
*/
@@ -37,7 +37,14 @@
import org.netbeans.modules.j2ee.common.queries.api.InjectionTargetQuery;
import org.netbeans.modules.j2ee.common.source.AbstractTask;
import org.netbeans.modules.j2ee.dd.api.common.ResourceRef;
+import org.netbeans.modules.j2ee.dd.api.ejb.EjbJar;
+import org.netbeans.modules.j2ee.dd.api.ejb.EnterpriseBeans;
+import org.netbeans.modules.j2ee.dd.api.ejb.Ejb;
+import org.netbeans.modules.j2ee.dd.api.ejb.DDProvider;
+import org.netbeans.modules.j2ee.deployment.common.api.ConfigurationException;
import org.netbeans.modules.j2ee.deployment.common.api.Datasource;
+import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
+import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider;
import org.netbeans.modules.j2ee.ejbcore.Utils;
import org.netbeans.modules.j2ee.ejbcore._RetoucheUtil;
import org.netbeans.modules.j2ee.ejbcore.ui.logicalview.entres.ServiceLocatorStrategy;
@@ -52,8 +59,11 @@
public UseDatabaseGenerator() {
}
- public void generate(final FileObject fileObject, final ElementHandle elementHandle, final Datasource datasource,
- final boolean createServerResources, String serviceLocator) throws IOException {
+ public void generate(final FileObject fileObject, final ElementHandle elementHandle,
+ final J2eeModuleProvider j2eeModuleProvider, final String datasourceReferenceName,
+ final Datasource datasource, final boolean createServerResources, String serviceLocator)
+ throws IOException, ConfigurationException
+ {
Project project = FileOwnerQuery.getOwner(fileObject);
ServiceLocatorStrategy serviceLocatorStrategy = (serviceLocator == null) ? null :
ServiceLocatorStrategy.create(project, fileObject, serviceLocator);
@@ -73,9 +83,105 @@
generateLookupMethod(fileObject, className, jndiName, serviceLocatorStrategy);
}
}
+
+if (System.getProperties().getProperty("resource-api-redesign") != null) {
+ J2eeModule module = j2eeModuleProvider.getJ2eeModule();
+ if (isWebModule(module)) {
+ bindDataSourceReference(j2eeModuleProvider, datasourceReferenceName, datasource);
+ }
+ else if (isEjbModule(module)) {
+ bindDataSourceReferenceEjb(j2eeModuleProvider, datasourceReferenceName, datasource, fileObject, elementHandle);
+ }
+}
+
if (serviceLocator != null) {
erc.setServiceLocatorName(serviceLocator);
}
+ }
+
+ private void bindDataSourceReference(J2eeModuleProvider j2eeModuleProvider, String dsRefName, Datasource datasource)
+ throws ConfigurationException {
+
+ String dsJndiName = datasource.getJndiName();
+ j2eeModuleProvider.getConfigSupport().bindDatasourceReference(dsRefName, dsJndiName);
+ }
+
+ private void bindDataSourceReferenceEjb(J2eeModuleProvider j2eeModuleProvider, String dsRefName, Datasource datasource,
+ FileObject fileObject, ElementHandle elementHandle) throws ConfigurationException {
+
+ String dsJndiName = datasource.getJndiName();
+
+ EjbJar dd = null;
+ try {
+ dd = findDDRoot(fileObject);
+ }
+ catch (IOException ioe) {
+ // TODO
+ }
+ if (dd == null) {
+ return;
+ }
+
+ EnterpriseBeans beans = dd.getEnterpriseBeans();
+ if (beans == null) {
+ return;
+ }
+
+ String ejbName = getEjbName(beans, elementHandle.getQualifiedName());
+ if (ejbName == null) {
+ return;
+ }
+
+ String ejbType = getEjbType(beans, elementHandle.getQualifiedName());
+ if (ejbType == null) {
+ return;
+ }
+
+ j2eeModuleProvider.getConfigSupport().bindDatasourceReferenceEjb(dsRefName, dsJndiName, ejbName, ejbType);
+ }
+
+ private EjbJar findDDRoot(FileObject fileObject) throws IOException {
+ org.netbeans.modules.j2ee.api.ejbjar.EjbJar ejbJar = org.netbeans.modules.j2ee.api.ejbjar.EjbJar.getEjbJar(fileObject);
+ assert ejbJar != null;
+ return DDProvider.getDefault().getMergedDDRoot(ejbJar.getMetadataUnit());
+ }
+
+ private boolean isWebModule(J2eeModule module) {
+ return module.getModuleType().equals(J2eeModule.WAR);
+ }
+
+ private boolean isEjbModule(J2eeModule module) {
+ return module.getModuleType().equals(J2eeModule.EJB);
+ }
+
+ private String getEjbName(EnterpriseBeans beans, String className) {
+ Ejb ejb = (Ejb) beans.findBeanByName(EnterpriseBeans.SESSION, Ejb.EJB_CLASS, className);
+ if (ejb == null) {
+ ejb = (Ejb) beans.findBeanByName(EnterpriseBeans.ENTITY, Ejb.EJB_CLASS, className);
+ }
+ if (ejb == null) {
+ ejb = (Ejb) beans.findBeanByName(EnterpriseBeans.MESSAGE_DRIVEN, Ejb.EJB_CLASS, className);
+ }
+
+ return ejb.getEjbName();
+ }
+
+ private String getEjbType(EnterpriseBeans beans, String className) {
+ String type = null;
+
+ if (beans.findBeanByName(EnterpriseBeans.SESSION, Ejb.EJB_CLASS, className) != null) {
+ type = EnterpriseBeans.SESSION;
+ }
+ else
+ if (beans.findBeanByName(EnterpriseBeans.ENTITY, Ejb.EJB_CLASS, className) != null) {
+ type = EnterpriseBeans.ENTITY;
+ }
+ else
+ if (beans.findBeanByName(EnterpriseBeans.MESSAGE_DRIVEN, Ejb.EJB_CLASS, className) != null) {
+ type = EnterpriseBeans.MESSAGE_DRIVEN;
+ }
+
+ return type;
}
private String generateJNDILookup(String jndiName, EnterpriseReferenceContainer enterpriseReferenceContainer,
Index: src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/mdb/MessageEJBWizard.java
===================================================================
RCS file: /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/mdb/MessageEJBWizard.java,v
retrieving revision 1.4.6.1
retrieving revision 1.4.6.1.2.1
diff -u -r1.4.6.1 -r1.4.6.1.2.1
--- src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/mdb/MessageEJBWizard.java 28 Feb 2007 18:02:15 -0000 1.4.6.1
+++ src/org/netbeans/modules/j2ee/ejbcore/ejb/wizard/mdb/MessageEJBWizard.java 26 Mar 2007 09:49:03 -0000 1.4.6.1.2.1
@@ -13,13 +13,14 @@
* "Portions Copyrighted [year] [name of copyright owner]"
*
* The Original Software is NetBeans. The Initial Developer of the Original
- * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
+ * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.modules.j2ee.ejbcore.ejb.wizard.mdb;
import java.io.IOException;
+import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider;
import org.netbeans.modules.j2ee.ejbcore.api.codegeneration.MessageGenerator;
import java.util.Collections;
import java.util.NoSuchElementException;
@@ -34,6 +35,8 @@
import org.netbeans.spi.project.ui.templates.support.Templates;
import org.openide.filesystems.FileObject;
import org.netbeans.modules.j2ee.common.Util;
+import org.netbeans.modules.j2ee.deployment.common.api.ConfigurationException;
+import org.netbeans.modules.j2ee.deployment.common.api.MessageDestination;
import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
import org.netbeans.modules.j2ee.ejbcore.Utils;
import org.openide.WizardDescriptor;
@@ -73,6 +76,27 @@
Util.hideLabelAndLabelFor(jComponent, NbBundle.getMessage(MessageEJBWizard.class, "LBL_JavaTargetChooserPanelGUI_CreatedFile_Label"));
panels = new WizardDescriptor.Panel[] {wizardPanel};
Utils.mergeSteps(wiz, panels, SESSION_STEPS);
+
+if (System.getProperties().getProperty("resource-api-redesign") != null) {
+ J2eeModuleProvider provider = project.getLookup().lookup(J2eeModuleProvider.class);
+ try {
+ Set moduleDestinations = provider.getConfigSupport().getMessageDestinations();
+ for (MessageDestination md : moduleDestinations) {
+ System.out.println(md.getJndiName() + " ~ " + md.getType());
+ }
+ if (provider.getConfigSupport().supportsCreateMessageDestination()) {
+ MessageDestination dest = provider.getConfigSupport().createMessageDestination("TestMsgDest01", MessageDestination.Type.TOPIC);
+ }
+ Set serverDestinations = provider.getConfigSupport().getServerMessageDestinations();
+ for (MessageDestination md : serverDestinations) {
+ System.out.println(md.getJndiName() + " ~ " + md.getType());
+ }
+ }
+ catch (ConfigurationException ce) {
+
+ }
+}
+
}
public Set instantiate() throws IOException {
Index: src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/UseDatabaseAction.java
===================================================================
RCS file: /cvs/j2ee/ejbcore/src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/UseDatabaseAction.java,v
retrieving revision 1.10.4.1
retrieving revision 1.10.4.1.2.1
diff -u -r1.10.4.1 -r1.10.4.1.2.1
--- src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/UseDatabaseAction.java 28 Feb 2007 18:03:11 -0000 1.10.4.1
+++ src/org/netbeans/modules/j2ee/ejbcore/ui/logicalview/entres/UseDatabaseAction.java 26 Mar 2007 09:49:04 -0000 1.10.4.1.2.1
@@ -13,7 +13,7 @@
* "Portions Copyrighted [year] [name of copyright owner]"
*
* The Original Software is NetBeans. The Initial Developer of the Original
- * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
+ * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
* Microsystems, Inc. All Rights Reserved.
*/
@@ -22,6 +22,8 @@
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.TypeElement;
import javax.swing.Action;
@@ -33,9 +35,18 @@
import org.netbeans.api.project.Project;
import org.netbeans.modules.j2ee.api.ejbjar.EnterpriseReferenceContainer;
import org.netbeans.modules.j2ee.common.source.AbstractTask;
+import org.netbeans.modules.j2ee.dd.api.common.ResourceRef;
+import org.netbeans.modules.j2ee.dd.api.ejb.EjbJar;
+import org.netbeans.modules.j2ee.dd.api.ejb.EnterpriseBeans;
+import org.netbeans.modules.j2ee.dd.api.ejb.Ejb;
+import org.netbeans.modules.j2ee.dd.api.web.WebApp;
+import org.netbeans.modules.j2ee.deployment.common.api.ConfigurationException;
+import org.netbeans.modules.j2ee.deployment.common.api.Datasource;
+import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule;
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider;
import org.netbeans.modules.j2ee.ejbcore._RetoucheUtil;
import org.netbeans.modules.j2ee.ejbcore.action.UseDatabaseGenerator;
+import org.netbeans.modules.web.api.webmodule.WebModule;
import org.openide.DialogDescriptor;
import org.openide.DialogDisplayer;
import org.openide.ErrorManager;
@@ -97,20 +108,110 @@
}
});
selectDatabasePanel.checkDatasource();
+
+if (System.getProperties().getProperty("resource-api-redesign") != null) {
+ try {
+ Map refs = getDataSourceReferences(j2eeModuleProvider, fileObject);
+ }
+ catch (ConfigurationException ce) {
+ //TODO notify user
+ }
+}
+String refName = "NameOfSelectedReference";
+
Object option = DialogDisplayer.getDefault().notify(dialogDescriptor);
if (option == NotifyDescriptor.OK_OPTION) {
+
UseDatabaseGenerator generator = new UseDatabaseGenerator();
- generator.generate(
- fileObject,
- elementHandle,
- selectDatabasePanel.getDatasource(),
- selectDatabasePanel.createServerResources(),
- selectDatabasePanel.getServiceLocator()
- );
+ try {
+ generator.generate(
+ fileObject,
+ elementHandle,
+ j2eeModuleProvider,
+ refName,
+ selectDatabasePanel.getDatasource(),
+ selectDatabasePanel.createServerResources(),
+ selectDatabasePanel.getServiceLocator()
+ );
+ }
+ catch (ConfigurationException ex) {
+ //TODO
+ }
}
return false;
}
+
+ private Map getDataSourceReferences(J2eeModuleProvider j2eeModuleProvider, FileObject fileObject)
+ throws ConfigurationException {
+
+ HashMap references = new HashMap();
+
+ if (j2eeModuleProvider.getJ2eeModule().getModuleType().equals(J2eeModule.EJB)) {
+ EjbJar dd = findEjbDDRoot(fileObject);
+ if (dd == null) {
+ return references;
+ }
+ EnterpriseBeans beans = dd.getEnterpriseBeans();
+ if (beans == null) {
+ return references;
+ }
+
+ Ejb[] ejbs = beans.getEjbs();
+ for (Ejb ejb : ejbs) {
+ ResourceRef[] refs = ejb.getResourceRef();
+ for (ResourceRef ref : refs) {
+ String refName = ref.getResRefName();
+ Datasource ds = j2eeModuleProvider.getConfigSupport().findDatasourceForReferenceEjb(refName, ejb.getEjbName());
+ if (ds != null) {
+ references.put(refName, ds);
+ System.out.println(refName + " ~ " + ds.getUrl());
+ }
+ }
+ }
+ }
+ else
+ if (j2eeModuleProvider.getJ2eeModule().getModuleType().equals(J2eeModule.WAR)) {
+ WebApp dd = findWebDDRoot(fileObject);
+ if (dd == null) {
+ return references;
+ }
+ ResourceRef[] refs = dd.getResourceRef();
+ for (ResourceRef ref : refs) {
+ String refName = ref.getResRefName();
+ Datasource ds = j2eeModuleProvider.getConfigSupport().findDatasourceForReference(refName);
+ if (ds != null) {
+ references.put(refName, ds);
+ System.out.println(refName + " ~ " + ds.getUrl());
+ }
+ }
+ }
+
+ return references;
+ }
+
+ private EjbJar findEjbDDRoot(FileObject fileObject) throws ConfigurationException {
+ org.netbeans.modules.j2ee.api.ejbjar.EjbJar ejbJar = org.netbeans.modules.j2ee.api.ejbjar.EjbJar.getEjbJar(fileObject);
+ assert ejbJar != null;
+ try {
+ return org.netbeans.modules.j2ee.dd.api.ejb.DDProvider.getDefault().getMergedDDRoot(ejbJar.getMetadataUnit());
+ }
+ catch (IOException ioe) {
+ String msg = NbBundle.getMessage(UseDatabaseAction.class, "ERR_CannotReadEjbDD");
+ throw new ConfigurationException(msg, ioe);
+ }
+ }
+ private WebApp findWebDDRoot(FileObject fileObject) throws ConfigurationException {
+ WebModule mod = WebModule.getWebModule(fileObject);
+ try {
+ return org.netbeans.modules.j2ee.dd.api.web.DDProvider.getDefault().getMergedDDRoot(mod);
+ }
+ catch (IOException ioe) {
+ String msg = NbBundle.getMessage(UseDatabaseAction.class, "ERR_CannotReadWebDD");
+ throw new ConfigurationException(msg, ioe);
+ }
+ }
+
protected boolean enable(Node[] nodes) {
if (nodes == null || nodes.length != 1) {
return false;