Fix FELIX-4217 Ensure compatibility between Aries Blueprint and iPOJO

Add compatibility tests checking the compatibility between iPOJO, SCR and Blueprint
Are currently tested : Felix SCR, Aries Blueprint, KF SCR

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1524156 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/pom.xml b/ipojo/runtime/core-it/ipojo-compatibility-test/pom.xml
new file mode 100644
index 0000000..36030a6
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/pom.xml
@@ -0,0 +1,37 @@
+<?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>
+
+    <parent>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>org.apache.felix.ipojo.runtime.core-it</artifactId>
+        <version>1.10.2-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>ipojo-compatibility-test</artifactId>
+    <version>1.10.2-SNAPSHOT</version>
+
+    <name>${project.artifactId}</name>
+    
+</project>
\ No newline at end of file
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/ipojo/HelloServiceConsumer.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/ipojo/HelloServiceConsumer.java
new file mode 100644
index 0000000..a6a7b95
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/ipojo/HelloServiceConsumer.java
@@ -0,0 +1,50 @@
+/*
+ * 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.felix.ipojo.test.compatibility.ipojo;
+
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.annotations.Instantiate;
+import org.apache.felix.ipojo.annotations.Provides;
+import org.apache.felix.ipojo.annotations.Requires;
+import org.apache.felix.ipojo.test.compatibility.service.CheckService;
+import org.apache.felix.ipojo.test.compatibility.service.HelloService;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Hello Service Provider with iPOJO.
+ */
+@Component
+@Provides
+@Instantiate
+public class HelloServiceConsumer implements CheckService {
+
+    @Requires
+    private HelloService hello;
+
+    @Override
+    public Map<String, Object> data() {
+        Map<String, Object> map = new LinkedHashMap<String, Object>();
+        map.put("result", hello.hello("john doe"));
+        map.put("object", hello);
+        return map;
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/ipojo/HelloServiceProvider.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/ipojo/HelloServiceProvider.java
new file mode 100644
index 0000000..11f4f49
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/ipojo/HelloServiceProvider.java
@@ -0,0 +1,44 @@
+/*
+ * 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.felix.ipojo.test.compatibility.ipojo;
+
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.annotations.Instantiate;
+import org.apache.felix.ipojo.annotations.Provides;
+import org.apache.felix.ipojo.test.compatibility.service.HelloService;
+
+/**
+ * Hello Service Provider with iPOJO.
+ */
+@Component
+@Provides
+@Instantiate
+public class HelloServiceProvider implements HelloService {
+
+    /**
+     * A very original implementation.
+     * @param name the name
+     * @return hello $name
+     */
+    @Override
+    public String hello(String name) {
+        return "hello " + name;
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/scr/HelloServiceConsumer.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/scr/HelloServiceConsumer.java
new file mode 100644
index 0000000..36e05d8
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/scr/HelloServiceConsumer.java
@@ -0,0 +1,67 @@
+/*
+ * 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.felix.ipojo.test.compatibility.scr;
+
+import org.apache.felix.ipojo.test.compatibility.service.CheckService;
+import org.apache.felix.ipojo.test.compatibility.service.HelloService;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * Hello Service Provider with SCR.
+ */
+public class HelloServiceConsumer implements CheckService {
+
+    private HelloService hello;
+
+    @Override
+    public Map<String, Object> data() {
+        synchronized (this) {
+            Map<String, Object> map = new LinkedHashMap<String, Object>();
+            if (hello != null) {
+                map.put("result", hello.hello("john doe"));
+                map.put("object", hello);
+            }
+            return map;
+        }
+    }
+
+    public void bindHello(HelloService h) {
+        synchronized (this) {
+            hello = h;
+        }
+    }
+
+    public void unbindHello(HelloService h) {
+        synchronized (this) {
+            hello = null;
+        }
+    }
+
+    /**
+     * Used by blueprint...
+     *
+     * @param h the hello service instance.
+     */
+    public void setHello(HelloService h) {
+        hello = h;
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/scr/HelloServiceProvider.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/scr/HelloServiceProvider.java
new file mode 100644
index 0000000..93579ea
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/scr/HelloServiceProvider.java
@@ -0,0 +1,41 @@
+/*
+ * 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.felix.ipojo.test.compatibility.scr;
+
+import org.apache.felix.ipojo.annotations.Component;
+import org.apache.felix.ipojo.annotations.Instantiate;
+import org.apache.felix.ipojo.annotations.Provides;
+import org.apache.felix.ipojo.test.compatibility.service.HelloService;
+
+/**
+ * Hello Service Provider with SCR.
+ */
+public class HelloServiceProvider implements HelloService {
+
+    /**
+     * A very original implementation.
+     * @param name the name
+     * @return hello $name
+     */
+    @Override
+    public String hello(String name) {
+        return "hello " + name;
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/service/CheckService.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/service/CheckService.java
new file mode 100644
index 0000000..08131ba
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/service/CheckService.java
@@ -0,0 +1,31 @@
+/*
+ * 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.felix.ipojo.test.compatibility.service;
+
+import java.util.Map;
+
+/**
+ * A service used to check the correct invocation.
+ */
+public interface CheckService {
+
+    public Map<String, Object> data();
+
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/service/HelloService.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/service/HelloService.java
new file mode 100644
index 0000000..50c4781
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/java/org/apache/felix/ipojo/test/compatibility/service/HelloService.java
@@ -0,0 +1,28 @@
+/*
+ * 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.felix.ipojo.test.compatibility.service;
+
+/**
+ * A simple service that will be implemented with several technology.
+ */
+public interface HelloService {
+
+    public String hello(String name);
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/blueprint/HelloConsumer.xml b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/blueprint/HelloConsumer.xml
new file mode 100644
index 0000000..4f86166
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/blueprint/HelloConsumer.xml
@@ -0,0 +1,32 @@
+<?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.
+  -->
+
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+
+    <!-- Reuse the same implementation as for SCR -->
+    <bean id="consumer" class="org.apache.felix.ipojo.test.compatibility.scr.HelloServiceConsumer">
+        <property name="hello" ref="helloRef"/>
+    </bean>
+
+    <service id="service" ref="consumer" interface="org.apache.felix.ipojo.test.compatibility.service.CheckService"/>
+    <reference id="helloRef" availability="mandatory"
+               interface="org.apache.felix.ipojo.test.compatibility.service.HelloService"/>
+
+</blueprint>
\ No newline at end of file
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/blueprint/HelloProvider.xml b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/blueprint/HelloProvider.xml
new file mode 100644
index 0000000..9aa5be9
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/blueprint/HelloProvider.xml
@@ -0,0 +1,29 @@
+<?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.
+  -->
+
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+
+    <!-- Reuse the same implementation as for SCR -->
+    <bean id="provider" class="org.apache.felix.ipojo.test.compatibility.scr.HelloServiceProvider">
+    </bean>
+
+    <service id="service" ref="provider" interface="org.apache.felix.ipojo.test.compatibility.service.HelloService"/>
+
+</blueprint>
\ No newline at end of file
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/scr/HelloConsumer.xml b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/scr/HelloConsumer.xml
new file mode 100644
index 0000000..d71b6ab
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/scr/HelloConsumer.xml
@@ -0,0 +1,33 @@
+<?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.
+  -->
+
+<component name="org.apache.felix.ipojo.test.compatibility.scr.HelloServiceConsumer" immediate="true">
+    <implementation class="org.apache.felix.ipojo.test.compatibility.scr.HelloServiceConsumer"/>
+    <service>
+        <provide interface="org.apache.felix.ipojo.test.compatibility.service.CheckService"/>
+    </service>
+    <reference name="hello"
+               interface="org.apache.felix.ipojo.test.compatibility.service.HelloService"
+               cardinality="1..1"
+               policy="dynamic"
+               bind="bindHello"
+               unbind="unbindHello"
+            />
+</component>
\ No newline at end of file
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/scr/HelloProvider.xml b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/scr/HelloProvider.xml
new file mode 100644
index 0000000..a8e048a
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/main/resources/scr/HelloProvider.xml
@@ -0,0 +1,26 @@
+<?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.
+  -->
+
+<component name="org.apache.felix.ipojo.test.compatibility.scr.HelloServiceProvider" immediate="true">
+    <implementation class="org.apache.felix.ipojo.test.compatibility.scr.HelloServiceProvider" />
+    <service>
+        <provide interface="org.apache.felix.ipojo.test.compatibility.service.HelloService" />
+    </service>
+</component>
\ No newline at end of file
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/Common.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/Common.java
new file mode 100644
index 0000000..c51f593
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/Common.java
@@ -0,0 +1,297 @@
+/*
+ * 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.felix.ipojo.test.compatibility;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.felix.ipojo.test.compatibility.ipojo.HelloServiceConsumer;
+import org.apache.felix.ipojo.test.compatibility.ipojo.HelloServiceProvider;
+import org.apache.felix.ipojo.test.compatibility.service.CheckService;
+import org.apache.felix.ipojo.test.compatibility.service.HelloService;
+import org.ops4j.pax.exam.Option;
+import org.ops4j.pax.exam.OptionUtils;
+import org.ops4j.pax.tinybundles.core.TinyBundle;
+import org.ops4j.pax.tinybundles.core.TinyBundles;
+import org.osgi.framework.Constants;
+import org.ow2.chameleon.testing.helpers.BaseTest;
+import org.ow2.chameleon.testing.tinybundles.ipojo.IPOJOStrategy;
+
+import java.io.*;
+import java.net.MalformedURLException;
+
+import static org.ops4j.pax.exam.CoreOptions.*;
+import static org.ops4j.pax.tinybundles.core.TinyBundles.withBnd;
+
+/**
+ * Configure the tests.
+ */
+public abstract class Common extends BaseTest {
+
+    @Override
+    public boolean deployTestBundle() {
+        return false;
+    }
+
+    @Override
+    protected Option[] getCustomOptions() {
+        Option[] options = new Option[] {
+                service(),
+                wrappedBundle(maven("org.easytesting", "fest-assert").versionAsInProject()),
+                wrappedBundle(maven("org.easytesting", "fest-util").versionAsInProject())
+        };
+
+        return OptionUtils.combine(options, bundles());
+    }
+
+    public abstract Option[] bundles();
+
+    /**
+     * Package the service interfaces.
+     */
+    public Option service() {
+        File out = new File("target/bundles/service.jar");
+        if (out.exists()) {
+            try {
+                return bundle(out.toURI().toURL().toExternalForm());
+            } catch (MalformedURLException e) {
+                // Ignore it.
+            }
+        }
+
+        TinyBundle bundle = TinyBundles.bundle();
+        bundle.add(CheckService.class);
+        bundle.add(HelloService.class);
+        InputStream inputStream = bundle
+                .set(Constants.BUNDLE_SYMBOLICNAME, "services")
+                .set(Constants.EXPORT_PACKAGE, "org.apache.felix.ipojo.test.compatibility.service")
+                .build(withBnd());
+
+        try {
+            FileUtils.copyInputStreamToFile(inputStream, out);
+            return bundle(out.toURI().toURL().toExternalForm());
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * iPOJO Hello Service Provider.
+     */
+    public Option iPOJOHelloProvider() {
+        File out = new File("target/bundles/hello-provider-ipojo.jar");
+        if (out.exists()) {
+            try {
+                return bundle(out.toURI().toURL().toExternalForm());
+            } catch (MalformedURLException e) {
+                // Ignore it.
+            }
+        }
+
+        TinyBundle bundle = TinyBundles.bundle();
+        bundle.add(HelloServiceProvider.class);
+        InputStream inputStream = bundle
+                .set(Constants.BUNDLE_SYMBOLICNAME, "iPOJO-Hello-Provider")
+                .set(Constants.IMPORT_PACKAGE, "*")
+                .build(IPOJOStrategy.withiPOJO());
+
+        try {
+            FileUtils.copyInputStreamToFile(inputStream, out);
+            return bundle(out.toURI().toURL().toExternalForm());
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * iPOJO Hello Service Provider.
+     */
+    public Option iPOJOHelloConsumer() {
+        File out = new File("target/bundles/hello-consumer-ipojo.jar");
+        if (out.exists()) {
+            try {
+                return bundle(out.toURI().toURL().toExternalForm());
+            } catch (MalformedURLException e) {
+                // Ignore it.
+            }
+        }
+
+        TinyBundle bundle = TinyBundles.bundle();
+        bundle.add(HelloServiceConsumer.class);
+        InputStream inputStream = bundle
+                .set(Constants.BUNDLE_SYMBOLICNAME, "iPOJO-Hello-Consumer")
+                .set(Constants.IMPORT_PACKAGE, "*")
+                .build(IPOJOStrategy.withiPOJO());
+
+        try {
+            FileUtils.copyInputStreamToFile(inputStream, out);
+            return bundle(out.toURI().toURL().toExternalForm());
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * Package the SCR Hello Service Provider.
+     */
+    public Option SCRHelloProvider() {
+        File out = new File("target/bundles/hello-provider-scr.jar");
+        if (out.exists()) {
+            try {
+                return bundle(out.toURI().toURL().toExternalForm());
+            } catch (MalformedURLException e) {
+                // Ignore it.
+            }
+        }
+
+        File metadata = new File("src/main/resources/scr", "HelloProvider.xml");
+
+        TinyBundle bundle = TinyBundles.bundle();
+        bundle.add(org.apache.felix.ipojo.test.compatibility.scr.HelloServiceProvider.class);
+        try {
+            bundle.add("scr/provider.xml", new FileInputStream(metadata));
+        } catch (FileNotFoundException e) {
+            throw new IllegalArgumentException("Cannot find XML metadata : " + metadata.getAbsolutePath());
+        }
+
+        InputStream inputStream = bundle
+                .set(Constants.BUNDLE_SYMBOLICNAME, "hello-provider-scr")
+                .set(Constants.IMPORT_PACKAGE, "*")
+                .set("Service-Component", "scr/provider.xml")
+                .build(withBnd());
+
+        try {
+            FileUtils.copyInputStreamToFile(inputStream, out);
+            return bundle(out.toURI().toURL().toExternalForm());
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public Option SCRHelloConsumer() {
+        File out = new File("target/bundles/hello-consumer-scr.jar");
+        if (out.exists()) {
+            try {
+                return bundle(out.toURI().toURL().toExternalForm());
+            } catch (MalformedURLException e) {
+                // Ignore it.
+            }
+        }
+
+        File metadata = new File("src/main/resources/scr", "HelloConsumer.xml");
+
+        TinyBundle bundle = TinyBundles.bundle();
+        bundle.add(org.apache.felix.ipojo.test.compatibility.scr.HelloServiceConsumer.class);
+        try {
+            bundle.add("scr/consumer.xml", new FileInputStream(metadata));
+        } catch (FileNotFoundException e) {
+            throw new IllegalArgumentException("Cannot find XML metadata : " + metadata.getAbsolutePath());
+        }
+
+        InputStream inputStream = bundle
+                .set(Constants.BUNDLE_SYMBOLICNAME, "hello-consumer-scr")
+                .set(Constants.IMPORT_PACKAGE, "*")
+                .set("Service-Component", "scr/consumer.xml")
+                .build(withBnd());
+
+        try {
+            FileUtils.copyInputStreamToFile(inputStream, out);
+            return bundle(out.toURI().toURL().toExternalForm());
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    /**
+     * Package the Blueprint Hello Service Provider.
+     */
+    public Option BPHelloProvider() {
+        File out = new File("target/bundles/hello-provider-blueprint.jar");
+        if (out.exists()) {
+            try {
+                return bundle(out.toURI().toURL().toExternalForm());
+            } catch (MalformedURLException e) {
+                // Ignore it.
+            }
+        }
+
+        File metadata = new File("src/main/resources/blueprint", "HelloProvider.xml");
+
+        TinyBundle bundle = TinyBundles.bundle();
+        bundle.add(org.apache.felix.ipojo.test.compatibility.scr.HelloServiceProvider.class);
+        try {
+            bundle.add("blueprint/provider.xml", new FileInputStream(metadata));
+        } catch (FileNotFoundException e) {
+            throw new IllegalArgumentException("Cannot find XML metadata : " + metadata.getAbsolutePath());
+        }
+
+        InputStream inputStream = bundle
+                .set(Constants.BUNDLE_SYMBOLICNAME, "hello-provider-blueprint")
+                .set(Constants.IMPORT_PACKAGE, "*")
+                .set("Bundle-Blueprint", "blueprint/provider.xml")
+                .build(withBnd());
+
+        try {
+            FileUtils.copyInputStreamToFile(inputStream, out);
+            return bundle(out.toURI().toURL().toExternalForm());
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public Option BPHelloConsumer() {
+        File out = new File("target/bundles/hello-consumer-blueprint.jar");
+        if (out.exists()) {
+            try {
+                return bundle(out.toURI().toURL().toExternalForm());
+            } catch (MalformedURLException e) {
+                // Ignore it.
+            }
+        }
+
+        File metadata = new File("src/main/resources/blueprint", "HelloConsumer.xml");
+
+        TinyBundle bundle = TinyBundles.bundle();
+        bundle.add(org.apache.felix.ipojo.test.compatibility.scr.HelloServiceConsumer.class);
+        try {
+            bundle.add("blueprint/consumer.xml", new FileInputStream(metadata));
+        } catch (FileNotFoundException e) {
+            throw new IllegalArgumentException("Cannot find XML metadata : " + metadata.getAbsolutePath());
+        }
+
+        InputStream inputStream = bundle
+                .set(Constants.BUNDLE_SYMBOLICNAME, "hello-consumer-blueprint")
+                .set(Constants.IMPORT_PACKAGE, "*")
+                .set("Bundle-Blueprint", "blueprint/consumer.xml")
+                .build(withBnd());
+
+        try {
+            FileUtils.copyInputStreamToFile(inputStream, out);
+            return bundle(out.toURI().toURL().toExternalForm());
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestBeingConsumedByAriesBlueprint1_1_0.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestBeingConsumedByAriesBlueprint1_1_0.java
new file mode 100644
index 0000000..41ba3bc
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestBeingConsumedByAriesBlueprint1_1_0.java
@@ -0,0 +1,60 @@
+/*
+ * 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.felix.ipojo.test.compatibility;
+
+import org.apache.felix.ipojo.test.compatibility.service.CheckService;
+import org.junit.Test;
+import org.ops4j.pax.exam.Option;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.ops4j.pax.exam.CoreOptions.bundle;
+import static org.ops4j.pax.exam.CoreOptions.maven;
+
+/**
+ * Check a configuration using Aries Blueprint 1.0.1
+ * iPOJO provider is consumed by a component using Blueprint.
+ *
+ * This test is intended to pass on Felix, KF and Equinox
+ */
+public class TestBeingConsumedByAriesBlueprint1_1_0 extends Common {
+
+    public static final String BP_ARTIFACTID = "org.apache.aries.blueprint";
+    public static final String BP_VERSION = "1.1.0";
+    public static final String BP_GROUPID = "org.apache.aries.blueprint";
+
+
+    @Override
+    public Option[] bundles() {
+        return new Option[] {
+                bundle(maven(BP_GROUPID, BP_ARTIFACTID, BP_VERSION).getURL()),
+                bundle(maven("org.apache.aries.proxy", "org.apache.aries.proxy", "1.0.1").getURL()),
+                bundle(maven("org.apache.aries", "org.apache.aries.util", "1.1.0").getURL()),
+                BPHelloConsumer(),
+                iPOJOHelloProvider()
+        };
+    }
+
+    @Test
+    public void test() {
+        CheckService checker = osgiHelper.getServiceObject(CheckService.class);
+        assertThat(checker).isNotNull();
+        assertThat(checker.data().get("result")).isEqualTo("hello john doe");
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestBeingConsumedByFelixSCR1_6_2.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestBeingConsumedByFelixSCR1_6_2.java
new file mode 100644
index 0000000..b9ed818
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestBeingConsumedByFelixSCR1_6_2.java
@@ -0,0 +1,57 @@
+/*
+ * 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.felix.ipojo.test.compatibility;
+
+import org.apache.felix.ipojo.test.compatibility.service.CheckService;
+import org.junit.Test;
+import org.ops4j.pax.exam.Option;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.ops4j.pax.exam.CoreOptions.bundle;
+import static org.ops4j.pax.exam.CoreOptions.maven;
+
+/**
+ * Check a configuration using Felix SCR 1.6.2.
+ * iPOJO provider is consumed by a component using SCR.
+ *
+ * This test is intended to pass on Felix, KF and Equinox
+ */
+public class TestBeingConsumedByFelixSCR1_6_2 extends Common {
+
+    public static final String SCR_ARTIFACTID = "org.apache.felix.scr";
+    public static final String SCR_VERSION = "1.6.2";
+    public static final String SCR_GROUPID = "org.apache.felix";
+
+    @Override
+    public Option[] bundles() {
+        return new Option[] {
+                bundle(maven(SCR_GROUPID, SCR_ARTIFACTID, SCR_VERSION).getURL()),
+                SCRHelloConsumer(),
+                iPOJOHelloProvider()
+        };
+    }
+
+    @Test
+    public void test() {
+        CheckService checker = osgiHelper.getServiceObject(CheckService.class);
+        assertThat(checker).isNotNull();
+        assertThat(checker.data().get("result")).isEqualTo("hello john doe");
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestBeingConsumedByKnopflerfishSCR4_0_2.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestBeingConsumedByKnopflerfishSCR4_0_2.java
new file mode 100644
index 0000000..90befb6
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestBeingConsumedByKnopflerfishSCR4_0_2.java
@@ -0,0 +1,65 @@
+/*
+ * 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.felix.ipojo.test.compatibility;
+
+import org.apache.felix.ipojo.test.compatibility.service.CheckService;
+import org.junit.Test;
+import org.ops4j.pax.exam.Option;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.ops4j.pax.exam.CoreOptions.bundle;
+import static org.ops4j.pax.exam.CoreOptions.maven;
+
+/**
+ * Check a configuration using Knopflerfish SCR 4.0.2
+ * iPOJO provider is consumed by a component using SCR.
+ *
+ * This test is intended to pass on KF only
+ */
+public class TestBeingConsumedByKnopflerfishSCR4_0_2 extends Common {
+
+    public static final String SCR_URL = "http://www.knopflerfish.org/releases/4.0" +
+            ".0/maven2/org/knopflerfish/bundle/component/4.0.2/component-4.0.2.jar";
+
+    @Override
+    public Option[] bundles() {
+        return new Option[] {
+                bundle(SCR_URL),
+                bundle("http://www.knopflerfish.org/releases/4.0.0/maven2/org/knopflerfish/bundle/cm-API/4.0" +
+                        ".1/cm-API-4.0.1.jar"),
+                bundle("http://www.knopflerfish.org/releases/4.0.0/maven2/org/knopflerfish/bundle/kxml-LIB/2.3.0" +
+                        ".kf4-001/kxml-LIB-2.3.0.kf4-001.jar"),
+                SCRHelloConsumer(),
+                iPOJOHelloProvider()
+        };
+    }
+
+    @Test
+    public void test() {
+        if (! isKnopflerfish()) {
+            System.out.println("Test ignored - running only on Knopflerfish");
+            return;
+        }
+
+        CheckService checker = osgiHelper.getServiceObject(CheckService.class);
+        assertThat(checker).isNotNull();
+        assertThat(checker.data().get("result")).isEqualTo("hello john doe");
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestConsumingProviderUsingAriesBlueprint1_1_0.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestConsumingProviderUsingAriesBlueprint1_1_0.java
new file mode 100644
index 0000000..ab683fd
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestConsumingProviderUsingAriesBlueprint1_1_0.java
@@ -0,0 +1,60 @@
+/*
+ * 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.felix.ipojo.test.compatibility;
+
+import org.apache.felix.ipojo.test.compatibility.service.CheckService;
+import org.junit.Test;
+import org.ops4j.pax.exam.Option;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.ops4j.pax.exam.CoreOptions.bundle;
+import static org.ops4j.pax.exam.CoreOptions.maven;
+
+/**
+ * Check a configuration using Aries Blueprint 1.1.0
+ * iPOJO consumer is bound to a Hello Service implementation using Blueprint.
+ *
+ * This test is intended to pass on Felix, KF and Equinox
+ */
+public class TestConsumingProviderUsingAriesBlueprint1_1_0 extends Common {
+
+    public static final String BP_ARTIFACTID = "org.apache.aries.blueprint";
+    public static final String BP_VERSION = "1.1.0";
+    public static final String BP_GROUPID = "org.apache.aries.blueprint";
+
+
+    @Override
+    public Option[] bundles() {
+        return new Option[] {
+                bundle(maven(BP_GROUPID, BP_ARTIFACTID, BP_VERSION).getURL()),
+                bundle(maven("org.apache.aries.proxy", "org.apache.aries.proxy", "1.0.1").getURL()),
+                bundle(maven("org.apache.aries", "org.apache.aries.util", "1.1.0").getURL()),
+                BPHelloProvider(),
+                iPOJOHelloConsumer()
+        };
+    }
+
+    @Test
+    public void test() {
+        CheckService checker = osgiHelper.getServiceObject(CheckService.class);
+        assertThat(checker).isNotNull();
+        assertThat(checker.data().get("result")).isEqualTo("hello john doe");
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestConsumingProviderUsingFelixSCR1_6_2.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestConsumingProviderUsingFelixSCR1_6_2.java
new file mode 100644
index 0000000..639c06f
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestConsumingProviderUsingFelixSCR1_6_2.java
@@ -0,0 +1,58 @@
+/*
+ * 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.felix.ipojo.test.compatibility;
+
+import org.apache.felix.ipojo.test.compatibility.service.CheckService;
+import org.junit.Test;
+import org.ops4j.pax.exam.Option;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.ops4j.pax.exam.CoreOptions.bundle;
+import static org.ops4j.pax.exam.CoreOptions.maven;
+
+/**
+ * Check a configuration using Felix SCR 1.6.2.
+ * iPOJO consumer is bound to a Hello Service implementation using SCR.
+ *
+ *
+ * This test is intended to pass on Felix, KF and Equinox
+ */
+public class TestConsumingProviderUsingFelixSCR1_6_2 extends Common {
+
+    public static final String SCR_ARTIFACTID = "org.apache.felix.scr";
+    public static final String SCR_VERSION = "1.6.2";
+    public static final String SCR_GROUPID = "org.apache.felix";
+
+    @Override
+    public Option[] bundles() {
+        return new Option[] {
+                bundle(maven(SCR_GROUPID, SCR_ARTIFACTID, SCR_VERSION).getURL()),
+                SCRHelloProvider(),
+                iPOJOHelloConsumer()
+        };
+    }
+
+    @Test
+    public void test() {
+        CheckService checker = osgiHelper.getServiceObject(CheckService.class);
+        assertThat(checker).isNotNull();
+        assertThat(checker.data().get("result")).isEqualTo("hello john doe");
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestConsumingProviderUsingKnopflerfishSCR4_0_2.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestConsumingProviderUsingKnopflerfishSCR4_0_2.java
new file mode 100644
index 0000000..1932415
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestConsumingProviderUsingKnopflerfishSCR4_0_2.java
@@ -0,0 +1,64 @@
+/*
+ * 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.felix.ipojo.test.compatibility;
+
+import org.apache.felix.ipojo.test.compatibility.service.CheckService;
+import org.junit.Test;
+import org.ops4j.pax.exam.Option;
+
+import static org.fest.assertions.Assertions.assertThat;
+import static org.ops4j.pax.exam.CoreOptions.bundle;
+
+/**
+ * Check a configuration using Knopflerfish SCR 4.0.2
+ * iPOJO consumer is bound to a Hello Service implementation using SCR.
+ *
+ *
+ * This test is intended to pass on KF only
+ */
+public class TestConsumingProviderUsingKnopflerfishSCR4_0_2 extends Common {
+
+    public static final String SCR_URL = "http://www.knopflerfish.org/releases/4.0" +
+            ".0/maven2/org/knopflerfish/bundle/component/4.0.2/component-4.0.2.jar";
+
+    @Override
+    public Option[] bundles() {
+        return new Option[] {
+                bundle(SCR_URL),
+                bundle("http://www.knopflerfish.org/releases/4.0.0/maven2/org/knopflerfish/bundle/cm-API/4.0" +
+                        ".1/cm-API-4.0.1.jar"),
+                bundle("http://www.knopflerfish.org/releases/4.0.0/maven2/org/knopflerfish/bundle/kxml-LIB/2.3.0" +
+                        ".kf4-001/kxml-LIB-2.3.0.kf4-001.jar"),
+                SCRHelloProvider(),
+                iPOJOHelloConsumer()
+        };
+    }
+
+    @Test
+    public void test() {
+        if (! isKnopflerfish()) {
+            System.out.println("Test ignored - running only on Knopflerfish");
+            return;
+        }
+        CheckService checker = osgiHelper.getServiceObject(CheckService.class);
+        assertThat(checker).isNotNull();
+        assertThat(checker.data().get("result")).isEqualTo("hello john doe");
+    }
+}
diff --git a/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestiPOJOOnly.java b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestiPOJOOnly.java
new file mode 100644
index 0000000..beb3623
--- /dev/null
+++ b/ipojo/runtime/core-it/ipojo-compatibility-test/src/test/java/org/apache/felix/ipojo/test/compatibility/TestiPOJOOnly.java
@@ -0,0 +1,49 @@
+/*
+ * 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.felix.ipojo.test.compatibility;
+
+import org.apache.felix.ipojo.test.compatibility.service.CheckService;
+import org.junit.Test;
+import org.ops4j.pax.exam.Option;
+
+import static org.fest.assertions.Assertions.assertThat;
+
+/**
+ * Check a configuration with iPOJO used for the provider and consumer.
+ *
+ * This test is intended to pass on Felix, KF and Equinox
+ */
+public class TestiPOJOOnly extends Common {
+
+    @Override
+    public Option[] bundles() {
+        return new Option[] {
+                iPOJOHelloConsumer(),
+                iPOJOHelloProvider(),
+        };
+    }
+
+    @Test
+    public void test() {
+        CheckService checker = osgiHelper.getServiceObject(CheckService.class);
+        assertThat(checker).isNotNull();
+        assertThat(checker.data().get("result")).isEqualTo("hello john doe");
+    }
+}
diff --git a/ipojo/runtime/core-it/pom.xml b/ipojo/runtime/core-it/pom.xml
index 6b1ce55..e2bf613 100644
--- a/ipojo/runtime/core-it/pom.xml
+++ b/ipojo/runtime/core-it/pom.xml
@@ -40,8 +40,8 @@
         <url.version>1.5.1</url.version>
 
         <felix.version>4.2.0</felix.version>
-        <equinox.version>3.8.1.v20120830-144521</equinox.version>
-        <knoperflerfish.version>5.3.3</knoperflerfish.version>
+        <equinox.version>3.9.0.v20130529-1710</equinox.version>
+        <knoperflerfish.version>6.0.2</knoperflerfish.version>
 
         <manipulator.version>1.10.2-SNAPSHOT</manipulator.version>
     </properties>
@@ -66,6 +66,7 @@
         <module>ipojo-core-service-dependency-interceptor-test</module>
         <module>ipojo-core-service-providing-test</module>
         <module>ipojo-api-test</module>
+        <module>ipojo-compatibility-test</module>
     </modules>
 
     <build>
@@ -227,6 +228,10 @@
                     <groupId>org.osgi</groupId>
                     <artifactId>org.osgi.core</artifactId>
                 </exclusion>
+                <exclusion>
+                    <groupId>org.osgi</groupId>
+                    <artifactId>org.osgi.compendium</artifactId>
+                </exclusion>
             </exclusions>
         </dependency>
 
@@ -302,15 +307,28 @@
             <version>1.4</version>
         </dependency>
 
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.framework</artifactId>
-            <version>${felix.version}</version>
-        </dependency>
     </dependencies>
 
     <profiles>
         <profile>
+            <id>default</id>
+            <activation>
+                <activeByDefault>true</activeByDefault>
+            </activation>
+            <dependencies>
+                <dependency>
+                    <groupId>org.osgi</groupId>
+                    <artifactId>org.osgi.compendium</artifactId>
+                    <version>4.3.0</version>
+                </dependency>
+                <dependency>
+                    <groupId>org.osgi</groupId>
+                    <artifactId>org.osgi.core</artifactId>
+                    <version>4.3.1</version>
+                </dependency>
+            </dependencies>
+        </profile>
+        <profile>
             <id>knopflerfish</id>
             <activation>
                 <activeByDefault>false</activeByDefault>
@@ -352,6 +370,11 @@
             </properties>
             <dependencies>
                 <dependency>
+                    <groupId>org.osgi</groupId>
+                    <artifactId>org.osgi.compendium</artifactId>
+                    <version>4.3.0</version>
+                </dependency>
+                <dependency>
                     <groupId>org.eclipse.tycho</groupId>
                     <artifactId>org.eclipse.osgi</artifactId>
                     <version>${equinox.version}</version>