FELIX-3903 - Move API to runtime

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1455539 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/ipojo/api/DEPENDENCIES b/ipojo/runtime/api/DEPENDENCIES
similarity index 100%
rename from ipojo/api/DEPENDENCIES
rename to ipojo/runtime/api/DEPENDENCIES
diff --git a/ipojo/api/LICENSE b/ipojo/runtime/api/LICENSE
similarity index 100%
rename from ipojo/api/LICENSE
rename to ipojo/runtime/api/LICENSE
diff --git a/ipojo/api/LICENSE.asm b/ipojo/runtime/api/LICENSE.asm
similarity index 100%
rename from ipojo/api/LICENSE.asm
rename to ipojo/runtime/api/LICENSE.asm
diff --git a/ipojo/api/NOTICE b/ipojo/runtime/api/NOTICE
similarity index 100%
rename from ipojo/api/NOTICE
rename to ipojo/runtime/api/NOTICE
diff --git a/ipojo/api/doc/apache-felix-ipojo-api.html b/ipojo/runtime/api/doc/apache-felix-ipojo-api.html
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api.html
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api.html
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/apache.png b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/apache.png
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/apache.png
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/apache.png
Binary files differ
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/button.html b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/button.html
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/button.html
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/button.html
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/footer.png b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/footer.png
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/footer.png
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/footer.png
Binary files differ
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/ga.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/ga.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/ga.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/ga.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/header.png b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/header.png
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/header.png
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/header.png
Binary files differ
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/hoverIntent.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/hoverIntent.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/hoverIntent.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/hoverIntent.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/information.gif b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/information.gif
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/information.gif
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/information.gif
Binary files differ
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/ipojo.png b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/ipojo.png
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/ipojo.png
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/ipojo.png
Binary files differ
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/jquery-1.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/jquery-1.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/jquery-1.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/jquery-1.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/logo.png b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/logo.png
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/logo.png
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/logo.png
Binary files differ
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shBrushCSharp.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushCSharp.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shBrushCSharp.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushCSharp.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shBrushDelphi.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushDelphi.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shBrushDelphi.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushDelphi.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shBrushJScript.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushJScript.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shBrushJScript.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushJScript.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shBrushJava.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushJava.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shBrushJava.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushJava.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shBrushPhp.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushPhp.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shBrushPhp.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushPhp.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shBrushPython.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushPython.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shBrushPython.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushPython.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shBrushShell.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushShell.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shBrushShell.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushShell.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shBrushSql.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushSql.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shBrushSql.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushSql.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shBrushVb.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushVb.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shBrushVb.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushVb.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shBrushXml.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushXml.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shBrushXml.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shBrushXml.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/shCore.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shCore.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/shCore.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/shCore.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/site.css b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/site.css
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/site.css
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/site.css
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/superfish.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/superfish.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/superfish.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/superfish.js
diff --git a/ipojo/api/doc/apache-felix-ipojo-api_files/supersubs.js b/ipojo/runtime/api/doc/apache-felix-ipojo-api_files/supersubs.js
similarity index 100%
rename from ipojo/api/doc/apache-felix-ipojo-api_files/supersubs.js
rename to ipojo/runtime/api/doc/apache-felix-ipojo-api_files/supersubs.js
diff --git a/ipojo/api/doc/changelog.txt b/ipojo/runtime/api/doc/changelog.txt
similarity index 100%
rename from ipojo/api/doc/changelog.txt
rename to ipojo/runtime/api/doc/changelog.txt
diff --git a/ipojo/api/pom.xml b/ipojo/runtime/api/pom.xml
similarity index 96%
rename from ipojo/api/pom.xml
rename to ipojo/runtime/api/pom.xml
index d030567..0be176b 100644
--- a/ipojo/api/pom.xml
+++ b/ipojo/runtime/api/pom.xml
@@ -27,11 +27,11 @@
     <modelVersion>4.0.0</modelVersion>
     <packaging>bundle</packaging>
     <artifactId>org.apache.felix.ipojo.api</artifactId>
-    <version>1.7.0-SNAPSHOT</version>
+    <version>1.9.0-SNAPSHOT</version>
     <name>Apache Felix iPOJO API</name>
 
     <description>
-        iPOJO API used to define component types and instances in Java.
+        iPOJO API used to define component types and instances using Java.
     </description>
     <url>http://felix.apache.org/site/apache-felix-ipojo-api.html</url>
 
@@ -113,7 +113,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.ipojo</artifactId>
-            <version>1.8.0</version>
+            <version>1.9.0-SNAPSHOT</version>
         </dependency>
         <dependency>
             <groupId>org.apache.felix</groupId>
@@ -123,7 +123,7 @@
         <dependency>
             <groupId>org.apache.felix</groupId>
             <artifactId>org.apache.felix.ipojo.manipulator</artifactId>
-            <version>1.8.0</version>
+            <version>1.8.6</version>
         </dependency>
         <dependency>
             <groupId>asm</groupId>
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/ComponentType.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/ComponentType.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/ComponentType.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/ComponentType.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/Dependency.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/Dependency.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/Dependency.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/Dependency.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/HandlerConfiguration.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/HandlerConfiguration.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/HandlerConfiguration.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/HandlerConfiguration.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/PrimitiveComponentType.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/PrimitiveComponentType.java
similarity index 97%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/PrimitiveComponentType.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/PrimitiveComponentType.java
index 297c213..33f71fc 100644
--- a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/PrimitiveComponentType.java
+++ b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/PrimitiveComponentType.java
@@ -140,6 +140,13 @@
      */
     private List m_handlers = new ArrayList();
 
+
+    /**
+     * During the manipulation, we detect is the class is already manipulated.
+     * If set to <code>false</code>, the factory is configured to use the factory classloader.
+     */
+    private boolean m_alreadyManipulated = false;
+
     /**
      * Checks that the component type is not already
      * started.
@@ -433,10 +440,11 @@
         Element meta = m_metadata;
         meta.addElement(m_manipulation);
         try {
-            if (clazz.length == 0) { // Already manipulated
+            if (m_alreadyManipulated) { // Already manipulated
                 m_factory = new ComponentFactory(m_context, meta);
             } else {
                 m_factory = new ComponentFactory(m_context, clazz, meta);
+                m_factory.setUseFactoryClassloader(true);
             }
             m_factory.start();
         } catch (ConfigurationException e) {
@@ -455,6 +463,7 @@
             byte[] array = getClassByteArray();
             byte[] newclazz = manipulator.manipulate(array);
             m_manipulation = manipulator.getManipulationMetadata();
+            m_alreadyManipulated = newclazz.length == array.length;
             return newclazz;
         } catch (IOException e) {
             throw new IllegalStateException("An exception occurs during implementation class manipulation : " + e.getMessage());
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/Property.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/Property.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/Property.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/Property.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/Service.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/Service.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/Service.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/Service.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/ServiceProperty.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/ServiceProperty.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/ServiceProperty.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/ServiceProperty.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/SingletonComponentType.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/SingletonComponentType.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/SingletonComponentType.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/SingletonComponentType.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/TemporalDependency.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/TemporalDependency.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/TemporalDependency.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/TemporalDependency.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/CompositeComponentType.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/CompositeComponentType.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/CompositeComponentType.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/CompositeComponentType.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/ExportedService.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/ExportedService.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/ExportedService.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/ExportedService.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/ImportedService.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/ImportedService.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/ImportedService.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/ImportedService.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/Instance.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/Instance.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/Instance.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/Instance.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/InstantiatedService.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/InstantiatedService.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/InstantiatedService.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/InstantiatedService.java
diff --git a/ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/ProvidedService.java b/ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/ProvidedService.java
similarity index 100%
rename from ipojo/api/src/main/java/org/apache/felix/ipojo/api/composite/ProvidedService.java
rename to ipojo/runtime/api/src/main/java/org/apache/felix/ipojo/api/composite/ProvidedService.java
diff --git a/ipojo/api/src/test/java/org/apache/felix/ipojo/api/DependencyTest.java b/ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/DependencyTest.java
similarity index 100%
rename from ipojo/api/src/test/java/org/apache/felix/ipojo/api/DependencyTest.java
rename to ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/DependencyTest.java
diff --git a/ipojo/api/src/test/java/org/apache/felix/ipojo/api/PropertyTest.java b/ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/PropertyTest.java
similarity index 100%
rename from ipojo/api/src/test/java/org/apache/felix/ipojo/api/PropertyTest.java
rename to ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/PropertyTest.java
diff --git a/ipojo/api/src/test/java/org/apache/felix/ipojo/api/ServiceTest.java b/ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/ServiceTest.java
similarity index 100%
rename from ipojo/api/src/test/java/org/apache/felix/ipojo/api/ServiceTest.java
rename to ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/ServiceTest.java
diff --git a/ipojo/api/src/test/java/org/apache/felix/ipojo/api/composite/ExportedServiceTest.java b/ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/composite/ExportedServiceTest.java
similarity index 100%
rename from ipojo/api/src/test/java/org/apache/felix/ipojo/api/composite/ExportedServiceTest.java
rename to ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/composite/ExportedServiceTest.java
diff --git a/ipojo/api/src/test/java/org/apache/felix/ipojo/api/composite/ImportedServiceTest.java b/ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/composite/ImportedServiceTest.java
similarity index 100%
rename from ipojo/api/src/test/java/org/apache/felix/ipojo/api/composite/ImportedServiceTest.java
rename to ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/composite/ImportedServiceTest.java
diff --git a/ipojo/api/src/test/java/org/apache/felix/ipojo/api/composite/InstanceTest.java b/ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/composite/InstanceTest.java
similarity index 100%
rename from ipojo/api/src/test/java/org/apache/felix/ipojo/api/composite/InstanceTest.java
rename to ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/composite/InstanceTest.java
diff --git a/ipojo/api/src/test/java/org/apache/felix/ipojo/api/composite/InstantiatedServiceTest.java b/ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/composite/InstantiatedServiceTest.java
similarity index 100%
rename from ipojo/api/src/test/java/org/apache/felix/ipojo/api/composite/InstantiatedServiceTest.java
rename to ipojo/runtime/api/src/test/java/org/apache/felix/ipojo/api/composite/InstantiatedServiceTest.java