diff --git a/multiapps-mta/pom.xml b/multiapps-mta/pom.xml index 8d15aac6..8000dd49 100644 --- a/multiapps-mta/pom.xml +++ b/multiapps-mta/pom.xml @@ -20,10 +20,6 @@ org.apache.commons commons-collections4 - - commons-fileupload - commons-fileupload - com.vdurmont semver4j diff --git a/multiapps-mta/src/main/java/module-info.java b/multiapps-mta/src/main/java/module-info.java index 6394a884..3ab88054 100644 --- a/multiapps-mta/src/main/java/module-info.java +++ b/multiapps-mta/src/main/java/module-info.java @@ -33,6 +33,5 @@ requires static java.compiler; requires static org.immutables.value; - requires commons.fileupload; } \ No newline at end of file diff --git a/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/handlers/ArchiveHandler.java b/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/handlers/ArchiveHandler.java index b688eaac..65495a89 100644 --- a/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/handlers/ArchiveHandler.java +++ b/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/handlers/ArchiveHandler.java @@ -8,11 +8,11 @@ import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; -import org.apache.commons.fileupload.util.LimitedInputStream; import org.apache.commons.io.IOUtils; import org.cloudfoundry.multiapps.common.ContentException; import org.cloudfoundry.multiapps.common.SLException; import org.cloudfoundry.multiapps.mta.Messages; +import org.cloudfoundry.multiapps.mta.util.LimitedInputStream; public class ArchiveHandler { diff --git a/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/util/LimitedInputStream.java b/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/util/LimitedInputStream.java new file mode 100644 index 00000000..d9aabef2 --- /dev/null +++ b/multiapps-mta/src/main/java/org/cloudfoundry/multiapps/mta/util/LimitedInputStream.java @@ -0,0 +1,47 @@ +package org.cloudfoundry.multiapps.mta.util; + +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.concurrent.atomic.AtomicLong; + +public abstract class LimitedInputStream extends FilterInputStream { + + private final AtomicLong counter; + private final long maxSize; + + public LimitedInputStream(InputStream in, long maxSize) { + super(in); + this.counter = new AtomicLong(0); + this.maxSize = maxSize; + } + + @Override + public int read() throws IOException { + int i = super.read(); + if (i > 0) { + counter.incrementAndGet(); + checkSize(); + } + return i; + } + + @Override + public int read(byte[] b, int off, int len) throws IOException { + int i = super.read(b, off, len); + if (i > 0) { + counter.addAndGet(i); + checkSize(); + } + return i; + } + + private void checkSize() { + long currentSize = counter.get(); + if (currentSize >= maxSize) { + raiseError(maxSize, currentSize); + } + } + + protected abstract void raiseError(long maxSize, long currentSize); +} diff --git a/pom.xml b/pom.xml index 8bd681aa..ac84b8e3 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,6 @@ 3.12.0 4.4 2.11.0 - 1.5 2.0.6 2.0 3.1.0 @@ -304,12 +303,6 @@ commons-io ${commons-io.version} - - - commons-fileupload - commons-fileupload - ${commons-fileupload.version} - org.yaml