[417555] NPE merging web app models
Signed-off-by: Nitin Dahyabhai <thatnitind@gmail.com>
diff --git a/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
index ecb9caf..f7b17f7 100644
--- a/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.j2ee/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name.0
Bundle-SymbolicName: org.eclipse.jst.j2ee; singleton:=true
-Bundle-Version: 1.2.301.qualifier
+Bundle-Version: 1.2.400.qualifier
Bundle-Activator: org.eclipse.jst.j2ee.internal.plugin.J2EEPlugin
Bundle-Vendor: %Bundle-Vendor.0
Bundle-Localization: plugin
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java
index ece5464..03dbdbb 100644
--- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java
+++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/JavaEEArchiveUtilities.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2005, 2015 IBM Corporation and others.
+ * Copyright (c) 2005, 2020 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
@@ -920,19 +920,21 @@
InputStream ioStream = null;
try {
ioStream = archiveResource.getInputStream();
- IClassFileReader classFileReader = ToolFactory.createDefaultClassFileReader(ioStream, IClassFileReader.CLASSFILE_ATTRIBUTES);
- //classFileReader will be null if this is an invalid java .class file
- if(classFileReader != null){
- IClassFileAttribute[] attributes = classFileReader.getAttributes();
- for (IClassFileAttribute attribute : attributes) {
- char[] attributeName = attribute.getAttributeName();
- if (Arrays.equals(attributeName, RUNTIME_VISIBLE)) {
- IRuntimeVisibleAnnotationsAttribute annotationsAttribute = (IRuntimeVisibleAnnotationsAttribute) attribute;
- IAnnotation[] annotations = annotationsAttribute.getAnnotations();
- for (IAnnotation annotation : annotations) {
- char[] typedName = annotation.getTypeName();
- if (Arrays.equals(typedName, STATELESS) || Arrays.equals(typedName, STATEFUL) || Arrays.equals(typedName, MESSAGEDRIVEN) || Arrays.equals(typedName, SINGLETON)) {
- return true;
+ if (ioStream != null) {
+ IClassFileReader classFileReader = ToolFactory.createDefaultClassFileReader(ioStream, IClassFileReader.CLASSFILE_ATTRIBUTES);
+ //classFileReader will be null if this is an invalid java .class file
+ if(classFileReader != null) {
+ IClassFileAttribute[] attributes = classFileReader.getAttributes();
+ for (IClassFileAttribute attribute : attributes) {
+ char[] attributeName = attribute.getAttributeName();
+ if (Arrays.equals(attributeName, RUNTIME_VISIBLE)) {
+ IRuntimeVisibleAnnotationsAttribute annotationsAttribute = (IRuntimeVisibleAnnotationsAttribute) attribute;
+ IAnnotation[] annotations = annotationsAttribute.getAnnotations();
+ for (IAnnotation annotation : annotations) {
+ char[] typedName = annotation.getTypeName();
+ if (Arrays.equals(typedName, STATELESS) || Arrays.equals(typedName, STATEFUL) || Arrays.equals(typedName, MESSAGEDRIVEN) || Arrays.equals(typedName, SINGLETON)) {
+ return true;
+ }
}
}
}
diff --git a/plugins/org.eclipse.jst.j2ee/pom.xml b/plugins/org.eclipse.jst.j2ee/pom.xml
index 02890bb..25a29f3 100644
--- a/plugins/org.eclipse.jst.j2ee/pom.xml
+++ b/plugins/org.eclipse.jst.j2ee/pom.xml
@@ -21,6 +21,6 @@
<groupId>org.eclipse.webtools.javaee</groupId>
<artifactId>org.eclipse.jst.j2ee</artifactId>
- <version>1.2.301-SNAPSHOT</version>
+ <version>1.2.400-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.jst.jee.web/META-INF/MANIFEST.MF b/plugins/org.eclipse.jst.jee.web/META-INF/MANIFEST.MF
index 1984631..d88fd7c 100644
--- a/plugins/org.eclipse.jst.jee.web/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.jst.jee.web/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name.0
Bundle-SymbolicName: org.eclipse.jst.jee.web;singleton:=true
-Bundle-Version: 1.0.701.qualifier
+Bundle-Version: 1.0.702.qualifier
Bundle-Activator: org.eclipse.jst.jee.web.Activator
Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.2.0,4.0.0)",
org.eclipse.wst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
diff --git a/plugins/org.eclipse.jst.jee.web/pom.xml b/plugins/org.eclipse.jst.jee.web/pom.xml
index a286826..f875afd 100644
--- a/plugins/org.eclipse.jst.jee.web/pom.xml
+++ b/plugins/org.eclipse.jst.jee.web/pom.xml
@@ -21,6 +21,6 @@
<groupId>org.eclipse.webtools.javaee</groupId>
<artifactId>org.eclipse.jst.jee.web</artifactId>
- <version>1.0.701-SNAPSHOT</version>
+ <version>1.0.702-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
diff --git a/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/mergers/WebAppMerger.java b/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/mergers/WebAppMerger.java
index 0c4974b..59327ee 100644
--- a/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/mergers/WebAppMerger.java
+++ b/plugins/org.eclipse.jst.jee.web/web/org/eclipse/jst/jee/model/internal/mergers/WebAppMerger.java
@@ -1,5 +1,5 @@
/***********************************************************************
- * Copyright (c) 2008, 2010 by SAP AG, Walldorf.
+ * Copyright (c) 2008, 2020 by SAP AG, Walldorf, 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
@@ -28,6 +28,7 @@
import org.eclipse.jst.javaee.web.Servlet;
import org.eclipse.jst.javaee.web.ServletMapping;
import org.eclipse.jst.javaee.web.WebApp;
+import org.eclipse.jst.jee.web.Activator;
/**
* WebApp merger merges the WebApp artifact.
@@ -87,6 +88,7 @@
mergeSecurityRoles(warnings);
mergeSecurityConstraints(warnings);
} catch (Exception e) {
+ Activator.log(e);
throw new ModelException(e);
}
return warnings;
@@ -263,13 +265,34 @@
}
protected boolean artifactIsValid(Object javaEEObject) {
- if (javaEEObject instanceof Servlet){
- return ( (Servlet)javaEEObject).getServletName() != null;
- } else if (javaEEObject instanceof Listener){
- return ((Listener)javaEEObject).getListenerClass() != null;
- } else if (javaEEObject instanceof Filter){
- return ((Filter)javaEEObject).getFilterName() != null;
- }
+ if (javaEEObject instanceof Servlet) {
+ return ((Servlet) javaEEObject).getServletName() != null;
+ }
+ else if (javaEEObject instanceof Listener) {
+ return ((Listener) javaEEObject).getListenerClass() != null;
+ }
+ else if (javaEEObject instanceof Filter) {
+ return ((Filter) javaEEObject).getFilterName() != null;
+
+ }
+ else if (javaEEObject instanceof Description) {
+ return ((Description) javaEEObject).getValue() != null;
+ }
+ else if (javaEEObject instanceof WelcomeFile) {
+ return ((WelcomeFile) javaEEObject).getWelcomeFile() != null;
+ }
+ else if (javaEEObject instanceof ServletMapping) {
+ return ((ServletMapping) javaEEObject).getServletName() != null;
+ }
+ else if (javaEEObject instanceof FilterMapping) {
+ return ((FilterMapping) javaEEObject).getFilterName() != null;
+ }
+ else if (javaEEObject instanceof UrlPatternType) {
+ return ((UrlPatternType) javaEEObject).getValue() != null;
+ }
+ else if (javaEEObject instanceof ParamValue) {
+ return ((ParamValue) javaEEObject).getParamName() != null;
+ }
return true;
}
@@ -283,7 +306,6 @@
continue;
}
if (javaEEObject instanceof Servlet){
-
if(((Servlet) targetArtifact).getServletName().equals(((Servlet)javaEEObject).getServletName())){
return (JavaEEObject) targetArtifact;
}