| @@ -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 | ||||