blob: 67b60014536c2bcb542ce05e005919e0d097e0df [file] [log] [blame]
/*
* 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 tests.support.resource;
import tests.support.Support_Configuration;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
public class Support_Resources {
public static final String RESOURCE_PACKAGE = "/tests/resources/";
public static final String RESOURCE_PACKAGE_NAME = "tests.resources";
public static InputStream getStream(String name) {
return Support_Resources.class.getResourceAsStream(RESOURCE_PACKAGE
+ name);
}
public static String getURL(String name) {
String folder = null;
String fileName = name;
File resources = createTempFolder();
int index = name.lastIndexOf("/");
if (index != -1) {
folder = name.substring(0, index);
name = name.substring(index + 1);
}
copyFile(resources, folder, name);
URL url = null;
String resPath = resources.toString();
if (resPath.charAt(0) == '/' || resPath.charAt(0) == '\\') {
resPath = resPath.substring(1);
}
try {
url = new URL("file:/" + resPath + "/" + fileName);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return url.toString();
}
public static File createTempFolder() {
File folder = null;
try {
folder = File.createTempFile("hyts_resources", "", null);
folder.delete();
folder.mkdirs();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
folder.deleteOnExit();
return folder;
}
public static File copyFile(File root, String folder, String file) {
File f;
if (folder != null) {
f = new File(root.toString() + "/" + folder);
if (!f.exists()) {
f.mkdirs();
f.deleteOnExit();
}
} else {
f = root;
}
File dest = new File(f.toString() + "/" + file);
InputStream in = Support_Resources.getStream(folder == null ? file
: folder + "/" + file);
try {
copyLocalFileto(dest, in);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dest;
}
public static File createTempFile(String suffix) throws IOException {
return File.createTempFile("hyts_", suffix, null);
}
public static void copyLocalFileto(File dest, InputStream in)
throws FileNotFoundException, IOException {
if (!dest.exists()) {
FileOutputStream out = new FileOutputStream(dest);
int result;
byte[] buf = new byte[4096];
while ((result = in.read(buf)) != -1) {
out.write(buf, 0, result);
}
in.close();
out.close();
dest.deleteOnExit();
}
}
public static File getExternalLocalFile(String url) throws IOException,
MalformedURLException {
File resources = createTempFolder();
InputStream in = new URL(url).openStream();
File temp = new File(resources.toString() + "/local.tmp");
copyLocalFileto(temp, in);
return temp;
}
public static String getResourceURL(String resource) {
return "http://" + Support_Configuration.TestResources + resource;
}
/**
* Util method to load resource files
*
* @param name - name of resource file
* @return - resource input stream
*/
public static InputStream getResourceStream(String name) {
InputStream is = Support_Resources.class.getResourceAsStream(name);
if (is == null) {
name = RESOURCE_PACKAGE + name;
is = Support_Resources.class.getResourceAsStream(name);
if (is == null) {
throw new RuntimeException("Failed to load resource: " + name);
}
}
return is;
}
/**
* Util method to write resource files directly to an OutputStream.
*
* @param name - name of resource file.
* @param out - OutputStream to write to.
* @return - number of bytes written to out.
*/
public static int writeResourceToStream(String name, OutputStream out) {
InputStream input = getResourceStream(name);
byte[] buffer = new byte[512];
int total = 0;
int count;
try {
count = input.read(buffer);
while (count != -1) {
out.write(buffer, 0, count);
total = total + count;
count = input.read(buffer);
}
return total;
} catch (IOException e) {
throw new RuntimeException("Failed to write to passed stream.", e);
}
}
/**
* Util method to get absolute path to resource file
*
* @param name - name of resource file
* @return - path to resource
*/
public static String getAbsoluteResourcePath(String name) {
URL url = ClassLoader.getSystemClassLoader().getResource(name);
if (url == null) {
throw new RuntimeException("Failed to load resource: " + name);
}
try {
return new File(url.toURI()).getAbsolutePath();
} catch (URISyntaxException e) {
throw new RuntimeException("Failed to load resource: " + name);
}
}
public static File resourceToTempFile(String path) throws IOException {
File f = File.createTempFile("out", ".xml");
f.deleteOnExit();
FileOutputStream out = new FileOutputStream(f);
InputStream xml = Support_Resources.class.getResourceAsStream(path);
int b;
while ((b = xml.read()) != -1) {
out.write(b);
}
out.flush();
out.close();
xml.close();
return f;
}
}