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/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");
+    }
+}