diff -r 468cd4361449 j2ee.clientproject/nbproject/project.xml --- a/j2ee.clientproject/nbproject/project.xml Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.clientproject/nbproject/project.xml Thu Aug 15 14:36:04 2013 +0200 @@ -155,7 +155,7 @@ - 1.5 + 1.8 diff -r 468cd4361449 j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientActionProvider.java --- a/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientActionProvider.java Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/AppClientActionProvider.java Thu Aug 15 14:36:04 2013 +0200 @@ -54,23 +54,18 @@ import org.netbeans.api.debugger.DebuggerManager; import org.netbeans.api.debugger.Session; import org.netbeans.api.debugger.jpda.AttachingDICookie; -import org.netbeans.api.j2ee.core.Profile; import org.netbeans.api.java.project.JavaProjectConstants; import org.netbeans.modules.j2ee.api.ejbjar.EjbProjectConstants; import org.netbeans.modules.j2ee.clientproject.ui.customizer.AppClientProjectProperties; import org.netbeans.modules.javaee.project.api.ant.ui.J2EEProjectProperties; -import org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment; -import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule.Type; +import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule; import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider; import org.netbeans.modules.j2ee.deployment.plugins.api.InstanceProperties; import org.netbeans.modules.j2ee.deployment.plugins.api.ServerDebugInfo; import org.netbeans.modules.java.api.common.ant.UpdateHelper; import org.netbeans.modules.java.api.common.project.BaseActionProvider; import org.netbeans.spi.project.SingleMethod; -import org.openide.DialogDisplayer; -import org.openide.NotifyDescriptor; import org.openide.util.Lookup; -import org.openide.util.NbBundle; /** * Action provider of the Application Client project. @@ -213,11 +208,7 @@ public String[] getTargetNames(String command, Lookup context, Properties p, boolean doJavaChecks) throws IllegalArgumentException { if (command.equals(COMMAND_RUN) || command.equals(EjbProjectConstants.COMMAND_REDEPLOY) || command.equals(COMMAND_DEBUG) || command.equals(COMMAND_DEBUG_SINGLE) || command.equals(COMMAND_RUN_SINGLE)) { - if (!isSelectedServer()) { - String msg = NbBundle.getMessage( - AppClientActionProvider.class, "MSG_No_Server_Selected"); // NOI18N - DialogDisplayer.getDefault().notify( - new NotifyDescriptor.Message(msg, NotifyDescriptor.WARNING_MESSAGE)); + if (!checkSelectedServer(command.equals(COMMAND_DEBUG) || command.equals(COMMAND_DEBUG_SINGLE), false, false)) { return null; } if (isDebugged()) { @@ -241,31 +232,20 @@ if (command.equals(COMMAND_RUN) || command.equals(COMMAND_DEBUG)) { //see issue #92895 //XXX - replace this method with a call to API as soon as issue 109895 will be fixed - return res && isSelectedServer() && !isTargetServerRemote(); + return res && checkSelectedServer(command.equals(COMMAND_DEBUG), false, true) && !isTargetServerRemote(); } return res; } - private boolean isSelectedServer() { - String instance = getAntProjectHelper().getStandardPropertyEvaluator ().getProperty (AppClientProjectProperties.J2EE_SERVER_INSTANCE); - if (instance != null) { - String id = Deployment.getDefault().getServerID(instance); - if (id != null) { - return true; + private boolean checkSelectedServer(boolean checkDebug, boolean checkProfile, boolean noMessages) { + return J2EEProjectProperties.checkSelectedServer(getProject(), getAntProjectHelper(), + ((AppClientProject) getProject()).getAPICar().getJ2eeProfile(), J2eeModule.Type.CAR, new J2EEProjectProperties.SetServerInstanceCallback() { + + @Override + public void setServerInstance(String serverInstanceId) { + AppClientActionProvider.this.setServerInstance(serverInstanceId); } - } - - // if there is some server instance of the type which was used - // previously do not ask and use it - String serverType = getAntProjectHelper().getStandardPropertyEvaluator ().getProperty (AppClientProjectProperties.J2EE_SERVER_TYPE); - if (serverType != null) { - String instanceID = J2EEProjectProperties.getMatchingInstance(serverType, Type.CAR, ((AppClientProject) getProject()).getAPICar().getJ2eeProfile()); - if (instanceID != null) { - setServerInstance(instanceID); - return true; - } - } - return false; + }, checkDebug, checkProfile, false); } private void setServerInstance(final String serverInstanceId) { diff -r 468cd4361449 j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/Bundle.properties --- a/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/Bundle.properties Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/Bundle.properties Thu Aug 15 14:36:04 2013 +0200 @@ -49,7 +49,6 @@ LBL_No_Main_Classs_Found=Class "{0}" does not have a main method. LBL_No_Build_XML_Found=The project has no build script. MSG_FinishSession=Application Client debugging is not available right now because there is another remote debugging session active. The IDE will now close the active session and start a new session. -MSG_No_Server_Selected=The target server has not been set or has been removed.
Right-click the project in the Projects window and choose
Resolve Missing Server to set the target server. MSG_SessionRunning={0} cannot be executed when a debugging session is running. Do you want to close the debugging session and execute the {0}? NAME_src.dir=Source Packages diff -r 468cd4361449 j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java --- a/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.clientproject/src/org/netbeans/modules/j2ee/clientproject/ui/customizer/AppClientProjectProperties.java Thu Aug 15 14:36:04 2013 +0200 @@ -136,8 +136,8 @@ public static final String DIST_EAR_JAR = "dist.ear.jar"; //NOI18N public static final String JAR_NAME = "jar.name"; // NOI18N public static final String BUILD_EAR_CLASSES_DIR = "build.ear.classes.dir"; // NOI18N - public static final String J2EE_SERVER_INSTANCE = "j2ee.server.instance"; // NOI18N - public static final String J2EE_SERVER_TYPE = "j2ee.server.type"; // NOI18N + public static final String J2EE_SERVER_INSTANCE = J2EEProjectProperties.J2EE_SERVER_INSTANCE; + public static final String J2EE_SERVER_TYPE = J2EEProjectProperties.J2EE_SERVER_TYPE; public static final String J2EE_PLATFORM_CLASSPATH = "j2ee.platform.classpath"; //NOI18N // Properties stored in the PROJECT.PROPERTIES diff -r 468cd4361449 j2ee.earproject/nbproject/project.xml --- a/j2ee.earproject/nbproject/project.xml Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.earproject/nbproject/project.xml Thu Aug 15 14:36:04 2013 +0200 @@ -216,7 +216,7 @@ - 1.6 + 1.8
diff -r 468cd4361449 j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/Bundle.properties --- a/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/Bundle.properties Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/Bundle.properties Thu Aug 15 14:36:04 2013 +0200 @@ -66,8 +66,6 @@ CTL_UpdateOption=Upgrade Project # EarActionProvider -MSG_No_Server_Selected=The target server has not been set or has been removed.
Right-click the project in the Projects window and choose
Resolve Missing Server Problem \ - to set the target server. MSG_Server_State_Question=Is server running in debug mode? MSG_Server_State=Either stop the server or re-start it in debug mode. diff -r 468cd4361449 j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarActionProvider.java --- a/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarActionProvider.java Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/EarActionProvider.java Thu Aug 15 14:36:04 2013 +0200 @@ -60,7 +60,6 @@ import org.netbeans.api.extexecution.startup.StartupExtender; import org.netbeans.api.java.platform.JavaPlatform; import org.netbeans.api.java.platform.JavaPlatformManager; -import org.netbeans.api.project.FileOwnerQuery; import org.netbeans.api.project.Project; import org.netbeans.modules.j2ee.api.ejbjar.EjbProjectConstants; import org.netbeans.modules.javaee.project.api.ant.DeployOnSaveUtils; @@ -81,14 +80,11 @@ import org.netbeans.spi.project.ActionProvider; import org.netbeans.spi.project.SubprojectProvider; import org.netbeans.spi.project.ui.support.DefaultProjectOperations; -import org.openide.DialogDisplayer; -import org.openide.NotifyDescriptor; import org.openide.execution.ExecutorTask; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.util.Exceptions; import org.openide.util.Lookup; -import org.openide.util.NbBundle; import org.openide.util.Task; import org.openide.util.TaskListener; import org.openide.util.lookup.Lookups; @@ -247,12 +243,7 @@ //EXECUTION PART if (command.equals (COMMAND_RUN) || command.equals (EjbProjectConstants.COMMAND_REDEPLOY)) { // || command.equals (COMMAND_DEBUG)) { - if (!isSelectedServer ()) { - // no selected server => warning - String msg = NbBundle.getMessage( - EarActionProvider.class, "MSG_No_Server_Selected"); // NOI18N - DialogDisplayer.getDefault().notify( - new NotifyDescriptor.Message(msg, NotifyDescriptor.WARNING_MESSAGE)); + if (!checkSelectedServer (false, false, false)) { return null; } if (command.equals (COMMAND_RUN) && isDebugged()) { @@ -266,12 +257,7 @@ setDirectoryDeploymentProperty(p); //DEBUGGING PART } else if (command.equals (COMMAND_DEBUG)) { - if (!isSelectedServer ()) { - // no selected server => warning - String msg = NbBundle.getMessage( - EarActionProvider.class, "MSG_No_Server_Selected"); // NOI18N - DialogDisplayer.getDefault().notify( - new NotifyDescriptor.Message(msg, NotifyDescriptor.WARNING_MESSAGE)); + if (!checkSelectedServer (true, false, false)) { return null; } setDirectoryDeploymentProperty(p); @@ -304,12 +290,7 @@ } else if (command.equals (COMMAND_PROFILE)) { // TODO This is basically a copy of the debugging part for now. Figure out what to do here! - if (!isSelectedServer ()) { - // no selected server => warning - String msg = NbBundle.getMessage( - EarActionProvider.class, "MSG_No_Server_Selected"); // NOI18N - DialogDisplayer.getDefault().notify( - new NotifyDescriptor.Message(msg, NotifyDescriptor.WARNING_MESSAGE)); + if (!checkSelectedServer (false, true, false)) { return null; } setDirectoryDeploymentProperty(p); @@ -380,7 +361,7 @@ //see issue #92895 //XXX - replace this method with a call to API as soon as issue 109895 will be fixed boolean isAppClientSelected = project.evaluator().getProperty("app.client") != null; //NOI18N - return isSelectedServer() && !(isAppClientSelected && isTargetServerRemote()); + return checkSelectedServer(false, false, true) && !(isAppClientSelected && isTargetServerRemote()); } // other actions are global return true; @@ -427,27 +408,16 @@ return false; } - private boolean isSelectedServer () { + private boolean checkSelectedServer (boolean checkDebug, boolean checkProfile, boolean noMessages) { // XXX determine what to do with the ejb jar project properties - String instance = updateHelper.getAntProjectHelper().getStandardPropertyEvaluator ().getProperty (EarProjectProperties.J2EE_SERVER_INSTANCE); - if (instance != null) { - String id = Deployment.getDefault().getServerID(instance); - if (id != null) { - return true; + return J2EEProjectProperties.checkSelectedServer(project, updateHelper.getAntProjectHelper(), + project.getJ2eeProfile(), J2eeModule.Type.EAR, new J2EEProjectProperties.SetServerInstanceCallback() { + + @Override + public void setServerInstance(String serverInstanceId) { + EarProjectProperties.setServerInstance(project, updateHelper, serverInstanceId); } - } - - // if there is some server instance of the type which was used - // previously do not ask and use it - String serverType = updateHelper.getAntProjectHelper().getStandardPropertyEvaluator ().getProperty (EarProjectProperties.J2EE_SERVER_TYPE); - if (serverType != null) { - String instanceID = J2EEProjectProperties.getMatchingInstance(serverType, J2eeModule.Type.EAR, project.getJ2eeProfile()); - if (instanceID != null) { - EarProjectProperties.setServerInstance(project, updateHelper, instanceID); - return true; - } - } - return false; + }, checkDebug, checkProfile, noMessages); } private boolean isTargetServerRemote() { diff -r 468cd4361449 j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ui/customizer/EarProjectProperties.java --- a/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ui/customizer/EarProjectProperties.java Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.earproject/src/org/netbeans/modules/j2ee/earproject/ui/customizer/EarProjectProperties.java Thu Aug 15 14:36:04 2013 +0200 @@ -154,8 +154,8 @@ public static final String J2EE_DEPLOY_ON_SAVE = "j2ee.deploy.on.save"; //NOI18N public static final String J2EE_COMPILE_ON_SAVE = "j2ee.compile.on.save"; //NOI18N public static final String CLIENT_MODULE_URI = "client.module.uri"; //NOI18N - public static final String J2EE_SERVER_INSTANCE = "j2ee.server.instance"; //NOI18N - public static final String J2EE_SERVER_TYPE = "j2ee.server.type"; //NOI18N + public static final String J2EE_SERVER_INSTANCE = J2EEProjectProperties.J2EE_SERVER_INSTANCE; + public static final String J2EE_SERVER_TYPE = J2EEProjectProperties.J2EE_SERVER_TYPE; public static final String JAVAC_SOURCE = "javac.source"; //NOI18N public static final String JAVAC_DEBUG = "javac.debug"; //NOI18N public static final String JAVAC_DEPRECATION = "javac.deprecation"; //NOI18N diff -r 468cd4361449 j2ee.ejbjarproject/nbproject/project.xml --- a/j2ee.ejbjarproject/nbproject/project.xml Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.ejbjarproject/nbproject/project.xml Thu Aug 15 14:36:04 2013 +0200 @@ -175,7 +175,7 @@ - 1.5 + 1.8
diff -r 468cd4361449 j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarActionProvider.java --- a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarActionProvider.java Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/EjbJarActionProvider.java Thu Aug 15 14:36:04 2013 +0200 @@ -69,12 +69,9 @@ import org.netbeans.spi.project.LookupProvider; import org.netbeans.spi.project.ProjectServiceProvider; import org.netbeans.spi.project.SingleMethod; -import org.openide.DialogDisplayer; -import org.openide.NotifyDescriptor; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.util.Lookup; -import org.openide.util.NbBundle; import org.openide.util.Parameters; @@ -260,8 +257,22 @@ command.equals(COMMAND_PROFILE_TEST_SINGLE)) { setDirectoryDeploymentProperty(p); } + if (command.equals(COMMAND_RUN_SINGLE) || command.equals(COMMAND_DEBUG_SINGLE) || command.equals(COMMAND_PROFILE_SINGLE)) { + if (!checkSelectedServer( + command.equals(COMMAND_DEBUG_SINGLE), command.equals(COMMAND_PROFILE_SINGLE))) { + return null; + } + } else if (command.equals(COMMAND_PROFILE)) { + if (!checkSelectedServer(false, true)) { + return null; + } + } else if (command.equals(COMMAND_DEBUG)) { + if (!checkSelectedServer(true, false)) { + return null; + } + } if (command.equals(COMMAND_RUN) || command.equals(EjbProjectConstants.COMMAND_REDEPLOY)) { - if (!isSelectedServer()) { + if (!checkSelectedServer(false, false)) { return null; } if (isDebugged()) { @@ -332,31 +343,15 @@ return false; } - private boolean isSelectedServer() { - String instance = getAntProjectHelper().getStandardPropertyEvaluator().getProperty(EjbJarProjectProperties.J2EE_SERVER_INSTANCE); - if (instance != null) { - String id = Deployment.getDefault().getServerID(instance); - if (id != null) { - return true; + private boolean checkSelectedServer(boolean checkDebug, boolean checkProfile) { + return J2EEProjectProperties.checkSelectedServer(getProject(), getAntProjectHelper(), + project.getAPIEjbJar().getJ2eeProfile(), J2eeModule.Type.EJB, new J2EEProjectProperties.SetServerInstanceCallback() { + + @Override + public void setServerInstance(String serverInstanceId) { + EjbJarActionProvider.this.setServerInstance(serverInstanceId); } - } - - // if there is some server instance of the type which was used - // previously do not ask and use it - String serverType = getAntProjectHelper().getStandardPropertyEvaluator().getProperty(EjbJarProjectProperties.J2EE_SERVER_TYPE); - if (serverType != null) { - String instanceID = J2EEProjectProperties.getMatchingInstance( - serverType, J2eeModule.Type.EJB, project.getAPIEjbJar().getJ2eeProfile()); - if (instanceID != null) { - setServerInstance(instanceID); - return true; - } - } - - // no selected server => warning - String msg = NbBundle.getMessage(EjbJarActionProvider.class, "MSG_No_Server_Selected"); // NOI18N - DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(msg, NotifyDescriptor.WARNING_MESSAGE)); - return false; + }, checkDebug, checkProfile, false); } private void setServerInstance(final String serverInstanceId) { diff -r 468cd4361449 j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java --- a/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.ejbjarproject/src/org/netbeans/modules/j2ee/ejbjarproject/ui/customizer/EjbJarProjectProperties.java Thu Aug 15 14:36:04 2013 +0200 @@ -147,8 +147,8 @@ public static final String JAR_COMPRESS = "jar.compress"; // NOI18N public static final String INCLUDE_JARS = "jars.in.ejbjar"; // NOI18N - public static final String J2EE_SERVER_INSTANCE = "j2ee.server.instance"; // NOI18N - public static final String J2EE_SERVER_TYPE = "j2ee.server.type"; // NOI18N + public static final String J2EE_SERVER_INSTANCE = J2EEProjectProperties.J2EE_SERVER_INSTANCE; + public static final String J2EE_SERVER_TYPE = J2EEProjectProperties.J2EE_SERVER_TYPE; public static final String J2EE_PLATFORM_CLASSPATH = "j2ee.platform.classpath"; //NOI18N public static final String J2EE_PLATFORM_EMBEDDABLE_EJB_CLASSPATH = "j2ee.platform.embeddableejb.classpath"; //NOI18N public static final String JAVAC_SOURCE = "javac.source"; // NOI18N diff -r 468cd4361449 j2ee.jboss4/src/org/netbeans/modules/j2ee/jboss4/ide/JBStartServer.java --- a/j2ee.jboss4/src/org/netbeans/modules/j2ee/jboss4/ide/JBStartServer.java Thu Aug 15 10:13:49 2013 +0200 +++ b/j2ee.jboss4/src/org/netbeans/modules/j2ee/jboss4/ide/JBStartServer.java Thu Aug 15 14:36:04 2013 +0200 @@ -148,7 +148,7 @@ } public boolean supportsStartProfiling(Target target) { - return true; + return !dm.isAs7(); } public boolean isAlsoTargetServer(Target target) { diff -r 468cd4361449 j2eeserver/apichanges.xml --- a/j2eeserver/apichanges.xml Thu Aug 15 10:13:49 2013 +0200 +++ b/j2eeserver/apichanges.xml Thu Aug 15 14:36:04 2013 +0200 @@ -117,6 +117,23 @@ + + + + Public API to ask the server about profile and debug support. + + + + + + +

+ Provides additional methods to query for support for debugging and profiling. +

+
+ + +
diff -r 468cd4361449 j2eeserver/nbproject/project.properties --- a/j2eeserver/nbproject/project.properties Thu Aug 15 10:13:49 2013 +0200 +++ b/j2eeserver/nbproject/project.properties Thu Aug 15 14:36:04 2013 +0200 @@ -42,7 +42,7 @@ is.autoload=true javac.source=1.6 -spec.version.base=1.102.0 +spec.version.base=1.103.0 javadoc.arch=${basedir}/arch.xml javadoc.apichanges=${basedir}/apichanges.xml diff -r 468cd4361449 j2eeserver/src/org/netbeans/modules/j2ee/deployment/devmodules/api/ServerInstance.java --- a/j2eeserver/src/org/netbeans/modules/j2ee/deployment/devmodules/api/ServerInstance.java Thu Aug 15 10:13:49 2013 +0200 +++ b/j2eeserver/src/org/netbeans/modules/j2ee/deployment/devmodules/api/ServerInstance.java Thu Aug 15 14:36:04 2013 +0200 @@ -188,6 +188,28 @@ } /** + * Returns true when debugging is supported by the server. + * + * @return true when debugging is supported by the server + * @throws InstanceRemovedException if the instance is not available anymore + * @since 1.103 + */ + public boolean isDebuggingSupported() throws InstanceRemovedException { + return getInstanceFromRegistry(ServerRegistry.getInstance()).isDebugSupported(); + } + + /** + * Returns true when profiling is supported by the server. + * + * @return true when profiling is supported by the server + * @throws InstanceRemovedException if the instance is not available anymore + * @since 1.103 + */ + public boolean isProfilingSupported() throws InstanceRemovedException { + return getInstanceFromRegistry(ServerRegistry.getInstance()).isProfileSupported(); + } + + /** * Returns descriptor providing extra information about the instance. May * return null if the server does not support this. * diff -r 468cd4361449 javaee.project/manifest.mf --- a/javaee.project/manifest.mf Thu Aug 15 10:13:49 2013 +0200 +++ b/javaee.project/manifest.mf Thu Aug 15 14:36:04 2013 +0200 @@ -2,6 +2,6 @@ OpenIDE-Module: org.netbeans.modules.javaee.project OpenIDE-Module-Layer: org/netbeans/modules/javaee/project/layer.xml OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/javaee/project/Bundle.properties -OpenIDE-Module-Specification-Version: 1.7 +OpenIDE-Module-Specification-Version: 1.8 AutoUpdate-Show-In-Client: false diff -r 468cd4361449 javaee.project/nbproject/project.xml --- a/javaee.project/nbproject/project.xml Thu Aug 15 10:13:49 2013 +0200 +++ b/javaee.project/nbproject/project.xml Thu Aug 15 14:36:04 2013 +0200 @@ -97,7 +97,7 @@ 4 - 1.100 + 1.103 diff -r 468cd4361449 javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/Bundle.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/Bundle.properties Thu Aug 15 14:36:04 2013 +0200 @@ -0,0 +1,46 @@ +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. +# +# Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved. +# +# Oracle and Java are registered trademarks of Oracle and/or its affiliates. +# Other names may be trademarks of their respective owners. +# +# The contents of this file are subject to the terms of either the GNU +# General Public License Version 2 only ("GPL") or the Common +# Development and Distribution License("CDDL") (collectively, the +# "License"). You may not use this file except in compliance with the +# License. You can obtain a copy of the License at +# http://www.netbeans.org/cddl-gplv2.html +# or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the +# specific language governing permissions and limitations under the +# License. When distributing the software, include this License Header +# Notice in each file and include the License file at +# nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the GPL Version 2 section of the License file that +# accompanied this code. If applicable, add the following below the +# License Header, with the fields enclosed by brackets [] replaced by +# your own identifying information: +# "Portions Copyrighted [year] [name of copyright owner]" +# +# Contributor(s): +# +# The Original Software is NetBeans. The Initial Developer of the Original +# Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun +# Microsystems, Inc. All Rights Reserved. +# +# If you wish your version of this file to be governed by only the CDDL +# or only the GPL Version 2, indicate your decision by adding +# "[Contributor] elects to include this software in this distribution +# under the [CDDL or GPL Version 2] license." If you do not indicate a +# single choice of license, a recipient has the option to distribute +# your version of this file under either the CDDL, the GPL Version 2 or +# to extend the choice of license to its licensees as provided above. +# However, if you add GPL Version 2 code and therefore, elected the GPL +# Version 2 license, then the option applies only if the new code is +# made subject to such option by the copyright holder. + +MSG_No_Server_Selected=The target server has not been set or has been removed.
Right-click the project in the Projects window and choose
Resolve Missing Server Problem \ + to set the target server. +MSG_Server_No_Debugging=The target server does not support debugging.
Choose a different server in project properties. +MSG_Server_No_Profiling=The target server >does not support profiling.
Choose a different server in project properties. diff -r 468cd4361449 javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/J2EEProjectProperties.java --- a/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/J2EEProjectProperties.java Thu Aug 15 10:13:49 2013 +0200 +++ b/javaee.project/src/org/netbeans/modules/javaee/project/api/ant/ui/J2EEProjectProperties.java Thu Aug 15 14:36:04 2013 +0200 @@ -52,6 +52,8 @@ import java.util.logging.Level; import java.util.logging.Logger; import org.netbeans.api.annotations.common.CheckForNull; +import org.netbeans.api.annotations.common.NonNull; +import org.netbeans.api.annotations.common.NullAllowed; import org.netbeans.api.j2ee.core.Profile; import org.netbeans.api.project.Project; import org.netbeans.modules.j2ee.common.ClasspathUtil; @@ -60,13 +62,20 @@ import org.netbeans.modules.j2ee.deployment.devmodules.api.InstanceRemovedException; import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule; import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eePlatform; +import org.netbeans.modules.j2ee.deployment.devmodules.api.ServerInstance; +import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider; import org.netbeans.modules.java.api.common.classpath.ClassPathSupport; import org.netbeans.modules.javaee.specs.support.api.JaxWs; import org.netbeans.modules.websvc.wsstack.api.WSStack; import org.netbeans.modules.websvc.wsstack.api.WSTool; +import org.netbeans.spi.project.support.ant.AntProjectHelper; import org.netbeans.spi.project.support.ant.EditableProperties; +import org.netbeans.spi.project.support.ant.PropertyEvaluator; +import org.openide.DialogDisplayer; +import org.openide.NotifyDescriptor; import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; +import org.openide.util.NbBundle; /** Helper class. Defines constants for properties. Knows the proper @@ -143,7 +152,93 @@ } return null; } - + + /** + * Performs necessary check of server instance. Those include server presence + * and optionally support for debugging and/or profiling. Unless suppressed + * it will display warning dialog on a check failure. + *

+ * The check may try to use and set another server of the same type if + * the current server instance does not exist and the {@code callback} + * is not null. + * + * @param project the project we are checking + * @param helper the ant helper associated with the project + * @param profile the Java EE profile project is using + * @param moduleType the module type of the project + * @param callback the callback to use to set another server of the same type + * when the current instance is not available + * @param checkDebug {@code true} if the ability to run in debugging mode should be checked + * @param checkProfile {@code true} if the ability to run in profiling mode should be checked + * @param noMessages {@code true} to suppress UI dialogs + * @return {@code true} if the server instance is usable {@code false} otherwise + * @since 1.8 + */ + public static boolean checkSelectedServer(@NonNull Project project, @NonNull AntProjectHelper helper, + @NonNull Profile profile, @NonNull J2eeModule.Type moduleType, + @NullAllowed SetServerInstanceCallback callback, + boolean checkDebug, boolean checkProfile, boolean noMessages) { + + final PropertyEvaluator eval = helper.getStandardPropertyEvaluator(); + String instanceId = null; + String instance = eval.getProperty(J2EE_SERVER_INSTANCE); + if (instance != null) { + J2eeModuleProvider jmp = (J2eeModuleProvider) project.getLookup().lookup(J2eeModuleProvider.class); + String sdi = jmp.getServerInstanceID(); + if (sdi != null) { + String id = Deployment.getDefault().getServerID(sdi); + if (id != null) { + instanceId = sdi; + } + } + } + +// if there is some server instance of the type which was used +// previously do not ask and use it + if (instanceId == null) { + String serverType = eval.getProperty(J2EE_SERVER_TYPE); + if (serverType != null) { + String instanceID = getMatchingInstance(serverType, moduleType, profile); + if (instanceID != null && callback != null) { + callback.setServerInstance(instanceID); + instanceId = instanceID; + } + } + } + + if (instanceId != null) { + try { + ServerInstance instanceObject = Deployment.getDefault().getServerInstance(instanceId); + if (checkDebug && !instanceObject.isDebuggingSupported()) { + if (!noMessages) { + String msg = NbBundle.getMessage(J2EEProjectProperties.class, "MSG_Server_No_Debugging"); // NOI18N + DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(msg, NotifyDescriptor.WARNING_MESSAGE)); + } + return false; + } + if (checkProfile && !instanceObject.isProfilingSupported()) { + if (!noMessages) { + String msg = NbBundle.getMessage(J2EEProjectProperties.class, "MSG_Server_No_Profiling"); // NOI18N + DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(msg, NotifyDescriptor.WARNING_MESSAGE)); + } + return false; + } + } catch (InstanceRemovedException ex) { + instanceId = null; + } + } + if (instanceId == null) { + // no selected server => warning + if (!noMessages) { + String msg = NbBundle.getMessage(J2EEProjectProperties.class, "MSG_No_Server_Selected"); // NOI18N + DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(msg, NotifyDescriptor.WARNING_MESSAGE)); + } + + return false; + } + return true; + } + /** * Sets all server related properties. */ @@ -447,5 +542,17 @@ return toClasspathString(files.toArray(new File[files.size()]), roots); } + /** + * Callback to set the desired server instance. + * since 1.8 + */ + public static interface SetServerInstanceCallback { + /** + * Sets the server instance. + * + * @param serverInstanceId the id of the server instance + */ + void setServerInstance(String serverInstanceId); + } } diff -r 468cd4361449 nbbuild/javadoctools/links.xml --- a/nbbuild/javadoctools/links.xml Thu Aug 15 10:13:49 2013 +0200 +++ b/nbbuild/javadoctools/links.xml Thu Aug 15 14:36:04 2013 +0200 @@ -218,3 +218,4 @@ + diff -r 468cd4361449 nbbuild/javadoctools/properties.xml --- a/nbbuild/javadoctools/properties.xml Thu Aug 15 10:13:49 2013 +0200 +++ b/nbbuild/javadoctools/properties.xml Thu Aug 15 14:36:04 2013 +0200 @@ -216,3 +216,4 @@ + diff -r 468cd4361449 nbbuild/javadoctools/replaces.xml --- a/nbbuild/javadoctools/replaces.xml Thu Aug 15 10:13:49 2013 +0200 +++ b/nbbuild/javadoctools/replaces.xml Thu Aug 15 14:36:04 2013 +0200 @@ -216,3 +216,4 @@ + diff -r 468cd4361449 web.project/nbproject/project.xml --- a/web.project/nbproject/project.xml Thu Aug 15 10:13:49 2013 +0200 +++ b/web.project/nbproject/project.xml Thu Aug 15 14:36:04 2013 +0200 @@ -240,7 +240,7 @@ 4 - 1.97 + 1.103 @@ -290,7 +290,7 @@ - 1.4 + 1.8 diff -r 468cd4361449 web.project/src/org/netbeans/modules/web/project/Bundle.properties --- a/web.project/src/org/netbeans/modules/web/project/Bundle.properties Thu Aug 15 10:13:49 2013 +0200 +++ b/web.project/src/org/netbeans/modules/web/project/Bundle.properties Thu Aug 15 14:36:04 2013 +0200 @@ -96,9 +96,6 @@ CTL_UpdateOption=Upgrade Project AD_UpdateOption=N/A -MSG_No_Server_Selected=The target server has not been set or has been removed.
Right-click the project in the Projects window and choose
Resolve Missing Server Problem \ - to set the target server. - TXT_noExecutableClass=Class "{0}" neither has a main method nor is it a servlet specified in web.xml. #WebActionProvider diff -r 468cd4361449 web.project/src/org/netbeans/modules/web/project/WebActionProvider.java --- a/web.project/src/org/netbeans/modules/web/project/WebActionProvider.java Thu Aug 15 10:13:49 2013 +0200 +++ b/web.project/src/org/netbeans/modules/web/project/WebActionProvider.java Thu Aug 15 14:36:04 2013 +0200 @@ -333,7 +333,8 @@ if (res != null) { return res; } - if (!isSelectedServer()) { + if (!checkSelectedServer( + command.equals(COMMAND_DEBUG_SINGLE), command.equals(COMMAND_PROFILE_SINGLE))) { return null; } String targetNames[]; @@ -383,7 +384,7 @@ } return null; } else if (command.equals(COMMAND_RUN) || command.equals(WebProjectConstants.COMMAND_REDEPLOY)) { - if (!isSelectedServer()) { + if (!checkSelectedServer(false, false)) { return null; } if (WhiteListUpdater.isWhitelistViolated(getProject())) { @@ -391,12 +392,12 @@ } return commands.get(command); } else if (command.equals(COMMAND_PROFILE)) { - if (!isSelectedServer()) { + if (!checkSelectedServer(false, true)) { return null; } initWebServiceProperties(p); } else if (command.equals(COMMAND_DEBUG)) { - if (!isSelectedServer()) { + if (!checkSelectedServer(true, false)) { return null; } initWebServiceProperties(p); @@ -899,39 +900,19 @@ return false; } - private boolean isSelectedServer() { + private boolean checkSelectedServer(boolean checkDebug, boolean checkProfile) { final PropertyEvaluator eval = getAntProjectHelper().getStandardPropertyEvaluator(); if ("false".equals(eval.getProperty(WebProjectProperties.J2EE_SERVER_CHECK))) { // NOI18N return true; } - String instance = eval.getProperty(WebProjectProperties.J2EE_SERVER_INSTANCE); - if (instance != null) { - J2eeModuleProvider jmp = (J2eeModuleProvider) getProject().getLookup().lookup(J2eeModuleProvider.class); - String sdi = jmp.getServerInstanceID(); - if (sdi != null) { - String id = Deployment.getDefault().getServerID(sdi); - if (id != null) { - return true; - } + return J2EEProjectProperties.checkSelectedServer(getProject(), getAntProjectHelper(), + ((WebProject) getProject()).getAPIWebModule().getJ2eeProfile(), J2eeModule.Type.WAR, new J2EEProjectProperties.SetServerInstanceCallback() { + + @Override + public void setServerInstance(String serverInstanceId) { + WebActionProvider.this.setServerInstance(serverInstanceId); } - } - -// if there is some server instance of the type which was used -// previously do not ask and use it - String serverType = eval.getProperty(WebProjectProperties.J2EE_SERVER_TYPE); - if (serverType != null) { - String instanceID = J2EEProjectProperties.getMatchingInstance(serverType, J2eeModule.Type.WAR, ((WebProject) getProject()).getAPIWebModule().getJ2eeProfile()); - if (instanceID != null) { - setServerInstance(instanceID); - return true; - } - } - - // no selected server => warning - String msg = NbBundle.getMessage(WebActionProvider.class, "MSG_No_Server_Selected"); // NOI18N - DialogDisplayer.getDefault().notify(new NotifyDescriptor.Message(msg, NotifyDescriptor.WARNING_MESSAGE)); - - return false; + }, checkDebug, checkProfile, false); } private void setServerInstance(String serverInstanceId) { diff -r 468cd4361449 web.project/src/org/netbeans/modules/web/project/ui/customizer/WebProjectProperties.java --- a/web.project/src/org/netbeans/modules/web/project/ui/customizer/WebProjectProperties.java Thu Aug 15 10:13:49 2013 +0200 +++ b/web.project/src/org/netbeans/modules/web/project/ui/customizer/WebProjectProperties.java Thu Aug 15 14:36:04 2013 +0200 @@ -158,9 +158,9 @@ public static final String J2EE_COMPILE_ON_SAVE = "j2ee.compile.on.save"; //NOI18N public static final String J2EE_COPY_STATIC_FILES_ON_SAVE = "j2ee.copy.static.files.on.save"; //NOI18N public static final String CONTEXT_PATH = "context.path"; //NOI18N - public static final String J2EE_SERVER_INSTANCE = "j2ee.server.instance"; //NOI18N + public static final String J2EE_SERVER_INSTANCE = J2EEProjectProperties.J2EE_SERVER_INSTANCE; public static final String J2EE_SERVER_CHECK = "j2ee.server.check"; //NOI18N - public static final String J2EE_SERVER_TYPE = "j2ee.server.type"; //NOI18N + public static final String J2EE_SERVER_TYPE = J2EEProjectProperties.J2EE_SERVER_TYPE; public static final String J2EE_PLATFORM_CLASSPATH = "j2ee.platform.classpath"; //NOI18N public static final String J2EE_PLATFORM_EMBEDDABLE_EJB_CLASSPATH = "j2ee.platform.embeddableejb.classpath"; //NOI18N public static final String JAVAC_SOURCE = "javac.source"; //NOI18N