@@ -34,6 +34,7 @@ import java.util.Map; | |||||
import java.util.Properties; | import java.util.Properties; | ||||
import java.util.Set; | import java.util.Set; | ||||
import java.util.Stack; | import java.util.Stack; | ||||
import java.util.stream.Collectors; | |||||
import org.apache.tools.ant.launch.Launcher; | import org.apache.tools.ant.launch.Launcher; | ||||
import org.apache.tools.ant.taskdefs.Definer; | import org.apache.tools.ant.taskdefs.Definer; | ||||
@@ -228,7 +229,8 @@ public class ComponentHelper { | |||||
public void initSubProject(ComponentHelper helper) { | public void initSubProject(ComponentHelper helper) { | ||||
// add the types of the parent project | // add the types of the parent project | ||||
@SuppressWarnings("unchecked") | @SuppressWarnings("unchecked") | ||||
final Hashtable<String, AntTypeDefinition> typeTable = (Hashtable<String, AntTypeDefinition>) helper.antTypeTable.clone(); | |||||
final Hashtable<String, AntTypeDefinition> typeTable | |||||
= (Hashtable<String, AntTypeDefinition>) helper.antTypeTable.clone(); | |||||
synchronized (antTypeTable) { | synchronized (antTypeTable) { | ||||
for (AntTypeDefinition def : typeTable.values()) { | for (AntTypeDefinition def : typeTable.values()) { | ||||
antTypeTable.put(def.getName(), def); | antTypeTable.put(def.getName(), def); | ||||
@@ -239,7 +241,8 @@ public class ComponentHelper { | |||||
synchronized (this) { | synchronized (this) { | ||||
checkedNamespaces.addAll(inheritedCheckedNamespace); | checkedNamespaces.addAll(inheritedCheckedNamespace); | ||||
} | } | ||||
Map<String, List<AntTypeDefinition>> inheritedRestrictedDef = helper.getRestrictedDefinition(); | |||||
Map<String, List<AntTypeDefinition>> inheritedRestrictedDef | |||||
= helper.getRestrictedDefinition(); | |||||
synchronized (restrictedDefinitions) { | synchronized (restrictedDefinitions) { | ||||
restrictedDefinitions.putAll(inheritedRestrictedDef); | restrictedDefinitions.putAll(inheritedRestrictedDef); | ||||
} | } | ||||
@@ -398,15 +401,11 @@ public class ComponentHelper { | |||||
synchronized (antTypeTable) { | synchronized (antTypeTable) { | ||||
if (rebuildTaskClassDefinitions) { | if (rebuildTaskClassDefinitions) { | ||||
taskClassDefinitions.clear(); | taskClassDefinitions.clear(); | ||||
for (Map.Entry<String, AntTypeDefinition> e : antTypeTable.entrySet()) { | |||||
final Class<?> clazz = e.getValue().getExposedClass(project); | |||||
if (clazz == null) { | |||||
continue; | |||||
} | |||||
if (Task.class.isAssignableFrom(clazz)) { | |||||
taskClassDefinitions.put(e.getKey(), e.getValue().getTypeClass(project)); | |||||
} | |||||
} | |||||
antTypeTable.entrySet().stream() | |||||
.filter(e -> e.getValue().getExposedClass(project) != null | |||||
&& Task.class.isAssignableFrom(e.getValue().getExposedClass(project))) | |||||
.forEach(e -> taskClassDefinitions.put(e.getKey(), | |||||
e.getValue().getTypeClass(project))); | |||||
rebuildTaskClassDefinitions = false; | rebuildTaskClassDefinitions = false; | ||||
} | } | ||||
} | } | ||||
@@ -426,15 +425,11 @@ public class ComponentHelper { | |||||
synchronized (antTypeTable) { | synchronized (antTypeTable) { | ||||
if (rebuildTypeClassDefinitions) { | if (rebuildTypeClassDefinitions) { | ||||
typeClassDefinitions.clear(); | typeClassDefinitions.clear(); | ||||
for (Map.Entry<String, AntTypeDefinition> e : antTypeTable.entrySet()) { | |||||
final Class<?> clazz = e.getValue().getExposedClass(project); | |||||
if (clazz == null) { | |||||
continue; | |||||
} | |||||
if (!Task.class.isAssignableFrom(clazz)) { | |||||
typeClassDefinitions.put(e.getKey(), e.getValue().getTypeClass(project)); | |||||
} | |||||
} | |||||
antTypeTable.entrySet().stream() | |||||
.filter(e -> e.getValue().getExposedClass(project) != null | |||||
&& !Task.class.isAssignableFrom(e.getValue().getExposedClass(project))) | |||||
.forEach(e -> typeClassDefinitions.put(e.getKey(), | |||||
e.getValue().getTypeClass(project))); | |||||
rebuildTypeClassDefinitions = false; | rebuildTypeClassDefinitions = false; | ||||
} | } | ||||
} | } | ||||
@@ -1077,14 +1072,9 @@ public class ComponentHelper { | |||||
* @return the (possibly empty) list of definitions | * @return the (possibly empty) list of definitions | ||||
*/ | */ | ||||
private List<AntTypeDefinition> findTypeMatches(String prefix) { | private List<AntTypeDefinition> findTypeMatches(String prefix) { | ||||
final List<AntTypeDefinition> result = new ArrayList<>(); | |||||
synchronized (antTypeTable) { | synchronized (antTypeTable) { | ||||
for (AntTypeDefinition def : antTypeTable.values()) { | |||||
if (def.getName().startsWith(prefix)) { | |||||
result.add(def); | |||||
} | |||||
} | |||||
return antTypeTable.values().stream().filter(def -> def.getName().startsWith(prefix)) | |||||
.collect(Collectors.toList()); | |||||
} | } | ||||
return result; | |||||
} | } | ||||
} | } |
@@ -43,10 +43,6 @@ public class RuntimeConfigurable implements Serializable { | |||||
/** Serialization version */ | /** Serialization version */ | ||||
private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
/** Empty Hashtable. */ | |||||
private static final Hashtable<String, Object> EMPTY_HASHTABLE = | |||||
new Hashtable<>(0); | |||||
/** Name of the element to configure. */ | /** Name of the element to configure. */ | ||||
private String elementTag = null; | private String elementTag = null; | ||||
@@ -336,8 +332,7 @@ public class RuntimeConfigurable implements Serializable { | |||||
* @since Ant 1.6 | * @since Ant 1.6 | ||||
*/ | */ | ||||
public synchronized Hashtable<String, Object> getAttributeMap() { | public synchronized Hashtable<String, Object> getAttributeMap() { | ||||
return (attributeMap == null) | |||||
? EMPTY_HASHTABLE : new Hashtable<>(attributeMap); | |||||
return new Hashtable<>(attributeMap == null ? Collections.emptyMap() : attributeMap); | |||||
} | } | ||||
/** | /** | ||||
@@ -25,13 +25,13 @@ import java.io.Writer; | |||||
import java.nio.file.Files; | import java.nio.file.Files; | ||||
import java.nio.file.Paths; | import java.nio.file.Paths; | ||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
import java.util.Map; | |||||
import java.util.Stack; | import java.util.Stack; | ||||
import javax.xml.parsers.DocumentBuilder; | import javax.xml.parsers.DocumentBuilder; | ||||
import javax.xml.parsers.DocumentBuilderFactory; | import javax.xml.parsers.DocumentBuilderFactory; | ||||
import org.apache.tools.ant.util.DOMElementWriter; | import org.apache.tools.ant.util.DOMElementWriter; | ||||
import org.apache.tools.ant.util.StreamUtils; | |||||
import org.apache.tools.ant.util.StringUtils; | import org.apache.tools.ant.util.StringUtils; | ||||
import org.w3c.dom.Document; | import org.w3c.dom.Document; | ||||
import org.w3c.dom.Element; | import org.w3c.dom.Element; | ||||
@@ -108,16 +108,16 @@ public class XmlLogger implements BuildLogger { | |||||
private Document doc = builder.newDocument(); | private Document doc = builder.newDocument(); | ||||
/** Mapping for when tasks started (Task to TimedElement). */ | /** Mapping for when tasks started (Task to TimedElement). */ | ||||
private Hashtable<Task, TimedElement> tasks = new Hashtable<>(); | |||||
private Map<Task, TimedElement> tasks = new Hashtable<>(); | |||||
/** Mapping for when targets started (Target to TimedElement). */ | /** Mapping for when targets started (Target to TimedElement). */ | ||||
private Hashtable<Target, TimedElement> targets = new Hashtable<>(); | |||||
private Map<Target, TimedElement> targets = new Hashtable<>(); | |||||
/** | /** | ||||
* Mapping of threads to stacks of elements | * Mapping of threads to stacks of elements | ||||
* (Thread to Stack of TimedElement). | * (Thread to Stack of TimedElement). | ||||
*/ | */ | ||||
private Hashtable<Thread, Stack<TimedElement>> threadStacks = new Hashtable<>(); | |||||
private Map<Thread, Stack<TimedElement>> threadStacks = new Hashtable<>(); | |||||
/** | /** | ||||
* When the build started. | * When the build started. | ||||
@@ -345,8 +345,7 @@ public class XmlLogger implements BuildLogger { | |||||
if (element != null) { | if (element != null) { | ||||
return element; | return element; | ||||
} | } | ||||
return StreamUtils.enumerationAsStream(tasks.keys()) | |||||
.filter(UnknownElement.class::isInstance) | |||||
return tasks.keySet().stream().filter(UnknownElement.class::isInstance) | |||||
.filter(key -> ((UnknownElement) key).getTask() == task).findFirst() | .filter(key -> ((UnknownElement) key).getTask() == task).findFirst() | ||||
.map(key -> tasks.get(key)).orElse(null); | .map(key -> tasks.get(key)).orElse(null); | ||||
} | } | ||||
@@ -19,11 +19,10 @@ | |||||
package org.apache.tools.ant.attribute; | package org.apache.tools.ant.attribute; | ||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.Hashtable; | |||||
import java.util.Map; | import java.util.Map; | ||||
import java.util.stream.Collectors; | |||||
import org.apache.tools.ant.ProjectComponent; | import org.apache.tools.ant.ProjectComponent; | ||||
import org.apache.tools.ant.RuntimeConfigurable; | |||||
import org.apache.tools.ant.UnknownElement; | import org.apache.tools.ant.UnknownElement; | ||||
@@ -68,17 +67,10 @@ public abstract class BaseIfAttribute | |||||
* @return a map of attributes. | * @return a map of attributes. | ||||
*/ | */ | ||||
protected Map<String, String> getParams(UnknownElement el) { | protected Map<String, String> getParams(UnknownElement el) { | ||||
Map<String, String> ret = new HashMap<>(); | |||||
RuntimeConfigurable rc = el.getWrapper(); | |||||
Hashtable<String, Object> attributes = rc.getAttributeMap(); // This does a copy! | |||||
for (Map.Entry<String, Object> entry : attributes.entrySet()) { | |||||
String key = entry.getKey(); | |||||
if (key.startsWith("ant-attribute:param")) { | |||||
int pos = key.lastIndexOf(':'); | |||||
ret.put(key.substring(pos + 1), | |||||
el.getProject().replaceProperties((String) entry.getValue())); | |||||
} | |||||
} | |||||
return ret; | |||||
// this makes a copy! | |||||
return el.getWrapper().getAttributeMap().entrySet().stream() | |||||
.filter(e -> e.getKey().startsWith("ant-attribute:param")) | |||||
.collect(Collectors.toMap(e -> e.getKey().substring(e.getKey().lastIndexOf(':') + 1), | |||||
e -> el.getProject().replaceProperties((String) e.getValue()), (a, b) -> b)); | |||||
} | } | ||||
} | } |
@@ -18,6 +18,7 @@ | |||||
package org.apache.tools.ant.taskdefs; | package org.apache.tools.ant.taskdefs; | ||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
import java.util.Map; | |||||
import org.apache.tools.ant.BuildEvent; | import org.apache.tools.ant.BuildEvent; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
@@ -66,7 +67,7 @@ public class Recorder extends Task implements SubBuildListener { | |||||
/** Strip task banners if true. */ | /** Strip task banners if true. */ | ||||
private boolean emacsMode = false; | private boolean emacsMode = false; | ||||
/** The list of recorder entries. */ | /** The list of recorder entries. */ | ||||
private static Hashtable<String, RecorderEntry> recorderEntries = new Hashtable<>(); | |||||
private static Map<String, RecorderEntry> recorderEntries = new Hashtable<>(); | |||||
////////////////////////////////////////////////////////////////////// | ////////////////////////////////////////////////////////////////////// | ||||
// CONSTRUCTORS / INITIALIZERS | // CONSTRUCTORS / INITIALIZERS | ||||
@@ -304,11 +305,8 @@ public class Recorder extends Task implements SubBuildListener { | |||||
* | * | ||||
* @since Ant 1.7 | * @since Ant 1.7 | ||||
*/ | */ | ||||
@SuppressWarnings("unchecked") | |||||
private void cleanup() { | private void cleanup() { | ||||
((Hashtable<String, RecorderEntry>) recorderEntries.clone()).entrySet().stream() | |||||
.filter(entry -> entry.getValue().getProject() == getProject()) | |||||
.forEach(entry -> recorderEntries.remove(entry.getKey())); | |||||
recorderEntries.entrySet().removeIf(e -> e.getValue().getProject() == getProject()); | |||||
getProject().removeBuildListener(this); | getProject().removeBuildListener(this); | ||||
} | } | ||||
} | } |
@@ -16,10 +16,8 @@ | |||||
* | * | ||||
*/ | */ | ||||
package org.apache.tools.ant.taskdefs.optional.ejb; | package org.apache.tools.ant.taskdefs.optional.ejb; | ||||
import java.io.BufferedReader; | import java.io.BufferedReader; | ||||
import java.io.File; | import java.io.File; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
@@ -31,6 +29,7 @@ import java.util.Collection; | |||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | import java.util.Map; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.apache.tools.ant.taskdefs.ExecTask; | import org.apache.tools.ant.taskdefs.ExecTask; | ||||
@@ -41,7 +40,6 @@ import org.apache.tools.ant.taskdefs.optional.ejb.EjbJar.DTDLocation; | |||||
import org.apache.tools.ant.types.Commandline; | import org.apache.tools.ant.types.Commandline; | ||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
/** | /** | ||||
* BorlandDeploymentTool is dedicated to the Borland Application Server 4.5 and 4.5.1 | * BorlandDeploymentTool is dedicated to the Borland Application Server 4.5 and 4.5.1 | ||||
* This task generates and compiles the stubs and skeletons for all ejb described into the | * This task generates and compiles the stubs and skeletons for all ejb described into the | ||||
@@ -60,7 +58,7 @@ import org.apache.tools.ant.types.Path; | |||||
* <li>version (int) : tell what is the Borland appserver version 4 or 5 </li> | * <li>version (int) : tell what is the Borland appserver version 4 or 5 </li> | ||||
* </ul> | * </ul> | ||||
* | * | ||||
*<PRE> | |||||
*<pre> | |||||
* | * | ||||
* <ejbjar srcdir="${build.classes}" | * <ejbjar srcdir="${build.classes}" | ||||
* basejarname="vsmp" | * basejarname="vsmp" | ||||
@@ -74,7 +72,7 @@ import org.apache.tools.ant.types.Path; | |||||
* <include name="demo\helper\*.class"/> | * <include name="demo\helper\*.class"/> | ||||
* </support> | * </support> | ||||
* </ejbjar> | * </ejbjar> | ||||
*</PRE> | |||||
*</pre> | |||||
* | * | ||||
*/ | */ | ||||
public class BorlandDeploymentTool extends GenericDeploymentTool | public class BorlandDeploymentTool extends GenericDeploymentTool | ||||
@@ -23,6 +23,7 @@ import java.io.IOException; | |||||
import java.io.InputStream; | import java.io.InputStream; | ||||
import java.net.URL; | import java.net.URL; | ||||
import java.nio.file.Files; | import java.nio.file.Files; | ||||
import java.util.Collections; | |||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
import java.util.Map; | import java.util.Map; | ||||
@@ -233,7 +234,7 @@ public class DescriptorHandler extends HandlerBase { | |||||
* @return the map of files | * @return the map of files | ||||
*/ | */ | ||||
public Hashtable<String, File> getFiles() { | public Hashtable<String, File> getFiles() { | ||||
return ejbFiles == null ? new Hashtable<>() : ejbFiles; | |||||
return new Hashtable<>(ejbFiles == null ? Collections.emptyMap() : ejbFiles); | |||||
} | } | ||||
/** | /** | ||||
@@ -21,13 +21,16 @@ import java.io.File; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.InputStream; | import java.io.InputStream; | ||||
import java.nio.file.Files; | import java.nio.file.Files; | ||||
import java.util.Enumeration; | |||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
import java.util.HashMap; | |||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | |||||
import java.util.Vector; | import java.util.Vector; | ||||
import java.util.jar.JarEntry; | import java.util.jar.JarEntry; | ||||
import java.util.jar.JarFile; | import java.util.jar.JarFile; | ||||
import java.util.jar.JarOutputStream; | import java.util.jar.JarOutputStream; | ||||
import java.util.stream.Collectors; | |||||
import java.util.zip.ZipEntry; | |||||
import javax.xml.parsers.SAXParser; | import javax.xml.parsers.SAXParser; | ||||
import javax.xml.parsers.SAXParserFactory; | import javax.xml.parsers.SAXParserFactory; | ||||
@@ -36,7 +39,6 @@ import org.apache.tools.ant.AntClassLoader; | |||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
import org.apache.tools.ant.Project; | import org.apache.tools.ant.Project; | ||||
import org.apache.tools.ant.taskdefs.Java; | import org.apache.tools.ant.taskdefs.Java; | ||||
import org.apache.tools.ant.taskdefs.optional.ejb.EjbJar.DTDLocation; | |||||
import org.apache.tools.ant.types.Environment; | import org.apache.tools.ant.types.Environment; | ||||
import org.apache.tools.ant.types.Environment.Variable; | import org.apache.tools.ant.types.Environment.Variable; | ||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
@@ -424,9 +426,7 @@ public class WeblogicDeploymentTool extends GenericDeploymentTool { | |||||
handler.registerDTD(PUBLICID_WEBLOGIC_EJB510, weblogicDTD); | handler.registerDTD(PUBLICID_WEBLOGIC_EJB510, weblogicDTD); | ||||
handler.registerDTD(PUBLICID_WEBLOGIC_EJB600, weblogicDTD); | handler.registerDTD(PUBLICID_WEBLOGIC_EJB600, weblogicDTD); | ||||
for (DTDLocation dtdLocation : getConfig().dtdLocations) { | |||||
handler.registerDTD(dtdLocation.getPublicId(), dtdLocation.getLocation()); | |||||
} | |||||
getConfig().dtdLocations.forEach(l -> handler.registerDTD(l.getPublicId(), l.getLocation())); | |||||
return handler; | return handler; | ||||
} | } | ||||
@@ -685,73 +685,62 @@ public class WeblogicDeploymentTool extends GenericDeploymentTool { | |||||
genericJar = new JarFile(genericJarFile); | genericJar = new JarFile(genericJarFile); | ||||
wlJar = new JarFile(weblogicJarFile); | wlJar = new JarFile(weblogicJarFile); | ||||
Hashtable<String, JarEntry> genericEntries = new Hashtable<>(); | |||||
Hashtable<String, JarEntry> wlEntries = new Hashtable<>(); | |||||
Hashtable<String, JarEntry> replaceEntries = new Hashtable<>(); | |||||
Map<String, JarEntry> replaceEntries = new HashMap<>(); | |||||
//get the list of generic jar entries | //get the list of generic jar entries | ||||
for (Enumeration<JarEntry> e = genericJar.entries(); e.hasMoreElements();) { | |||||
JarEntry je = e.nextElement(); | |||||
genericEntries.put(je.getName().replace('\\', '/'), je); | |||||
} | |||||
Map<String, JarEntry> genericEntries = genericJar.stream() | |||||
.collect(Collectors.toMap(je -> je.getName().replace('\\', '/'), | |||||
je -> je, (a, b) -> b)); | |||||
// get the list of WebLogic jar entries | // get the list of WebLogic jar entries | ||||
for (Enumeration<JarEntry> e = wlJar.entries(); e.hasMoreElements();) { | |||||
JarEntry je = e.nextElement(); | |||||
wlEntries.put(je.getName(), je); | |||||
} | |||||
Map<String, JarEntry> wlEntries = wlJar.stream().collect(Collectors.toMap(ZipEntry::getName, | |||||
je -> je, (a, b) -> b)); | |||||
// Cycle through generic and make sure its in WebLogic | // Cycle through generic and make sure its in WebLogic | ||||
genericLoader = getClassLoaderFromJar(genericJarFile); | genericLoader = getClassLoaderFromJar(genericJarFile); | ||||
for (Enumeration<String> e = genericEntries.keys(); e.hasMoreElements();) { | |||||
String filepath = e.nextElement(); | |||||
if (wlEntries.containsKey(filepath)) { | |||||
// File name/path match | |||||
// Check files see if same | |||||
JarEntry genericEntry = genericEntries.get(filepath); | |||||
JarEntry wlEntry = wlEntries.get(filepath); | |||||
for (String filepath : genericEntries.keySet()) { | |||||
if (!wlEntries.containsKey(filepath)) { | |||||
// a file doesn't exist rebuild | |||||
log("File " + filepath + " not present in weblogic jar", | |||||
Project.MSG_VERBOSE); | |||||
rebuild = true; | |||||
break; | |||||
} | |||||
// File name/path match | |||||
// Check files see if same | |||||
JarEntry genericEntry = genericEntries.get(filepath); | |||||
JarEntry wlEntry = wlEntries.get(filepath); | |||||
if (genericEntry.getCrc() != wlEntry.getCrc() | |||||
|| genericEntry.getSize() != wlEntry.getSize()) { | |||||
if (genericEntry.getCrc() != wlEntry.getCrc() | |||||
|| genericEntry.getSize() != wlEntry.getSize()) { | |||||
if (genericEntry.getName().endsWith(".class")) { | |||||
//File are different see if its an object or an interface | |||||
String classname | |||||
= genericEntry.getName() | |||||
if (genericEntry.getName().endsWith(".class")) { | |||||
//File are different see if its an object or an interface | |||||
String classname = genericEntry.getName() | |||||
.replace(File.separatorChar, '.') | .replace(File.separatorChar, '.') | ||||
.replace('/', '.'); | .replace('/', '.'); | ||||
classname = classname.substring(0, classname.lastIndexOf(".class")); | |||||
Class<?> genclass = genericLoader.loadClass(classname); | |||||
if (genclass.isInterface()) { | |||||
//Interface changed rebuild jar. | |||||
log("Interface " + genclass.getName() | |||||
+ " has changed", Project.MSG_VERBOSE); | |||||
rebuild = true; | |||||
break; | |||||
} | |||||
//Object class Changed update it. | |||||
replaceEntries.put(filepath, genericEntry); | |||||
} else if (!"META-INF/MANIFEST.MF".equals(genericEntry.getName())) { | |||||
// it is not the manifest, otherwise we'd ignore it | |||||
// File other then class changed rebuild | |||||
log("Non class file " + genericEntry.getName() | |||||
classname = classname.substring(0, classname.lastIndexOf(".class")); | |||||
Class<?> genclass = genericLoader.loadClass(classname); | |||||
if (genclass.isInterface()) { | |||||
//Interface changed rebuild jar. | |||||
log("Interface " + genclass.getName() | |||||
+ " has changed", Project.MSG_VERBOSE); | + " has changed", Project.MSG_VERBOSE); | ||||
rebuild = true; | rebuild = true; | ||||
break; | break; | ||||
} | } | ||||
//Object class Changed update it. | |||||
replaceEntries.put(filepath, genericEntry); | |||||
} else if (!genericEntry.getName().equals("META-INF/MANIFEST.MF")) { | |||||
// it is not the manifest, otherwise we'd ignore it | |||||
// File other then class changed rebuild | |||||
log("Non class file " + genericEntry.getName() | |||||
+ " has changed", Project.MSG_VERBOSE); | |||||
rebuild = true; | |||||
break; | |||||
} | } | ||||
} else { | |||||
// a file doesn't exist rebuild | |||||
log("File " + filepath + " not present in weblogic jar", | |||||
Project.MSG_VERBOSE); | |||||
rebuild = true; | |||||
break; | |||||
} | } | ||||
} | } | ||||
@@ -22,6 +22,8 @@ import java.io.IOException; | |||||
import java.io.InputStream; | import java.io.InputStream; | ||||
import java.nio.file.Files; | import java.nio.file.Files; | ||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
import java.util.HashMap; | |||||
import java.util.Map; | |||||
import java.util.jar.JarEntry; | import java.util.jar.JarEntry; | ||||
import java.util.jar.JarFile; | import java.util.jar.JarFile; | ||||
import java.util.jar.JarOutputStream; | import java.util.jar.JarOutputStream; | ||||
@@ -35,7 +37,6 @@ import org.apache.tools.ant.taskdefs.Java; | |||||
import org.apache.tools.ant.types.Environment; | import org.apache.tools.ant.types.Environment; | ||||
import org.apache.tools.ant.types.Path; | import org.apache.tools.ant.types.Path; | ||||
import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
import org.apache.tools.ant.util.StreamUtils; | |||||
/** | /** | ||||
* WebSphere deployment tool that augments the ejbjar task. | * WebSphere deployment tool that augments the ejbjar task. | ||||
@@ -667,21 +668,18 @@ public class WebsphereDeploymentTool extends GenericDeploymentTool { | |||||
wasJar = new JarFile(websphereJarFile); | wasJar = new JarFile(websphereJarFile); | ||||
//get the list of generic jar entries | //get the list of generic jar entries | ||||
Hashtable<String, JarEntry> genericEntries | |||||
= StreamUtils.enumerationAsStream(genericJar.entries()) | |||||
Map<String, JarEntry> genericEntries = genericJar.stream() | |||||
.collect(Collectors.toMap(je -> je.getName().replace('\\', '/'), | .collect(Collectors.toMap(je -> je.getName().replace('\\', '/'), | ||||
je -> je, (a, b) -> b, Hashtable::new)); | |||||
je -> je, (a, b) -> b)); | |||||
// get the list of WebSphere jar entries | // get the list of WebSphere jar entries | ||||
Hashtable<String, JarEntry> wasEntries | |||||
= StreamUtils.enumerationAsStream(wasJar.entries()) | |||||
.collect(Collectors.toMap(ZipEntry::getName, | |||||
je -> je, (a, b) -> b, Hashtable::new)); | |||||
Map<String, JarEntry> wasEntries = wasJar.stream() | |||||
.collect(Collectors.toMap(ZipEntry::getName, je -> je, (a, b) -> b)); | |||||
// Cycle through generic and make sure its in WebSphere | // Cycle through generic and make sure its in WebSphere | ||||
genericLoader = getClassLoaderFromJar(genericJarFile); | genericLoader = getClassLoaderFromJar(genericJarFile); | ||||
Hashtable<String, JarEntry> replaceEntries = new Hashtable<>(); | |||||
Map<String, JarEntry> replaceEntries = new HashMap<>(); | |||||
for (String filepath : genericEntries.keySet()) { | for (String filepath : genericEntries.keySet()) { | ||||
if (!wasEntries.containsKey(filepath)) { | if (!wasEntries.containsKey(filepath)) { | ||||
// a file doesn't exist rebuild | // a file doesn't exist rebuild | ||||