You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by sv...@apache.org on 2017/03/02 12:16:08 UTC
[07/10] brooklyn-server git commit: tidy of BundleMaker and
associated items to support creating ZIPs
tidy of BundleMaker and associated items to support creating ZIPs
Project: http://git-wip-us.apache.org/repos/asf/brooklyn-server/repo
Commit: http://git-wip-us.apache.org/repos/asf/brooklyn-server/commit/b5cb1073
Tree: http://git-wip-us.apache.org/repos/asf/brooklyn-server/tree/b5cb1073
Diff: http://git-wip-us.apache.org/repos/asf/brooklyn-server/diff/b5cb1073
Branch: refs/heads/master
Commit: b5cb107386c703e7c2e679a2c7d4f7c7d8fe16ec
Parents: 3376116
Author: Alex Heneveld <al...@cloudsoftcorp.com>
Authored: Sat Feb 18 13:45:06 2017 +0000
Committer: Alex Heneveld <al...@cloudsoftcorp.com>
Committed: Wed Mar 1 09:00:33 2017 +0000
----------------------------------------------------------------------
.../brooklyn/util/core/file/ArchiveUtils.java | 29 ++++++++++++++--
.../brooklyn/util/core/osgi/BundleMaker.java | 35 +++++++++-----------
.../java/org/apache/brooklyn/util/os/Os.java | 2 +-
3 files changed, 44 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b5cb1073/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveUtils.java b/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveUtils.java
index b10d7ae..ae01aeb 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveUtils.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/file/ArchiveUtils.java
@@ -21,15 +21,19 @@ package org.apache.brooklyn.util.core.file;
import static java.lang.String.format;
import java.io.File;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.util.EnumSet;
+import java.util.Enumeration;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.brooklyn.location.ssh.SshMachineLocation;
import org.apache.brooklyn.util.collections.MutableList;
import org.apache.brooklyn.util.collections.MutableMap;
@@ -42,7 +46,10 @@ import org.apache.brooklyn.util.javalang.StackTraceSimplifier;
import org.apache.brooklyn.util.net.Urls;
import org.apache.brooklyn.util.os.Os;
import org.apache.brooklyn.util.ssh.BashCommands;
+import org.apache.brooklyn.util.stream.Streams;
import org.apache.brooklyn.util.text.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import com.google.common.base.Charsets;
import com.google.common.base.Preconditions;
@@ -347,4 +354,22 @@ public class ArchiveUtils {
}
}
+ public static void extractZip(final ZipFile zip, final String targetFolder) {
+ new File(targetFolder).mkdir();
+ Enumeration<? extends ZipEntry> zipFileEntries = zip.entries();
+ while (zipFileEntries.hasMoreElements()) {
+ ZipEntry entry = (ZipEntry) zipFileEntries.nextElement();
+ File destFile = new File(targetFolder, entry.getName());
+ destFile.getParentFile().mkdirs();
+
+ if (!entry.isDirectory()) {
+ try (InputStream in=zip.getInputStream(entry); OutputStream out=new FileOutputStream(destFile)) {
+ Streams.copy(in, out);
+ } catch (IOException e) {
+ throw Exceptions.propagate(e);
+ }
+ }
+ }
+ }
+
}
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b5cb1073/core/src/main/java/org/apache/brooklyn/util/core/osgi/BundleMaker.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/brooklyn/util/core/osgi/BundleMaker.java b/core/src/main/java/org/apache/brooklyn/util/core/osgi/BundleMaker.java
index 2be2612..1cdcff8 100644
--- a/core/src/main/java/org/apache/brooklyn/util/core/osgi/BundleMaker.java
+++ b/core/src/main/java/org/apache/brooklyn/util/core/osgi/BundleMaker.java
@@ -33,6 +33,8 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
+import javax.annotation.Nonnull;
+
import org.apache.brooklyn.api.mgmt.ManagementContext;
import org.apache.brooklyn.core.mgmt.internal.LocalManagementContext;
import org.apache.brooklyn.util.collections.MutableMap;
@@ -60,16 +62,22 @@ public class BundleMaker {
private ResourceUtils resources;
private Class<?> optionalDefaultClassForLoading;
- public BundleMaker(Framework f, ResourceUtils resources) {
+ /** Constructor for use when not expecting to use with a framework */
+ public BundleMaker(@Nonnull ResourceUtils resources) {
+ this.resources = resources;
+ }
+
+ public BundleMaker(@Nonnull Framework f, @Nonnull ResourceUtils resources) {
this.framework = f;
this.resources = resources;
}
- public BundleMaker(ManagementContext mgmt) {
+ public BundleMaker(@Nonnull ManagementContext mgmt) {
this( ((LocalManagementContext)mgmt).getOsgiManager().get().getFramework(), ResourceUtils.create() );
}
- /** if set, this will be used to resolve relative classpath fragments */
+ /** if set, this will be used to resolve relative classpath fragments;
+ * the {@link ResourceUtils} supplied in the constructor must also be with respect to the given class */
public void setDefaultClassForLoading(Class<?> optionalDefaultClassForLoading) {
this.optionalDefaultClassForLoading = optionalDefaultClassForLoading;
}
@@ -91,24 +99,13 @@ public class BundleMaker {
path = "classpath:"+path;
}
- InputStream min;
- try {
- min = resources.getResourceFromUrl(Urls.mergePaths(path, MANIFEST_PATH));
- } catch (RuntimeException e) {
- Exceptions.propagateIfFatal(e);
- IOException ioe = Exceptions.getFirstThrowableOfType(e, IOException.class);
- if (ioe != null && ioe.toString().contains("not found on classpath")) {
- min = null;
- } else {
- throw e;
- }
- }
- if (min==null) {
- zout = new JarOutputStream(new FileOutputStream(f));
- addUrlItemRecursively(zout, path, path, Predicates.alwaysTrue());
- } else {
+ if (resources.doesUrlExist(Urls.mergePaths(path, MANIFEST_PATH))) {
+ InputStream min = resources.getResourceFromUrl(Urls.mergePaths(path, MANIFEST_PATH));
zout = new JarOutputStream(new FileOutputStream(f), new Manifest(min));
addUrlItemRecursively(zout, path, path, Predicates.not(Predicates.equalTo(MANIFEST_PATH)));
+ } else {
+ zout = new JarOutputStream(new FileOutputStream(f));
+ addUrlItemRecursively(zout, path, path, Predicates.alwaysTrue());
}
Streams.closeQuietly(zout);
http://git-wip-us.apache.org/repos/asf/brooklyn-server/blob/b5cb1073/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java
----------------------------------------------------------------------
diff --git a/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java b/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java
index 27a2c70..bd28558 100644
--- a/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java
+++ b/utils/common/src/main/java/org/apache/brooklyn/util/os/Os.java
@@ -553,7 +553,7 @@ public class Os {
/** creates a temp dir which will be deleted on exit */
public static File newTempDir(String prefix) {
- String sanitizedPrefix = (prefix==null ? "" : prefix + "-");
+ String sanitizedPrefix = (prefix==null ? "" : Strings.makeValidFilename(prefix) + "-");
String tmpParent = tmp();
//With lots of stale temp dirs it is possible to have