org.ops4j.pax.web.itest.util.TestConfiguration.java Source code

Java tutorial

Introduction

Here is the source code for org.ops4j.pax.web.itest.util.TestConfiguration.java

Source

/*
 * Copyright 2014 Harald Wellmann.
 *
 * 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.ops4j.pax.web.itest.util;

import static org.ops4j.pax.exam.CoreOptions.bootDelegationPackages;
import static org.ops4j.pax.exam.CoreOptions.bundle;
import static org.ops4j.pax.exam.CoreOptions.composite;
import static org.ops4j.pax.exam.CoreOptions.frameworkProperty;
import static org.ops4j.pax.exam.CoreOptions.linkBundle;
import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
import static org.ops4j.pax.exam.CoreOptions.systemPackages;
import static org.ops4j.pax.exam.CoreOptions.systemProperty;
import static org.ops4j.pax.exam.CoreOptions.when;

import java.io.File;
import java.io.IOException;
import java.util.Properties;
import java.util.ServiceLoader;

import org.ops4j.lang.Ops4jException;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.util.PathUtils;
import org.osgi.framework.launch.FrameworkFactory;

public class TestConfiguration {

    private static boolean consoleEnabled = Boolean.valueOf(System.getProperty("equinox.console", "true"));

    public static Option undertowBundles() {
        return composite(mavenBundle("org.ops4j.pax.tipi", "org.ops4j.pax.tipi.undertow.servlet", "1.0.15.1"),
                mavenBundle("org.ops4j.pax.tipi", "org.ops4j.pax.tipi.undertow.core", "1.0.15.1"),
                mavenBundle("org.ops4j.pax.tipi", "org.ops4j.pax.tipi.xnio.api", "3.2.2.2"),
                mavenBundle("org.ops4j.pax.tipi", "org.ops4j.pax.tipi.xnio.nio", "3.2.2.2"),
                linkBundle("org.jboss.logging.jboss-logging"),
                mavenBundle("javax.annotation", "javax.annotation-api", "1.2"), linkBundle("javax.servlet-api"));
    }

    public static Option paxUndertowBundles() {
        return composite(linkBundle("org.apache.felix.scr"), linkBundle("org.apache.xbean.bundleutils"),
                linkBundle("org.apache.xbean.finder"), linkBundle("org.objectweb.asm.all"),
                linkBundle("org.apache.felix.jaas"), linkBundle("org.apache.felix.configadmin"),
                linkBundle("org.apache.felix.eventadmin"),

                workspaceBundle("org.ops4j.pax.web", "pax-web-extender"),
                workspaceBundle("org.ops4j.pax.web", "pax-web-spi"),
                workspaceBundle("org.ops4j.pax.web", "pax-web-descriptor"),
                workspaceBundle("org.ops4j.pax.web", "pax-web-jaas"),
                workspaceBundle("org.ops4j.pax.web", "pax-web-undertow"));
    }

    public static Option logbackBundles() {
        return composite(
                when(consoleEnabled).useOptions(systemProperty("osgi.console").value("6666"),
                        systemProperty("osgi.console.enable.builtin").value("true")),

                systemProperty("logback.configurationFile")
                        .value("file:" + PathUtils.getBaseDir() + "/src/test/resources/logback.xml"),

                linkBundle("slf4j.api"), linkBundle("jcl.over.slf4j"), linkBundle("ch.qos.logback.core"),
                linkBundle("ch.qos.logback.classic"));
    }

    public static Option paxCdiSharedBundles() {
        return composite(linkBundle("org.ops4j.pax.cdi.extender"), linkBundle("org.ops4j.pax.cdi.extension"),
                linkBundle("org.ops4j.pax.cdi.api"), linkBundle("org.ops4j.pax.cdi.spi"),
                linkBundle("org.ops4j.pax.cdi.servlet"));
    }

    public static Option paxCdiWithWeldBundles() {

        Properties props = new Properties();
        try {
            props.load(TestConfiguration.class.getResourceAsStream("/systemPackages.properties"));
        } catch (IOException exc) {
            throw new Ops4jException(exc);
        }

        return composite(
                // do not treat javax.annotation as system package
                when(isEquinox()).useOptions(frameworkProperty("org.osgi.framework.system.packages")
                        .value(props.get("org.osgi.framework.system.packages"))),

                linkBundle("org.ops4j.pax.cdi.weld"),

                // there is a classloader conflict when adding this dep to the POM
                mavenBundle("org.ops4j.pax.cdi", "pax-cdi-undertow-weld", "0.8.0"),

                mavenBundle("com.google.guava", "guava", "13.0.1"),
                mavenBundle("org.jboss.weld", "weld-osgi-bundle", "2.1.2.Final"));
    }

    public static boolean isEquinox() {
        FrameworkFactory factory = ServiceLoader.load(FrameworkFactory.class).iterator().next();
        return factory.getClass().getSimpleName().contains("Equinox");
    }

    public static Option mojarraBundles() {
        return composite(
                bootDelegationPackages("org.xml.sax", "org.xml.*", "org.w3c.*", "javax.xml.*", "javax.activation.*",
                        "com.sun.org.apache.xpath.internal.jaxp"),

                systemPackages("com.sun.org.apache.xalan.internal.res", "com.sun.org.apache.xml.internal.utils",
                        "com.sun.org.apache.xml.internal.utils", "com.sun.org.apache.xpath.internal",
                        "com.sun.org.apache.xpath.internal.jaxp", "com.sun.org.apache.xpath.internal.objects",
                        "org.w3c.dom.traversal"),
                mavenBundle("org.glassfish", "javax.faces", "2.2.7"),
                mavenBundle("javax.servlet.jsp", "javax.servlet.jsp-api", "2.3.1"),
                mavenBundle("javax.servlet.jsp.jstl", "javax.servlet.jsp.jstl-api", "1.2.1"),
                mavenBundle("org.glassfish.web", "javax.servlet.jsp.jstl", "1.2.3"),
                mavenBundle("org.glassfish", "javax.el", "3.0.0"),
                mavenBundle("javax.enterprise", "cdi-api", "1.2"),
                mavenBundle("javax.interceptor", "javax.interceptor-api", "1.2"),
                mavenBundle("javax.validation", "validation-api", "1.1.0.Final"));
    }

    public static Option httpClientBundles() {
        return composite(linkBundle("org.apache.httpcomponents.httpcore"),
                linkBundle("org.apache.httpcomponents.httpclient"));
    }

    public static Option workspaceBundle(String groupId, String artifactId) {
        String fileName = null;
        String version = null;
        if (groupId.equals("org.ops4j.pax.cdi")) {
            fileName = String.format("%s/../../org.ops4j.pax.cdi/%s/target/classes", PathUtils.getBaseDir(),
                    artifactId);
            version = System.getProperty("version.pax.cdi", "0.8.0");
        } else {
            fileName = String.format("%s/../%s/target/classes", PathUtils.getBaseDir(), artifactId);
        }
        if (new File(fileName).exists()) {
            String url = "reference:file:" + fileName;
            return bundle(url);
        } else {
            if (version == null) {
                return mavenBundle(groupId, artifactId).versionAsInProject();
            } else {
                return mavenBundle(groupId, artifactId, version);
            }
        }
    }
}