/*
* Copyright 2008-2014 the original author or authors
*
* 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.kaleidofoundry.core.system;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Enumeration;
import java.util.Properties;
import junit.framework.Assert;
import org.junit.Test;
import org.kaleidofoundry.core.lang.NotNullException;
/**
* @author jraduget
*/
public class JavaSystemHelperTest extends Assert {
public static final String UNKNOWN_FOO_RESOURCE = "foo/unkwnown";
public static final String FOO_RESOURCE = "system/foo.txt";
public static final String META_INF_JAR_RESOURCE = "META-INF/MANIFEST.MF";
@Test
public void getSystemProperties() {
final Properties props = JavaSystemHelper.getSystemProperties();
assertNotNull(props);
assertTrue(props.size() > 0);
assertNotNull(props.get("os.name"));
assertNotNull(props.get("java.vm.version"));
}
@Test
public void getSystemProperty() {
assertNotNull(JavaSystemHelper.getSystemProperty("os.name", null));
assertNull(JavaSystemHelper.getSystemProperty("foo.unknown", null));
assertEquals("foo", JavaSystemHelper.getSystemProperty("foo.unknown", "foo"));
}
@Test
public void getCurrentClassLoader() {
assertNotNull(JavaSystemHelper.getCurrentClassLoader());
}
@Test
public void getResources() throws IOException {
// unknown resource
Enumeration<URL> urls = JavaSystemHelper.getResources(UNKNOWN_FOO_RESOURCE);
assertNotNull(urls);
assertFalse(urls.hasMoreElements());
// existing resource
urls = JavaSystemHelper.getResources(FOO_RESOURCE);
assertNotNull(urls);
assertTrue(urls.hasMoreElements());
final URL url = urls.nextElement();
assertNotNull(url);
// existing jar resource (and more than one resources)
urls = JavaSystemHelper.getResources(META_INF_JAR_RESOURCE);
assertNotNull(urls);
assertTrue(urls.hasMoreElements());
urls.nextElement();
assertTrue(urls.hasMoreElements());
urls.nextElement();
}
@Test
public void getResourcesWithClassLoader() throws IOException {
// unknown resource
Enumeration<URL> urls = JavaSystemHelper.getResources(JavaSystemHelper.class.getClassLoader(), UNKNOWN_FOO_RESOURCE);
assertNotNull(urls);
assertFalse(urls.hasMoreElements());
// existing resource
urls = JavaSystemHelper.getResources(JavaSystemHelper.class.getClassLoader(), FOO_RESOURCE);
assertNotNull(urls);
assertTrue(urls.hasMoreElements());
final URL url = urls.nextElement();
assertNotNull(url);
// existing jar resource (and more than one resources)
urls = JavaSystemHelper.getResources(JavaSystemHelper.class.getClassLoader(), META_INF_JAR_RESOURCE);
assertNotNull(urls);
assertTrue(urls.hasMoreElements());
urls.nextElement();
assertTrue(urls.hasMoreElements());
urls.nextElement();
}
@Test(expected = NotNullException.class)
public void getResourcesWithIllegalClassLoader() throws IOException {
JavaSystemHelper.getResources(String.class.getClassLoader(), UNKNOWN_FOO_RESOURCE);
}
@Test
public void getResource() {
// unknown resource
URL url = JavaSystemHelper.getResource(UNKNOWN_FOO_RESOURCE);
assertNull(url);
// existing resource
url = JavaSystemHelper.getResource(FOO_RESOURCE);
assertNotNull(url);
// existing jar resource
url = JavaSystemHelper.getResource(META_INF_JAR_RESOURCE);
assertNotNull(url);
assertTrue(url.toExternalForm().contains("jar:file:"));
}
@Test
public void getResourceWithClassLoader() {
// unknown resource
URL url = JavaSystemHelper.getResource(JavaSystemHelper.class.getClassLoader(), UNKNOWN_FOO_RESOURCE);
assertNull(url);
// existing resource
url = JavaSystemHelper.getResource(JavaSystemHelper.class.getClassLoader(), FOO_RESOURCE);
assertNotNull(url);
}
@Test(expected = NotNullException.class)
public void getResourceWithIllegalClassLoader() throws IOException {
// unknown resource
JavaSystemHelper.getResource(String.class.getClassLoader(), UNKNOWN_FOO_RESOURCE);
}
@Test
public void getResourceAsFile() {
// unknown resource
File file = JavaSystemHelper.getResourceAsFile(UNKNOWN_FOO_RESOURCE);
assertNull(file);
// existing resource in the classpath (file system)
file = JavaSystemHelper.getResourceAsFile(FOO_RESOURCE);
assertNotNull(file);
// existing resource in the classpath (jar zip)
file = JavaSystemHelper.getResourceAsFile(META_INF_JAR_RESOURCE);
assertNotNull(file);
}
@Test
public void getResourceAsFileWithClassLoader() {
// unknown resource
File file = JavaSystemHelper.getResourceAsFile(JavaSystemHelper.class.getClassLoader(), UNKNOWN_FOO_RESOURCE);
assertNull(file);
// existing resource
file = JavaSystemHelper.getResourceAsFile(JavaSystemHelper.class.getClassLoader(), FOO_RESOURCE);
assertNotNull(file);
}
@Test
public void getResourceAsStream() {
// unknown resource
InputStream in = JavaSystemHelper.getResourceAsStream(UNKNOWN_FOO_RESOURCE);
assertNull(in);
// existing resource
in = JavaSystemHelper.getResourceAsStream(FOO_RESOURCE);
assertNotNull(in);
}
@Test
public void getResourceAsStreamWithClassLoader() {
// unknown resource
InputStream in = JavaSystemHelper.getResourceAsStream(JavaSystemHelper.class.getClassLoader(), UNKNOWN_FOO_RESOURCE);
assertNull(in);
// existing resource
in = JavaSystemHelper.getResourceAsStream(JavaSystemHelper.class.getClassLoader(), FOO_RESOURCE);
assertNotNull(in);
}
}