You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by xu...@apache.org on 2010/01/06 08:30:40 UTC
svn commit: r896339 [2/4] - in /geronimo/server/trunk:
framework/modules/geronimo-common/src/main/java/org/apache/geronimo/common/
framework/modules/geronimo-deploy-tool/src/main/java/org/apache/geronimo/deployment/cli/
framework/modules/geronimo-deplo...
Modified: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/IOUtils.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/IOUtils.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/IOUtils.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/IOUtils.java Wed Jan 6 07:29:20 2010
@@ -14,28 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.apache.geronimo.kernel.util;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Writer;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.jar.JarFile;
-import java.util.zip.ZipEntry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,61 +31,17 @@
* @version $Rev$ $Date$
*/
public class IOUtils {
- private static final Logger log = LoggerFactory.getLogger(IOUtils.class);
-
- public static void recursiveCopy(File srcDir, File destDir) throws IOException {
- if (srcDir == null) throw new NullPointerException("sourceDir is null");
- if (destDir == null) throw new NullPointerException("destDir is null");
- if (!srcDir.isDirectory() || !srcDir.canRead()) {
- throw new IllegalArgumentException("Source directory must be a readable directory " + srcDir);
- }
- if (destDir.exists()) {
- throw new IllegalArgumentException("Destination directory already exists " + destDir);
- }
- if (srcDir.equals(destDir)) {
- throw new IllegalArgumentException("Source and destination directory are the same " + srcDir);
- }
-
- destDir.mkdirs();
- if (!destDir.exists()) {
- throw new IOException("Could not create destination directory " + destDir);
- }
-
- File[] srcFiles = srcDir.listFiles();
- if (srcFiles != null) {
- for (int i = 0; i < srcFiles.length; i++) {
- File srcFile = srcFiles[i];
- File destFile = new File(destDir, srcFile.getName());
- if (srcFile.isDirectory()) {
- recursiveCopy(srcFile, destFile);
- } else {
- copyFile(srcFile, destFile);
- }
- }
- }
- }
+ private static final Logger logger = LoggerFactory.getLogger(IOUtils.class);
- public static void copyFile(File source, File destination) throws IOException {
- File destinationDir = destination.getParentFile();
- if (!destinationDir.exists() && !destinationDir.mkdirs()) {
- throw new IOException("Cannot create directory : " + destinationDir);
- }
+ public static final int DEFAULT_COPY_BUFFER_SIZE = 4096;
- InputStream in = null;
- OutputStream out = null;
- try {
- in = new FileInputStream(source);
- out = new FileOutputStream(destination);
- writeAll(in, out);
- } finally {
- close(in);
- close(out);
- }
+ public static void copy(InputStream in, OutputStream out) throws IOException {
+ copy(in, out, DEFAULT_COPY_BUFFER_SIZE);
}
- public static void writeAll(InputStream in, OutputStream out) throws IOException {
- byte[] buffer = new byte[4096];
+ public static void copy(InputStream in, OutputStream out, int bufferSizeInBytes) throws IOException {
+ byte[] buffer = new byte[bufferSizeInBytes];
int count;
while ((count = in.read(buffer)) > 0) {
out.write(buffer, 0, count);
@@ -106,78 +49,6 @@
out.flush();
}
- private static void listFiles(File directory) {
- if (!log.isDebugEnabled() || !directory.isDirectory()) {
- return;
- }
- File[] files = directory.listFiles();
- log.debug(directory.getPath() + " has " + files.length + " files:");
- for (File file : files) {
- log.debug(file.getPath());
- }
- }
-
- private static boolean deleteFile(File file) {
- boolean fileDeleted = file.delete();
- if (fileDeleted) {
- return true;
- }
-
- // special retry code to handle occasional Windows JDK and Unix NFS timing failures
- int retryLimit = 5;
- int retries;
- int interruptions = 0;
- for (retries = 1; !fileDeleted && retries <= retryLimit; retries++) {
- if (log.isDebugEnabled()) {
- listFiles(file);
- }
- System.runFinalization();
- try {
- Thread.sleep(1000);
- } catch (InterruptedException ie) {
- interruptions++;
- }
- System.gc();
- try {
- Thread.sleep(1000);
- } catch (InterruptedException ie) {
- interruptions++;
- }
- fileDeleted = file.delete();
- }
- if (fileDeleted) {
- if (log.isDebugEnabled()) {
- log.debug(file.getPath() + " deleted after " + retries
- + " retries, with " + interruptions + " interruptions.");
- }
- } else {
- log.warn(file.getPath() + " not deleted after " + retryLimit
- + " retries, with " + interruptions + " interruptions.");
- }
- return fileDeleted;
- }
-
- public static boolean recursiveDelete(File root) {
- if (root == null) {
- return true;
- }
-
- if (root.isDirectory()) {
- File[] files = root.listFiles();
- if (files != null) {
- for (int i = 0; i < files.length; i++) {
- File file = files[i];
- if (file.isDirectory()) {
- recursiveDelete(file);
- } else {
- deleteFile(file);
- }
- }
- }
- }
- return deleteFile(root);
- }
-
public static void close(Closeable thing) {
if (thing != null) {
try {
@@ -187,115 +58,6 @@
}
}
- public static Map<String, File> find(File root, String pattern) {
- Map<String, File> matches = new HashMap<String, File>();
- find(root, pattern, matches);
- return matches;
- }
-
- public static void find(File root, String pattern, Map<String, File> matches) {
- if (!SelectorUtils.hasWildcards(pattern)) {
- File match = new File(root, pattern);
- if (match.exists() && match.canRead()) {
- matches.put(pattern, match);
- }
- } else {
- Map<String, File> files = IOUtils.listAllFileNames(root);
- for (Map.Entry<String, File> entry : files.entrySet()) {
- String fileName = entry.getKey();
- if (SelectorUtils.matchPath(pattern, fileName)) {
- matches.put(fileName, entry.getValue());
- }
- }
- }
- }
-
- public static Set<URL> search(File root, String pattern) throws MalformedURLException {
- if (root.isDirectory()) {
- if (pattern == null || pattern.length() == 0) {
- return Collections.singleton(new URL("file:" + root.toURI().normalize().getPath()));
- }
- if (!SelectorUtils.hasWildcards(pattern)) {
- File match = new File(root, pattern);
- if (match.exists() && match.canRead()) {
- return Collections.singleton(new URL("file:" + match.toURI().normalize().getPath()));
- } else {
- return Collections.emptySet();
- }
- } else {
- Set<URL> matches = new LinkedHashSet<URL>();
- Map<String, File> files = listAllFileNames(root);
- for (Map.Entry<String, File> entry : files.entrySet()) {
- String fileName = entry.getKey();
- if (SelectorUtils.matchPath(pattern, fileName)) {
- File file = entry.getValue();
- matches.add(new URL("file:" + file.toURI().normalize().getPath()));
- }
- }
- return matches;
- }
- } else {
- JarFile jarFile = null;
- try {
- jarFile = new JarFile(root);
- URL baseURL = new URL("jar:" + root.toURI().toURL().toString() + "!/");
- if (pattern == null || pattern.length() == 0) {
- return Collections.singleton(baseURL);
- }
- if (!SelectorUtils.hasWildcards(pattern)) {
- ZipEntry entry = jarFile.getEntry(pattern);
- if (entry != null) {
- URL match = new URL(baseURL, entry.getName());
- return Collections.singleton(match);
- } else {
- return Collections.emptySet();
- }
- } else {
- Set<URL> matches = new LinkedHashSet<URL>();
- Enumeration entries = jarFile.entries();
- while (entries.hasMoreElements()) {
- ZipEntry entry = (ZipEntry) entries.nextElement();
- String fileName = entry.getName();
- if (SelectorUtils.matchPath(pattern, fileName)) {
- URL url = new URL(baseURL, fileName);
- matches.add(url);
- }
- }
- return matches;
- }
- } catch (MalformedURLException e) {
- throw e;
- } catch (IOException e) {
- return Collections.emptySet();
- } finally {
- close(jarFile);
- }
- }
- }
-
- public static Map<String, File> listAllFileNames(File base) {
- return listAllFileNames(base, "");
- }
-
- private static Map<String, File> listAllFileNames(File base, String prefix) {
- if (!base.canRead() || !base.isDirectory()) {
- throw new IllegalArgumentException(base.getAbsolutePath());
- }
- Map<String, File> map = new LinkedHashMap<String, File>();
- File[] hits = base.listFiles();
- for (File hit : hits) {
- if (hit.canRead()) {
- if (hit.isDirectory()) {
- map.putAll(listAllFileNames(hit, prefix.equals("") ? hit.getName() : prefix + "/" + hit.getName()));
- } else {
- map.put(prefix.equals("") ? hit.getName() : prefix + "/" + hit.getName(), hit);
- }
- }
- }
- map.put(prefix, base);
- return map;
- }
-
public static byte[] getBytes(InputStream inputStream) throws IOException {
try {
byte[] buffer = new byte[4096];
@@ -314,7 +76,7 @@
if (thing != null) {
try {
thing.flush();
- } catch(Exception ignored) {
+ } catch (Exception ignored) {
}
}
}
@@ -323,26 +85,18 @@
if (thing != null) {
try {
thing.flush();
- } catch(Exception ignored) {
- }
- }
- }
-
- public static void close(JarFile thing) {
- if (thing != null) {
- try {
- thing.close();
- } catch(Exception ignored) {
+ } catch (Exception ignored) {
}
}
}
public static final class EmptyInputStream extends InputStream {
+
public int read() {
return -1;
}
- public int read(byte b[]) {
+ public int read(byte b[]) {
return -1;
}
Modified: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/InputUtils.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/InputUtils.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/InputUtils.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/InputUtils.java Wed Jan 6 07:29:20 2010
@@ -18,7 +18,6 @@
// import java.io.IOException;
import java.util.ArrayList;
-import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -39,7 +38,7 @@
// look for illegal chars in input
if (input != null) {
Matcher inputMatcher = ILLEGAL_CHARS.matcher(input);
- if (inputMatcher.find())
+ if (inputMatcher.find())
{
log.warn("Illegal characters detected in input" + input);
throw new IllegalArgumentException("input "+input+" contains illegal characters: .. < > : / \\ \' \" | ");
Added: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java?rev=896339&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java Wed Jan 6 07:29:20 2010
@@ -0,0 +1,339 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.geronimo.kernel.util;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.DataInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public final class JarUtils {
+
+ private JarUtils() {
+ }
+
+ public static final File DUMMY_JAR_FILE;
+
+ private static final boolean jarUrlRewrite;
+ static {
+ //TODO Change the property name ?
+ jarUrlRewrite = new Boolean(System.getProperty("org.apache.geronimo.deployment.util.DeploymentUtil.jarUrlRewrite", "false"));
+ try {
+ DUMMY_JAR_FILE = FileUtils.createTempFile();
+ new JarOutputStream(new FileOutputStream(JarUtils.DUMMY_JAR_FILE), new Manifest()).close();
+ } catch (IOException e) {
+ throw new ExceptionInInitializerError(e);
+ }
+ }
+
+ public static File toTempFile(JarFile jarFile, String path) throws IOException {
+ return toTempFile(createJarURL(jarFile, path));
+ }
+
+ public static File toTempFile(URL url) throws IOException {
+ InputStream in = null;
+ OutputStream out = null;
+ JarFile jarFile = null;
+ try {
+ if (url.getProtocol().equalsIgnoreCase("jar")) {
+ // url.openStream() locks the jar file and does not release the lock even after the stream is closed.
+ // This problem is avoided by using JarFile APIs.
+ File file = new File(url.getFile().substring(5, url.getFile().indexOf("!/")));
+ String path = url.getFile().substring(url.getFile().indexOf("!/") + 2);
+ jarFile = new JarFile(file);
+ JarEntry jarEntry = jarFile.getJarEntry(path);
+ if (jarEntry != null) {
+ in = jarFile.getInputStream(jarEntry);
+ } else {
+ throw new FileNotFoundException("JarEntry " + path + " not found in " + file);
+ }
+ } else {
+ in = url.openStream();
+ }
+ int index = url.getPath().lastIndexOf(".");
+ String extension = null;
+ if (index > 0) {
+ extension = url.getPath().substring(index);
+ }
+ File tempFile = FileUtils.createTempFile(extension);
+ out = new FileOutputStream(tempFile);
+ IOUtils.copy(in, out);
+ return tempFile;
+ } finally {
+ IOUtils.close(out);
+ IOUtils.close(in);
+ close(jarFile);
+ }
+ }
+
+ public static String readAll(URL url) throws IOException {
+ Reader reader = null;
+ JarFile jarFile = null;
+ try {
+ if (url.getProtocol().equalsIgnoreCase("jar")) {
+ // url.openStream() locks the jar file and does not release the lock even after the stream is closed.
+ // This problem is avoided by using JarFile APIs.
+ File file = new File(url.getFile().substring(5, url.getFile().indexOf("!/")));
+ String path = url.getFile().substring(url.getFile().indexOf("!/") + 2);
+ jarFile = new JarFile(file);
+ JarEntry jarEntry = jarFile.getJarEntry(path);
+ if (jarEntry != null) {
+ reader = new InputStreamReader(jarFile.getInputStream(jarEntry));
+ } else {
+ throw new FileNotFoundException("JarEntry " + path + " not found in " + file);
+ }
+ } else {
+ reader = new InputStreamReader(url.openStream());
+ }
+ char[] buffer = new char[4000];
+ StringBuffer out = new StringBuffer();
+ for (int count = reader.read(buffer); count >= 0; count = reader.read(buffer)) {
+ out.append(buffer, 0, count);
+ }
+ return out.toString();
+ } finally {
+ IOUtils.close(reader);
+ close(jarFile);
+ }
+ }
+
+ public static File toFile(JarFile jarFile) throws IOException {
+ if (jarFile instanceof UnpackedJarFile) {
+ return ((UnpackedJarFile) jarFile).getBaseDir();
+ } else {
+ throw new IOException("jarFile is not a directory");
+ }
+ }
+
+ // be careful with this method as it can leave a temp lying around
+ public static File toFile(JarFile jarFile, String path) throws IOException {
+ if (jarFile instanceof UnpackedJarFile) {
+ File baseDir = ((UnpackedJarFile) jarFile).getBaseDir();
+ File file = new File(baseDir, path);
+ if (!file.isFile()) {
+ throw new IOException("No such file: " + file.getAbsolutePath());
+ }
+ return file;
+ } else {
+ String urlString = "jar:" + new File(jarFile.getName()).toURI().toURL() + "!/" + path;
+ return toTempFile(new URL(urlString));
+ }
+ }
+
+ public static URL createJarURL(JarFile jarFile, String path) throws MalformedURLException {
+ if (jarFile instanceof NestedJarFile) {
+ NestedJarFile nestedJar = (NestedJarFile) jarFile;
+ if (nestedJar.isUnpacked()) {
+ JarFile baseJar = nestedJar.getBaseJar();
+ String basePath = nestedJar.getBasePath();
+ if (baseJar instanceof UnpackedJarFile) {
+ File baseDir = ((UnpackedJarFile) baseJar).getBaseDir();
+ baseDir = new File(baseDir, basePath);
+ return new File(baseDir, path).toURI().toURL();
+ }
+ }
+ }
+ if (jarFile instanceof UnpackedJarFile) {
+ File baseDir = ((UnpackedJarFile) jarFile).getBaseDir();
+ return new File(baseDir, path).toURI().toURL();
+ } else {
+ String urlString = "jar:" + new File(jarFile.getName()).toURI().toURL() + "!/" + path;
+ if (jarUrlRewrite) {
+ // To prevent the lockout of archive, instead of returning a jar url, write the content to a
+ // temp file and return the url of that file.
+ File tempFile = null;
+ try {
+ tempFile = toTempFile(new URL(urlString));
+ } catch (IOException e) {
+ // The JarEntry does not exist!
+ // Return url of a file that does not exist.
+ try {
+ tempFile = FileUtils.createTempFile();
+ tempFile.delete();
+ } catch (IOException ignored) {
+ }
+ }
+ return tempFile.toURI().toURL();
+ } else {
+ return new URL(urlString);
+ }
+ }
+ }
+
+ public static JarFile createJarFile(File jarFile) throws IOException {
+ if (jarFile.isDirectory()) {
+ return new UnpackedJarFile(jarFile);
+ } else {
+ return new JarFile(jarFile);
+ }
+ }
+
+ public static void copyToPackedJar(JarFile inputJar, File outputFile) throws IOException {
+ if (inputJar.getClass() == JarFile.class) {
+ // this is a plain old jar... nothign special
+ FileUtils.copyFile(new File(inputJar.getName()), outputFile);
+ } else if (inputJar instanceof NestedJarFile && ((NestedJarFile) inputJar).isPacked()) {
+ NestedJarFile nestedJarFile = (NestedJarFile) inputJar;
+ JarFile baseJar = nestedJarFile.getBaseJar();
+ String basePath = nestedJarFile.getBasePath();
+ if (baseJar instanceof UnpackedJarFile) {
+ // our target jar is just a file in upacked jar (a plain old directory)... now
+ // we just need to find where it is and copy it to the outptu
+ FileUtils.copyFile(((UnpackedJarFile) baseJar).getFile(basePath), outputFile);
+ } else {
+ // out target is just a plain old jar file directly accessabel from the file system
+ FileUtils.copyFile(new File(baseJar.getName()), outputFile);
+ }
+ } else {
+ // copy out the module contents to a standalone jar file (entry by entry)
+ JarOutputStream out = null;
+ try {
+ out = new JarOutputStream(new FileOutputStream(outputFile));
+ byte[] buffer = new byte[4096];
+ Enumeration entries = inputJar.entries();
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = (ZipEntry) entries.nextElement();
+ InputStream in = inputJar.getInputStream(entry);
+ try {
+ out.putNextEntry(new ZipEntry(entry.getName()));
+ try {
+ int count;
+ while ((count = in.read(buffer)) > 0) {
+ out.write(buffer, 0, count);
+ }
+ } finally {
+ out.closeEntry();
+ }
+ } finally {
+ IOUtils.close(in);
+ }
+ }
+ } finally {
+ IOUtils.close(out);
+ }
+ }
+ }
+
+ public static void jarDirectory(File sourceDirecotry, File destinationFile) throws IOException {
+ JarFile inputJar = new UnpackedJarFile(sourceDirecotry);
+ try {
+ copyToPackedJar(inputJar, destinationFile);
+ } finally {
+ close(inputJar);
+ }
+ }
+
+ private static void createDirectory(File dir) throws IOException {
+ if (dir != null && !dir.exists()) {
+ boolean success = dir.mkdirs();
+ if (!success) {
+ throw new IOException("Cannot create directory " + dir.getAbsolutePath());
+ }
+ }
+ }
+
+ public static void unzipToDirectory(ZipFile zipFile, File destDir) throws IOException {
+ Enumeration entries = zipFile.entries();
+ try {
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = (ZipEntry) entries.nextElement();
+ if (entry.isDirectory()) {
+ File dir = new File(destDir, entry.getName());
+ createDirectory(dir);
+ } else {
+ File file = new File(destDir, entry.getName());
+ createDirectory(file.getParentFile());
+ OutputStream out = null;
+ InputStream in = null;
+ try {
+ out = new BufferedOutputStream(new FileOutputStream(file));
+ in = zipFile.getInputStream(entry);
+ IOUtils.copy(in, out);
+ } finally {
+ IOUtils.close(in);
+ IOUtils.close(out);
+ }
+ }
+ }
+ } finally {
+ zipFile.close();
+ }
+ }
+
+ public static void close(JarFile thing) {
+ if (thing != null) {
+ try {
+ thing.close();
+ } catch (Exception ignored) {
+ }
+ }
+ }
+
+ /**
+ * Determine whether a file is a JAR File.
+ *
+ * Note: Jar file is a zip file with an *optional* META-INF directory.
+ * Therefore, there is no reliable way to check if a file is a Jar file.
+ * So this functions returns the same as calling isZipFile(File).
+ */
+ public static boolean isJarFile(File file) throws IOException {
+ return isZipFile(file);
+ }
+
+ /**
+ * Determine whether a file is a ZIP File.
+ */
+ public static boolean isZipFile(File file) throws IOException {
+ if (file.isDirectory()) {
+ return false;
+ }
+ if (!file.canRead()) {
+ throw new IOException("Cannot read file " + file.getAbsolutePath());
+ }
+ if (file.length() < 4) {
+ return false;
+ }
+ DataInputStream in = null;
+ try {
+ in = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
+ return in.readInt() == 0x504b0304;
+ } finally {
+ IOUtils.close(in);
+ }
+ }
+}
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/JarUtils.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarEntry.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarEntry.java?rev=896339&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarEntry.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarEntry.java Wed Jan 6 07:29:20 2010
@@ -0,0 +1,130 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.kernel.util;
+
+import java.io.IOException;
+import java.security.cert.Certificate;
+import java.util.jar.Attributes;
+import java.util.jar.JarEntry;
+import java.util.jar.Manifest;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class NestedJarEntry extends JarEntry {
+ private final JarEntry baseEntry;
+ private final Manifest manifest;
+
+ public NestedJarEntry(String name, JarEntry baseEntry, Manifest manifest) {
+ super(name);
+ this.baseEntry = baseEntry;
+ this.manifest = manifest;
+ }
+
+ public JarEntry getBaseEntry() {
+ return baseEntry;
+ }
+
+ public Attributes getAttributes() throws IOException {
+ if (manifest == null) {
+ return null;
+ }
+ return manifest.getAttributes(getName());
+ }
+
+ /**
+ * Always return null. This could be implementd by verifing the signatures
+ * in the manifest file against the actual file, but we don't need this for
+ * Geronimo.
+ * @return null
+ */
+ public Certificate[] getCertificates() {
+ return null;
+ }
+
+ public long getTime() {
+ return baseEntry.getTime();
+ }
+
+ public void setTime(long time) {
+ baseEntry.setTime(time);
+ }
+
+ public long getSize() {
+ return baseEntry.getSize();
+ }
+
+ public void setSize(long size) {
+ baseEntry.setSize(size);
+ }
+
+ public long getCompressedSize() {
+ return baseEntry.getCompressedSize();
+ }
+
+ public void setCompressedSize(long csize) {
+ baseEntry.setCompressedSize(csize);
+ }
+
+ public long getCrc() {
+ return baseEntry.getCrc();
+ }
+
+ public void setCrc(long crc) {
+ baseEntry.setCrc(crc);
+ }
+
+ public int getMethod() {
+ return baseEntry.getMethod();
+ }
+
+ public void setMethod(int method) {
+ baseEntry.setMethod(method);
+ }
+
+ public byte[] getExtra() {
+ return baseEntry.getExtra();
+ }
+
+ public void setExtra(byte[] extra) {
+ baseEntry.setExtra(extra);
+ }
+
+ public String getComment() {
+ return baseEntry.getComment();
+ }
+
+ public void setComment(String comment) {
+ baseEntry.setComment(comment);
+ }
+
+ public boolean isDirectory() {
+ return baseEntry.isDirectory();
+ }
+
+ public String toString() {
+ return baseEntry.toString();
+ }
+
+ public int hashCode() {
+ return baseEntry.hashCode();
+ }
+
+ public Object clone() {
+ return new NestedJarEntry(getName(), baseEntry, manifest);
+ }
+}
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarEntry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarEntry.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarEntry.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarFile.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarFile.java?rev=896339&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarFile.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarFile.java Wed Jan 6 07:29:20 2010
@@ -0,0 +1,269 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.kernel.util;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class NestedJarFile extends JarFile {
+ private JarFile baseJar;
+ private String basePath;
+ private boolean isClosed = false;
+ private boolean manifestLoaded = false;
+ private Manifest manifest;
+ private File tempFile;
+
+ public NestedJarFile(JarFile jarFile, String path) throws IOException {
+ super(JarUtils.DUMMY_JAR_FILE);
+
+ // verify that the jar actually contains that path
+ JarEntry targetEntry = jarFile.getJarEntry(path + "/");
+ if (targetEntry == null) {
+ targetEntry = jarFile.getJarEntry(path);
+ if (targetEntry == null) {
+ throw new IOException("Jar entry does not exist: jarFile=" + jarFile.getName() + ", path=" + path);
+ }
+ }
+
+ if (targetEntry.isDirectory()) {
+ if(targetEntry instanceof UnpackedJarEntry) {
+ //unpacked nested module inside unpacked ear
+ File targetFile = ((UnpackedJarEntry) targetEntry).getFile();
+ baseJar = new UnpackedJarFile(targetFile);
+ basePath = "";
+ } else {
+ baseJar = jarFile;
+ if (!path.endsWith("/")) {
+ path += "/";
+ }
+ basePath = path;
+ }
+ } else {
+ if (targetEntry instanceof UnpackedJarEntry) {
+ // for unpacked jars we don't need to copy the jar file
+ // out to a temp directory, since it is already available
+ // as a raw file
+ File targetFile = ((UnpackedJarEntry) targetEntry).getFile();
+ baseJar = new JarFile(targetFile);
+ basePath = "";
+ } else {
+ tempFile = JarUtils.toFile(jarFile, targetEntry.getName());
+ baseJar = new JarFile(tempFile);
+ basePath = "";
+ }
+ }
+ }
+
+ public boolean isUnpacked() {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+
+ return ( basePath.length() > 0 ) ||
+ ( ( baseJar != null ) && ( baseJar instanceof UnpackedJarFile ) );
+ }
+
+ public boolean isPacked() {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+
+ return ( basePath.length() == 0 ) &&
+ ( ( baseJar == null ) || !( baseJar instanceof UnpackedJarFile ) );
+ }
+
+ public JarFile getBaseJar() {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+ return baseJar;
+ }
+
+ public String getBasePath() {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+ return basePath;
+ }
+
+ public Manifest getManifest() throws IOException {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+
+ if (!manifestLoaded) {
+ JarEntry manifestEntry = getBaseEntry("META-INF/MANIFEST.MF");
+
+ if (manifestEntry != null && !manifestEntry.isDirectory()) {
+ InputStream in = null;
+ try {
+ in = baseJar.getInputStream(manifestEntry);
+ manifest = new Manifest(in);
+ } finally {
+ if (in != null) {
+ try {
+ in.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+ }
+ }
+ manifestLoaded = true;
+ }
+ return manifest;
+ }
+
+ public NestedJarEntry getNestedJarEntry(String name) {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+
+ JarEntry baseEntry = getBaseEntry(name);
+ if (baseEntry == null) {
+ return null;
+ }
+ return new NestedJarEntry(name, baseEntry, getManifestSafe());
+ }
+
+ public JarEntry getJarEntry(String name) {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+
+ return getNestedJarEntry(name);
+ }
+
+ public ZipEntry getEntry(String name) {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+
+ return getNestedJarEntry(name);
+ }
+
+ public Enumeration entries() {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+
+ Collection baseEntries = Collections.list(baseJar.entries());
+ Collection entries = new LinkedList();
+ for (Iterator iterator = baseEntries.iterator(); iterator.hasNext();) {
+ JarEntry baseEntry = (JarEntry) iterator.next();
+ String path = baseEntry.getName();
+ if (path.startsWith(basePath)) {
+ entries.add(new NestedJarEntry(path.substring(basePath.length()), baseEntry, getManifestSafe()));
+ }
+ }
+ return Collections.enumeration(entries);
+ }
+
+ public InputStream getInputStream(ZipEntry zipEntry) throws IOException {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+
+ JarEntry baseEntry;
+ if (zipEntry instanceof NestedJarEntry) {
+ baseEntry = ((NestedJarEntry)zipEntry).getBaseEntry();
+ } else {
+ baseEntry = getBaseEntry(zipEntry.getName());
+ }
+
+ if (baseEntry == null) {
+ throw new IOException("Entry not found: name=" + zipEntry.getName());
+ } else if (baseEntry.isDirectory()) {
+ return new IOUtils.EmptyInputStream();
+ }
+ return baseJar.getInputStream(baseEntry);
+ }
+
+ public String getName() {
+ return baseJar.getName();
+ }
+
+ /**
+ * Always returns -1.
+ * @return -1
+ */
+ public int size() {
+ if (isClosed) {
+ throw new IllegalStateException("NestedJarFile is closed");
+ }
+ return -1;
+ }
+
+ public void close() throws IOException {
+ if (isClosed) {
+ return;
+ }
+
+ try {
+ try {
+ super.close();
+ } catch(IOException ignored) {
+ }
+ if (baseJar != null && basePath.length() == 0) {
+ // baseJar is created by us. We should be closing it too.
+ baseJar.close();
+ }
+ } finally {
+ isClosed = true;
+ baseJar = null;
+ basePath = null;
+ manifestLoaded = false;
+ manifest = null;
+ if (tempFile != null) {
+ tempFile.delete();
+ tempFile = null;
+ }
+ }
+ }
+
+ protected void finalize() throws IOException {
+ close();
+ }
+
+ private JarEntry getBaseEntry(String name) {
+ return baseJar.getJarEntry(basePath + name);
+ }
+
+ private Manifest getManifestSafe() {
+ Manifest manifest = null;
+ try {
+ manifest = getManifest();
+ } catch (IOException e) {
+ // ignore
+ }
+ return manifest;
+ }
+
+}
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarFile.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarFile.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/NestedJarFile.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarEntry.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarEntry.java?rev=896339&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarEntry.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarEntry.java Wed Jan 6 07:29:20 2010
@@ -0,0 +1,175 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.kernel.util;
+
+import java.util.jar.JarEntry;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
+import java.io.IOException;
+import java.io.File;
+import java.security.cert.Certificate;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class UnpackedJarEntry extends JarEntry {
+ private final File file;
+ private final Manifest manifest;
+
+ public UnpackedJarEntry(String name, File file, Manifest manifest) {
+ super(name);
+ this.file = file;
+ this.manifest = manifest;
+ }
+
+ public File getFile() {
+ return file;
+ }
+
+ public Attributes getAttributes() throws IOException {
+ if (manifest == null) {
+ return null;
+ }
+ return manifest.getAttributes(getName());
+ }
+
+ /**
+ * Always return null. This could be implementd by verifing the signatures
+ * in the manifest file against the actual file, but we don't need this for
+ * Geronimo.
+ * @return null
+ */
+ public Certificate[] getCertificates() {
+ return null;
+ }
+
+ /**
+ * An unpacked jar is read only, so this method always throws an UnsupportedOperationException.
+ * @param time ignored
+ * @throws UnsupportedOperationException always
+ */
+ public void setTime(long time) throws UnsupportedOperationException {
+ throw new UnsupportedOperationException("Can not change the time of unpacked jar entry");
+ }
+
+ public long getTime() {
+ return file.lastModified();
+ }
+
+ /**
+ * An unpacked jar is read only, so this method always throws an UnsupportedOperationException.
+ * @param size ignored
+ * @throws UnsupportedOperationException always
+ */
+ public void setSize(long size) throws UnsupportedOperationException {
+ throw new UnsupportedOperationException("Can not change the size of unpacked jar entry");
+ }
+
+ public long getSize() {
+ if (file.isDirectory()) {
+ return -1;
+ } else {
+ return file.length();
+ }
+ }
+
+ /**
+ * An unpacked jar is not compressed, so this method returns getSize().
+ * @return getSize()
+ */
+ public long getCompressedSize() {
+ return getSize();
+ }
+
+ /**
+ * An unpacked jar is read only, so this method always throws an UnsupportedOperationException.
+ * @param compressedSize ignored
+ * @throws UnsupportedOperationException always
+ */
+ public void setCompressedSize(long compressedSize) {
+ throw new UnsupportedOperationException("Can not change the compressed size of unpacked jar entry");
+ }
+
+ public long getCrc() {
+ return super.getCrc(); //To change body of overridden methods use File | Settings | File Templates.
+ }
+
+ /**
+ * An unpacked jar is read only, so this method always throws an UnsupportedOperationException.
+ * @param crc ignored
+ * @throws UnsupportedOperationException always
+ */
+ public void setCrc(long crc) {
+ throw new UnsupportedOperationException("Can not change the crc of unpacked jar entry");
+ }
+
+ public int getMethod() {
+ return ZipEntry.STORED;
+ }
+
+ /**
+ * An unpacked jar is read only, so this method always throws an UnsupportedOperationException.
+ * @param method ignored
+ * @throws UnsupportedOperationException always
+ */
+ public void setMethod(int method) {
+ throw new UnsupportedOperationException("Can not change the method of unpacked jar entry");
+ }
+
+ /**
+ * Always returns null.
+ * @return null
+ */
+ public byte[] getExtra() {
+ return null;
+ }
+
+ /**
+ * An unpacked jar is read only, so this method always throws an UnsupportedOperationException.
+ * @param extra ignored
+ * @throws UnsupportedOperationException always
+ */
+ public void setExtra(byte[] extra) {
+ throw new UnsupportedOperationException("Can not change the extra data of unpacked jar entry");
+ }
+
+ /**
+ * Always returns null.
+ * @return null
+ */
+ public String getComment() {
+ return null;
+ }
+
+ /**
+ * An unpacked jar is read only, so this method always throws an UnsupportedOperationException.
+ * @param comment ignored
+ * @throws UnsupportedOperationException always
+ */
+ public void setComment(String comment) {
+ throw new UnsupportedOperationException("Can not change the comment of unpacked jar entry");
+ }
+
+ public boolean isDirectory() {
+ return file.isDirectory();
+ }
+
+ public Object clone() {
+ return new UnpackedJarEntry(getName(), file, manifest);
+ }
+}
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarEntry.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarEntry.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarEntry.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarFile.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarFile.java?rev=896339&view=auto
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarFile.java (added)
+++ geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarFile.java Wed Jan 6 07:29:20 2010
@@ -0,0 +1,164 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.geronimo.kernel.util;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class UnpackedJarFile extends JarFile {
+ private final File baseDir;
+ private boolean manifestLoaded = false;
+ private Manifest manifest;
+
+ public UnpackedJarFile(File baseDir) throws IOException {
+ super(JarUtils.DUMMY_JAR_FILE);
+ this.baseDir = baseDir;
+ if (!baseDir.isDirectory()) {
+ throw new IOException("File must be a directory: file=" + baseDir.getAbsolutePath());
+ }
+ }
+
+ public File getBaseDir() {
+ return baseDir;
+ }
+
+ public Manifest getManifest() throws IOException {
+ if (!manifestLoaded) {
+ File manifestFile = getFile("META-INF/MANIFEST.MF");
+
+ if (manifestFile != null && manifestFile.isFile()) {
+ FileInputStream in = null;
+ try {
+ in = new FileInputStream(manifestFile);
+ manifest = new Manifest(in);
+ } finally {
+ if (in != null) {
+ try {
+ in.close();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+ }
+ }
+ manifestLoaded = true;
+ }
+ return manifest;
+ }
+
+ public UnpackedJarEntry getUnpackedJarEntry(String name) {
+ File file = getFile(name);
+ if (file == null) {
+ return null;
+ }
+ return new UnpackedJarEntry(name, file, getManifestSafe());
+ }
+
+ public JarEntry getJarEntry(String name) {
+ return getUnpackedJarEntry(name);
+ }
+
+ public ZipEntry getEntry(String name) {
+ return getUnpackedJarEntry(name);
+ }
+
+ public Enumeration entries() {
+ Collection files = FileUtils.listRecursiveFiles(baseDir);
+
+ Manifest manifest = getManifestSafe();
+ LinkedList entries = new LinkedList();
+ URI baseURI = baseDir.getAbsoluteFile().toURI();
+ for (Iterator iterator = files.iterator(); iterator.hasNext();) {
+ File entryFile = ((File) iterator.next()).getAbsoluteFile();
+ URI entryURI = entryFile.toURI();
+ URI relativeURI = baseURI.relativize(entryURI);
+ entries.add(new UnpackedJarEntry(relativeURI.getPath(), entryFile, manifest));
+ }
+ return Collections.enumeration(entries);
+ }
+
+ public InputStream getInputStream(ZipEntry zipEntry) throws IOException {
+ File file;
+ if (zipEntry instanceof UnpackedJarEntry) {
+ file = ((UnpackedJarEntry)zipEntry).getFile();
+ } else {
+ file = getFile(zipEntry.getName());
+ }
+
+ if (file == null) {
+ throw new IOException("Entry not found: name=" + zipEntry.getName());
+ } else if (file.isDirectory()) {
+ return new IOUtils.EmptyInputStream();
+ }
+ return new FileInputStream(file);
+ }
+
+ public String getName() {
+ return baseDir.getAbsolutePath();
+ }
+
+ /**
+ * Always returns -1.
+ * @return -1
+ */
+ public int size() {
+ return -1;
+ }
+
+ public void close() throws IOException {
+ try {
+ super.close();
+ } catch(IOException ignored) {
+ }
+ }
+
+ protected void finalize() throws IOException {
+ }
+
+ public File getFile(String name) {
+ File file = new File(baseDir, name);
+ if (!file.exists()) {
+ return null;
+ }
+ return file;
+ }
+
+ private Manifest getManifestSafe() {
+ Manifest manifest = null;
+ try {
+ manifest = getManifest();
+ } catch (IOException e) {
+ // ignore
+ }
+ return manifest;
+ }
+}
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarFile.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarFile.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: geronimo/server/trunk/framework/modules/geronimo-kernel/src/main/java/org/apache/geronimo/kernel/util/UnpackedJarFile.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: geronimo/server/trunk/framework/modules/geronimo-kernel/src/test/java/org/apache/geronimo/kernel/mock/MockConfigStore.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-kernel/src/test/java/org/apache/geronimo/kernel/mock/MockConfigStore.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-kernel/src/test/java/org/apache/geronimo/kernel/mock/MockConfigStore.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-kernel/src/test/java/org/apache/geronimo/kernel/mock/MockConfigStore.java Wed Jan 6 07:29:20 2010
@@ -34,7 +34,7 @@
import org.apache.geronimo.kernel.config.NoSuchConfigException;
import org.apache.geronimo.kernel.config.NullConfigurationStore;
import org.apache.geronimo.kernel.repository.Artifact;
-import org.apache.geronimo.kernel.util.IOUtils;
+import org.apache.geronimo.kernel.util.FileUtils;
/**
* ???
@@ -45,7 +45,7 @@
extends NullConfigurationStore
{
protected static final Naming naming = new Jsr77Naming();
-
+
protected final Map<Artifact, File> locations = new HashMap<Artifact, File>();
private Map<Artifact, ConfigurationData> configs = new HashMap<Artifact, ConfigurationData>();
@@ -87,7 +87,7 @@
if (file == null) {
throw new NoSuchConfigException(configId);
}
- return IOUtils.search(file, pattern);
+ return FileUtils.search(file, pattern);
}
public void installFake(Artifact configId, File file) {
Modified: geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/ArchiverGBean.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/ArchiverGBean.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/ArchiverGBean.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-plugin/src/main/java/org/apache/geronimo/system/plugin/ArchiverGBean.java Wed Jan 6 07:29:20 2010
@@ -30,7 +30,7 @@
import org.apache.geronimo.gbean.GBeanInfo;
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.kernel.repository.Artifact;
-import org.apache.geronimo.kernel.util.IOUtils;
+import org.apache.geronimo.kernel.util.FileUtils;
import org.apache.geronimo.system.serverinfo.ServerInfo;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.MatchingTask;
@@ -55,22 +55,22 @@
public void addExclude(String pattern) {
this.excludes.add(pattern);
}
-
+
public void removeExclude(String pattern) {
this.excludes.remove(pattern);
}
-
+
private void removeExcludes(File source, Map<String, File> all) {
Map<String, File> matches = new HashMap<String, File>();
for (String exclude : this.excludes) {
- IOUtils.find(source, exclude, matches);
+ FileUtils.find(source, exclude, matches);
}
for (String exclude : matches.keySet()) {
all.remove(exclude);
}
}
-
+
public File archive(String sourcePath, String destPath, Artifact artifact) throws //ArchiverException,
IOException {
File source = serverInfo.resolve(sourcePath);
@@ -130,31 +130,31 @@
// mark parent directories non-empty
for (File parentDir = sourceFile.getParentFile();
parentDir != null && !parentDir.equals(source);
- parentDir = parentDir.getParentFile()) {
+ parentDir = parentDir.getParentFile()) {
emptyDirs.put(parentDir, Boolean.FALSE);
}
-
- } else if (sourceFile.isDirectory()) {
- Boolean isEmpty = emptyDirs.get(sourceFile);
- if (isEmpty == null) {
+
+ } else if (sourceFile.isDirectory()) {
+ Boolean isEmpty = emptyDirs.get(sourceFile);
+ if (isEmpty == null) {
emptyDirs.put(sourceFile, Boolean.TRUE);
// mark parent directories non-empty
for (File parentDir = sourceFile.getParentFile();
parentDir != null && !parentDir.equals(source);
- parentDir = parentDir.getParentFile()) {
+ parentDir = parentDir.getParentFile()) {
emptyDirs.put(parentDir, Boolean.FALSE);
}
- }
+ }
}
}
-
+
if (!all.isEmpty()) {
emptyDirs.put(source, Boolean.FALSE);
}
-
+
String sourceDirPath = source.getAbsolutePath();
for (Map.Entry<File, Boolean> entry : emptyDirs.entrySet()) {
- if (entry.getValue().booleanValue()) {
+ if (entry.getValue().booleanValue()) {
String emptyDirPath = entry.getKey().getAbsolutePath();
String relativeDir = emptyDirPath.substring(sourceDirPath.length());
relativeDir = relativeDir.replace('\\', '/');
@@ -162,9 +162,9 @@
}
}
emptyDirs.clear();
-
+
all.clear();
-
+
// add execute permissions to all non-batch files in the bin/ directory
File bin = new File(source, "bin");
if (bin.exists()) {
Modified: geronimo/server/trunk/framework/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-service-builder/src/main/java/org/apache/geronimo/deployment/service/ServiceConfigBuilder.java Wed Jan 6 07:29:20 2010
@@ -29,13 +29,13 @@
import java.util.jar.JarFile;
import javax.xml.namespace.QName;
+
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.deployment.ConfigurationBuilder;
import org.apache.geronimo.deployment.DeploymentContext;
import org.apache.geronimo.deployment.ModuleIDBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
-import org.apache.geronimo.deployment.util.DeploymentUtil;
import org.apache.geronimo.deployment.xbeans.ArtifactType;
import org.apache.geronimo.deployment.xbeans.EnvironmentType;
import org.apache.geronimo.deployment.xbeans.ModuleDocument;
@@ -43,11 +43,11 @@
import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
import org.apache.geronimo.gbean.AbstractName;
import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.gbean.annotation.GBean;
import org.apache.geronimo.gbean.annotation.ParamAttribute;
import org.apache.geronimo.gbean.annotation.ParamReference;
import org.apache.geronimo.gbean.annotation.ParamSpecial;
import org.apache.geronimo.gbean.annotation.SpecialAttributeType;
-import org.apache.geronimo.gbean.annotation.GBean;
import org.apache.geronimo.kernel.GBeanNotFoundException;
import org.apache.geronimo.kernel.Kernel;
import org.apache.geronimo.kernel.Naming;
@@ -61,6 +61,8 @@
import org.apache.geronimo.kernel.repository.ArtifactResolver;
import org.apache.geronimo.kernel.repository.Environment;
import org.apache.geronimo.kernel.repository.Repository;
+import org.apache.geronimo.kernel.util.FileUtils;
+import org.apache.geronimo.kernel.util.JarUtils;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
@@ -138,7 +140,7 @@
if (planFile != null) {
xmlObject = XmlBeansUtil.parse(planFile.toURI().toURL(), getClass().getClassLoader());
} else {
- URL path = DeploymentUtil.createJarURL(jarFile, "META-INF/geronimo-service.xml");
+ URL path = JarUtils.createJarURL(jarFile, "META-INF/geronimo-service.xml");
try {
xmlObject = XmlBeansUtil.parse(path, getClass().getClassLoader());
} catch (FileNotFoundException e) {
@@ -235,7 +237,7 @@
AbstractName moduleName = naming.createRootName(configId, configId.toString(), SERVICE_MODULE);
context = new DeploymentContext(outfile,
- inPlaceDeployment && null != jar ? DeploymentUtil.toFile(jar) : null,
+ inPlaceDeployment && null != jar ? JarUtils.toFile(jar) : null,
environment,
moduleName,
ConfigurationModuleType.SERVICE,
@@ -275,7 +277,7 @@
// ignore error on cleanu
}
if (directory != null) {
- DeploymentUtil.recursiveDelete(directory);
+ FileUtils.recursiveDelete(directory);
}
}
Modified: geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/RepositoryConfigurationStore.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/RepositoryConfigurationStore.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/RepositoryConfigurationStore.java (original)
+++ geronimo/server/trunk/framework/modules/geronimo-system/src/main/java/org/apache/geronimo/system/configuration/RepositoryConfigurationStore.java Wed Jan 6 07:29:20 2010
@@ -47,17 +47,19 @@
import org.apache.geronimo.kernel.config.ConfigurationInfo;
import org.apache.geronimo.kernel.config.ConfigurationStore;
import org.apache.geronimo.kernel.config.ConfigurationUtil;
-import org.apache.geronimo.kernel.util.IOUtils;
import org.apache.geronimo.kernel.config.InvalidConfigException;
import org.apache.geronimo.kernel.config.NoOConfigurationDataTransformer;
import org.apache.geronimo.kernel.config.NoSuchConfigException;
import org.apache.geronimo.kernel.repository.Artifact;
import org.apache.geronimo.kernel.repository.WritableListableRepository;
+import org.apache.geronimo.kernel.util.FileUtils;
+import org.apache.geronimo.kernel.util.IOUtils;
+import org.apache.geronimo.kernel.util.JarUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * Implementation of ConfigurationStore GBean that installs/loads Configurations from a
+ * Implementation of ConfigurationStore GBean that installs/loads Configurations from a
* repository.
*
* @version $Rev$ $Date$
@@ -82,7 +84,7 @@
WritableListableRepository repository) {
this(kernel, objectName, abstractName, repository, NoOConfigurationDataTransformer.SINGLETON);
}
-
+
public RepositoryConfigurationStore(@ParamSpecial(type=SpecialAttributeType.kernel) Kernel kernel,
@ParamSpecial(type=SpecialAttributeType.objectName) String objectName,
@ParamSpecial(type=SpecialAttributeType.abstractName) AbstractName abstractName,
@@ -148,7 +150,7 @@
configurationData = ConfigurationUtil.readConfigurationData(in);
} finally {
IOUtils.close(in);
- IOUtils.close(jarFile);
+ JarUtils.close(jarFile);
}
}
} catch (ClassNotFoundException e) {
@@ -162,7 +164,7 @@
}
transformer.transformDependencies(configurationData);
-
+
return configurationData;
}
@@ -188,7 +190,7 @@
} catch (IOException e) {
return false;
} finally {
- IOUtils.close(jarFile);
+ JarUtils.close(jarFile);
}
}
}
@@ -249,7 +251,7 @@
if (moduleName != null) {
location = new File(location, moduleName);
}
- return IOUtils.search(location, path);
+ return FileUtils.search(location, path);
/* if(path == null) {
return Collections.singleton(location.toURL());
} else {
@@ -265,7 +267,7 @@
if (moduleName != null) {
path = moduleName + "/" +path;
}
- return IOUtils.search(location, path);
+ return FileUtils.search(location, path);
}
}
@@ -297,7 +299,7 @@
if (all.length == 0) {
// it is an empty directory
ZipEntry entry = new ZipEntry(prefix);
- out.putNextEntry(entry);
+ out.putNextEntry(entry);
}
for (File file : all) {
if (file.isDirectory()) {
@@ -359,7 +361,7 @@
repository.copyToRepository(source, configId, null);
} else if (source.isDirectory()) {
// directory is in wrong place -- directory copy
- IOUtils.recursiveCopy(source, destination);
+ FileUtils.recursiveCopy(source, destination);
} else {
throw new InvalidConfigException("Unable to install configuration from " + source);
}
@@ -382,7 +384,7 @@
// don't really care
}
File location = repository.getLocation(configId);
- IOUtils.recursiveDelete(location);
+ FileUtils.recursiveDelete(location);
// Number of directory levels up, to check and delete empty parent directories in the repo
int dirDepth = 0;
@@ -424,7 +426,7 @@
throw ioException;
}
}
-
+
transformer.remove(configId);
}
@@ -481,7 +483,7 @@
configurationInfo = ConfigurationUtil.readConfigurationInfo(in, getAbstractName(), inPlaceLocation);
} finally {
IOUtils.close(in);
- IOUtils.close(jarFile);
+ JarUtils.close(jarFile);
}
}
Modified: geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/AriesAppConfigBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/AriesAppConfigBuilder.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/AriesAppConfigBuilder.java (original)
+++ geronimo/server/trunk/plugins/aries/geronimo-aries-builder/src/main/java/org/apache/geronimo/aries/builder/AriesAppConfigBuilder.java Wed Jan 6 07:29:20 2010
@@ -35,7 +35,6 @@
import org.apache.geronimo.deployment.ConfigurationBuilder;
import org.apache.geronimo.deployment.DeploymentContext;
import org.apache.geronimo.deployment.ModuleIDBuilder;
-import org.apache.geronimo.deployment.util.DeploymentUtil;
import org.apache.geronimo.gbean.AbstractName;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.gbean.annotation.GBean;
@@ -56,6 +55,7 @@
import org.apache.geronimo.kernel.repository.Environment;
import org.apache.geronimo.kernel.repository.ImportType;
import org.apache.geronimo.kernel.repository.WritableListableRepository;
+import org.apache.geronimo.kernel.util.JarUtils;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.ServiceReference;
@@ -254,7 +254,7 @@
AbstractName moduleName = naming.createRootName(configId, configId.toString(), "AriesApplication");
try {
DeploymentContext context = new DeploymentContext(outfile,
- inPlaceDeployment && null != jarFile ? DeploymentUtil.toFile(jarFile) : null,
+ inPlaceDeployment && null != jarFile ? JarUtils.toFile(jarFile) : null,
environment,
moduleName,
ConfigurationModuleType.SERVICE,
Modified: geronimo/server/trunk/plugins/axis/geronimo-axis-builder/src/main/java/org/apache/geronimo/axis/builder/AxisBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/axis/geronimo-axis-builder/src/main/java/org/apache/geronimo/axis/builder/AxisBuilder.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/axis/geronimo-axis-builder/src/main/java/org/apache/geronimo/axis/builder/AxisBuilder.java (original)
+++ geronimo/server/trunk/plugins/axis/geronimo-axis-builder/src/main/java/org/apache/geronimo/axis/builder/AxisBuilder.java Wed Jan 6 07:29:20 2010
@@ -78,7 +78,6 @@
import org.apache.geronimo.xbeans.j2ee.JavaXmlTypeMappingType;
import org.apache.geronimo.xbeans.j2ee.ServiceEndpointInterfaceMappingType;
import org.apache.geronimo.xbeans.j2ee.ServiceEndpointMethodMappingType;
-import org.apache.geronimo.deployment.util.DeploymentUtil;
import org.apache.geronimo.deployment.DeploymentContext;
import org.apache.geronimo.deployment.service.EnvironmentBuilder;
import org.apache.geronimo.webservices.SerializableWebServiceContainerFactoryGBean;
@@ -89,6 +88,7 @@
import org.apache.geronimo.kernel.GBeanAlreadyExistsException;
import org.apache.geronimo.kernel.osgi.BundleClassLoader;
import org.apache.geronimo.kernel.repository.Environment;
+import org.apache.geronimo.kernel.util.JarUtils;
import org.osgi.framework.Bundle;
/**
@@ -118,7 +118,7 @@
public void findWebServices(JarFile moduleFile, boolean isEJB, Map servletLocations, Environment environment, Map sharedContext) throws DeploymentException {
final String path = isEJB ? "META-INF/webservices.xml" : "WEB-INF/webservices.xml";
try {
- URL wsDDUrl = DeploymentUtil.createJarURL(moduleFile, path);
+ URL wsDDUrl = JarUtils.createJarURL(moduleFile, path);
Map portMap = WSDescriptorParser.parseWebServiceDescriptor(wsDDUrl, moduleFile, isEJB, servletLocations);
if (portMap != null) {
if (defaultEnvironment != null) {
Modified: geronimo/server/trunk/plugins/client/geronimo-client-builder/src/main/java/org/apache/geronimo/client/builder/AppClientModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/client/geronimo-client-builder/src/main/java/org/apache/geronimo/client/builder/AppClientModuleBuilder.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/client/geronimo-client-builder/src/main/java/org/apache/geronimo/client/builder/AppClientModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/client/geronimo-client-builder/src/main/java/org/apache/geronimo/client/builder/AppClientModuleBuilder.java Wed Jan 6 07:29:20 2010
@@ -45,8 +45,6 @@
import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
import org.apache.geronimo.deployment.service.EnvironmentBuilder;
-import org.apache.geronimo.deployment.util.DeploymentUtil;
-import org.apache.geronimo.deployment.util.NestedJarFile;
import org.apache.geronimo.deployment.xbeans.EnvironmentType;
import org.apache.geronimo.deployment.xbeans.PatternType;
import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
@@ -57,8 +55,8 @@
import org.apache.geronimo.gbean.GBeanInfoBuilder;
import org.apache.geronimo.gbean.GBeanLifecycle;
import org.apache.geronimo.gbean.SingleElementCollection;
-import org.apache.geronimo.j2ee.deployment.ApplicationInfo;
import org.apache.geronimo.j2ee.deployment.AppClientModule;
+import org.apache.geronimo.j2ee.deployment.ApplicationInfo;
import org.apache.geronimo.j2ee.deployment.ConnectorModule;
import org.apache.geronimo.j2ee.deployment.CorbaGBeanNameSource;
import org.apache.geronimo.j2ee.deployment.EARContext;
@@ -81,6 +79,9 @@
import org.apache.geronimo.kernel.repository.Environment;
import org.apache.geronimo.kernel.repository.MissingDependencyException;
import org.apache.geronimo.kernel.repository.Repository;
+import org.apache.geronimo.kernel.util.FileUtils;
+import org.apache.geronimo.kernel.util.JarUtils;
+import org.apache.geronimo.kernel.util.NestedJarFile;
import org.apache.geronimo.schema.SchemaConversionUtils;
import org.apache.geronimo.security.deploy.SubjectInfo;
import org.apache.geronimo.xbeans.geronimo.client.GerApplicationClientDocument;
@@ -265,12 +266,12 @@
ApplicationClientType appClient = null;
try {
if (specDDUrl == null) {
- specDDUrl = DeploymentUtil.createJarURL(moduleFile, "META-INF/application-client.xml");
+ specDDUrl = JarUtils.createJarURL(moduleFile, "META-INF/application-client.xml");
}
// read in the entire specDD as a string, we need this for getDeploymentDescriptor
// on the J2ee management object
- specDD = DeploymentUtil.readAll(specDDUrl);
+ specDD = JarUtils.readAll(specDDUrl);
} catch (Exception e) {
//construct a default spec dd
ApplicationClientDocument appClientDoc = ApplicationClientDocument.Factory.newInstance();
@@ -413,7 +414,7 @@
if (plan != null) {
rawPlan = XmlBeansUtil.parse((File) plan);
} else {
- URL path = DeploymentUtil.createJarURL(moduleFile, "META-INF/geronimo-application-client.xml");
+ URL path = JarUtils.createJarURL(moduleFile, "META-INF/geronimo-application-client.xml");
rawPlan = XmlBeansUtil.parse(path, getClass().getClassLoader());
}
}
@@ -659,7 +660,7 @@
addManifestClassPath(appClientDeploymentContext, appClientModule.getEarFile(), moduleFile, moduleBase);
// get the classloader
- Bundle appClientClassBundle = appClientDeploymentContext.getDeploymentBundle();
+ Bundle appClientClassBundle = appClientDeploymentContext.getDeploymentBundle();
// pop in all the gbeans declared in the geronimo app client file
if (geronimoAppClient != null) {
@@ -908,7 +909,7 @@
private boolean cleanupAppClientDir(File configurationDir) {
LinkedList<String> cannotBeDeletedList = new LinkedList<String>();
- if (!DeploymentUtil.recursiveDelete(configurationDir, cannotBeDeletedList)) {
+ if (!FileUtils.recursiveDelete(configurationDir, cannotBeDeletedList)) {
// Output a message to help user track down file problem
log.warn("Unable to delete " + cannotBeDeletedList.size() +
" files while recursively deleting directory "
Modified: geronimo/server/trunk/plugins/clustering/geronimo-deploy-farm/src/main/java/org/apache/geronimo/farm/deployment/BasicClusterConfigurationStore.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/clustering/geronimo-deploy-farm/src/main/java/org/apache/geronimo/farm/deployment/BasicClusterConfigurationStore.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/clustering/geronimo-deploy-farm/src/main/java/org/apache/geronimo/farm/deployment/BasicClusterConfigurationStore.java (original)
+++ geronimo/server/trunk/plugins/clustering/geronimo-deploy-farm/src/main/java/org/apache/geronimo/farm/deployment/BasicClusterConfigurationStore.java Wed Jan 6 07:29:20 2010
@@ -26,7 +26,7 @@
import org.apache.geronimo.gbean.annotation.ParamReference;
import org.apache.geronimo.kernel.config.ConfigurationData;
import org.apache.geronimo.kernel.config.ConfigurationStore;
-import org.apache.geronimo.kernel.util.IOUtils;
+import org.apache.geronimo.kernel.util.FileUtils;
import org.apache.geronimo.kernel.config.InvalidConfigException;
import org.apache.geronimo.kernel.config.NoSuchConfigException;
import org.apache.geronimo.kernel.repository.Artifact;
@@ -66,7 +66,7 @@
}
protected void deleteDir(File packedConfigurationDir) {
- IOUtils.recursiveDelete(packedConfigurationDir);
+ FileUtils.recursiveDelete(packedConfigurationDir);
}
protected DirectoryPackager newDirectoryPackager() {
Modified: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java?rev=896339&r1=896338&r2=896339&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java (original)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ConnectorModuleBuilder.java Wed Jan 6 07:29:20 2010
@@ -42,16 +42,6 @@
import org.apache.geronimo.common.DeploymentException;
import org.apache.geronimo.common.propertyeditor.PropertyEditors;
-import org.apache.geronimo.connector.wrapper.ActivationSpecWrapperGBean;
-import org.apache.geronimo.connector.wrapper.AdminObjectWrapper;
-import org.apache.geronimo.connector.wrapper.AdminObjectWrapperGBean;
-import org.apache.geronimo.connector.wrapper.JCAResourceImplGBean;
-import org.apache.geronimo.connector.wrapper.ResourceAdapterImplGBean;
-import org.apache.geronimo.connector.wrapper.ResourceAdapterModuleImplGBean;
-import org.apache.geronimo.connector.wrapper.ResourceAdapterWrapperGBean;
-import org.apache.geronimo.connector.wrapper.outbound.ManagedConnectionFactoryWrapper;
-import org.apache.geronimo.connector.wrapper.outbound.JCAConnectionFactoryImplGBean;
-import org.apache.geronimo.connector.wrapper.outbound.ManagedConnectionFactoryWrapperGBean;
import org.apache.geronimo.connector.outbound.connectionmanagerconfig.LocalTransactions;
import org.apache.geronimo.connector.outbound.connectionmanagerconfig.NoPool;
import org.apache.geronimo.connector.outbound.connectionmanagerconfig.NoTransactions;
@@ -61,11 +51,20 @@
import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionLog;
import org.apache.geronimo.connector.outbound.connectionmanagerconfig.TransactionSupport;
import org.apache.geronimo.connector.outbound.connectionmanagerconfig.XATransactions;
+import org.apache.geronimo.connector.wrapper.ActivationSpecWrapperGBean;
+import org.apache.geronimo.connector.wrapper.AdminObjectWrapper;
+import org.apache.geronimo.connector.wrapper.AdminObjectWrapperGBean;
+import org.apache.geronimo.connector.wrapper.JCAResourceImplGBean;
+import org.apache.geronimo.connector.wrapper.ResourceAdapterImplGBean;
+import org.apache.geronimo.connector.wrapper.ResourceAdapterModuleImplGBean;
+import org.apache.geronimo.connector.wrapper.ResourceAdapterWrapperGBean;
+import org.apache.geronimo.connector.wrapper.outbound.JCAConnectionFactoryImplGBean;
+import org.apache.geronimo.connector.wrapper.outbound.ManagedConnectionFactoryWrapper;
+import org.apache.geronimo.connector.wrapper.outbound.ManagedConnectionFactoryWrapperGBean;
import org.apache.geronimo.deployment.ModuleIDBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilder;
import org.apache.geronimo.deployment.NamespaceDrivenBuilderCollection;
import org.apache.geronimo.deployment.service.EnvironmentBuilder;
-import org.apache.geronimo.deployment.util.DeploymentUtil;
import org.apache.geronimo.deployment.xbeans.EnvironmentType;
import org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil;
import org.apache.geronimo.gbean.AbstractName;
@@ -91,6 +90,7 @@
import org.apache.geronimo.kernel.config.Configuration;
import org.apache.geronimo.kernel.config.ConfigurationStore;
import org.apache.geronimo.kernel.repository.Environment;
+import org.apache.geronimo.kernel.util.JarUtils;
import org.apache.geronimo.management.JCAConnectionFactory;
import org.apache.geronimo.management.geronimo.JCAAdminObject;
import org.apache.geronimo.management.geronimo.JCAResourceAdapter;
@@ -121,9 +121,9 @@
import org.apache.xmlbeans.XmlDocumentProperties;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
+import org.osgi.framework.Bundle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.osgi.framework.Bundle;
/**
* @version $Rev:385659 $ $Date$
@@ -222,12 +222,12 @@
XmlObject connector;
try {
if (specDDUrl == null) {
- specDDUrl = DeploymentUtil.createJarURL(moduleFile, "META-INF/ra.xml");
+ specDDUrl = JarUtils.createJarURL(moduleFile, "META-INF/ra.xml");
}
// read in the entire specDD as a string, we need this for getDeploymentDescriptor
// on the J2ee management object
- specDD = DeploymentUtil.readAll(specDDUrl);
+ specDD = JarUtils.readAll(specDDUrl);
} catch (Exception e) {
//no ra.xml, not for us.
return null;
@@ -255,7 +255,7 @@
if (plan != null) {
gerConnectorDoc = GerConnectorDocument.Factory.parse((File) plan, XmlBeansUtil.createXmlOptions(errors));
} else {
- URL path = DeploymentUtil.createJarURL(moduleFile, "META-INF/geronimo-ra.xml");
+ URL path = JarUtils.createJarURL(moduleFile, "META-INF/geronimo-ra.xml");
gerConnectorDoc = GerConnectorDocument.Factory.parse(path, XmlBeansUtil.createXmlOptions(errors));
}
if (errors.size() > 0) {