blob: dce24fea99ca8b76071fdc6040b9650d3f6769a5 [file] [log] [blame]
/*
* Copyright 2020 Apache Software Foundation.
*
* 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.apache.struts2.osgi;
import org.junit.Assert;
import org.junit.Test;
/**
* Basic tests for OsgiUtil
*/
public class OsgiUtilTest {
/*
* An independent unit test for OsgiUtil.translateBundleURLToJarURL() would be nice, but appears
* complicated to do without either creating and installing a custom URL handler or using
* one of the Mock frameworks that can mock final classes like URL.
*/
@Test
public void testGetBean() {
MockBeanFactory mockBeanFactory = new MockBeanFactory();
Object mockBean = OsgiUtil.getBean(mockBeanFactory, "1000");
Assert.assertNotNull("OsgiUtil getBean() on mock bean factory returned null ?", mockBean);
Assert.assertTrue("Mock bean from mock bean factory has mismatched id ?", mockBeanFactory.beanMatchesId(mockBean, "1000"));
mockBean = OsgiUtil.getBean(new Object(), "1000"); // Logs an error (coverage only).
Assert.assertNull("OsgiUtil getBean() on normal object found a getBean() method ?", mockBean);
}
@Test
public void testContainsBean() {
MockBeanFactory mockBeanFactory = new MockBeanFactory();
Assert.assertTrue("OsgiUtil containsBean() on mock bean factory with numeric id is false ?", OsgiUtil.containsBean(mockBeanFactory, "1000"));
Assert.assertFalse("OsgiUtil containsBean() on mock bean factory with nonnumeric id is true ?", OsgiUtil.containsBean(mockBeanFactory, "NotANumber"));
Assert.assertFalse("OsgiUtil containsBean() on mock bean factory with null id is true ?", OsgiUtil.containsBean(mockBeanFactory, null));
}
@Test
public void testGenerateJavaVersionForSystemPackages() {
// Some test patterns copied from OgnlRuntimeTest.testMajorJavaVersionParse() in OGNL 3.2.x.
// Pre-JDK 9 version strings.
Assert.assertEquals("JDK 5 generate java version failed ?", "1.5", OsgiUtil.generateJavaVersionForSystemPackages("1.5"));
Assert.assertEquals("JDK 5 generate java version failed ?", "1.5", OsgiUtil.generateJavaVersionForSystemPackages("1.5.0"));
Assert.assertEquals("JDK 5 generate java version failed ?", "1.5", OsgiUtil.generateJavaVersionForSystemPackages("1.5.0_21-b11"));
Assert.assertEquals("JDK 6 generate java version failed ?", "1.6", OsgiUtil.generateJavaVersionForSystemPackages("1.6"));
Assert.assertEquals("JDK 6 generate java version failed ?", "1.6", OsgiUtil.generateJavaVersionForSystemPackages("1.6.0"));
Assert.assertEquals("JDK 6 generate java version failed ?", "1.6", OsgiUtil.generateJavaVersionForSystemPackages("1.6.0_43-b19"));
Assert.assertEquals("JDK 7 generate java version failed ?", "1.7", OsgiUtil.generateJavaVersionForSystemPackages("1.7"));
Assert.assertEquals("JDK 7 generate java version failed ?", "1.7", OsgiUtil.generateJavaVersionForSystemPackages("1.7.0"));
Assert.assertEquals("JDK 7 generate java version failed ?", "1.7", OsgiUtil.generateJavaVersionForSystemPackages("1.7.0_79-b15"));
Assert.assertEquals("JDK 8 generate java version failed ?", "1.8", OsgiUtil.generateJavaVersionForSystemPackages("1.8"));
Assert.assertEquals("JDK 8 generate java version failed ?", "1.8", OsgiUtil.generateJavaVersionForSystemPackages("1.8.0"));
Assert.assertEquals("JDK 8 generate java version failed ?", "1.8", OsgiUtil.generateJavaVersionForSystemPackages("1.8.0_201-b20"));
Assert.assertEquals("JDK 8 generate java version failed ?", "1.8", OsgiUtil.generateJavaVersionForSystemPackages("1.8.0-someopenjdkstyle"));
Assert.assertEquals("JDK 8 generate java version failed ?", "1.8", OsgiUtil.generateJavaVersionForSystemPackages("1.8.0_201-someopenjdkstyle"));
// JDK 9 and later version strings.
Assert.assertEquals("JDK 9 generate java version failed ?", "9.0", OsgiUtil.generateJavaVersionForSystemPackages("9"));
Assert.assertEquals("JDK 9 generate java version failed ?", "9.0", OsgiUtil.generateJavaVersionForSystemPackages("9-ea+19"));
Assert.assertEquals("JDK 9 generate java version failed ?", "9.0", OsgiUtil.generateJavaVersionForSystemPackages("9+100"));
Assert.assertEquals("JDK 9 generate java version failed ?", "9.0", OsgiUtil.generateJavaVersionForSystemPackages("9-ea+19"));
Assert.assertEquals("JDK 9 generate java version failed ?", "9.1", OsgiUtil.generateJavaVersionForSystemPackages("9.1.3+15"));
Assert.assertEquals("JDK 9 generate java version failed ?", "9.0", OsgiUtil.generateJavaVersionForSystemPackages("9-someopenjdkstyle"));
Assert.assertEquals("JDK 10 generate java version failed ?", "10.0", OsgiUtil.generateJavaVersionForSystemPackages("10"));
Assert.assertEquals("JDK 10 generate java version failed ?", "10.0", OsgiUtil.generateJavaVersionForSystemPackages("10-ea+11"));
Assert.assertEquals("JDK 10 generate java version failed ?", "10.0", OsgiUtil.generateJavaVersionForSystemPackages("10+10"));
Assert.assertEquals("JDK 10 generate java version failed ?", "10.0", OsgiUtil.generateJavaVersionForSystemPackages("10-ea+11"));
Assert.assertEquals("JDK 10 generate java version failed ?", "10.1", OsgiUtil.generateJavaVersionForSystemPackages("10.1.3+15"));
Assert.assertEquals("JDK 10 generate java version failed ?", "10.0", OsgiUtil.generateJavaVersionForSystemPackages("10-someopenjdkstyle"));
Assert.assertEquals("JDK 11 generate java version failed ?", "11.0", OsgiUtil.generateJavaVersionForSystemPackages("11"));
Assert.assertEquals("JDK 11 generate java version failed ?", "11.0", OsgiUtil.generateJavaVersionForSystemPackages("11-ea+22"));
Assert.assertEquals("JDK 11 generate java version failed ?", "11.0", OsgiUtil.generateJavaVersionForSystemPackages("11+33"));
Assert.assertEquals("JDK 11 generate java version failed ?", "11.0", OsgiUtil.generateJavaVersionForSystemPackages("11-ea+19"));
Assert.assertEquals("JDK 11 generate java version failed ?", "11.1", OsgiUtil.generateJavaVersionForSystemPackages("11.1.3+15"));
Assert.assertEquals("JDK 11 generate java version failed ?", "11.0", OsgiUtil.generateJavaVersionForSystemPackages("11-someopenjdkstyle"));
}
@Test
public void testGenerateJava_SE_SystemPackageVersionString() {
// Some test patterns copied from OgnlRuntimeTest.testMajorJavaVersionParse() in OGNL 3.2.x.
// Pre-JDK 9 version strings.
Assert.assertEquals("JDK 5 generate java version failed ?", "0.0.0.JavaSE_001_005", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.5"));
Assert.assertEquals("JDK 5 generate java version failed ?", "0.0.0.JavaSE_001_005", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.5.0"));
Assert.assertEquals("JDK 5 generate java version failed ?", "0.0.0.JavaSE_001_005", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.5.0_21-b11"));
Assert.assertEquals("JDK 6 generate java version failed ?", "0.0.0.JavaSE_001_006", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.6"));
Assert.assertEquals("JDK 6 generate java version failed ?", "0.0.0.JavaSE_001_006", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.6.0"));
Assert.assertEquals("JDK 6 generate java version failed ?", "0.0.0.JavaSE_001_006", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.6.0_43-b19"));
Assert.assertEquals("JDK 7 generate java version failed ?", "0.0.0.JavaSE_001_007", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.7"));
Assert.assertEquals("JDK 7 generate java version failed ?", "0.0.0.JavaSE_001_007", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.7.0"));
Assert.assertEquals("JDK 7 generate java version failed ?", "0.0.0.JavaSE_001_007", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.7.0_79-b15"));
Assert.assertEquals("JDK 8 generate java version failed ?", "0.0.0.JavaSE_001_008", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.8"));
Assert.assertEquals("JDK 8 generate java version failed ?", "0.0.0.JavaSE_001_008", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.8.0"));
Assert.assertEquals("JDK 8 generate java version failed ?", "0.0.0.JavaSE_001_008", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.8.0_201-b20"));
Assert.assertEquals("JDK 8 generate java version failed ?", "0.0.0.JavaSE_001_008", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.8.0-someopenjdkstyle"));
Assert.assertEquals("JDK 8 generate java version failed ?", "0.0.0.JavaSE_001_008", OsgiUtil.generateJava_SE_SystemPackageVersionString("1.8.0_201-someopenjdkstyle"));
// JDK 9 and later version strings.
Assert.assertEquals("JDK 9 generate java version failed ?", "0.0.0.JavaSE_009", OsgiUtil.generateJava_SE_SystemPackageVersionString("9"));
Assert.assertEquals("JDK 9 generate java version failed ?", "0.0.0.JavaSE_009", OsgiUtil.generateJava_SE_SystemPackageVersionString("9-ea+19"));
Assert.assertEquals("JDK 9 generate java version failed ?", "0.0.0.JavaSE_009", OsgiUtil.generateJava_SE_SystemPackageVersionString("9+100"));
Assert.assertEquals("JDK 9 generate java version failed ?", "0.0.0.JavaSE_009", OsgiUtil.generateJava_SE_SystemPackageVersionString("9-ea+19"));
Assert.assertEquals("JDK 9 generate java version failed ?", "0.0.0.JavaSE_009", OsgiUtil.generateJava_SE_SystemPackageVersionString("9.1.3+15"));
Assert.assertEquals("JDK 9 generate java version failed ?", "0.0.0.JavaSE_009", OsgiUtil.generateJava_SE_SystemPackageVersionString("9-someopenjdkstyle"));
Assert.assertEquals("JDK 10 generate java version failed ?", "0.0.0.JavaSE_010", OsgiUtil.generateJava_SE_SystemPackageVersionString("10"));
Assert.assertEquals("JDK 10 generate java version failed ?", "0.0.0.JavaSE_010", OsgiUtil.generateJava_SE_SystemPackageVersionString("10-ea+11"));
Assert.assertEquals("JDK 10 generate java version failed ?", "0.0.0.JavaSE_010", OsgiUtil.generateJava_SE_SystemPackageVersionString("10+10"));
Assert.assertEquals("JDK 10 generate java version failed ?", "0.0.0.JavaSE_010", OsgiUtil.generateJava_SE_SystemPackageVersionString("10-ea+11"));
Assert.assertEquals("JDK 10 generate java version failed ?", "0.0.0.JavaSE_010", OsgiUtil.generateJava_SE_SystemPackageVersionString("10.1.3+15"));
Assert.assertEquals("JDK 10 generate java version failed ?", "0.0.0.JavaSE_010", OsgiUtil.generateJava_SE_SystemPackageVersionString("10-someopenjdkstyle"));
Assert.assertEquals("JDK 11 generate java version failed ?", "0.0.0.JavaSE_011", OsgiUtil.generateJava_SE_SystemPackageVersionString("11"));
Assert.assertEquals("JDK 11 generate java version failed ?", "0.0.0.JavaSE_011", OsgiUtil.generateJava_SE_SystemPackageVersionString("11-ea+22"));
Assert.assertEquals("JDK 11 generate java version failed ?", "0.0.0.JavaSE_011", OsgiUtil.generateJava_SE_SystemPackageVersionString("11+33"));
Assert.assertEquals("JDK 11 generate java version failed ?", "0.0.0.JavaSE_011", OsgiUtil.generateJava_SE_SystemPackageVersionString("11-ea+19"));
Assert.assertEquals("JDK 11 generate java version failed ?", "0.0.0.JavaSE_011", OsgiUtil.generateJava_SE_SystemPackageVersionString("11.1.3+15"));
Assert.assertEquals("JDK 11 generate java version failed ?", "0.0.0.JavaSE_011", OsgiUtil.generateJava_SE_SystemPackageVersionString("11-someopenjdkstyle"));
}
private class MockBeanFactory {
public Object getBean(String beanId) {
return "MockBean: " + beanId;
}
public boolean containsBean(String beanId) {
boolean result = false;
if (beanId != null) {
try {
Integer.parseInt(beanId);
result = true;
} catch (NumberFormatException nfe) {
result = false;
}
}
return result;
}
public final boolean beanMatchesId(Object mockBean, String beanId) {
return mockBean.equals("MockBean: " + beanId);
}
}
}