ASF Bugzilla – Attachment 33813 Details for
Bug 52952
Improve ExtensionValidator handling for embedded scenarios
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-52952_0.patch (text/plain), 8.62 KB, created by
Abdessamed MANSOURI
on 2016-04-28 09:07:52 UTC
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Abdessamed MANSOURI
Created:
2016-04-28 09:07:52 UTC
Size:
8.62 KB
patch
obsolete
>Index: java/org/apache/catalina/util/Extension.java >=================================================================== >--- java/org/apache/catalina/util/Extension.java (revision 1740624) >+++ java/org/apache/catalina/util/Extension.java (working copy) >@@ -19,6 +19,7 @@ > package org.apache.catalina.util; > > >+import java.util.Objects; > import java.util.StringTokenizer; > > >@@ -248,7 +249,27 @@ > > } > >+ @Override >+ public boolean equals(Object o) { >+ if (this == o) return true; >+ if (!(o instanceof Extension)) return false; >+ Extension extension = (Extension) o; >+ return Objects.equals(extensionName, extension.extensionName) && >+ Objects.equals(implementationURL, extension.implementationURL) && >+ Objects.equals(implementationVendor, extension.implementationVendor) && >+ Objects.equals(implementationVendorId, extension.implementationVendorId) && >+ Objects.equals(implementationVersion, extension.implementationVersion) && >+ Objects.equals(specificationVendor, extension.specificationVendor) && >+ Objects.equals(specificationVersion, extension.specificationVersion); >+ } > >+ @Override >+ public int hashCode() { >+ return Objects.hash(extensionName, implementationURL, implementationVendor, implementationVendorId, >+ implementationVersion, specificationVendor, specificationVersion); >+ } >+ >+ > // -------------------------------------------------------- Private Methods > > >Index: java/org/apache/catalina/util/ExtensionValidator.java >=================================================================== >--- java/org/apache/catalina/util/ExtensionValidator.java (revision 1740624) >+++ java/org/apache/catalina/util/ExtensionValidator.java (working copy) >@@ -21,8 +21,10 @@ > import java.io.IOException; > import java.io.InputStream; > import java.util.ArrayList; >+import java.util.HashSet; > import java.util.Iterator; > import java.util.Locale; >+import java.util.Set; > import java.util.StringTokenizer; > import java.util.jar.JarInputStream; > import java.util.jar.Manifest; >@@ -56,10 +58,10 @@ > private static final StringManager sm = > StringManager.getManager("org.apache.catalina.util"); > >- private static volatile ArrayList<Extension> containerAvailableExtensions = >+ private static volatile Set<Extension> containerAvailableExtensions = > null; >- private static final ArrayList<ManifestResource> containerManifestResources = >- new ArrayList<>(); >+ private static final Set<ManifestResource> containerManifestResources = >+ new HashSet<>(); > > > // ----------------------------------------------------- Static Initializer >@@ -129,7 +131,7 @@ > throws IOException { > > String appName = context.getName(); >- ArrayList<ManifestResource> appManifestResources = new ArrayList<>(); >+ Set<ManifestResource> appManifestResources = new HashSet<>(); > > // Web application manifest > WebResource resource = resources.getResource("/META-INF/MANIFEST.MF"); >@@ -206,15 +208,15 @@ > * @return true if manifest resource file requirements are met > */ > private static boolean validateManifestResources(String appName, >- ArrayList<ManifestResource> resources) { >+ Set<ManifestResource> resources) { > boolean passes = true; > int failureCount = 0; >- ArrayList<Extension> availableExtensions = null; >+ Set<Extension> availableExtensions = null; > > Iterator<ManifestResource> it = resources.iterator(); > while (it.hasNext()) { > ManifestResource mre = it.next(); >- ArrayList<Extension> requiredList = mre.getRequiredExtensions(); >+ Set<Extension> requiredList = mre.getRequiredExtensions(); > if (requiredList == null) { > continue; > } >@@ -299,21 +301,21 @@ > * > * @return HashMap Map of available extensions > */ >- private static ArrayList<Extension> buildAvailableExtensionsList( >- ArrayList<ManifestResource> resources) { >+ private static Set<Extension> buildAvailableExtensionsList( >+ Set<ManifestResource> resources) { > >- ArrayList<Extension> availableList = null; >+ Set<Extension> availableList = null; > > Iterator<ManifestResource> it = resources.iterator(); > while (it.hasNext()) { > ManifestResource mre = it.next(); >- ArrayList<Extension> list = mre.getAvailableExtensions(); >+ Set<Extension> list = mre.getAvailableExtensions(); > if (list != null) { > Iterator<Extension> values = list.iterator(); > while (values.hasNext()) { > Extension ext = values.next(); > if (availableList == null) { >- availableList = new ArrayList<>(); >+ availableList = new HashSet<>(); > availableList.add(ext); > } else { > availableList.add(ext); >Index: java/org/apache/catalina/util/ManifestResource.java >=================================================================== >--- java/org/apache/catalina/util/ManifestResource.java (revision 1740624) >+++ java/org/apache/catalina/util/ManifestResource.java (working copy) >@@ -17,7 +17,10 @@ > package org.apache.catalina.util; > > import java.util.ArrayList; >+import java.util.HashSet; > import java.util.Iterator; >+import java.util.Objects; >+import java.util.Set; > import java.util.jar.Attributes; > import java.util.jar.Manifest; > >@@ -37,8 +40,8 @@ > public static final int WAR = 2; > public static final int APPLICATION = 3; > >- private ArrayList<Extension> availableExtensions = null; >- private ArrayList<Extension> requiredExtensions = null; >+ private Set<Extension> availableExtensions = null; >+ private Set<Extension> requiredExtensions = null; > > private final String resourceName; > private final int resourceType; >@@ -64,7 +67,7 @@ > * > * @return List of available extensions > */ >- public ArrayList<Extension> getAvailableExtensions() { >+ public Set<Extension> getAvailableExtensions() { > return availableExtensions; > } > >@@ -73,7 +76,7 @@ > * > * @return List of required extensions > */ >- public ArrayList<Extension> getRequiredExtensions() { >+ public Set<Extension> getRequiredExtensions() { > return requiredExtensions; > } > >@@ -136,7 +139,23 @@ > return (sb.toString()); > } > >+ @Override >+ public boolean equals(Object o) { >+ if (this == o) return true; >+ if (!(o instanceof ManifestResource)) return false; >+ ManifestResource that = (ManifestResource) o; >+ return Objects.equals(availableExtensions, that.availableExtensions) && >+ Objects.equals(requiredExtensions, that.requiredExtensions) && >+ Objects.equals(resourceName, that.resourceName) && >+ resourceType == that.resourceType; >+ } > >+ @Override >+ public int hashCode() { >+ return Objects.hash(availableExtensions, requiredExtensions, resourceName, resourceType); >+ } >+ >+ > // -------------------------------------------------------- Private Methods > > private void processManifest(Manifest manifest) { >@@ -154,7 +173,7 @@ > * @return List of required extensions, or null if the application > * does not require any extensions > */ >- private ArrayList<Extension> getRequiredExtensions(Manifest manifest) { >+ private Set<Extension> getRequiredExtensions(Manifest manifest) { > > Attributes attributes = manifest.getMainAttributes(); > String names = attributes.getValue("Extension-List"); >@@ -161,7 +180,7 @@ > if (names == null) > return null; > >- ArrayList<Extension> extensionList = new ArrayList<>(); >+ Set<Extension> extensionList = new HashSet<>(); > names += " "; > > while (true) { >@@ -201,7 +220,7 @@ > * @return List of available extensions, or null if the web application > * does not bundle any extensions > */ >- private ArrayList<Extension> getAvailableExtensions(Manifest manifest) { >+ private Set<Extension> getAvailableExtensions(Manifest manifest) { > > Attributes attributes = manifest.getMainAttributes(); > String name = attributes.getValue("Extension-Name"); >@@ -208,7 +227,7 @@ > if (name == null) > return null; > >- ArrayList<Extension> extensionList = new ArrayList<>(); >+ Set<Extension> extensionList = new HashSet<>(); > > Extension extension = new Extension(); > extension.setExtensionName(name);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 52952
:
33811
|
33813
|
33858