org.lilyproject.lilyservertestfw.ConfUtil.java Source code

Java tutorial

Introduction

Here is the source code for org.lilyproject.lilyservertestfw.ConfUtil.java

Source

/*
 * Copyright 2011 Outerthought bvba
 *
 * Licensed 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.lilyproject.lilyservertestfw;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.JarURLConnection;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Enumeration;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils;

public class ConfUtil {
    public static final String CONF_RESOURCE_PATH = "org/lilyproject/lilyservertestfw/conf/";

    private ConfUtil() {
    }

    public static void copyConfResources(URL confUrl, String confResourcePath, File confDir)
            throws IOException, URISyntaxException {
        URLConnection urlConnection = confUrl.openConnection();
        if (urlConnection instanceof JarURLConnection) {
            copyFromJar(confDir, confResourcePath, (JarURLConnection) urlConnection);
        } else {
            FileUtils.copyDirectory(new File(confUrl.toURI()), confDir);
        }
    }

    public static void copyFromJar(File confDir, String confResourcePath, JarURLConnection jarConnection)
            throws IOException {
        JarFile jarFile = jarConnection.getJarFile();
        Enumeration<JarEntry> entries = jarFile.entries();
        while (entries.hasMoreElements()) {
            JarEntry entry = entries.nextElement();
            if (entry.getName().startsWith(confResourcePath)) {
                String fileName = StringUtils.removeStart(entry.getName(), confResourcePath);
                if (entry.isDirectory()) {
                    File subDir = new File(confDir, fileName);
                    subDir.mkdirs();
                } else {
                    InputStream entryInputStream = null;
                    try {
                        entryInputStream = jarFile.getInputStream(entry);
                        FileUtils.copyInputStreamToFile(entryInputStream, new File(confDir, fileName));
                    } finally {
                        if (entryInputStream != null) {
                            entryInputStream.close();
                        }
                    }
                }
            }
        }
    }
}