diff options
author | Nitin Dahyabhai | 2022-05-26 03:56:22 +0000 |
---|---|---|
committer | Nitin Dahyabhai | 2022-05-26 05:42:30 +0000 |
commit | ee6f7960647fade7bb74bde9a58e8b88cc867504 (patch) | |
tree | 80fb267c17ad0c835a53c1cee9f3b96593c43e47 | |
parent | bc2082dd68b5645bc45473c7a51fc5d3ebcba8de (diff) | |
download | webtools.javaee-ee6f7960647fade7bb74bde9a58e8b88cc867504.tar.gz webtools.javaee-ee6f7960647fade7bb74bde9a58e8b88cc867504.tar.xz webtools.javaee-ee6f7960647fade7bb74bde9a58e8b88cc867504.zip |
[565498] New Servlet/Filter/Listener wizards should account for Jakarta package names
Change-Id: I664ffdb40dc688d67408dc0ff65b759f4a713e8b
4 files changed, 271 insertions, 85 deletions
diff --git a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/CreateFilterTemplateModel.java b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/CreateFilterTemplateModel.java index 0f0ec6216..d815f2f75 100644 --- a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/CreateFilterTemplateModel.java +++ b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/CreateFilterTemplateModel.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2021 SAP AG and others. + * Copyright (c) 2007, 2022 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -11,18 +11,16 @@ package org.eclipse.jst.j2ee.internal.web.operations; import static org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties.ABSTRACT_METHODS; +import static org.eclipse.jst.j2ee.internal.web.operations.INewFilterClassDataModelProperties.ASYNC_SUPPORT; import static org.eclipse.jst.j2ee.internal.web.operations.INewFilterClassDataModelProperties.DESTROY; import static org.eclipse.jst.j2ee.internal.web.operations.INewFilterClassDataModelProperties.DO_FILTER; import static org.eclipse.jst.j2ee.internal.web.operations.INewFilterClassDataModelProperties.FILTER_MAPPINGS; import static org.eclipse.jst.j2ee.internal.web.operations.INewFilterClassDataModelProperties.INIT; import static org.eclipse.jst.j2ee.internal.web.operations.INewFilterClassDataModelProperties.INIT_PARAM; -import static org.eclipse.jst.j2ee.internal.web.operations.INewFilterClassDataModelProperties.ASYNC_SUPPORT; -import static org.eclipse.jst.j2ee.web.IServletConstants.DESTROY_SIGNATURE; -import static org.eclipse.jst.j2ee.web.IServletConstants.DO_FILTER_SIGNATURE; -import static org.eclipse.jst.j2ee.web.IServletConstants.FILTER_INIT_SIGNATURE; import static org.eclipse.jst.j2ee.web.IServletConstants.METHOD_DESTROY; import static org.eclipse.jst.j2ee.web.IServletConstants.METHOD_DO_FILTER; import static org.eclipse.jst.j2ee.web.IServletConstants.METHOD_INIT; +import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_ANNOTATION_DISPATCHER_TYPE; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_ANNOTATION_INIT_PARAM; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_FILTER_CHAIN; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_FILTER_CONFIG; @@ -31,7 +29,6 @@ import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_SERVLET_EXCEP import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_SERVLET_REQUEST; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_SERVLET_RESPONSE; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_WEB_FILTER; -import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_ANNOTATION_DISPATCHER_TYPE; import java.util.ArrayList; import java.util.Collection; @@ -41,6 +38,7 @@ import java.util.List; import java.util.Map; import org.eclipse.jst.j2ee.internal.common.operations.Method; +import org.eclipse.jst.j2ee.web.IServletConstants; import org.eclipse.jst.j2ee.webapplication.DispatcherType; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; @@ -60,31 +58,58 @@ public class CreateFilterTemplateModel extends CreateWebClassTemplateModel { @Override public Collection<String> getImports() { - Collection<String> collection = super.getImports(); + Collection<String> imports = super.getImports(); + String javaEEVersion = getJavaEEVersion(); if (shouldGenInit()) { - collection.add(QUALIFIED_FILTER_CONFIG); - collection.add(QUALIFIED_SERVLET_EXCEPTION); + if (SERVLET_5_0.equals(javaEEVersion)) { + imports.add(IServletConstants.QUALIFIED_JAKARTA_FILTER_CONFIG); + imports.add(IServletConstants.QUALIFIED_JAKARTA_SERVLET_EXCEPTION); + } + else { + imports.add(QUALIFIED_FILTER_CONFIG); + imports.add(QUALIFIED_SERVLET_EXCEPTION); + } } if (shouldGenDoFilter()) { - collection.add(QUALIFIED_SERVLET_REQUEST); - collection.add(QUALIFIED_SERVLET_RESPONSE); - collection.add(QUALIFIED_FILTER_CHAIN); - collection.add(QUALIFIED_IO_EXCEPTION); - collection.add(QUALIFIED_SERVLET_EXCEPTION); + if (SERVLET_5_0.equals(javaEEVersion)) { + imports.add(IServletConstants.QUALIFIED_JAKARTA_SERVLET_REQUEST); + imports.add(IServletConstants.QUALIFIED_JAKARTA_SERVLET_RESPONSE); + imports.add(IServletConstants.QUALIFIED_JAKARTA_FILTER_CHAIN); + imports.add(QUALIFIED_IO_EXCEPTION); + imports.add(IServletConstants.QUALIFIED_JAKARTA_SERVLET_EXCEPTION); + } + else { + imports.add(QUALIFIED_SERVLET_REQUEST); + imports.add(QUALIFIED_SERVLET_RESPONSE); + imports.add(QUALIFIED_FILTER_CHAIN); + imports.add(QUALIFIED_IO_EXCEPTION); + imports.add(QUALIFIED_SERVLET_EXCEPTION); + } } - if (SERVLET_3.equals(getJavaEEVersion()) || SERVLET_3_1.equals(getJavaEEVersion()) || SERVLET_4_0.equals(getJavaEEVersion())){ - collection.add(QUALIFIED_WEB_FILTER); - if (getInitParams()!= null && getInitParams().size()>0){ - collection.add(QUALIFIED_ANNOTATION_INIT_PARAM); + if (SERVLET_5_0.equals(javaEEVersion)) { + imports.add(IServletConstants.QUALIFIED_JAKARTA_WEB_FILTER); + if (getInitParams() != null && !getInitParams().isEmpty()) { + imports.add(IServletConstants.QUALIFIED_JAKARTA_ANNOTATION_INIT_PARAM); } - if (hasDispatchers()){ - collection.add(QUALIFIED_ANNOTATION_DISPATCHER_TYPE); + if (hasDispatchers()) { + imports.add(IServletConstants.QUALIFIED_JAKARTA_ANNOTATION_DISPATCHER_TYPE); + } + } + else { + if (SERVLET_3.equals(javaEEVersion) || SERVLET_3_1.equals(javaEEVersion) || SERVLET_4_0.equals(javaEEVersion)) { + imports.add(QUALIFIED_WEB_FILTER); + if (getInitParams() != null && !getInitParams().isEmpty()) { + imports.add(QUALIFIED_ANNOTATION_INIT_PARAM); + } + if (hasDispatchers()) { + imports.add(QUALIFIED_ANNOTATION_DISPATCHER_TYPE); + } } } - return collection; + return imports; } public String getFilterName() { @@ -200,9 +225,16 @@ public class CreateFilterTemplateModel extends CreateWebClassTemplateModel { while (iterator.hasNext()) { Method method = iterator.next(); - if ((METHOD_INIT.equals(method.getName()) && FILTER_INIT_SIGNATURE.equals(method.getSignature())) || - (METHOD_DESTROY.equals(method.getName()) && DESTROY_SIGNATURE.equals(method.getSignature())) || - (METHOD_DO_FILTER.equals(method.getName()) && DO_FILTER_SIGNATURE.equals(method.getSignature()))) { + String methodName = method.getName(); + String methodSignature = method.getSignature(); + if ((METHOD_INIT.equals(methodName) && (IServletConstants.FILTER_INIT_SIGNATURE.equals(methodSignature))) || + (METHOD_DESTROY.equals(methodName) && (IServletConstants.DESTROY_SIGNATURE.equals(methodSignature))) || + (METHOD_DO_FILTER.equals(methodName) && (IServletConstants.DO_FILTER_SIGNATURE.equals(methodSignature)))) { + iterator.remove(); + } + else if ((METHOD_INIT.equals(methodName) && (IServletConstants.JAKARTA_FILTER_INIT_SIGNATURE.equals(methodSignature))) || + (METHOD_DESTROY.equals(methodName) && (IServletConstants.JAKARTA_DESTROY_SIGNATURE.equals(methodSignature))) || + (METHOD_DO_FILTER.equals(methodName) && (IServletConstants.JAKARTA_DO_FILTER_SIGNATURE.equals(methodSignature)))) { iterator.remove(); } } diff --git a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/CreateListenerTemplateModel.java b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/CreateListenerTemplateModel.java index 77cd5d4d1..78c8c0258 100644 --- a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/CreateListenerTemplateModel.java +++ b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/CreateListenerTemplateModel.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2021 SAP AG and others. + * Copyright (c) 2007, 2022 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -29,59 +29,111 @@ import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_WEB_LISTENER; import java.util.Collection; import java.util.List; +import org.eclipse.jst.j2ee.web.IServletConstants; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; public class CreateListenerTemplateModel extends CreateWebClassTemplateModel { @Override public Collection<String> getImports() { - Collection<String> collection = super.getImports(); + Collection<String> imports = super.getImports(); if (implementServletContextListener()) { - collection.add(QUALIFIED_SERVLET_CONTEXT_LISTENER); - collection.add(QUALIFIED_SERVLET_CONTEXT_EVENT); + if (SERVLET_5_0.equals(getJavaEEVersion())) { + imports.add(IServletConstants.QUALIFIED_JAKARTA_SERVLET_CONTEXT_LISTENER); + imports.add(IServletConstants.QUALIFIED_JAKARTA_SERVLET_CONTEXT_EVENT); + } + else { + imports.add(QUALIFIED_SERVLET_CONTEXT_LISTENER); + imports.add(QUALIFIED_SERVLET_CONTEXT_EVENT); + } } if (implementServletContextAttributeListener()) { - collection.add(QUALIFIED_SERVLET_CONTEXT_ATTRIBUTE_LISTENER); - collection.add(QUALIFIED_SERVLET_CONTEXT_ATTRIBUTE_EVENT); + if (SERVLET_5_0.equals(getJavaEEVersion())) { + imports.add(IServletConstants.QUALIFIED_SERVLET_CONTEXT_ATTRIBUTE_LISTENER); + imports.add(IServletConstants.QUALIFIED_SERVLET_CONTEXT_ATTRIBUTE_EVENT); + } + else { + imports.add(QUALIFIED_SERVLET_CONTEXT_ATTRIBUTE_LISTENER); + imports.add(QUALIFIED_SERVLET_CONTEXT_ATTRIBUTE_EVENT); + } } if (implementHttpSessionListener()) { - collection.add(QUALIFIED_HTTP_SESSION_LISTENER); - collection.add(QUALIFIED_HTTP_SESSION_EVENT); + if (SERVLET_5_0.equals(getJavaEEVersion())) { + imports.add(IServletConstants.QUALIFIED_HTTP_SESSION_LISTENER); + imports.add(IServletConstants.QUALIFIED_HTTP_SESSION_EVENT); + } + else { + imports.add(QUALIFIED_HTTP_SESSION_LISTENER); + imports.add(QUALIFIED_HTTP_SESSION_EVENT); + } } if (implementHttpSessionAttributeListener()) { - collection.add(QUALIFIED_HTTP_SESSION_ATTRIBUTE_LISTENER); - collection.add(QUALIFIED_HTTP_SESSION_BINDING_EVENT); + if (SERVLET_5_0.equals(getJavaEEVersion())) { + imports.add(IServletConstants.QUALIFIED_HTTP_SESSION_ATTRIBUTE_LISTENER); + imports.add(IServletConstants.QUALIFIED_HTTP_SESSION_BINDING_EVENT); + } + else { + imports.add(QUALIFIED_HTTP_SESSION_ATTRIBUTE_LISTENER); + imports.add(QUALIFIED_HTTP_SESSION_BINDING_EVENT); + } } if (implementHttpSessionActivationListener()) { - collection.add(QUALIFIED_HTTP_SESSION_ACTIVATION_LISTENER); - collection.add(QUALIFIED_HTTP_SESSION_EVENT); + if (SERVLET_5_0.equals(getJavaEEVersion())) { + imports.add(IServletConstants.QUALIFIED_HTTP_SESSION_ACTIVATION_LISTENER); + imports.add(IServletConstants.QUALIFIED_HTTP_SESSION_EVENT); + } + else { + imports.add(QUALIFIED_HTTP_SESSION_ACTIVATION_LISTENER); + imports.add(QUALIFIED_HTTP_SESSION_EVENT); + } } if (implementHttpSessionBindingListener()) { - collection.add(QUALIFIED_HTTP_SESSION_BINDING_LISTENER); - collection.add(QUALIFIED_HTTP_SESSION_BINDING_EVENT); + if (SERVLET_5_0.equals(getJavaEEVersion())) { + imports.add(IServletConstants.QUALIFIED_HTTP_SESSION_BINDING_LISTENER); + imports.add(IServletConstants.QUALIFIED_HTTP_SESSION_BINDING_EVENT); + } + else { + imports.add(QUALIFIED_HTTP_SESSION_BINDING_LISTENER); + imports.add(QUALIFIED_HTTP_SESSION_BINDING_EVENT); + } } if (implementServletRequestListener()) { - collection.add(QUALIFIED_SERVLET_REQUEST_LISTENER); - collection.add(QUALIFIED_SERVLET_REQUEST_EVENT); + if (SERVLET_5_0.equals(getJavaEEVersion())) { + imports.add(IServletConstants.QUALIFIED_SERVLET_REQUEST_LISTENER); + imports.add(IServletConstants.QUALIFIED_SERVLET_REQUEST_EVENT); + } + else { + imports.add(QUALIFIED_SERVLET_REQUEST_LISTENER); + imports.add(QUALIFIED_SERVLET_REQUEST_EVENT); + } } if (implementServletRequestAttributeListener()) { - collection.add(QUALIFIED_SERVLET_REQUEST_ATTRIBUTE_LISTENER); - collection.add(QUALIFIED_SERVLET_REQUEST_ATTRIBUTE_EVENT); + if (SERVLET_5_0.equals(getJavaEEVersion())) { + imports.add(IServletConstants.QUALIFIED_SERVLET_REQUEST_ATTRIBUTE_LISTENER); + imports.add(IServletConstants.QUALIFIED_SERVLET_REQUEST_ATTRIBUTE_EVENT); + } + else { + imports.add(QUALIFIED_SERVLET_REQUEST_ATTRIBUTE_LISTENER); + imports.add(QUALIFIED_SERVLET_REQUEST_ATTRIBUTE_EVENT); + } } - if (SERVLET_3.equals(getJavaEEVersion()) || SERVLET_3_1.equals(getJavaEEVersion()) || SERVLET_4_0.equals(getJavaEEVersion())){ - collection.add(QUALIFIED_WEB_LISTENER); + if (SERVLET_5_0.equals(getJavaEEVersion())) { + imports.add(IServletConstants.QUALIFIED_JAKARTA_WEB_LISTENER); + } + else if (SERVLET_3.equals(getJavaEEVersion()) || SERVLET_3_1.equals(getJavaEEVersion()) || SERVLET_4_0.equals(getJavaEEVersion())){ + imports.add(QUALIFIED_WEB_LISTENER); } - return collection; + return imports; } public CreateListenerTemplateModel(IDataModel dataModel) { diff --git a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewFilterClassDataModelProvider.java b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewFilterClassDataModelProvider.java index 21ef143be..68e7a489e 100644 --- a/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewFilterClassDataModelProvider.java +++ b/plugins/org.eclipse.jst.j2ee.web/web/org/eclipse/jst/j2ee/internal/web/operations/NewFilterClassDataModelProvider.java @@ -328,7 +328,7 @@ public class NewFilterClassDataModelProvider extends } } // Return interface list - return interfaceList; + return jakartaInterfaceList; } /** diff --git a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/AddListenerWizardPage.java b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/AddListenerWizardPage.java index 1681b8afe..f99fbd529 100644 --- a/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/AddListenerWizardPage.java +++ b/plugins/org.eclipse.jst.servlet.ui/servlet_ui/org/eclipse/jst/servlet/ui/internal/wizard/AddListenerWizardPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2008 SAP AG and others. + * Copyright (c) 2008, 2022 SAP AG and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -15,22 +15,48 @@ import static org.eclipse.jst.j2ee.internal.web.operations.NewListenerClassDataM import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_HTTP_SESSION_ACTIVATION_LISTENER; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_HTTP_SESSION_ATTRIBUTE_LISTENER; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_HTTP_SESSION_BINDING_LISTENER; +import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_HTTP_SESSION_ID_LISTENER; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_HTTP_SESSION_LISTENER; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_SERVLET_CONTEXT_ATTRIBUTE_LISTENER; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_SERVLET_CONTEXT_LISTENER; +import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_SERVLET_REQUEST_ASYNC_EVENT_LISTENER; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_SERVLET_REQUEST_ATTRIBUTE_LISTENER; import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_SERVLET_REQUEST_LISTENER; -import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_HTTP_SESSION_ID_LISTENER; -import static org.eclipse.jst.j2ee.web.IServletConstants.QUALIFIED_SERVLET_REQUEST_ASYNC_EVENT_LISTENER; -import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.*; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_ASYNC_EVENTS; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_C; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_G; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_H; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_HTTP_SESSION_EVENTS; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_LIFECYCLE_I; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_LIFECYCLE_L; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_LIFECYCLE_Y; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_OBJECT_BINDING; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_OBJECT_SESSION_ID; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_PAGE_DESC; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_PAGE_TITLE; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_SERVLET_CONTEXT_EVENTS; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_SERVLET_REQUEST_EVENTS; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.ADD_LISTENER_WIZARD_SESSION_MIGRATION; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.CLEAR_BUTTON; +import static org.eclipse.jst.servlet.ui.internal.wizard.IWebWizardConstants.SELECT_ALL_BUTTON; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.internal.ui.JavaPluginImages; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jst.j2ee.internal.web.operations.INewServletClassDataModelProperties; +import org.eclipse.jst.j2ee.internal.web.operations.NewListenerClassDataModelProvider; +import org.eclipse.jst.j2ee.internal.web.plugin.WebPlugin; +import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities; +import org.eclipse.jst.j2ee.web.IServletConstants; +import org.eclipse.jst.j2ee.web.project.facet.WebFacetUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; @@ -41,9 +67,13 @@ import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; +import org.eclipse.wst.common.componentcore.internal.operation.IArtifactEditOperationDataModelProperties; +import org.eclipse.wst.common.componentcore.internal.util.FacetedProjectUtilities; import org.eclipse.wst.common.frameworks.datamodel.DataModelEvent; import org.eclipse.wst.common.frameworks.datamodel.IDataModel; import org.eclipse.wst.common.frameworks.internal.datamodel.ui.DataModelWizardPage; +import org.eclipse.wst.common.frameworks.internal.plugin.WTPCommonPlugin; +import org.eclipse.wst.common.project.facet.core.FacetedProjectFramework; public class AddListenerWizardPage extends DataModelWizardPage { @@ -99,62 +129,68 @@ public class AddListenerWizardPage extends DataModelWizardPage { private void createServletContextEvents(Composite parent) { Group group = createGroup(parent, ADD_LISTENER_WIZARD_SERVLET_CONTEXT_EVENTS); + boolean useJakartaPackages = useJakartaPackages(); + createEventListenerRow(group, - ADD_LISTENER_WIZARD_LIFECYCLE_L, - QUALIFIED_SERVLET_CONTEXT_LISTENER, + ADD_LISTENER_WIZARD_LIFECYCLE_L, + useJakartaPackages ? IServletConstants.QUALIFIED_JAKARTA_SERVLET_CONTEXT_LISTENER : QUALIFIED_SERVLET_CONTEXT_LISTENER, INTERFACES); createEventListenerRow(group, - ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_C, - QUALIFIED_SERVLET_CONTEXT_ATTRIBUTE_LISTENER, + ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_C, + useJakartaPackages ? IServletConstants.QUALIFIED_JAKARTA_SERVLET_CONTEXT_ATTRIBUTE_LISTENER : QUALIFIED_SERVLET_CONTEXT_ATTRIBUTE_LISTENER, INTERFACES); } private void createHttpSessionEvents(Composite parent) { Group group = createGroup(parent, ADD_LISTENER_WIZARD_HTTP_SESSION_EVENTS); + boolean useJakartaPackages = useJakartaPackages(); + createEventListenerRow(group, - ADD_LISTENER_WIZARD_LIFECYCLE_I, - QUALIFIED_HTTP_SESSION_LISTENER, + ADD_LISTENER_WIZARD_LIFECYCLE_I, + useJakartaPackages ? IServletConstants.QUALIFIED_JAKARTA_HTTP_SESSION_LISTENER : QUALIFIED_HTTP_SESSION_LISTENER, INTERFACES); createEventListenerRow(group, - ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_H, - QUALIFIED_HTTP_SESSION_ATTRIBUTE_LISTENER, + ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_H, + useJakartaPackages ? IServletConstants.QUALIFIED_JAKARTA_HTTP_SESSION_ATTRIBUTE_LISTENER : QUALIFIED_HTTP_SESSION_ATTRIBUTE_LISTENER, INTERFACES); createEventListenerRow(group, - ADD_LISTENER_WIZARD_SESSION_MIGRATION, - QUALIFIED_HTTP_SESSION_ACTIVATION_LISTENER, + ADD_LISTENER_WIZARD_SESSION_MIGRATION, + useJakartaPackages ? IServletConstants.QUALIFIED_JAKARTA_HTTP_SESSION_ACTIVATION_LISTENER : QUALIFIED_HTTP_SESSION_ACTIVATION_LISTENER, INTERFACES); - createEventListenerRow(group, - ADD_LISTENER_WIZARD_OBJECT_BINDING, - QUALIFIED_HTTP_SESSION_BINDING_LISTENER, + createEventListenerRow(group, + ADD_LISTENER_WIZARD_OBJECT_BINDING, + useJakartaPackages ? IServletConstants.QUALIFIED_JAKARTA_HTTP_SESSION_BINDING_LISTENER : QUALIFIED_HTTP_SESSION_BINDING_LISTENER, INTERFACES); - createEventListenerRow(group, - ADD_LISTENER_WIZARD_OBJECT_SESSION_ID, - QUALIFIED_HTTP_SESSION_ID_LISTENER, - INTERFACES); + createEventListenerRow(group, + ADD_LISTENER_WIZARD_OBJECT_SESSION_ID, + useJakartaPackages ? IServletConstants.QUALIFIED_JAKARTA_HTTP_SESSION_ID_LISTENER : QUALIFIED_HTTP_SESSION_ID_LISTENER, + INTERFACES); } private void createServletRequestEvents(Composite parent) { Group group = createGroup(parent, ADD_LISTENER_WIZARD_SERVLET_REQUEST_EVENTS); - createEventListenerRow(group, - ADD_LISTENER_WIZARD_LIFECYCLE_Y, - QUALIFIED_SERVLET_REQUEST_LISTENER, + boolean useJakartaPackages = useJakartaPackages(); + + createEventListenerRow(group, + ADD_LISTENER_WIZARD_LIFECYCLE_Y, + useJakartaPackages ? IServletConstants.QUALIFIED_JAKARTA_SERVLET_REQUEST_LISTENER : QUALIFIED_SERVLET_REQUEST_LISTENER, INTERFACES); - createEventListenerRow(group, - ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_G, - QUALIFIED_SERVLET_REQUEST_ATTRIBUTE_LISTENER, + createEventListenerRow(group, + ADD_LISTENER_WIZARD_CHANGES_TO_ATTRIBUTES_G, + useJakartaPackages ? IServletConstants.QUALIFIED_JAKARTA_SERVLET_REQUEST_ATTRIBUTE_LISTENER : QUALIFIED_SERVLET_REQUEST_ATTRIBUTE_LISTENER, INTERFACES); - createEventListenerRow(group, - ADD_LISTENER_WIZARD_ASYNC_EVENTS, - QUALIFIED_SERVLET_REQUEST_ASYNC_EVENT_LISTENER, + createEventListenerRow(group, + ADD_LISTENER_WIZARD_ASYNC_EVENTS, + useJakartaPackages ? IServletConstants.QUALIFIED_JAKARTA_SERVLET_REQUEST_ASYNC_EVENT_LISTENER : QUALIFIED_SERVLET_REQUEST_ASYNC_EVENT_LISTENER, INTERFACES); } @@ -171,12 +207,12 @@ public class AddListenerWizardPage extends DataModelWizardPage { } private void createEventListenerRow(Composite parent, String event, String listener, String property) { - if (listener.equals(QUALIFIED_HTTP_SESSION_ID_LISTENER)){ + if (listener.equals(QUALIFIED_HTTP_SESSION_ID_LISTENER) || listener.equals(IServletConstants.QUALIFIED_JAKARTA_HTTP_SESSION_ID_LISTENER)){ changeSessionID = createCheckbox(parent, event, listener, property); changeSessionIDIconLabel = createInterfaceIcon(parent); changeSessionIDInterfaceLabel = createInterfaceLabel(parent, listener); } - else if (listener.equals(QUALIFIED_SERVLET_REQUEST_ASYNC_EVENT_LISTENER)){ + else if (listener.equals(QUALIFIED_SERVLET_REQUEST_ASYNC_EVENT_LISTENER) || listener.equals(IServletConstants.QUALIFIED_JAKARTA_SERVLET_REQUEST_ASYNC_EVENT_LISTENER)){ asyncListener = createCheckbox(parent, event, listener, property); asyncListenerIconLabel = createInterfaceIcon(parent); asyncListenerInterfaceLabel = createInterfaceLabel(parent, listener); @@ -247,10 +283,18 @@ public class AddListenerWizardPage extends DataModelWizardPage { interfaces = new ArrayList(); model.setProperty(INTERFACES, interfaces); } - - for (String iface : LISTENER_INTERFACES) { - if (!interfaces.contains(iface)) { - interfaces.add(iface); + if (useJakartaPackages()) { + for (String iface : NewListenerClassDataModelProvider.JAKARTA_LISTENER_INTERFACES) { + if (!interfaces.contains(iface)) { + interfaces.add(iface); + } + } + } + else { + for (String iface : LISTENER_INTERFACES) { + if (!interfaces.contains(iface)) { + interfaces.add(iface); + } } } @@ -266,7 +310,8 @@ public class AddListenerWizardPage extends DataModelWizardPage { } interfaces.removeAll(Arrays.asList(LISTENER_INTERFACES)); - + interfaces.removeAll(Arrays.asList(NewListenerClassDataModelProvider.JAKARTA_LISTENER_INTERFACES)); + synchHelper2.synchUIWithModel(INTERFACES, DataModelEvent.VALUE_CHG); model.notifyPropertyChange(INTERFACES, DataModelEvent.VALUE_CHG); } @@ -283,8 +328,65 @@ public class AddListenerWizardPage extends DataModelWizardPage { setServlet31ListenersVisible(false); } } - - + + private boolean useJakartaPackages() { + Object nameValue = model.getProperty(IArtifactEditOperationDataModelProperties.PROJECT_NAME); + if (nameValue != null) { + String projectName = nameValue.toString(); + + try { + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); + String id = null; + if(JavaEEProjectUtilities.isDynamicWebProject(project)){ + id = WebFacetUtils.WEB_FACET.getId(); + }else { + id = WebFacetUtils.WEBFRAGMENT_FACET.getId(); + } + String facetVersion = FacetedProjectUtilities.getProjectFacetVersion(project, id).getVersionString(); + if (facetVersion != null && facetVersion.length() > 0) { + float f = Float.parseFloat(facetVersion); + return f >= 5; + } + } + catch (NullPointerException e) { + // not a faceted project, then + } + catch (NumberFormatException e) { + // this should never happen + WTPCommonPlugin.logError(e); + } + + if (projectName != null && projectName.length() > 0) { + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); + if (project != null && project.isAccessible()) { + // the default when otherwise indeterminate should be Jakarta + try { + IJavaProject javaProject = JavaCore.create(project); + if (javaProject != null && javaProject.exists()) { + if (javaProject.findType(IServletConstants.QUALIFIED_JAKARTA_GENERIC_SERVLET) != null) { + return true; + } + } + } + catch (CoreException e) { + WTPCommonPlugin.logError(e); + } + try { + // check to see if it is Jakarta Servlet 5 or newer + if (FacetedProjectFramework.hasProjectFacet(project, WebFacetUtils.WEB_FACET.getId(), WebFacetUtils.WEB_50.getVersionString())) { + return true; + } + } + catch (CoreException e) { + WebPlugin.log(e); + } + } + } + return false; + } + return false; + } + private void setServlet31ListenersVisible(boolean visible){ changeSessionID.setVisible(visible); changeSessionIDIconLabel.setVisible(visible); |