diff --git a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveProcessor.java b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveProcessor.java index 0318ea972c7..0abdd0fed05 100644 --- a/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveProcessor.java +++ b/jpa/org.eclipse.persistence.jpa/src/main/java/org/eclipse/persistence/tools/weaving/jpa/StaticWeaveProcessor.java @@ -12,6 +12,7 @@ // Contributors: // Oracle - initial API and implementation from Oracle TopLink +// Billforward - added fileNeedsProcessingPredicate for incremental build support package org.eclipse.persistence.tools.weaving.jpa; import java.io.ByteArrayOutputStream; @@ -26,6 +27,7 @@ import java.net.URL; import java.net.URLClassLoader; import java.util.Iterator; +import java.util.function.Predicate; import java.util.jar.JarEntry; import java.util.jar.JarOutputStream; @@ -57,6 +59,7 @@ public class StaticWeaveProcessor { private Writer logWriter; private ClassLoader classLoader; private int logLevel = SessionLog.OFF; + private Predicate fileNeedsProcessingPredicate; private static final int NUMBER_OF_BYTES = 1024; @@ -256,6 +259,12 @@ private void process() throws IOException,URISyntaxException{ Iterator entries = sourceArchive.getEntries(); while (entries.hasNext()){ String entryName = entries.next(); + + if (fileNeedsProcessingPredicate != null && + !fileNeedsProcessingPredicate.test(entryName)) { + continue; + } + InputStream entryInputStream = sourceArchive.getEntry(entryName); // Add a directory entry @@ -372,4 +381,8 @@ private URL[] getURLs(){ } return new URL[]{}; } + + public void setFileNeedsProcessingPredicate(Predicate fileNeedsProcessingPredicate) { + this.fileNeedsProcessingPredicate = fileNeedsProcessingPredicate; + } }