[514621] Resource Copy task fails with *.zip files above 328MB

https://bugs.eclipse.org/bugs/show_bug.cgi?id=514621
diff --git a/plugins/org.eclipse.oomph.setup.core/src/org/eclipse/oomph/setup/internal/core/util/SetupCoreUtil.java b/plugins/org.eclipse.oomph.setup.core/src/org/eclipse/oomph/setup/internal/core/util/SetupCoreUtil.java
index ae9700c..b73d4a3 100644
--- a/plugins/org.eclipse.oomph.setup.core/src/org/eclipse/oomph/setup/internal/core/util/SetupCoreUtil.java
+++ b/plugins/org.eclipse.oomph.setup.core/src/org/eclipse/oomph/setup/internal/core/util/SetupCoreUtil.java
@@ -38,6 +38,7 @@
 import org.eclipse.oomph.setup.Scope;
 import org.eclipse.oomph.setup.SetupFactory;
 import org.eclipse.oomph.setup.User;
+import org.eclipse.oomph.setup.impl.ResourceCopyTaskImpl;
 import org.eclipse.oomph.setup.internal.core.SetupContext;
 import org.eclipse.oomph.setup.internal.core.SetupCorePlugin;
 import org.eclipse.oomph.setup.internal.core.util.ECFURIHandlerImpl.AuthorizationHandler;
@@ -494,7 +495,7 @@
           @Override
           public InputStream createInputStream(URI uri, Map<?, ?> options) throws IOException
           {
-            if (!"zip".equals(uri.fileExtension()))
+            if (!"zip".equals(uri.fileExtension()) || Boolean.FALSE.equals(options.get(ResourceCopyTaskImpl.OPTION_ZIP_CACHE)))
             {
               return super.createInputStream(uri, options);
             }
@@ -538,6 +539,11 @@
           @Override
           public InputStream createInputStream(URI uri, Map<?, ?> options) throws IOException
           {
+            if (Boolean.FALSE.equals(options.get(ResourceCopyTaskImpl.OPTION_ZIP_CACHE)))
+            {
+              return super.createInputStream(uri, options);
+            }
+
             // Look for a cached version first.
             WeakReference<byte[]> bytesReference = ZIPS.get(uri);
             if (bytesReference != null)
diff --git a/plugins/org.eclipse.oomph.setup/src/org/eclipse/oomph/setup/impl/ResourceCopyTaskImpl.java b/plugins/org.eclipse.oomph.setup/src/org/eclipse/oomph/setup/impl/ResourceCopyTaskImpl.java
index 0c302d9..2503a9c 100644
--- a/plugins/org.eclipse.oomph.setup/src/org/eclipse/oomph/setup/impl/ResourceCopyTaskImpl.java
+++ b/plugins/org.eclipse.oomph.setup/src/org/eclipse/oomph/setup/impl/ResourceCopyTaskImpl.java
@@ -26,6 +26,7 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.Collections;
 
 /**
  * <!-- begin-user-doc -->
@@ -44,6 +45,8 @@
  */
 public class ResourceCopyTaskImpl extends SetupTaskImpl implements ResourceCopyTask
 {
+  public static final String OPTION_ZIP_CACHE = "OPTION_ZIP_CACHE";
+
   /**
    * The default value of the '{@link #isForce() <em>Force</em>}' attribute.
    * <!-- begin-user-doc -->
@@ -384,7 +387,7 @@
 
     try
     {
-      input = uriConverter.createInputStream(sourceURI);
+      input = uriConverter.createInputStream(sourceURI, Collections.singletonMap(OPTION_ZIP_CACHE, Boolean.FALSE));
       output = uriConverter.createOutputStream(targetURI, null);
       IOUtil.copy(input, output);
     }