IGNITE-1270 Implement basic support for OSGi. * OSGi manifests for most modules. * Apache Karaf features file to facilitate deployment (along with dependencies). * Make Ignite classloading OSGi-friendly and support different strategies. * Several integration tests with Pax Exam. * POM restructuring to promote 3rd party dep versions to build params.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/96e08027 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/96e08027 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/96e08027 Branch: refs/heads/ignite-1.5.1 Commit: 96e0802775fe94e9ba77fab147129142b809e432 Parents: 5beed16 Author: Raul Kripalani <ra...@apache.org> Authored: Thu Dec 3 14:44:12 2015 +0000 Committer: Raul Kripalani <ra...@apache.org> Committed: Thu Dec 3 14:44:12 2015 +0000 ---------------------------------------------------------------------- examples/pom.xml | 2 +- examples/schema-import/pom.xml | 2 +- modules/aop/pom.xml | 12 +- modules/aws/pom.xml | 18 +- modules/camel/pom.xml | 11 +- modules/core/pom.xml | 28 +- modules/flume/pom.xml | 16 +- modules/geospatial/pom.xml | 20 ++ modules/hadoop/pom.xml | 2 +- modules/hibernate/pom.xml | 10 +- modules/indexing/pom.xml | 22 +- modules/jcl/pom.xml | 11 + modules/jms11/pom.xml | 20 +- modules/jta/pom.xml | 17 + modules/kafka/pom.xml | 16 +- modules/log4j/pom.xml | 10 + modules/log4j2/pom.xml | 11 + modules/mqtt/pom.xml | 24 +- modules/osgi-karaf/README.txt | 18 + modules/osgi-karaf/licenses/apache-2.0.txt | 202 ++++++++++++ modules/osgi-karaf/pom.xml | 85 +++++ .../osgi-karaf/src/main/resources/features.xml | 327 +++++++++++++++++++ modules/osgi-paxlogging/README.txt | 12 + modules/osgi-paxlogging/licenses/apache-2.0.txt | 202 ++++++++++++ modules/osgi-paxlogging/pom.xml | 70 ++++ modules/osgi/README.txt | 65 ++++ modules/osgi/licenses/apache-2.0.txt | 202 ++++++++++++ modules/osgi/pom.xml | 171 ++++++++++ .../IgniteAbstractOsgiContextActivator.java | 238 ++++++++++++++ .../org/apache/ignite/osgi/IgniteOsgiUtils.java | 69 ++++ .../BundleDelegatingClassLoader.java | 147 +++++++++ .../classloaders/ContainerSweepClassLoader.java | 134 ++++++++ .../OsgiClassLoadingStrategyType.java | 29 ++ .../ignite/osgi/AbstractIgniteKarafTest.java | 109 +++++++ .../IgniteKarafFeaturesInstallationTest.java | 100 ++++++ .../ignite/osgi/IgniteOsgiServiceTest.java | 131 ++++++++ .../apache/ignite/osgi/IgniteOsgiTestSuite.java | 32 ++ .../activators/BasicIgniteTestActivator.java | 76 +++++ .../ignite/osgi/activators/TestOsgiFlags.java | 53 +++ .../osgi/activators/TestOsgiFlagsImpl.java | 83 +++++ modules/rest-http/pom.xml | 34 +- modules/scalar-2.10/pom.xml | 9 +- modules/scalar/pom.xml | 9 +- modules/schedule/pom.xml | 25 +- modules/schema-import/pom.xml | 2 +- modules/slf4j/pom.xml | 12 +- modules/spark-2.10/pom.xml | 2 +- modules/spring/pom.xml | 30 +- modules/ssh/pom.xml | 19 +- modules/twitter/pom.xml | 12 +- modules/urideploy/pom.xml | 17 +- modules/visor-console-2.10/pom.xml | 4 +- modules/visor-console/pom.xml | 2 +- modules/visor-plugins/pom.xml | 4 +- modules/web/pom.xml | 13 +- modules/zookeeper/pom.xml | 14 +- parent/pom.xml | 136 +++++++- pom.xml | 3 + 58 files changed, 3079 insertions(+), 75 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/examples/pom.xml ---------------------------------------------------------------------- diff --git a/examples/pom.xml b/examples/pom.xml index e7cd059..33c4f51 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -34,7 +34,7 @@ <dependency> <groupId>javax.cache</groupId> <artifactId>cache-api</artifactId> - <version>1.0.0</version> + <version>${javax.cache.version}</version> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/examples/schema-import/pom.xml ---------------------------------------------------------------------- diff --git a/examples/schema-import/pom.xml b/examples/schema-import/pom.xml index a6b635c..d315c63 100644 --- a/examples/schema-import/pom.xml +++ b/examples/schema-import/pom.xml @@ -41,7 +41,7 @@ <dependency> <groupId>javax.cache</groupId> <artifactId>cache-api</artifactId> - <version>1.0.0</version> + <version>${javax.cache.version}</version> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/aop/pom.xml ---------------------------------------------------------------------- diff --git a/modules/aop/pom.xml b/modules/aop/pom.xml index f410f65..8598863 100644 --- a/modules/aop/pom.xml +++ b/modules/aop/pom.xml @@ -44,13 +44,13 @@ <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> - <version>1.7.2</version> + <version>${aspectj.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> - <version>1.7.2</version> + <version>${aspectj.version}</version> </dependency> <dependency> @@ -107,5 +107,13 @@ </excludes> </testResource> </testResources> + + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> </build> </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/aws/pom.xml ---------------------------------------------------------------------- diff --git a/modules/aws/pom.xml b/modules/aws/pom.xml index 53979cb..68bb4c8 100644 --- a/modules/aws/pom.xml +++ b/modules/aws/pom.xml @@ -44,25 +44,25 @@ <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk</artifactId> - <version>1.3.21.1</version> + <version>${aws.sdk.version}</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> - <version>4.2.3</version> + <version>${httpclient.version}</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> - <version>4.2.3</version> + <version>${httpcore.version}</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> - <version>1.6</version> + <version>${commons.codec.version}</version> </dependency> <dependency> @@ -100,4 +100,14 @@ <scope>test</scope> </dependency> </dependencies> + + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> + </build> </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/camel/pom.xml ---------------------------------------------------------------------- diff --git a/modules/camel/pom.xml b/modules/camel/pom.xml index 328780a..e1c20f2 100644 --- a/modules/camel/pom.xml +++ b/modules/camel/pom.xml @@ -35,7 +35,6 @@ <url>http://ignite.apache.org</url> <properties> - <camel.version>2.16.0</camel.version> <guava.version>18.0</guava.version> <okhttp.version>2.5.0</okhttp.version> </properties> @@ -98,4 +97,14 @@ </dependencies> + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> + </build> + </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/core/pom.xml ---------------------------------------------------------------------- diff --git a/modules/core/pom.xml b/modules/core/pom.xml index 907c553..88e1c25 100644 --- a/modules/core/pom.xml +++ b/modules/core/pom.xml @@ -43,13 +43,29 @@ <properties> <ignite.update.notifier.product>apache-ignite</ignite.update.notifier.product> + + <!-- Imports: + - com.sun.jmx.mbeanserver => only used from TCKMBeanServerBuilder which has no usages within Ignite's + runtime codebase. Therefore, it's likely that code will not be hit during normal operation and we exclude it. + - javax.enterprise.util is optional. + --> + <osgi.import.package> + javax.enterprise.util;resolution:=optional, + !com.sun.jmx.mbeanserver, + * + </osgi.import.package> + <osgi.export.package> + org.apache.ignite.*, + org.jsr166.*;version=1.0.0; + {local-packages} + </osgi.export.package> </properties> <dependencies> <dependency> <groupId>javax.cache</groupId> <artifactId>cache-api</artifactId> - <version>1.0.0</version> + <version>${javax.cache.version}</version> </dependency> <dependency> @@ -90,7 +106,7 @@ <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> - <version>1.3.175</version> + <version>${h2.version}</version> <scope>test</scope> </dependency> @@ -139,7 +155,7 @@ <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> - <version>2.4</version> + <version>${jsonlib.version}</version> <classifier>jdk15</classifier> <scope>test</scope> </dependency> @@ -276,6 +292,12 @@ </execution> </executions> </plugin> + + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> </plugins> </build> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/flume/pom.xml ---------------------------------------------------------------------- diff --git a/modules/flume/pom.xml b/modules/flume/pom.xml index 0768410..8598248 100644 --- a/modules/flume/pom.xml +++ b/modules/flume/pom.xml @@ -34,10 +34,6 @@ <version>1.5.0-b1-SNAPSHOT</version> <url>http://ignite.apache.org</url> - <properties> - <flume-ng.version>1.6.0</flume-ng.version> - </properties> - <dependencies> <dependency> <groupId>org.apache.ignite</groupId> @@ -48,7 +44,7 @@ <dependency> <groupId>org.apache.flume</groupId> <artifactId>flume-ng-core</artifactId> - <version>${flume-ng.version}</version> + <version>${flume.ng.version}</version> </dependency> <dependency> @@ -73,4 +69,14 @@ <scope>test</scope> </dependency> </dependencies> + + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> + </build> </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/geospatial/pom.xml ---------------------------------------------------------------------- diff --git a/modules/geospatial/pom.xml b/modules/geospatial/pom.xml index eefe279..229ecef 100644 --- a/modules/geospatial/pom.xml +++ b/modules/geospatial/pom.xml @@ -82,4 +82,24 @@ <scope>test</scope> </dependency> </dependencies> + + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. + This bundle is a fragment attached to the ignite-core bundle, as it contains and exports classes in + the org.apache.ignite.internal.processors.query.h2.opt in the same manner as ignite-indexing, thus + leading to a split package situation in OSGi. + --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <configuration> + <instructions> + <Fragment-Host>org.apache.ignite.ignite-core</Fragment-Host> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/hadoop/pom.xml ---------------------------------------------------------------------- diff --git a/modules/hadoop/pom.xml b/modules/hadoop/pom.xml index 75a9eea..df39996 100644 --- a/modules/hadoop/pom.xml +++ b/modules/hadoop/pom.xml @@ -104,7 +104,7 @@ <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> - <version>1.8.3</version> + <version>${commons.beanutils.version}</version> <scope>test</scope> </dependency> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/hibernate/pom.xml ---------------------------------------------------------------------- diff --git a/modules/hibernate/pom.xml b/modules/hibernate/pom.xml index d5a1be4..766ca97 100644 --- a/modules/hibernate/pom.xml +++ b/modules/hibernate/pom.xml @@ -71,7 +71,7 @@ <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> - <version>1.3.175</version> + <version>${h2.version}</version> <scope>test</scope> </dependency> @@ -134,5 +134,13 @@ </excludes> </testResource> </testResources> + + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> </build> </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/indexing/pom.xml ---------------------------------------------------------------------- diff --git a/modules/indexing/pom.xml b/modules/indexing/pom.xml index 13a11b4..e7a1c3b 100644 --- a/modules/indexing/pom.xml +++ b/modules/indexing/pom.xml @@ -44,19 +44,19 @@ <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> - <version>1.6</version> + <version>${commons.codec.version}</version> </dependency> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> - <version>3.5.0</version> + <version>${lucene.version}</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> - <version>1.3.175</version> + <version>${h2.version}</version> </dependency> <dependency> @@ -108,6 +108,22 @@ </execution> </executions> </plugin> + + <!-- Generate the OSGi MANIFEST.MF for this bundle. + This bundle is a fragment attached to the ignite-core bundle, as it contains and exports classes in + the org.apache.ignite.internal.processors.query.h2.opt in the same manner as ignite-geospatial, thus + leading to a split package situation in OSGi. It also contains an internal processor. + --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <configuration> + <instructions> + <Fragment-Host>org.apache.ignite.ignite-core</Fragment-Host> + </instructions> + </configuration> + </plugin> </plugins> </build> + </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/jcl/pom.xml ---------------------------------------------------------------------- diff --git a/modules/jcl/pom.xml b/modules/jcl/pom.xml index a2ee45f..8678caa 100644 --- a/modules/jcl/pom.xml +++ b/modules/jcl/pom.xml @@ -55,4 +55,15 @@ <scope>test</scope> </dependency> </dependencies> + + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> + </build> + </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/jms11/pom.xml ---------------------------------------------------------------------- diff --git a/modules/jms11/pom.xml b/modules/jms11/pom.xml index 4665ce9..2e2ffe6 100644 --- a/modules/jms11/pom.xml +++ b/modules/jms11/pom.xml @@ -34,10 +34,6 @@ <version>1.5.0-b1-SNAPSHOT</version> <url>http://ignite.apache.org</url> - <properties> - <activemq.version>5.12.0</activemq.version> - </properties> - <dependencies> <dependency> <groupId>org.apache.ignite</groupId> @@ -46,9 +42,9 @@ </dependency> <dependency> - <groupId>javax.jms</groupId> - <artifactId>jms-api</artifactId> - <version>1.1-rev-1</version> + <groupId>org.apache.geronimo.specs</groupId> + <artifactId>geronimo-jms_1.1_spec</artifactId> + <version>${jms.spec.version}</version> </dependency> <dependency> @@ -88,4 +84,14 @@ </dependency> </dependencies> + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> + </build> + </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/jta/pom.xml ---------------------------------------------------------------------- diff --git a/modules/jta/pom.xml b/modules/jta/pom.xml index 4724c4f..9dabe28 100644 --- a/modules/jta/pom.xml +++ b/modules/jta/pom.xml @@ -83,4 +83,21 @@ <scope>test</scope> </dependency> </dependencies> + + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <!-- This is a fragment because it's a processor module. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <configuration> + <instructions> + <Fragment-Host>org.apache.ignite.ignite-core</Fragment-Host> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/kafka/pom.xml ---------------------------------------------------------------------- diff --git a/modules/kafka/pom.xml b/modules/kafka/pom.xml index b62f177..443d73c 100644 --- a/modules/kafka/pom.xml +++ b/modules/kafka/pom.xml @@ -44,7 +44,7 @@ <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.10</artifactId> - <version>0.8.2.1</version> + <version>${kafka.version}</version> <exclusions> <exclusion> <groupId>com.sun.jmx</groupId> @@ -72,7 +72,7 @@ <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> - <version>3.4.5</version> + <version>${zookeeper.version}</version> </dependency> <dependency> @@ -84,7 +84,7 @@ <dependency> <groupId>org.ow2.asm</groupId> <artifactId>asm-all</artifactId> - <version>4.2</version> + <version>${asm.version}</version> </dependency> <dependency> @@ -103,4 +103,14 @@ </dependency> </dependencies> + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> + </build> + </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/log4j/pom.xml ---------------------------------------------------------------------- diff --git a/modules/log4j/pom.xml b/modules/log4j/pom.xml index f08217e..e27732e 100644 --- a/modules/log4j/pom.xml +++ b/modules/log4j/pom.xml @@ -54,4 +54,14 @@ <scope>test</scope> </dependency> </dependencies> + + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> + </build> </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/log4j2/pom.xml ---------------------------------------------------------------------- diff --git a/modules/log4j2/pom.xml b/modules/log4j2/pom.xml index db351cb..e195ce7 100644 --- a/modules/log4j2/pom.xml +++ b/modules/log4j2/pom.xml @@ -61,4 +61,15 @@ <version>2.3</version> </dependency> </dependencies> + + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> + </build> + </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/mqtt/pom.xml ---------------------------------------------------------------------- diff --git a/modules/mqtt/pom.xml b/modules/mqtt/pom.xml index a1ce973..c0b17e6 100644 --- a/modules/mqtt/pom.xml +++ b/modules/mqtt/pom.xml @@ -34,12 +34,6 @@ <version>1.5.0-b1-SNAPSHOT</version> <url>http://ignite.apache.org</url> - <properties> - <paho.version>1.0.2</paho.version> - <activemq.version>5.12.0</activemq.version> - <guava-retryier.version>2.0.0</guava-retryier.version> - </properties> - <dependencies> <dependency> <groupId>org.apache.ignite</groupId> @@ -56,7 +50,13 @@ <dependency> <groupId>com.github.rholder</groupId> <artifactId>guava-retrying</artifactId> - <version>${guava-retryier.version}</version> + <version>${guava.retrying.version}</version> + </dependency> + + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>${guava.version}</version> </dependency> <dependency> @@ -110,4 +110,14 @@ </repository> </repositories> + <build> + <plugins> + <!-- Generate the OSGi MANIFEST.MF for this bundle. --> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + </plugin> + </plugins> + </build> + </project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/osgi-karaf/README.txt ---------------------------------------------------------------------- diff --git a/modules/osgi-karaf/README.txt b/modules/osgi-karaf/README.txt new file mode 100644 index 0000000..6bd1555 --- /dev/null +++ b/modules/osgi-karaf/README.txt @@ -0,0 +1,18 @@ +Apache Ignite OSGi Karaf Integration Module +------------------------------------------- + +This module contains a feature repository to facilitate installing Apache Ignite into an Apache Karaf container. + +Use the following Karaf command: + + karaf@root()> feature:repo-add mvn:org.apache.ignite/ignite-osgi-karaf/${ignite.version}/xml/features + +Replacing ${ignite.version} with the Apache Ignite version you woudl like to install. + +You may now list the Ignite features that are available for installation: + + karaf@root()> feature:list | grep ignite + +Each feature installs the corresponding ignite module + its dependencies. + +We include an global feature with name 'ignite-all' that collectively installs all Ignite features at once. http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/osgi-karaf/licenses/apache-2.0.txt ---------------------------------------------------------------------- diff --git a/modules/osgi-karaf/licenses/apache-2.0.txt b/modules/osgi-karaf/licenses/apache-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/modules/osgi-karaf/licenses/apache-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/osgi-karaf/pom.xml ---------------------------------------------------------------------- diff --git a/modules/osgi-karaf/pom.xml b/modules/osgi-karaf/pom.xml new file mode 100644 index 0000000..f1ac66b --- /dev/null +++ b/modules/osgi-karaf/pom.xml @@ -0,0 +1,85 @@ +<?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. +--> + +<!-- + POM file. +--> +<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> + + <parent> + <groupId>org.apache.ignite</groupId> + <artifactId>ignite-parent</artifactId> + <version>1</version> + <relativePath>../../parent</relativePath> + </parent> + + <groupId>org.apache.ignite</groupId> + <artifactId>ignite-osgi-karaf</artifactId> + <version>1.5.0-SNAPSHOT</version> + <packaging>pom</packaging> + + <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> + <version>1.9.1</version> + <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/ignite/blob/96e08027/modules/osgi-karaf/src/main/resources/features.xml ---------------------------------------------------------------------- diff --git a/modules/osgi-karaf/src/main/resources/features.xml b/modules/osgi-karaf/src/main/resources/features.xml new file mode 100644 index 0000000..4dca39b --- /dev/null +++ b/modules/osgi-karaf/src/main/resources/features.xml @@ -0,0 +1,327 @@ +<?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 name="ignite" xmlns="http://karaf.apache.org/xmlns/features/v1.3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.3.0 http://karaf.apache.org/xmlns/features/v1.3.0"> + + <feature name="ignite-all" version="${project.version}" description="Apache Ignite :: All"> + <details> + <![CDATA[Aggregate feature for installing all Apache Ignite module + their dependencies. + + NOTE: Due to a bug in Apache Karaf (KARAF-4129), you must install the ignite-log4j feature explicitly and then either: + - manually refresh the pax-logging-api framework bundle - or - + - restart the Apache Karaf container. + You may safely ignore the 'Resource has no uri' exception if you follow this method.]]> + </details> + <feature>ignite-core</feature> + <feature>ignite-aop</feature> + <feature>ignite-aws</feature> + <feature>ignite-camel</feature> + <feature>ignite-flume</feature> + <feature>ignite-indexing</feature> + <feature>ignite-hibernate</feature> + <feature>ignite-jcl</feature> + <feature>ignite-jms11</feature> + <feature>ignite-jta</feature> + <feature>ignite-kafka</feature> + <feature>ignite-mqtt</feature> + <!-- KARAF-4129 Karaf feature containing a fragment that attaches to pax-logging-api cannot be installed + <feature>ignite-log4j</feature>--> + <feature>ignite-rest-http</feature> + <feature>ignite-scalar-2.11</feature> + <feature>ignite-schedule</feature> + <feature>ignite-slf4j</feature> + <feature>ignite-spring</feature> + <feature>ignite-ssh</feature> + <feature>ignite-twitter</feature> + <feature>ignite-urideploy</feature> + <feature>ignite-web</feature> + <feature>ignite-zookeeper</feature> + </feature> + + <feature name="ignite-core" version="${project.version}" description="Apache Ignite :: Core"> + <details><![CDATA[The Apache Ignite core module. This feature also installs the JCache 1.0 specification API.]]></details> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.javax-cache-api/${javax.cache.bundle.version}</bundle> + <bundle dependency="true">mvn:org.apache.ignite/ignite-osgi/${project.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-core/${project.version}</bundle> + </feature> + + <feature name="ignite-aop" version="${project.version}" description="Apache Ignite :: AOP"> + <details><![CDATA[The Apache Ignite AOP module + dependencies.]]></details> + <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-aspects</feature> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aopalliance/${aopalliance.bundle.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aspectj/${aspectj.bundle.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-aop/${project.version}</bundle> + </feature> + + <feature name="ignite-aws" version="${project.version}" description="Apache Ignite :: AWS"> + <details><![CDATA[The Apache Ignite AWS module + dependencies.]]></details> + <bundle start="true" dependency="true">mvn:org.apache.httpcomponents/httpcore-osgi/${httpcore.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.httpcomponents/httpclient-osgi/${httpclient.version}</bundle> + <bundle start="true" dependency="true">mvn:commons-codec/commons-codec/${commons.codec.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.aws-java-sdk/${aws.sdk.bundle.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-aws/${project.version}</bundle> + </feature> + + <feature name="ignite-camel" version="${project.version}" description="Apache Ignite :: Camel"> + <details> + <![CDATA[The Apache Ignite Camel module. + + Make sure to install the Apache Camel feature repository before installing this feature. + + mvn:org.apache.camel.karaf/apache-camel/\${camel.version}/xml/features + + Installing this feature will trigger the installation of the 'camel-core' feature from the Camel repository.]]> + </details> + <feature>camel-core</feature> + <bundle start="true">mvn:org.apache.ignite/ignite-camel/${project.version}</bundle> + </feature> + + <feature name="ignite-flume" version="${project.version}" description="Apache Ignite :: Flume"> + <details> + <![CDATA[The Apache Ignite Flume module + dependencies.]]> + </details> + <feature prerequisite="true">wrap</feature> + <bundle start="true" dependency="true">wrap:mvn:org.apache.flume/flume-ng-core/${flume.ng.version}$Bundle-SymbolicName=flume-ng-core&Bundle-Version=${flume.ng.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-flume/${project.version}</bundle> + </feature> + + <feature name="ignite-hibernate" version="${project.version}" description="Apache Ignite :: Hibernate"> + <details> + <![CDATA[The Apache Ignite Hibernate module + dependencies. + + Installing this feature will trigger the installation of the 'hibernate' feature from the Apache Karaf distribution.]]> + </details> + <feature>hibernate</feature> + <bundle start="true">mvn:org.apache.ignite/ignite-hibernate/${project.version}</bundle> + </feature> + + <feature name="ignite-indexing" version="${project.version}" description="Apache Ignite :: Indexing"> + <details> + <![CDATA[The Apache Ignite Indexing module + dependencies. This module is a fragment of ignite-core. + + Be sure to refresh ignite-core manually in case it is not refreshed automatically.]]> + </details> + <bundle start="true" dependency="true">mvn:org.osgi/org.osgi.enterprise/${osgi.enterprise.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.lucene/${lucene.bundle.version}</bundle> + <bundle start="true" dependency="true">mvn:com.h2database/h2/${h2.version}</bundle> + <bundle start="false">mvn:org.apache.ignite/ignite-indexing/${project.version}</bundle> + </feature> + + <feature name="ignite-jcl" version="${project.version}" description="Apache Ignite :: JCL"> + <details> + <![CDATA[The Apache Ignite JCL integration module. In Apache Karaf, this module will integrate with Pax Logging.]]> + </details> + <bundle start="true">mvn:org.apache.ignite/ignite-jcl/${project.version}</bundle> + </feature> + + <feature name="ignite-jms11" version="${project.version}" description="Apache Ignite :: JMS 1.1"> + <details> + <![CDATA[The Apache Ignite JMS 1.1 module. Make sure to install your broker's JMS client bundle as well.]]> + </details> + <bundle start="true" dependency="true">mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${jms.spec.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-jms11/${project.version}</bundle> + </feature> + + <feature name="ignite-jta" version="${project.version}" description="Apache Ignite :: JTA"> + <details> + <![CDATA[The Apache Ignite JTA module + dependencies. This module is a fragment of ignite-core. + + Be sure to refresh ignite-core manually in case it is not refreshed automatically. + + Installing this feature will trigger the installation of the 'transaction' feature from the Apache Karaf distribution.]]> + </details> + <feature dependency="true">transaction</feature> + <bundle start="true">mvn:org.apache.ignite/ignite-jta/${project.version}</bundle> + </feature> + + <feature name="ignite-kafka" version="${project.version}" description="Apache Ignite :: Kafka"> + <details> + <![CDATA[The Apache Ignite Kafka module + dependencies. This module installs the Scala 2.10 library bundle.]]> + </details> + <feature prerequisite="true">wrap</feature> + <bundle start="true" dependency="true">mvn:org.scala-lang/scala-library/${scala210.library.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.zookeeper/zookeeper/${zookeeper.version}</bundle> + <bundle start="true" dependency="true">wrap:mvn:com.101tec/zkclient/${zkclient.version}$Bundle-SymbolicName=zkclient&Bundle-Version=${zkclient.version}&Export-Package=*;-noimport:=true;version=${zkclient.version}</bundle> + <bundle start="true" dependency="true">wrap:mvn:com.yammer.metrics/metrics-core/${yammer.metrics.core.version}$Bundle-SymbolicName=yammer-metrics-core&Bundle-Version=2.2.0&Export-Package=*;-noimport:=true;version=${yammer.metrics.core.version}</bundle> + <bundle start="true" dependency="true">wrap:mvn:com.yammer.metrics/metrics-annotation/${yammer.metrics.annotation.version}$Bundle-SymbolicName=yammer-metrics-annotation&Bundle-Version=2.2.0&Export-Package=*;-noimport:=true;version=${yammer.metrics.annotation.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.kafka-clients/${kafka.clients.bundle.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.kafka_2.10/${kafka.bundle.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-kafka/${project.version}</bundle> + </feature> + + <feature name="ignite-log4j" version="${project.version}" description="Apache Ignite :: log4j"> + <details> + <![CDATA[The Apache Ignite log4j module + dependencies. + + This module installs an OSGi fragment that exposes extra packages from the Pax Logging bundle required by Ignite. + + Be sure to refresh the Pax Logging bundles manually in case this does not happen automatically.]]> + </details> + <bundle dependency="true" start-level="8">mvn:org.apache.ignite/ignite-osgi-paxlogging/${project.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-log4j/${project.version}</bundle> + </feature> + + <feature name="ignite-mqtt" version="${project.version}" description="Apache Ignite :: MQTT"> + <details> + <![CDATA[The Apache Ignite MQTT module + dependencies.]]> + </details> + <feature prerequisite="true">wrap</feature> + <bundle start="true" dependency="true">mvn:com.google.guava/guava/${guava.version}</bundle> + <bundle start="true" dependency="true">mvn:org.eclipse.paho/org.eclipse.paho.client.mqttv3/${paho.version}</bundle> + <bundle start="true" dependency="true">wrap:mvn:com.github.rholder/guava-retrying/${guava.retrying.version}$Bundle-SymbolicName=guava-retrying&Bundle-SymbolicName=guava-retrying&Bundle-Version=${guava.retrying.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-mqtt/${project.version}</bundle> + </feature> + + <feature name="ignite-rest-http" version="${project.version}" description="Apache Ignite :: REST HTTP"> + <!-- NOTICE: XOM cannot be included by default due to an incompatible license; + please review its license model and install the dependency manually if you agree. --> + <details> + <![CDATA[The Apache Ignite REST HTTP module + dependencies. + + Installing this feature will trigger the installation of the 'http' feature from the Apache Karaf distribution. + + NOTE: Before using this feature you must review the license of the XOM bundle and install it manually if you accept it: + install -s mvn:xom/xom/1.2.5]]> + </details> + <feature dependency="true">http</feature> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-beanutils/${commons.beanutils.bundle.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.oro/${oro.bundle.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.ezmorph/${ezmorph.bundle.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.json-lib/${jsonlib.bundle.version}</bundle> + <bundle start="true" dependency="true">mvn:commons-lang/commons-lang/${commons.lang.version}</bundle> + <bundle start="true" dependency="true">mvn:commons-collections/commons-collections/${commons.collections.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-rest-http/${project.version}</bundle> + </feature> + + <feature name="ignite-scalar-2.10" version="${project.version}" description="Apache Ignite :: Scala 2.10"> + <details> + <![CDATA[The Apache Ignite Scala 2.11 integration module + dependencies. This module installs the Scala 2.10 library bundle.]]> + </details> + <bundle start="true" dependency="true">mvn:org.scala-lang/scala-library/${scala210.library.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-scalar_2.10/${project.version}</bundle> + </feature> + + <feature name="ignite-scalar-2.11" version="${project.version}" description="Apache Ignite :: Scala 2.11"> + <details> + <![CDATA[The Apache Ignite Scala 2.11 integration module + dependencies. This module installs the Scala 2.11 library bundle.]]> + </details> + <bundle start="true" dependency="true">mvn:org.scala-lang/scala-library/${scala211.library.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-scalar/${project.version}</bundle> + </feature> + + <feature name="ignite-schedule" version="${project.version}" description="Apache Ignite :: Schedule"> + <details> + <![CDATA[The Apache Ignite Schedule module + dependencies. This module is a fragment of ignite-core.]]> + </details> + <feature prerequisite="true">wrap</feature> + <bundle start="true" dependency="true">wrap:mvn:it.sauronsoftware.cron4j/cron4j/${cron4j.version}$Bundle-SymbolicName=cron4j&Bundle-Version=${cron4j.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-schedule/${project.version}</bundle> + </feature> + + <feature name="ignite-slf4j" version="${project.version}" description="Apache Ignite :: slf4j"> + <details> + <![CDATA[The Apache Ignite slf4j module.]]> + </details> + <bundle start="true">mvn:org.apache.ignite/ignite-slf4j/${project.version}</bundle> + </feature> + + <feature name="ignite-spring" version="${project.version}" description="Apache Ignite :: Spring Support"> + <details> + <![CDATA[The Apache Ignite Spring integration module + dependencies. This module is a fragment of ignite-core. + + Be sure to refresh ignite-core in case it is not refreshed automatically. + + This feature installs the following features from the Apache Karaf distribution: + - spring + - spring-aspects + - spring-tx + - spring-jdbc + + With version range: [${spring41.osgi.feature.version},4.2).]]> + </details> + <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring</feature> + <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-aspects</feature> + <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-tx</feature> + <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-jdbc</feature> + <bundle start="true">mvn:org.apache.ignite/ignite-spring/${project.version}</bundle> + </feature> + + <feature name="ignite-ssh" version="${project.version}" description="Apache Ignite :: SSH"> + <details> + <![CDATA[The Apache Ignite SSH module + dependencies.]]> + </details> + <bundle start="true" dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jsch/${jsch.bundle.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-ssh/${project.version}</bundle> + </feature> + + <feature name="ignite-twitter" version="${project.version}" description="Apache Ignite :: Twitter"> + <details> + <![CDATA[The Apache Ignite Twitter module + dependencies.]]> + </details> + <feature prerequisite="true">wrap</feature> + <bundle start="true" dependency="true">mvn:com.google.guava/guava/${guava14.version}</bundle> + <bundle start="true" dependency="true">wrap:mvn:com.twitter/hbc-core/${twitter.hbc.version}$Bundle-SymbolicName=Hosebird Client Core&Bundle-Version=${twitter.hbc.version}</bundle> + <bundle start="true" dependency="true">wrap:mvn:com.twitter/hbc-twitter4j/${twitter.hbc.version}$Bundle-SymbolicName=Hosebird Client Twitter4J&Bundle-Version=${twitter.hbc.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-twitter/${project.version}</bundle> + </feature> + + <feature name="ignite-urideploy" version="${project.version}" description="Apache Ignite :: URI Deploy"> + <details> + <![CDATA[The Apache Ignite URI Deploy module + dependencies. + + This feature installs the following features from the Apache Karaf distribution: + - spring + - spring-aspects + - spring-tx + + With version range: [${spring41.osgi.feature.version},4.2).]]> + </details> + <feature prerequisite="true">wrap</feature> + <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring</feature> + <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-aspects</feature> + <feature dependency="true" version="[${spring41.osgi.feature.version},4.2)">spring-tx</feature> + <bundle start="true" dependency="true">wrap:mvn:net.sf.jtidy/jtidy/${jtidy.version}$Bundle-SymbolicName=JTidy&Bundle-Version=938</bundle> + <bundle start="true" dependency="true">mvn:commons-codec/commons-codec/${commons.codec.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-urideploy/${project.version}</bundle> + </feature> + + <feature name="ignite-web" version="${project.version}" description="Apache Ignite :: Web"> + <details> + <![CDATA[The Apache Ignite Web module + dependencies. + + This feature installs the 'http' feature from the Apache Karaf distribution.]]> + </details> + <feature dependency="true">http</feature> + <bundle start="true">mvn:org.apache.ignite/ignite-web/${project.version}</bundle> + </feature> + + <feature name="ignite-zookeeper" version="${project.version}" description="Apache Ignite :: ZooKeeper"> + <details> + <![CDATA[The Apache Ignite ZooKeeper module + dependencies.]]> + </details> + <bundle start="true" dependency="true">mvn:com.google.guava/guava/${guava16.version}</bundle> + <bundle start="true" dependency="true">mvn:org.codehaus.jackson/jackson-core-asl/${jackson.version}</bundle> + <bundle start="true" dependency="true">mvn:org.codehaus.jackson/jackson-mapper-asl/${jackson.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.curator/curator-client/${curator.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.curator/curator-framework/${curator.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.curator/curator-recipes/${curator.version}</bundle> + <bundle start="true" dependency="true">mvn:org.apache.curator/curator-x-discovery/${curator.version}</bundle> + <bundle start="true">mvn:org.apache.ignite/ignite-zookeeper/${project.version}</bundle> + </feature> + +</features> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/osgi-paxlogging/README.txt ---------------------------------------------------------------------- diff --git a/modules/osgi-paxlogging/README.txt b/modules/osgi-paxlogging/README.txt new file mode 100644 index 0000000..f6346f1 --- /dev/null +++ b/modules/osgi-paxlogging/README.txt @@ -0,0 +1,12 @@ +Apache Ignite OSGi Pax Logging Fragment Module +---------------------------------------------- + +This module is an OSGi fragment that exposes the following packages from the Pax Logging API bundle: + + - org.apache.log4j.varia + - org.apache.log4j.xml + +These packages are required when installing the ignite-log4j bundle, and are not exposed by default +by the Pax Logging API - the logging framework used by Apache Karaf. + +This fragment exposes them. http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/osgi-paxlogging/licenses/apache-2.0.txt ---------------------------------------------------------------------- diff --git a/modules/osgi-paxlogging/licenses/apache-2.0.txt b/modules/osgi-paxlogging/licenses/apache-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/modules/osgi-paxlogging/licenses/apache-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/osgi-paxlogging/pom.xml ---------------------------------------------------------------------- diff --git a/modules/osgi-paxlogging/pom.xml b/modules/osgi-paxlogging/pom.xml new file mode 100644 index 0000000..bd9e18e --- /dev/null +++ b/modules/osgi-paxlogging/pom.xml @@ -0,0 +1,70 @@ +<?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. +--> + +<!-- + POM file. +--> +<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> + + <parent> + <groupId>org.apache.ignite</groupId> + <artifactId>ignite-parent</artifactId> + <version>1</version> + <relativePath>../../parent</relativePath> + </parent> + + <groupId>org.apache.ignite</groupId> + <artifactId>ignite-osgi-paxlogging</artifactId> + <version>1.5.0-SNAPSHOT</version> + <packaging>jar</packaging> + + <dependencies> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.apache.felix</groupId> + <artifactId>maven-bundle-plugin</artifactId> + <version>${maven.bundle.plugin.version}</version> + <extensions>true</extensions> + <configuration> + <instructions> + <Fragment-Host>org.ops4j.pax.logging.pax-logging-api</Fragment-Host> + <Export-Package> + org.apache.log4j.varia;-noimport:=true, + org.apache.log4j.xml;-noimport:=true + </Export-Package> + <Import-Package>!*</Import-Package> + <_invalidfilenames /> + <_nodefaultversion>true</_nodefaultversion> + </instructions> + </configuration> + </plugin> + </plugins> + </build> + +</project> http://git-wip-us.apache.org/repos/asf/ignite/blob/96e08027/modules/osgi/README.txt ---------------------------------------------------------------------- diff --git a/modules/osgi/README.txt b/modules/osgi/README.txt new file mode 100644 index 0000000..35b133d --- /dev/null +++ b/modules/osgi/README.txt @@ -0,0 +1,65 @@ +Apache Ignite OSGi Integration Module +------------------------------------- + +This module provides the bridging components to make Apache Ignite run seamlessly inside an OSGi container +like Apache Karaf. It provides a Bundle Activator to initialize Ignite, along with different classloaders +facilitate class resolution within an OSGi environment. + +If using Ignite within Apache Karaf, please refer to the osgi-karaf and osgi-paxlogging modules too: + + - osgi-karaf contains a feature repository to facilitate installing Ignite into a Karaf container. + - osgi-paxlogging contains an OSGi fragment required to make pax-logging-api expose certain log4j packages + required by ignite-log4j + +Importing the ignite-osgi module in a Maven project +--------------------------------------------------- + +If you are using Maven to manage dependencies of your project, you can add the ignite-osgi module +dependency like this (replace '${ignite.version}' with actual Ignite version you are interested in): + +<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"> + ... + <dependencies> + ... + <dependency> + <groupId>org.apache.ignite</groupId> + <artifactId>ignite-osgi</artifactId> + <version>${ignite.version}</version> + </dependency> + ... + </dependencies> + ... +</project> + +Running the tests in this module +-------------------------------- + +We use the Pax Exam framework to fire up an Apache Karaf container (forked process) in order to execute the OSGi tests. + +Bundles are provisioned into the container via mvn: URLs. For this to work, you must have run a full build from the +top directory of the Ignite source tree, including the install goal, which provisions the modules into your local +Maven repository: + + mvn clean install -Plgpl + +Neither compiling and running the tests, nor generating Javadocs are necessary. To disable these steps, +use these switches: + + -DskipTests -Dmaven.test.skip=true -Dmaven.javadoc.skip=true + +You may then run the OSGi test suite: + + mvn test -Dtest=IgniteOsgiTestSuite + +NOTE: This test uses environment variables set by the maven-surefire-plugin configuration. If you are running the +test suite from within an IDE, either run it via Maven or set these environment variables manually in your +Run/Debug configuration: + + - projectVersion + - karafVersion + - camelVersion + +See the pom.xml file of this module to understand which values to set.