You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2015/06/10 10:55:48 UTC
[1/3] olingo-odata4 git commit: Add Karaf features for Olingo
Repository: olingo-odata4
Updated Branches:
refs/heads/OLINGO-642_OSGi-Sample 5727d0587 -> e59b5082f
Add Karaf features for Olingo
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/0b8d46fc
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/0b8d46fc
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/0b8d46fc
Branch: refs/heads/OLINGO-642_OSGi-Sample
Commit: 0b8d46fc6a3479b1ed05bd53ba5549e05e8b26df
Parents: 5727d05
Author: Aki Yoshida <el...@gmail.com>
Authored: Thu May 28 16:34:48 2015 +0200
Committer: Michael Bolz <mi...@sap.com>
Committed: Wed Jun 10 06:14:19 2015 +0200
----------------------------------------------------------------------
ext/karaf/features/pom.xml | 81 ++++++++++++++++++++
.../features/src/main/resources/features.xml | 59 ++++++++++++++
ext/pom.xml | 1 +
pom.xml | 2 +
4 files changed, 143 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0b8d46fc/ext/karaf/features/pom.xml
----------------------------------------------------------------------
diff --git a/ext/karaf/features/pom.xml b/ext/karaf/features/pom.xml
new file mode 100644
index 0000000..921eac2
--- /dev/null
+++ b/ext/karaf/features/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>odata-karaf-features</artifactId>
+ <packaging>pom</packaging>
+ <name>${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.apache.olingo</groupId>
+ <artifactId>odata-ext</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>filter</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>resources</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-artifacts</id>
+ <phase>package</phase>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>target/classes/features.xml</file>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0b8d46fc/ext/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/ext/karaf/features/src/main/resources/features.xml b/ext/karaf/features/src/main/resources/features.xml
new file mode 100644
index 0000000..0a433c5
--- /dev/null
+++ b/ext/karaf/features/src/main/resources/features.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+-->
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0" name="olingo-${project.version}">
+
+ <feature name="olingo-server" version="${project.version}" resolver="(obr)" start-level="50">
+ <feature>war</feature>
+ <bundle>mvn:commons-codec/commons-codec/${commons.codec.version}</bundle>
+ <bundle>mvn:org.apache.commons/commons-lang3/${commons.lang3.version}</bundle>
+ <bundle>mvn:org.codehaus.woodstox/stax2-api/${woodstox.stax2-api.version}</bundle>
+ <bundle>mvn:com.fasterxml/aalto-xml/${aalto-xml.version}</bundle>
+ <bundle>wrap:mvn:org.antlr/antlr4-runtime/${antlr.version}/$Bundle-SymbolicName=antlr4-runtime&Bundle-Version=${antlr.version}&Export-Package=org.antlr.v4.runtime*</bundle>
+
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
+
+ <bundle>mvn:org.apache.olingo/odata-commons-api/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-commons-core/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-server-api/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-server-core/${project.version}</bundle>
+ </feature>
+
+ <feature name="olingo-client" version="${project.version}" resolver="(obr)" start-level="50">
+ <bundle>mvn:commons-codec/commons-codec/${commons.codec.version}</bundle>
+ <bundle>mvn:commons-io/commons-io/${commons.io.version}</bundle>
+ <bundle>mvn:org.apache.commons/commons-lang3/${commons.lang3.version}</bundle>
+ <bundle>mvn:org.codehaus.woodstox/stax2-api/${woodstox.stax2-api.version}</bundle>
+ <bundle>mvn:com.fasterxml/aalto-xml/${aalto-xml.version}</bundle>
+ <bundle>mvn:org.apache.httpcomponents/httpcore-osgi/${hc.core.version}</bundle>
+ <bundle>mvn:org.apache.httpcomponents/httpclient-osgi/${hc.client.version}</bundle>
+
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-xml/${jackson.version}</bundle>
+
+ <bundle>mvn:org.apache.olingo/odata-commons-api/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-commons-core/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-client-api/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-client-core/${project.version}</bundle>
+ </feature>
+</features>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0b8d46fc/ext/pom.xml
----------------------------------------------------------------------
diff --git a/ext/pom.xml b/ext/pom.xml
index b31bf67..93a78e3 100644
--- a/ext/pom.xml
+++ b/ext/pom.xml
@@ -39,5 +39,6 @@
<module>pojogen-maven-plugin</module>
<module>client-proxy</module>
<module>client-android</module>
+ <module>karaf/features</module>
</modules>
</project>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0b8d46fc/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 84ae718..e4d2b76 100644
--- a/pom.xml
+++ b/pom.xml
@@ -82,6 +82,7 @@
<maven.plugin.tools.version>3.3</maven.plugin.tools.version>
<maven.bundle.plugin.version>2.3.4</maven.bundle.plugin.version>
<hc.client.version>4.2.6</hc.client.version>
+ <hc.core.version>4.2.5</hc.core.version>
<jackson.version>2.4.2</jackson.version>
<aalto-xml.version>0.9.10</aalto-xml.version>
@@ -89,6 +90,7 @@
<android.platform.version>4.1.1.4</android.platform.version>
<stax.api.version>1.0-2</stax.api.version>
+ <woodstox.stax2-api.version>3.1.4</woodstox.stax2-api.version>
<sl4j.version>1.7.7</sl4j.version>
[2/3] olingo-odata4 git commit: Adding olingo-server side OSGi tests
Posted by mi...@apache.org.
Adding olingo-server side OSGi tests
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/7ab54a2b
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/7ab54a2b
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/7ab54a2b
Branch: refs/heads/OLINGO-642_OSGi-Sample
Commit: 7ab54a2b852a396fc34e5c0a1c781d7b2d78c6cb
Parents: 0b8d46f
Author: Aki Yoshida <el...@gmail.com>
Authored: Tue Jun 9 18:33:36 2015 +0200
Committer: Michael Bolz <mi...@sap.com>
Committed: Wed Jun 10 06:14:26 2015 +0200
----------------------------------------------------------------------
ext/karaf/itests/pom.xml | 152 +++++++++++++++++++
.../apache/olingo/osgi/itests/BundlesTest.java | 56 +++++++
.../osgi/itests/OlingoOSGiTestSupport.java | 137 +++++++++++++++++
.../osgi/itests/server/CarServiceTest.java | 105 +++++++++++++
pom.xml | 5 +
5 files changed, 455 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ab54a2b/ext/karaf/itests/pom.xml
----------------------------------------------------------------------
diff --git a/ext/karaf/itests/pom.xml b/ext/karaf/itests/pom.xml
new file mode 100644
index 0000000..989a7bd
--- /dev/null
+++ b/ext/karaf/itests/pom.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>odata-karaf-itests</artifactId>
+ <packaging>jar</packaging>
+ <name>${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.apache.olingo</groupId>
+ <artifactId>odata-ext</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ <relativePath>../..</relativePath>
+ </parent>
+ <dependencies>
+ <!-- Karaf features -->
+ <dependency>
+ <groupId>org.apache.olingo</groupId>
+ <artifactId>odata-karaf-features</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.karaf.features</groupId>
+ <artifactId>org.apache.karaf.features.core</artifactId>
+ <version>${karaf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.karaf.shell</groupId>
+ <artifactId>org.apache.karaf.shell.console</artifactId>
+ <version>${karaf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>${osgi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>${osgi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-atinject_1.0_spec</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- pax-exam -->
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-junit4</artifactId>
+ <version>${pax.exam.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam</artifactId>
+ <version>${pax.exam.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-container-karaf</artifactId>
+ <version>${pax.exam.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-link-mvn</artifactId>
+ <version>${pax.exam.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.karaf</groupId>
+ <artifactId>apache-karaf</artifactId>
+ <version>${karaf.version}</version>
+ <type>tar.gz</type>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.karaf.shell</groupId>
+ <artifactId>org.apache.karaf.shell.dev</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.eclipse</groupId>
+ <artifactId>osgi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.eclipse</groupId>
+ <artifactId>org.eclipse.osgi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.karaf</groupId>
+ <artifactId>org.apache.karaf.client</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.framework</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <!-- generate dependencies versions that are needed -->
+ <plugin>
+ <groupId>org.apache.servicemix.tooling</groupId>
+ <artifactId>depends-maven-plugin</artifactId>
+ <version>1.2</version>
+ <executions>
+ <execution>
+ <id>generate-depends-file</id>
+ <goals>
+ <goal>generate-depends-file</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ab54a2b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java
----------------------------------------------------------------------
diff --git a/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java
new file mode 100644
index 0000000..4b542a1
--- /dev/null
+++ b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java
@@ -0,0 +1,56 @@
+/*******************************************************************************
+ * 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 org.apache.olingo.osgi.itests;
+
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
+
+
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
+public class BundlesTest extends OlingoOSGiTestSupport {
+ @Test
+ public void test() throws Exception {
+ // check the server-api and server-core
+ assertBundleStarted("org.apache.olingo.odata-server-api");
+ assertBundleStarted("org.apache.olingo.odata-server-core");
+
+ // check the client-api and client-core
+ assertBundleStarted("org.apache.olingo.odata-client-api");
+ assertBundleStarted("org.apache.olingo.odata-client-core");
+ }
+
+ @Configuration
+ public Option[] config() {
+ return new Option[]{
+ olingoBaseConfig(),
+ features(olingoUrl, "olingo-server", "olingo-client"),
+ logLevel(LogLevel.INFO)};
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ab54a2b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java
----------------------------------------------------------------------
diff --git a/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java
new file mode 100644
index 0000000..e882736
--- /dev/null
+++ b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java
@@ -0,0 +1,137 @@
+/*******************************************************************************
+ * 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 org.apache.olingo.osgi.itests;
+
+
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Properties;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import javax.inject.Inject;
+
+import org.apache.karaf.features.FeaturesService;
+import org.junit.Assert;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.ProbeBuilder;
+import org.ops4j.pax.exam.TestProbeBuilder;
+import org.ops4j.pax.exam.options.MavenUrlReference;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.ops4j.pax.exam.CoreOptions.maven;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
+import static org.ops4j.pax.exam.CoreOptions.when;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
+
+/**
+ *
+ */
+public class OlingoOSGiTestSupport {
+ private static final String MAVEN_DEPENDENCIES_PROPERTIES = "/META-INF/maven/dependencies.properties";
+
+ @Inject
+ protected BundleContext bundleContext;
+
+ @Inject
+ protected FeaturesService featureService;
+
+ protected ExecutorService executor = Executors.newCachedThreadPool();
+
+ protected MavenUrlReference olingoUrl;
+ protected MavenUrlReference karafUrl;
+
+ /**
+ * @param probe
+ * @return
+ */
+ @ProbeBuilder
+ public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
+ probe.setHeader(Constants.DYNAMICIMPORT_PACKAGE, "*,org.apache.felix.service.*;status=provisional");
+ return probe;
+ }
+
+ private static String getKarafVersion() {
+ String karafVersion = getVersionFromPom("org.apache.karaf/apache-karaf/version");
+ if (karafVersion == null) {
+ karafVersion = System.getProperty("karaf.version");
+ }
+ if (karafVersion == null) {
+ // setup the default version of it
+ karafVersion = "3.0.3";
+ }
+ return karafVersion;
+ }
+
+ private static String getVersionFromPom(String key) {
+ try {
+ InputStream ins = OlingoOSGiTestSupport.class.getResourceAsStream(MAVEN_DEPENDENCIES_PROPERTIES);
+ Properties p = new Properties();
+ p.load(ins);
+ return p.getProperty(key);
+ } catch (Exception t) {
+ throw new IllegalStateException(MAVEN_DEPENDENCIES_PROPERTIES + " can not be found", t);
+ }
+ }
+ /**
+ * Create an {@link org.ops4j.pax.exam.Option} for using a .
+ *
+ * @return
+ */
+ protected Option olingoBaseConfig() {
+ karafUrl = maven().groupId("org.apache.karaf").artifactId("apache-karaf").version(getKarafVersion())
+ .type("tar.gz");
+ olingoUrl = maven().groupId("org.apache.olingo").artifactId("odata-karaf-features").versionAsInProject()
+ .type("xml").classifier("features");
+ String localRepo = System.getProperty("localRepository");
+ return composite(karafDistributionConfiguration()
+ .frameworkUrl(karafUrl)
+ .karafVersion(getKarafVersion())
+ .name("Apache Karaf")
+ .useDeployFolder(false)
+ .unpackDirectory(new File("target/paxexam/")),
+ //DO NOT COMMIT WITH THIS LINE ENABLED!!!
+ //KarafDistributionOption.keepRuntimeFolder(),
+ systemProperty("java.awt.headless").value("true"),
+ when(localRepo != null)
+ .useOptions(editConfigurationFilePut("etc/org.ops4j.pax.url.mvn.cfg",
+ "org.ops4j.pax.url.mvn.localRepository",
+ localRepo)));
+ }
+
+ protected void assertBundleStarted(String name) {
+ Bundle bundle = findBundleByName(name);
+ Assert.assertNotNull("Bundle " + name + " should be installed", bundle);
+ Assert.assertEquals("Bundle " + name + " should be started", Bundle.ACTIVE, bundle.getState());
+ }
+
+ protected Bundle findBundleByName(String symbolicName) {
+ for (Bundle bundle : bundleContext.getBundles()) {
+ if (bundle.getSymbolicName().equals(symbolicName)) {
+ return bundle;
+ }
+ }
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ab54a2b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java
----------------------------------------------------------------------
diff --git a/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java
new file mode 100644
index 0000000..d727253
--- /dev/null
+++ b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * 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 org.apache.olingo.osgi.itests.server;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.apache.olingo.osgi.itests.OlingoOSGiTestSupport;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerMethod;
+
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
+
+/**
+ *
+ */
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerMethod.class)
+public class CarServiceTest extends OlingoOSGiTestSupport {
+ private static final String SERVICE_URL = "http://localhost:8181/olingo-cars/cars.svc/";
+
+ @Test
+ public void testServiceStarted() throws Exception {
+ // check if the bundle is started
+ assertBundleStarted("org.apache.olingo.odata-server-osgi-sample");
+
+ // use the jdk http client to verify the server side
+ verifyContent(getContent(SERVICE_URL));
+
+ verifyContent(getContent(SERVICE_URL + "$metadata"));
+
+ verifyContent(getContent(SERVICE_URL + "Cars"));
+
+ verifyContent(getContent(SERVICE_URL + "Cars(1)"));
+
+ verifyContent(getContent(SERVICE_URL + "Cars(1)/Price"));
+ }
+
+ private static void verifyContent(String content) {
+ // this is currently a simple test to check if there is no error
+ Assert.assertNotNull(content);
+ Assert.assertTrue(content.indexOf("error") < 0);
+ }
+
+ private static String getContent(String target) throws Exception {
+ InputStream in = null;
+ try {
+ URL url = new URL(target);
+ URLConnection urlConnection = url.openConnection();
+ urlConnection.setRequestProperty("Accept", "*/*");
+ in = urlConnection.getInputStream();
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] buf = new byte[4096];
+ int n = 0;
+ while ((n = in.read(buf, 0, buf.length)) != -1) {
+ baos.write(buf, 0, n);
+ }
+ return new String(baos.toByteArray(), "utf-8");
+ } finally {
+ if (in != null) {
+ in.close();
+ }
+ }
+
+ }
+
+ @Configuration
+ public Option[] config() {
+ return new Option[] {
+ olingoBaseConfig(),
+ features(olingoUrl, "olingo-server", "olingo-client"),
+ mavenBundle("org.apache.olingo", "odata-server-osgi-sample", "4.0.0-SNAPSHOT"),
+ logLevel(LogLevel.INFO)
+ };
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7ab54a2b/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index e4d2b76..1544783 100644
--- a/pom.xml
+++ b/pom.xml
@@ -97,6 +97,11 @@
<tomcat.servlet.port>9080</tomcat.servlet.port>
<tomcat.version>7.0.55</tomcat.version>
+ <!-- for osgi integration testing -->
+ <osgi.version>4.2.0</osgi.version>
+ <karaf.version>3.0.3</karaf.version>
+ <pax.exam.version>4.5.0</pax.exam.version>
+
<!-- Project build settings -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.build.source>1.6</project.build.source>
[3/3] olingo-odata4 git commit: [OLINGO-691] Refactored karaf module
structure
Posted by mi...@apache.org.
[OLINGO-691] Refactored karaf module structure
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/e59b5082
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/e59b5082
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/e59b5082
Branch: refs/heads/OLINGO-642_OSGi-Sample
Commit: e59b5082ffdca5948536e1a8988239a1559fdf8a
Parents: 7ab54a2
Author: Michael Bolz <mi...@sap.com>
Authored: Wed Jun 10 06:26:45 2015 +0200
Committer: Michael Bolz <mi...@sap.com>
Committed: Wed Jun 10 10:50:08 2015 +0200
----------------------------------------------------------------------
ext/karaf/features/pom.xml | 81 ----------
.../features/src/main/resources/features.xml | 59 -------
ext/karaf/itests/pom.xml | 152 -------------------
.../apache/olingo/osgi/itests/BundlesTest.java | 56 -------
.../osgi/itests/OlingoOSGiTestSupport.java | 137 -----------------
.../osgi/itests/server/CarServiceTest.java | 105 -------------
ext/karaf/karaf-features/pom.xml | 81 ++++++++++
.../src/main/resources/features.xml | 59 +++++++
ext/karaf/karaf-fit/pom.xml | 152 +++++++++++++++++++
.../apache/olingo/osgi/itests/BundlesTest.java | 55 +++++++
.../osgi/itests/OlingoOSGiTestSupport.java | 134 ++++++++++++++++
.../osgi/itests/server/CarServiceTest.java | 105 +++++++++++++
ext/karaf/pom.xml | 41 +++++
ext/pom.xml | 10 +-
pom.xml | 2 +-
samples/pom.xml | 11 +-
16 files changed, 646 insertions(+), 594 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/features/pom.xml
----------------------------------------------------------------------
diff --git a/ext/karaf/features/pom.xml b/ext/karaf/features/pom.xml
deleted file mode 100644
index 921eac2..0000000
--- a/ext/karaf/features/pom.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- 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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>odata-karaf-features</artifactId>
- <packaging>pom</packaging>
- <name>${project.artifactId}</name>
-
- <parent>
- <groupId>org.apache.olingo</groupId>
- <artifactId>odata-ext</artifactId>
- <version>4.0.0-SNAPSHOT</version>
- <relativePath>../..</relativePath>
- </parent>
- <build>
- <resources>
- <resource>
- <directory>src/main/resources</directory>
- <filtering>true</filtering>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-resources-plugin</artifactId>
- <executions>
- <execution>
- <id>filter</id>
- <phase>generate-resources</phase>
- <goals>
- <goal>resources</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <executions>
- <execution>
- <id>attach-artifacts</id>
- <phase>package</phase>
- <goals>
- <goal>attach-artifact</goal>
- </goals>
- <configuration>
- <artifacts>
- <artifact>
- <file>target/classes/features.xml</file>
- <type>xml</type>
- <classifier>features</classifier>
- </artifact>
- </artifacts>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/ext/karaf/features/src/main/resources/features.xml b/ext/karaf/features/src/main/resources/features.xml
deleted file mode 100644
index 0a433c5..0000000
--- a/ext/karaf/features/src/main/resources/features.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- 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.
--->
-<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0" name="olingo-${project.version}">
-
- <feature name="olingo-server" version="${project.version}" resolver="(obr)" start-level="50">
- <feature>war</feature>
- <bundle>mvn:commons-codec/commons-codec/${commons.codec.version}</bundle>
- <bundle>mvn:org.apache.commons/commons-lang3/${commons.lang3.version}</bundle>
- <bundle>mvn:org.codehaus.woodstox/stax2-api/${woodstox.stax2-api.version}</bundle>
- <bundle>mvn:com.fasterxml/aalto-xml/${aalto-xml.version}</bundle>
- <bundle>wrap:mvn:org.antlr/antlr4-runtime/${antlr.version}/$Bundle-SymbolicName=antlr4-runtime&Bundle-Version=${antlr.version}&Export-Package=org.antlr.v4.runtime*</bundle>
-
- <bundle>mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
- <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
- <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
-
- <bundle>mvn:org.apache.olingo/odata-commons-api/${project.version}</bundle>
- <bundle>mvn:org.apache.olingo/odata-commons-core/${project.version}</bundle>
- <bundle>mvn:org.apache.olingo/odata-server-api/${project.version}</bundle>
- <bundle>mvn:org.apache.olingo/odata-server-core/${project.version}</bundle>
- </feature>
-
- <feature name="olingo-client" version="${project.version}" resolver="(obr)" start-level="50">
- <bundle>mvn:commons-codec/commons-codec/${commons.codec.version}</bundle>
- <bundle>mvn:commons-io/commons-io/${commons.io.version}</bundle>
- <bundle>mvn:org.apache.commons/commons-lang3/${commons.lang3.version}</bundle>
- <bundle>mvn:org.codehaus.woodstox/stax2-api/${woodstox.stax2-api.version}</bundle>
- <bundle>mvn:com.fasterxml/aalto-xml/${aalto-xml.version}</bundle>
- <bundle>mvn:org.apache.httpcomponents/httpcore-osgi/${hc.core.version}</bundle>
- <bundle>mvn:org.apache.httpcomponents/httpclient-osgi/${hc.client.version}</bundle>
-
- <bundle>mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
- <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
- <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
- <bundle>mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${jackson.version}</bundle>
- <bundle>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-xml/${jackson.version}</bundle>
-
- <bundle>mvn:org.apache.olingo/odata-commons-api/${project.version}</bundle>
- <bundle>mvn:org.apache.olingo/odata-commons-core/${project.version}</bundle>
- <bundle>mvn:org.apache.olingo/odata-client-api/${project.version}</bundle>
- <bundle>mvn:org.apache.olingo/odata-client-core/${project.version}</bundle>
- </feature>
-</features>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/itests/pom.xml
----------------------------------------------------------------------
diff --git a/ext/karaf/itests/pom.xml b/ext/karaf/itests/pom.xml
deleted file mode 100644
index 989a7bd..0000000
--- a/ext/karaf/itests/pom.xml
+++ /dev/null
@@ -1,152 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- 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.
-
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>odata-karaf-itests</artifactId>
- <packaging>jar</packaging>
- <name>${project.artifactId}</name>
-
- <parent>
- <groupId>org.apache.olingo</groupId>
- <artifactId>odata-ext</artifactId>
- <version>4.0.0-SNAPSHOT</version>
- <relativePath>../..</relativePath>
- </parent>
- <dependencies>
- <!-- Karaf features -->
- <dependency>
- <groupId>org.apache.olingo</groupId>
- <artifactId>odata-karaf-features</artifactId>
- <version>${project.version}</version>
- <type>xml</type>
- <classifier>features</classifier>
- </dependency>
-
- <dependency>
- <groupId>org.apache.karaf.features</groupId>
- <artifactId>org.apache.karaf.features.core</artifactId>
- <version>${karaf.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.karaf.shell</groupId>
- <artifactId>org.apache.karaf.shell.console</artifactId>
- <version>${karaf.version}</version>
- </dependency>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- <version>${osgi.version}</version>
- </dependency>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
- <version>${osgi.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-atinject_1.0_spec</artifactId>
- <version>1.0</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
-
- <!-- pax-exam -->
- <dependency>
- <groupId>org.ops4j.pax.exam</groupId>
- <artifactId>pax-exam-junit4</artifactId>
- <version>${pax.exam.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.ops4j.pax.exam</groupId>
- <artifactId>pax-exam</artifactId>
- <version>${pax.exam.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.ops4j.pax.exam</groupId>
- <artifactId>pax-exam-container-karaf</artifactId>
- <version>${pax.exam.version}</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.ops4j.pax.exam</groupId>
- <artifactId>pax-exam-link-mvn</artifactId>
- <version>${pax.exam.version}</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.apache.karaf</groupId>
- <artifactId>apache-karaf</artifactId>
- <version>${karaf.version}</version>
- <type>tar.gz</type>
- <scope>test</scope>
- <exclusions>
- <exclusion>
- <groupId>org.apache.karaf.shell</groupId>
- <artifactId>org.apache.karaf.shell.dev</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.eclipse</groupId>
- <artifactId>osgi</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.eclipse</groupId>
- <artifactId>org.eclipse.osgi</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.karaf</groupId>
- <artifactId>org.apache.karaf.client</artifactId>
- </exclusion>
- <exclusion>
- <groupId>org.apache.felix</groupId>
- <artifactId>org.apache.felix.framework</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <!-- generate dependencies versions that are needed -->
- <plugin>
- <groupId>org.apache.servicemix.tooling</groupId>
- <artifactId>depends-maven-plugin</artifactId>
- <version>1.2</version>
- <executions>
- <execution>
- <id>generate-depends-file</id>
- <goals>
- <goal>generate-depends-file</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java
----------------------------------------------------------------------
diff --git a/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java
deleted file mode 100644
index 4b542a1..0000000
--- a/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * 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 org.apache.olingo.osgi.itests;
-
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Configuration;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.junit.PaxExam;
-import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;
-import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
-import org.ops4j.pax.exam.spi.reactors.PerClass;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
-
-
-@RunWith(PaxExam.class)
-@ExamReactorStrategy(PerClass.class)
-public class BundlesTest extends OlingoOSGiTestSupport {
- @Test
- public void test() throws Exception {
- // check the server-api and server-core
- assertBundleStarted("org.apache.olingo.odata-server-api");
- assertBundleStarted("org.apache.olingo.odata-server-core");
-
- // check the client-api and client-core
- assertBundleStarted("org.apache.olingo.odata-client-api");
- assertBundleStarted("org.apache.olingo.odata-client-core");
- }
-
- @Configuration
- public Option[] config() {
- return new Option[]{
- olingoBaseConfig(),
- features(olingoUrl, "olingo-server", "olingo-client"),
- logLevel(LogLevel.INFO)};
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java
----------------------------------------------------------------------
diff --git a/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java
deleted file mode 100644
index e882736..0000000
--- a/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * 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 org.apache.olingo.osgi.itests;
-
-
-
-import java.io.File;
-import java.io.InputStream;
-import java.util.Properties;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import javax.inject.Inject;
-
-import org.apache.karaf.features.FeaturesService;
-import org.junit.Assert;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.ProbeBuilder;
-import org.ops4j.pax.exam.TestProbeBuilder;
-import org.ops4j.pax.exam.options.MavenUrlReference;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import static org.ops4j.pax.exam.CoreOptions.composite;
-import static org.ops4j.pax.exam.CoreOptions.maven;
-import static org.ops4j.pax.exam.CoreOptions.systemProperty;
-import static org.ops4j.pax.exam.CoreOptions.when;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
-
-/**
- *
- */
-public class OlingoOSGiTestSupport {
- private static final String MAVEN_DEPENDENCIES_PROPERTIES = "/META-INF/maven/dependencies.properties";
-
- @Inject
- protected BundleContext bundleContext;
-
- @Inject
- protected FeaturesService featureService;
-
- protected ExecutorService executor = Executors.newCachedThreadPool();
-
- protected MavenUrlReference olingoUrl;
- protected MavenUrlReference karafUrl;
-
- /**
- * @param probe
- * @return
- */
- @ProbeBuilder
- public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
- probe.setHeader(Constants.DYNAMICIMPORT_PACKAGE, "*,org.apache.felix.service.*;status=provisional");
- return probe;
- }
-
- private static String getKarafVersion() {
- String karafVersion = getVersionFromPom("org.apache.karaf/apache-karaf/version");
- if (karafVersion == null) {
- karafVersion = System.getProperty("karaf.version");
- }
- if (karafVersion == null) {
- // setup the default version of it
- karafVersion = "3.0.3";
- }
- return karafVersion;
- }
-
- private static String getVersionFromPom(String key) {
- try {
- InputStream ins = OlingoOSGiTestSupport.class.getResourceAsStream(MAVEN_DEPENDENCIES_PROPERTIES);
- Properties p = new Properties();
- p.load(ins);
- return p.getProperty(key);
- } catch (Exception t) {
- throw new IllegalStateException(MAVEN_DEPENDENCIES_PROPERTIES + " can not be found", t);
- }
- }
- /**
- * Create an {@link org.ops4j.pax.exam.Option} for using a .
- *
- * @return
- */
- protected Option olingoBaseConfig() {
- karafUrl = maven().groupId("org.apache.karaf").artifactId("apache-karaf").version(getKarafVersion())
- .type("tar.gz");
- olingoUrl = maven().groupId("org.apache.olingo").artifactId("odata-karaf-features").versionAsInProject()
- .type("xml").classifier("features");
- String localRepo = System.getProperty("localRepository");
- return composite(karafDistributionConfiguration()
- .frameworkUrl(karafUrl)
- .karafVersion(getKarafVersion())
- .name("Apache Karaf")
- .useDeployFolder(false)
- .unpackDirectory(new File("target/paxexam/")),
- //DO NOT COMMIT WITH THIS LINE ENABLED!!!
- //KarafDistributionOption.keepRuntimeFolder(),
- systemProperty("java.awt.headless").value("true"),
- when(localRepo != null)
- .useOptions(editConfigurationFilePut("etc/org.ops4j.pax.url.mvn.cfg",
- "org.ops4j.pax.url.mvn.localRepository",
- localRepo)));
- }
-
- protected void assertBundleStarted(String name) {
- Bundle bundle = findBundleByName(name);
- Assert.assertNotNull("Bundle " + name + " should be installed", bundle);
- Assert.assertEquals("Bundle " + name + " should be started", Bundle.ACTIVE, bundle.getState());
- }
-
- protected Bundle findBundleByName(String symbolicName) {
- for (Bundle bundle : bundleContext.getBundles()) {
- if (bundle.getSymbolicName().equals(symbolicName)) {
- return bundle;
- }
- }
- return null;
- }
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java
----------------------------------------------------------------------
diff --git a/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java b/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java
deleted file mode 100644
index d727253..0000000
--- a/ext/karaf/itests/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * 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 org.apache.olingo.osgi.itests.server;
-
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-
-import org.apache.olingo.osgi.itests.OlingoOSGiTestSupport;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.ops4j.pax.exam.Configuration;
-import org.ops4j.pax.exam.Option;
-import org.ops4j.pax.exam.junit.PaxExam;
-import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;
-import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
-import org.ops4j.pax.exam.spi.reactors.PerMethod;
-
-import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
-import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
-
-/**
- *
- */
-@RunWith(PaxExam.class)
-@ExamReactorStrategy(PerMethod.class)
-public class CarServiceTest extends OlingoOSGiTestSupport {
- private static final String SERVICE_URL = "http://localhost:8181/olingo-cars/cars.svc/";
-
- @Test
- public void testServiceStarted() throws Exception {
- // check if the bundle is started
- assertBundleStarted("org.apache.olingo.odata-server-osgi-sample");
-
- // use the jdk http client to verify the server side
- verifyContent(getContent(SERVICE_URL));
-
- verifyContent(getContent(SERVICE_URL + "$metadata"));
-
- verifyContent(getContent(SERVICE_URL + "Cars"));
-
- verifyContent(getContent(SERVICE_URL + "Cars(1)"));
-
- verifyContent(getContent(SERVICE_URL + "Cars(1)/Price"));
- }
-
- private static void verifyContent(String content) {
- // this is currently a simple test to check if there is no error
- Assert.assertNotNull(content);
- Assert.assertTrue(content.indexOf("error") < 0);
- }
-
- private static String getContent(String target) throws Exception {
- InputStream in = null;
- try {
- URL url = new URL(target);
- URLConnection urlConnection = url.openConnection();
- urlConnection.setRequestProperty("Accept", "*/*");
- in = urlConnection.getInputStream();
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte[] buf = new byte[4096];
- int n = 0;
- while ((n = in.read(buf, 0, buf.length)) != -1) {
- baos.write(buf, 0, n);
- }
- return new String(baos.toByteArray(), "utf-8");
- } finally {
- if (in != null) {
- in.close();
- }
- }
-
- }
-
- @Configuration
- public Option[] config() {
- return new Option[] {
- olingoBaseConfig(),
- features(olingoUrl, "olingo-server", "olingo-client"),
- mavenBundle("org.apache.olingo", "odata-server-osgi-sample", "4.0.0-SNAPSHOT"),
- logLevel(LogLevel.INFO)
- };
- }
-
-
-}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/karaf-features/pom.xml
----------------------------------------------------------------------
diff --git a/ext/karaf/karaf-features/pom.xml b/ext/karaf/karaf-features/pom.xml
new file mode 100644
index 0000000..2ae3f2c
--- /dev/null
+++ b/ext/karaf/karaf-features/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>odata-karaf-features</artifactId>
+ <packaging>pom</packaging>
+ <name>${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.apache.olingo</groupId>
+ <artifactId>odata-karaf</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/resources</directory>
+ <filtering>true</filtering>
+ </resource>
+ </resources>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>filter</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>resources</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>build-helper-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-artifacts</id>
+ <phase>package</phase>
+ <goals>
+ <goal>attach-artifact</goal>
+ </goals>
+ <configuration>
+ <artifacts>
+ <artifact>
+ <file>target/classes/features.xml</file>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </artifact>
+ </artifacts>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/karaf-features/src/main/resources/features.xml
----------------------------------------------------------------------
diff --git a/ext/karaf/karaf-features/src/main/resources/features.xml b/ext/karaf/karaf-features/src/main/resources/features.xml
new file mode 100644
index 0000000..0f2b5f4
--- /dev/null
+++ b/ext/karaf/karaf-features/src/main/resources/features.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+-->
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.0.0" name="olingo-${project.version}">
+
+ <feature name="olingo-server" version="${project.version}" resolver="(obr)" start-level="50">
+ <feature>war</feature>
+ <bundle>mvn:commons-codec/commons-codec/${commons.codec.version}</bundle>
+ <bundle>mvn:org.apache.commons/commons-lang3/${commons.lang3.version}</bundle>
+ <bundle>mvn:org.codehaus.woodstox/stax2-api/${woodstox.stax2-api.version}</bundle>
+ <bundle>mvn:com.fasterxml/aalto-xml/${aalto-xml.version}</bundle>
+ <bundle>wrap:mvn:org.antlr/antlr4-runtime/${antlr.version}/$Bundle-SymbolicName=antlr4-runtime&Bundle-Version=${antlr.version}&Export-Package=org.antlr.v4.runtime*</bundle>
+
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
+
+ <bundle>mvn:org.apache.olingo/odata-commons-api/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-commons-core/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-server-api/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-server-core/${project.version}</bundle>
+ </feature>
+
+ <feature name="olingo-client" version="${project.version}" resolver="(obr)" start-level="50">
+ <bundle>mvn:commons-codec/commons-codec/${commons.codec.version}</bundle>
+ <bundle>mvn:commons-io/commons-io/${commons.io.version}</bundle>
+ <bundle>mvn:org.apache.commons/commons-lang3/${commons.lang3.version}</bundle>
+ <bundle>mvn:org.codehaus.woodstox/stax2-api/${woodstox.stax2-api.version}</bundle>
+ <bundle>mvn:com.fasterxml/aalto-xml/${aalto-xml.version}</bundle>
+ <bundle>mvn:org.apache.httpcomponents/httpcore-osgi/${hc.core.version}</bundle>
+ <bundle>mvn:org.apache.httpcomponents/httpclient-osgi/${hc.client.version}</bundle>
+
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-core/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.module/jackson-module-jaxb-annotations/${jackson.version}</bundle>
+ <bundle>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-xml/${jackson.version}</bundle>
+
+ <bundle>mvn:org.apache.olingo/odata-commons-api/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-commons-core/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-client-api/${project.version}</bundle>
+ <bundle>mvn:org.apache.olingo/odata-client-core/${project.version}</bundle>
+ </feature>
+</features>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/karaf-fit/pom.xml
----------------------------------------------------------------------
diff --git a/ext/karaf/karaf-fit/pom.xml b/ext/karaf/karaf-fit/pom.xml
new file mode 100644
index 0000000..14a7238
--- /dev/null
+++ b/ext/karaf/karaf-fit/pom.xml
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>odata-karaf-fit</artifactId>
+ <packaging>jar</packaging>
+ <name>${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.apache.olingo</groupId>
+ <artifactId>odata-karaf</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+ <dependencies>
+ <!-- Karaf features -->
+ <dependency>
+ <groupId>org.apache.olingo</groupId>
+ <artifactId>odata-karaf-feature</artifactId>
+ <version>${project.version}</version>
+ <type>xml</type>
+ <classifier>features</classifier>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.karaf.features</groupId>
+ <artifactId>org.apache.karaf.features.core</artifactId>
+ <version>${karaf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.karaf.shell</groupId>
+ <artifactId>org.apache.karaf.shell.console</artifactId>
+ <version>${karaf.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ <version>${osgi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ <version>${osgi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-atinject_1.0_spec</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- pax-exam -->
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-junit4</artifactId>
+ <version>${pax.exam.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam</artifactId>
+ <version>${pax.exam.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-container-karaf</artifactId>
+ <version>${pax.exam.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.ops4j.pax.exam</groupId>
+ <artifactId>pax-exam-link-mvn</artifactId>
+ <version>${pax.exam.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.karaf</groupId>
+ <artifactId>apache-karaf</artifactId>
+ <version>${karaf.version}</version>
+ <type>tar.gz</type>
+ <scope>test</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.karaf.shell</groupId>
+ <artifactId>org.apache.karaf.shell.dev</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.eclipse</groupId>
+ <artifactId>osgi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.eclipse</groupId>
+ <artifactId>org.eclipse.osgi</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.karaf</groupId>
+ <artifactId>org.apache.karaf.client</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>org.apache.felix.framework</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <!-- generate dependencies versions that are needed -->
+ <plugin>
+ <groupId>org.apache.servicemix.tooling</groupId>
+ <artifactId>depends-maven-plugin</artifactId>
+ <version>1.2</version>
+ <executions>
+ <execution>
+ <id>generate-depends-file</id>
+ <goals>
+ <goal>generate-depends-file</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java
----------------------------------------------------------------------
diff --git a/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java b/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java
new file mode 100644
index 0000000..85d0f42
--- /dev/null
+++ b/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/BundlesTest.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * 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 org.apache.olingo.osgi.itests;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerClass;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
+
+
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerClass.class)
+public class BundlesTest extends OlingoOSGiTestSupport {
+ @Test
+ public void test() throws Exception {
+ // check the server-api and server-core
+ assertBundleStarted("org.apache.olingo.odata-server-api");
+ assertBundleStarted("org.apache.olingo.odata-server-core");
+
+ // check the client-api and client-core
+ assertBundleStarted("org.apache.olingo.odata-client-api");
+ assertBundleStarted("org.apache.olingo.odata-client-core");
+ }
+
+ @Configuration
+ public Option[] config() {
+ return new Option[]{
+ olingoBaseConfig(),
+ features(olingoUrl, "olingo-server", "olingo-client"),
+ logLevel(LogLevel.INFO)};
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java
----------------------------------------------------------------------
diff --git a/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java b/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java
new file mode 100644
index 0000000..b055071
--- /dev/null
+++ b/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/OlingoOSGiTestSupport.java
@@ -0,0 +1,134 @@
+/*******************************************************************************
+ * 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 org.apache.olingo.osgi.itests;
+
+import java.io.File;
+import java.io.InputStream;
+import java.util.Properties;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+import javax.inject.Inject;
+
+import org.apache.karaf.features.FeaturesService;
+import org.junit.Assert;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.ProbeBuilder;
+import org.ops4j.pax.exam.TestProbeBuilder;
+import org.ops4j.pax.exam.options.MavenUrlReference;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.Constants;
+import static org.ops4j.pax.exam.CoreOptions.composite;
+import static org.ops4j.pax.exam.CoreOptions.maven;
+import static org.ops4j.pax.exam.CoreOptions.systemProperty;
+import static org.ops4j.pax.exam.CoreOptions.when;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.editConfigurationFilePut;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.karafDistributionConfiguration;
+
+/**
+ *
+ */
+public class OlingoOSGiTestSupport {
+ private static final String MAVEN_DEPENDENCIES_PROPERTIES = "/META-INF/maven/dependencies.properties";
+
+ @Inject
+ protected BundleContext bundleContext;
+
+ @Inject
+ protected FeaturesService featureService;
+
+ protected ExecutorService executor = Executors.newCachedThreadPool();
+
+ protected MavenUrlReference olingoUrl;
+ protected MavenUrlReference karafUrl;
+
+ /**
+ * @param probe
+ * @return
+ */
+ @ProbeBuilder
+ public TestProbeBuilder probeConfiguration(TestProbeBuilder probe) {
+ probe.setHeader(Constants.DYNAMICIMPORT_PACKAGE, "*,org.apache.felix.service.*;status=provisional");
+ return probe;
+ }
+
+ private static String getKarafVersion() {
+ String karafVersion = getVersionFromPom("org.apache.karaf/apache-karaf/version");
+ if (karafVersion == null) {
+ karafVersion = System.getProperty("karaf.version");
+ }
+ if (karafVersion == null) {
+ // setup the default version of it
+ karafVersion = "3.0.3";
+ }
+ return karafVersion;
+ }
+
+ private static String getVersionFromPom(String key) {
+ try {
+ InputStream ins = OlingoOSGiTestSupport.class.getResourceAsStream(MAVEN_DEPENDENCIES_PROPERTIES);
+ Properties p = new Properties();
+ p.load(ins);
+ return p.getProperty(key);
+ } catch (Exception t) {
+ throw new IllegalStateException(MAVEN_DEPENDENCIES_PROPERTIES + " can not be found", t);
+ }
+ }
+ /**
+ * Create an {@link org.ops4j.pax.exam.Option} for using a .
+ *
+ * @return
+ */
+ protected Option olingoBaseConfig() {
+ karafUrl = maven().groupId("org.apache.karaf").artifactId("apache-karaf").version(getKarafVersion())
+ .type("tar.gz");
+ olingoUrl = maven().groupId("org.apache.olingo").artifactId("odata-karaf-feature").versionAsInProject()
+ .type("xml").classifier("features");
+ String localRepo = System.getProperty("localRepository");
+ return composite(karafDistributionConfiguration()
+ .frameworkUrl(karafUrl)
+ .karafVersion(getKarafVersion())
+ .name("Apache Karaf")
+ .useDeployFolder(false)
+ .unpackDirectory(new File("target/paxexam/")),
+ //DO NOT COMMIT WITH THIS LINE ENABLED!!!
+ //KarafDistributionOption.keepRuntimeFolder(),
+ systemProperty("java.awt.headless").value("true"),
+ when(localRepo != null)
+ .useOptions(editConfigurationFilePut("etc/org.ops4j.pax.url.mvn.cfg",
+ "org.ops4j.pax.url.mvn.localRepository",
+ localRepo)));
+ }
+
+ protected void assertBundleStarted(String name) {
+ Bundle bundle = findBundleByName(name);
+ Assert.assertNotNull("Bundle " + name + " should be installed", bundle);
+ Assert.assertEquals("Bundle " + name + " should be started", Bundle.ACTIVE, bundle.getState());
+ }
+
+ protected Bundle findBundleByName(String symbolicName) {
+ for (Bundle bundle : bundleContext.getBundles()) {
+ if (bundle.getSymbolicName().equals(symbolicName)) {
+ return bundle;
+ }
+ }
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java
----------------------------------------------------------------------
diff --git a/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java b/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java
new file mode 100644
index 0000000..d727253
--- /dev/null
+++ b/ext/karaf/karaf-fit/src/test/java/org/apache/olingo/osgi/itests/server/CarServiceTest.java
@@ -0,0 +1,105 @@
+/*******************************************************************************
+ * 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 org.apache.olingo.osgi.itests.server;
+
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.apache.olingo.osgi.itests.OlingoOSGiTestSupport;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.ops4j.pax.exam.Configuration;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.junit.PaxExam;
+import org.ops4j.pax.exam.karaf.options.LogLevelOption.LogLevel;
+import org.ops4j.pax.exam.spi.reactors.ExamReactorStrategy;
+import org.ops4j.pax.exam.spi.reactors.PerMethod;
+
+import static org.ops4j.pax.exam.CoreOptions.mavenBundle;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.features;
+import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
+
+/**
+ *
+ */
+@RunWith(PaxExam.class)
+@ExamReactorStrategy(PerMethod.class)
+public class CarServiceTest extends OlingoOSGiTestSupport {
+ private static final String SERVICE_URL = "http://localhost:8181/olingo-cars/cars.svc/";
+
+ @Test
+ public void testServiceStarted() throws Exception {
+ // check if the bundle is started
+ assertBundleStarted("org.apache.olingo.odata-server-osgi-sample");
+
+ // use the jdk http client to verify the server side
+ verifyContent(getContent(SERVICE_URL));
+
+ verifyContent(getContent(SERVICE_URL + "$metadata"));
+
+ verifyContent(getContent(SERVICE_URL + "Cars"));
+
+ verifyContent(getContent(SERVICE_URL + "Cars(1)"));
+
+ verifyContent(getContent(SERVICE_URL + "Cars(1)/Price"));
+ }
+
+ private static void verifyContent(String content) {
+ // this is currently a simple test to check if there is no error
+ Assert.assertNotNull(content);
+ Assert.assertTrue(content.indexOf("error") < 0);
+ }
+
+ private static String getContent(String target) throws Exception {
+ InputStream in = null;
+ try {
+ URL url = new URL(target);
+ URLConnection urlConnection = url.openConnection();
+ urlConnection.setRequestProperty("Accept", "*/*");
+ in = urlConnection.getInputStream();
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ byte[] buf = new byte[4096];
+ int n = 0;
+ while ((n = in.read(buf, 0, buf.length)) != -1) {
+ baos.write(buf, 0, n);
+ }
+ return new String(baos.toByteArray(), "utf-8");
+ } finally {
+ if (in != null) {
+ in.close();
+ }
+ }
+
+ }
+
+ @Configuration
+ public Option[] config() {
+ return new Option[] {
+ olingoBaseConfig(),
+ features(olingoUrl, "olingo-server", "olingo-client"),
+ mavenBundle("org.apache.olingo", "odata-server-osgi-sample", "4.0.0-SNAPSHOT"),
+ logLevel(LogLevel.INFO)
+ };
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/karaf/pom.xml
----------------------------------------------------------------------
diff --git a/ext/karaf/pom.xml b/ext/karaf/pom.xml
new file mode 100644
index 0000000..14e3645
--- /dev/null
+++ b/ext/karaf/pom.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ 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.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>odata-karaf</artifactId>
+ <packaging>pom</packaging>
+ <name>${project.artifactId}</name>
+
+ <parent>
+ <groupId>org.apache.olingo</groupId>
+ <artifactId>odata-ext</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ <relativePath>..</relativePath>
+ </parent>
+
+ <modules>
+ <module>karaf-features</module>
+ <module>karaf-fit</module>
+ </modules>
+</project>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/ext/pom.xml
----------------------------------------------------------------------
diff --git a/ext/pom.xml b/ext/pom.xml
index 93a78e3..92a4bc2 100644
--- a/ext/pom.xml
+++ b/ext/pom.xml
@@ -39,6 +39,14 @@
<module>pojogen-maven-plugin</module>
<module>client-proxy</module>
<module>client-android</module>
- <module>karaf/features</module>
</modules>
+
+ <profiles>
+ <profile>
+ <id>karaf</id>
+ <modules>
+ <module>karaf</module>
+ </modules>
+ </profile>
+ </profiles>
</project>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 1544783..0ae3c97 100644
--- a/pom.xml
+++ b/pom.xml
@@ -100,7 +100,7 @@
<!-- for osgi integration testing -->
<osgi.version>4.2.0</osgi.version>
<karaf.version>3.0.3</karaf.version>
- <pax.exam.version>4.5.0</pax.exam.version>
+ <pax.exam.version>3.4.0</pax.exam.version>
<!-- Project build settings -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/e59b5082/samples/pom.xml
----------------------------------------------------------------------
diff --git a/samples/pom.xml b/samples/pom.xml
index 0efc961..2d6b235 100644
--- a/samples/pom.xml
+++ b/samples/pom.xml
@@ -23,7 +23,6 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.olingo</groupId>
<artifactId>odata-samples</artifactId>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
@@ -37,6 +36,14 @@
<modules>
<module>server</module>
- <module>osgi/server</module>
</modules>
+
+ <profiles>
+ <profile>
+ <id>samples</id>
+ <modules>
+ <module>osgi/server</module>
+ </modules>
+ </profile>
+ </profiles>
</project>