You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ja...@apache.org on 2015/11/24 12:06:57 UTC

svn commit: r1716104 - in /felix/trunk/deploymentadmin: ./ autoconf/ autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/ autoconf/src/test/java/org/apache/felix/deployment/rp/autoconf/ deploymentadmin/ itest/ testbundles/

Author: jawi
Date: Tue Nov 24 11:06:57 2015
New Revision: 1716104

URL: http://svn.apache.org/viewvc?rev=1716104&view=rev
Log:
Minor fixes and updates:

- bumped Felix DM and MetaType to latest versions;
- use correct version of Felix parent POM (to solve compilation problems when running Maven from the command line);
- made the AutoConf processor a little more verbose when it stumbles upon wrong resource definitions.


Modified:
    felix/trunk/deploymentadmin/autoconf/pom.xml
    felix/trunk/deploymentadmin/autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/AutoConfResourceProcessor.java
    felix/trunk/deploymentadmin/autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/ObjectClassDefinitionImpl.java
    felix/trunk/deploymentadmin/autoconf/src/test/java/org/apache/felix/deployment/rp/autoconf/AutoConfResourceProcessorTest.java
    felix/trunk/deploymentadmin/deploymentadmin/pom.xml
    felix/trunk/deploymentadmin/itest/pom.xml
    felix/trunk/deploymentadmin/pom.xml
    felix/trunk/deploymentadmin/testbundles/pom.xml

Modified: felix/trunk/deploymentadmin/autoconf/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/autoconf/pom.xml?rev=1716104&r1=1716103&r2=1716104&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/autoconf/pom.xml (original)
+++ felix/trunk/deploymentadmin/autoconf/pom.xml Tue Nov 24 11:06:57 2015
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.felix</groupId>
         <artifactId>felix-parent</artifactId>
-        <version>1.2.0</version>
+        <version>3</version>
         <relativePath>../../pom/pom.xml</relativePath>
     </parent>
     <properties>
@@ -46,18 +46,17 @@
         <dependency>
             <groupId>${pom.groupId}</groupId>
             <artifactId>org.apache.felix.dependencymanager</artifactId>
-            <version>3.1.0</version>
-            <scope>provided</scope>
+			<version>4.1.1</version>
         </dependency>
         <dependency>
             <groupId>${pom.groupId}</groupId>
             <artifactId>org.apache.felix.deploymentadmin</artifactId>
-            <version>0.9.4</version>
+            <version>0.9.6</version>
         </dependency>
         <dependency>
             <groupId>${pom.groupId}</groupId>
             <artifactId>org.apache.felix.metatype</artifactId>
-            <version>1.0.6</version>
+            <version>1.1.2</version>
         </dependency>
     </dependencies>
     <build>

Modified: felix/trunk/deploymentadmin/autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/AutoConfResourceProcessor.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/AutoConfResourceProcessor.java?rev=1716104&r1=1716103&r2=1716104&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/AutoConfResourceProcessor.java (original)
+++ felix/trunk/deploymentadmin/autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/AutoConfResourceProcessor.java Tue Nov 24 11:06:57 2015
@@ -62,6 +62,7 @@ import org.osgi.service.metatype.MetaTyp
 import org.osgi.service.metatype.ObjectClassDefinition;
 
 public class AutoConfResourceProcessor implements ResourceProcessor, EventHandler {
+    private static final int CODE_OTHER_ERROR = ResourceProcessorException.CODE_OTHER_ERROR;
     private static final String LOCATION_PREFIX = "osgi-dp:";
     public static final String CONFIGURATION_ADMIN_FILTER_ATTRIBUTE = "filter";
 
@@ -74,7 +75,7 @@ public class AutoConfResourceProcessor i
     
 	private Component m_component;
 	
-	private final Object LOCK = new Object(); // protects the members below
+	private final Object m_lock = new Object(); // protects the members below
 
 	private DeploymentSession m_session = null;
 	private final Map m_toBeInstalled = new HashMap(); // Map<String, List<AutoConfResource>>
@@ -92,14 +93,14 @@ public class AutoConfResourceProcessor i
 	
     public void begin(DeploymentSession session) {
         m_log.log(LogService.LOG_DEBUG, "beginning session " + session);
-        synchronized (LOCK) {
+        synchronized (m_lock) {
             if (m_session != null) {
                 throw new IllegalArgumentException("Trying to begin new deployment session while already in one.");
             }
             if (session == null) {
                 throw new IllegalArgumentException("Trying to begin new deployment session with a null session.");
             }
-            if (m_toBeInstalled.size() > 0 || m_toBeDeleted.size() > 0 || m_configurationAdminTasks.size() > 0 || m_postCommitTasks.size() > 0 || m_component != null) {
+            if (!m_toBeInstalled.isEmpty() || !m_toBeDeleted.isEmpty() || !m_configurationAdminTasks.isEmpty() || !m_postCommitTasks.isEmpty() || m_component != null) {
                 throw new IllegalStateException("State not reset correctly at start of session.");
             }
             m_session = session;
@@ -109,9 +110,9 @@ public class AutoConfResourceProcessor i
     public void process(String name, InputStream stream) throws ResourceProcessorException {
         m_log.log(LogService.LOG_DEBUG, "processing " + name);
         // initial validation
-        synchronized (LOCK) {
+        synchronized (m_lock) {
             if (m_session == null) {
-                throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Can not process resource without a Deployment Session");
+                throw new ResourceProcessorException(CODE_OTHER_ERROR, "Can not process resource without a Deployment Session");
             }
         }
         MetaDataReader reader = new MetaDataReader();
@@ -120,10 +121,10 @@ public class AutoConfResourceProcessor i
             data = reader.parse(stream);
         }
         catch (IOException e) {
-            throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Unable to process resource.", e);
+            throw new ResourceProcessorException(CODE_OTHER_ERROR, "Unable to process resource.", e);
         }
         if (data == null) {
-            throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Supplied configuration is not conform the metatype xml specification.");
+            throw new ResourceProcessorException(CODE_OTHER_ERROR, "Supplied configuration is not conform the metatype xml specification.");
         }
         // process resources
         String filter = null;
@@ -135,8 +136,8 @@ public class AutoConfResourceProcessor i
         if (!m_toBeInstalled.containsKey(name)) {
             m_toBeInstalled.put(name, new ArrayList());
         }
-        Map designates = data.getDesignates();
-        if (designates == null) {
+        List designates = data.getDesignates();
+        if (designates == null || designates.isEmpty()) {
             // if there are no designates, there's nothing to process
             m_log.log(LogService.LOG_INFO, "No designates found in the resource, so there's nothing to process.");
             return;
@@ -145,24 +146,24 @@ public class AutoConfResourceProcessor i
         if (localOcds == null) {
             localOcds = Collections.EMPTY_MAP;
         }
-        Iterator i = designates.keySet().iterator();
+        Iterator i = designates.iterator();
         while (i.hasNext()) {
-            Designate designate = (Designate) designates.get(i.next());
+            Designate designate = (Designate) i.next();
             
             // check object
             if (designate.getObject() == null) {
-                throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Designate Object child missing or invalid");
+                throw new ResourceProcessorException(CODE_OTHER_ERROR, "Designate Object child missing or invalid");
             }
             
             // check attributes
             if (designate.getObject().getAttributes() == null || designate.getObject().getAttributes().size() == 0) {
-                throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Object Attributes child missing or invalid");
+                throw new ResourceProcessorException(CODE_OTHER_ERROR, "Object Attributes child missing or invalid");
             }
             
             // check ocdRef
             String ocdRef = designate.getObject().getOcdRef();
             if (ocdRef == null || "".equals(ocdRef)) {
-                throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Object ocdRef attribute missing or invalid");
+                throw new ResourceProcessorException(CODE_OTHER_ERROR, "Object ocdRef attribute missing or invalid");
             }
 
             // determine OCD
@@ -171,7 +172,7 @@ public class AutoConfResourceProcessor i
             // ask meta type service for matching OCD if no local OCD has been defined
             ocd = (localOcd != null) ? new ObjectClassDefinitionImpl(localOcd) : getMetaTypeOCD(data, designate);
             if (ocd == null) {
-                throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "No Object Class Definition found with id=" + ocdRef);
+                throw new ResourceProcessorException(CODE_OTHER_ERROR, "No Object Class Definition found with id=" + ocdRef);
             }
             // determine configuration data based on the values and their type definition
             Dictionary dict = getProperties(designate, ocd);
@@ -187,9 +188,9 @@ public class AutoConfResourceProcessor i
 
     public void dropped(String name) throws ResourceProcessorException {
         m_log.log(LogService.LOG_DEBUG, "dropped " + name);
-        synchronized (LOCK) {
+        synchronized (m_lock) {
         	if (m_session == null) {
-        		throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Can not process resource without a Deployment Session");
+        		throw new ResourceProcessorException(CODE_OTHER_ERROR, "Can not process resource without a Deployment Session");
         	}
         }
     	try {
@@ -200,16 +201,16 @@ public class AutoConfResourceProcessor i
     		((List) m_toBeDeleted.get(name)).addAll(resources);
     	}
     	catch (IOException ioe) {
-    		throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Unable to drop resource: " + name, ioe);
+    		throw new ResourceProcessorException(CODE_OTHER_ERROR, "Unable to drop resource: " + name, ioe);
     	}
         m_log.log(LogService.LOG_DEBUG, "dropped " + name + " done");
     }
 
     public void dropAllResources() throws ResourceProcessorException {
         m_log.log(LogService.LOG_DEBUG, "drop all resources");
-        synchronized (LOCK) {
+        synchronized (m_lock) {
         	if (m_session == null) {
-        		throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Can not drop all resources without a Deployment Session");
+        		throw new ResourceProcessorException(CODE_OTHER_ERROR, "Can not drop all resources without a Deployment Session");
         	}
         }
 
@@ -221,7 +222,7 @@ public class AutoConfResourceProcessor i
     		}
     	}
     	else {
-    		throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Unable to drop resources, data area is not accessible");
+    		throw new ResourceProcessorException(CODE_OTHER_ERROR, "Unable to drop resources, data area is not accessible");
     	}
         m_log.log(LogService.LOG_DEBUG, "drop all resources done");
     }
@@ -231,9 +232,9 @@ public class AutoConfResourceProcessor i
 
     public void prepare() throws ResourceProcessorException {
         m_log.log(LogService.LOG_DEBUG, "prepare");
-        synchronized (LOCK) {
+        synchronized (m_lock) {
         	if (m_session == null) {
-        		throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Can not process resource without a Deployment Session");
+        		throw new ResourceProcessorException(CODE_OTHER_ERROR, "Can not process resource without a Deployment Session");
         	}
         }
     	try {
@@ -416,7 +417,7 @@ public class AutoConfResourceProcessor i
     						break;
     					}
     					else {
-    						throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Could not match attribute to it's definition: adref=" + adRef);
+    						throw new ResourceProcessorException(CODE_OTHER_ERROR, "Could not match attribute to it's definition: adref=" + adRef);
     					}
     				}
     				properties.put(adRef, value);
@@ -429,7 +430,7 @@ public class AutoConfResourceProcessor i
     				properties = null;
     				break;
     			} else {
-    				throw new ResourceProcessorException(ResourceProcessorException.CODE_OTHER_ERROR, "Could not find attribute definition: adref=" + adRef);
+    				throw new ResourceProcessorException(CODE_OTHER_ERROR, "Could not find attribute definition: adref=" + adRef);
     			}
     		}
     	}
@@ -500,10 +501,10 @@ public class AutoConfResourceProcessor i
      * 
      * @param attribute The attribute containing value(s)
      * @param ad The attribute definition
-     * @return An <code>Object</code> reflecting what was specified in the attribute and it's definition or <code>null</code> if
-     * the value did not match it's definition.
+     * @return An <code>Object</code> reflecting what was specified in the attribute and it's definition or <code>null</code> if the value did not match it's definition.
+     * @throws ResourceProcessorException in case we're unable to parse the value of an attribute.
      */
-    private Object getValue(Attribute attribute, AttributeDefinition ad) {
+    private Object getValue(Attribute attribute, AttributeDefinition ad) throws ResourceProcessorException {
     	if (attribute == null || ad == null || !attribute.getAdRef().equals(ad.getID())) {
     		// wrong attribute or definition
     		return null;
@@ -532,7 +533,7 @@ public class AutoConfResourceProcessor i
 	    					typedContent[i] = new Character(charArray[0]);
 	    				}
 	    				else {
-	    					return null;
+	    		            throw new ResourceProcessorException(CODE_OTHER_ERROR, "Unable to parse value for definition: adref=" + ad.getID());
 	    				}
 	    				break;
 	    			case AttributeDefinition.DOUBLE:
@@ -561,12 +562,12 @@ public class AutoConfResourceProcessor i
 	    				break;
 	    			default:
 	    				// unsupported type
-	    				return null;
+                        throw new ResourceProcessorException(CODE_OTHER_ERROR, "Unsupported value-type for definition: adref=" + ad.getID());
     			}
     		}
     	}
     	catch (NumberFormatException nfe) {
-    		return null;
+            throw new ResourceProcessorException(CODE_OTHER_ERROR, "Unable to parse value for definition: adref=" + ad.getID());
     	}
 
     	// verify cardinality of value(s)

Modified: felix/trunk/deploymentadmin/autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/ObjectClassDefinitionImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/ObjectClassDefinitionImpl.java?rev=1716104&r1=1716103&r2=1716104&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/ObjectClassDefinitionImpl.java (original)
+++ felix/trunk/deploymentadmin/autoconf/src/main/java/org/apache/felix/deployment/rp/autoconf/ObjectClassDefinitionImpl.java Tue Nov 24 11:06:57 2015
@@ -64,7 +64,6 @@ public class ObjectClassDefinitionImpl i
 	}
 
 	public InputStream getIcon(int size) throws IOException {
-		// TODO Auto-generated method stub
 		return null;
 	}
 
@@ -79,5 +78,4 @@ public class ObjectClassDefinitionImpl i
 	public String getName() {
 		return m_ocd.getName();
 	}
-
 }

Modified: felix/trunk/deploymentadmin/autoconf/src/test/java/org/apache/felix/deployment/rp/autoconf/AutoConfResourceProcessorTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/autoconf/src/test/java/org/apache/felix/deployment/rp/autoconf/AutoConfResourceProcessorTest.java?rev=1716104&r1=1716103&r2=1716104&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/autoconf/src/test/java/org/apache/felix/deployment/rp/autoconf/AutoConfResourceProcessorTest.java (original)
+++ felix/trunk/deploymentadmin/autoconf/src/test/java/org/apache/felix/deployment/rp/autoconf/AutoConfResourceProcessorTest.java Tue Nov 24 11:06:57 2015
@@ -37,6 +37,7 @@ import org.osgi.service.cm.Configuration
 import org.osgi.service.cm.ConfigurationAdmin;
 import org.osgi.service.deploymentadmin.DeploymentPackage;
 import org.osgi.service.deploymentadmin.spi.DeploymentSession;
+import org.osgi.service.deploymentadmin.spi.ResourceProcessorException;
 import org.osgi.service.log.LogService;
 
 public class AutoConfResourceProcessorTest extends TestCase {
@@ -295,6 +296,73 @@ public class AutoConfResourceProcessorTe
         Utils.removeDirectoryWithContent(tempDir);
     }
 
+    /** Go through a simple session, containing two empty configurations. */
+    public void testMissingMandatoryValueInConfig() throws Throwable {
+        AutoConfResourceProcessor p = new AutoConfResourceProcessor();
+        Logger logger = new Logger();
+        Utils.configureObject(p, LogService.class, logger);
+        BundleContext mockBC = (BundleContext) Utils.createMockObjectAdapter(BundleContext.class, new Object() {
+            public Filter createFilter(String condition) {
+                return (Filter) Utils.createMockObjectAdapter(Filter.class, new Object() {
+                    public boolean match(ServiceReference ref) {
+                        Object id = ref.getProperty("id");
+                        if (id != null && id.equals(Integer.valueOf(42))) {
+                            return true;
+                        }
+                        return false;
+                    }
+                    public void remove(Component service) {
+                    }
+                });
+            }
+        });
+        Utils.configureObject(p, BundleContext.class, mockBC);
+        Utils.configureObject(p, DependencyManager.class, new DependencyManager(mockBC) {
+            public void remove(Component service) {
+            }
+        });
+        File tempDir = File.createTempFile("persistence", "dir");
+        tempDir.delete();
+        tempDir.mkdirs();
+        
+        System.out.println("Temporary dir: " + tempDir);
+        
+        Utils.configureObject(p, PersistencyManager.class, new PersistencyManager(tempDir));
+        Session s = new Session();
+        p.begin(s);
+        Utils.configureObject(p, Component.class, Utils.createMockObjectAdapter(Component.class, new Object() {
+            public DependencyManager getDependencyManager() {
+                return new DependencyManager((BundleContext) Utils.createNullObject(BundleContext.class));
+            }
+        }));
+
+        String config =
+            "<MetaData xmlns:metatype='http://www.osgi.org/xmlns/metatype/v1.1.0' filter='(id=42)'>\n" + 
+            "  <OCD name='ocd' id='ocd'>\n" + 
+            "    <AD id='name' type='Integer' />\n" + 
+            "  </OCD>\n" + 
+            "  <Designate pid='simple' bundle='osgi-dp:location'>\n" + 
+            "    <Object ocdref='ocd'>\n" + 
+            "      <Attribute adref='name'>\n" + 
+            "        <Value><![CDATA[]]></Value>\n" + 
+            "      </Attribute>\n" + 
+            "    </Object>\n" + 
+            "  </Designate>\n" + 
+            "</MetaData>\n";
+        
+        try
+        {
+            p.process("missing-value", new ByteArrayInputStream(config.getBytes()));
+            fail("Expected ResourceProcessorException for missing value!");
+        }
+        catch (ResourceProcessorException e)
+        {
+            // Ok; expected...
+            assertEquals("Unable to parse value for definition: adref=name", e.getMessage());
+        }
+        Utils.removeDirectoryWithContent(tempDir);
+    }
+
     private static class ConfigurationImpl implements Configuration {
         private String m_bundleLocation = "osgi-dp:location";
         private Dictionary m_properties;

Modified: felix/trunk/deploymentadmin/deploymentadmin/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/deploymentadmin/pom.xml?rev=1716104&r1=1716103&r2=1716104&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/deploymentadmin/pom.xml (original)
+++ felix/trunk/deploymentadmin/deploymentadmin/pom.xml Tue Nov 24 11:06:57 2015
@@ -1,89 +1,91 @@
 <?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/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>felix-parent</artifactId>
-        <version>1.2.0</version>
-        <relativePath>../../pom/pom.xml</relativePath>
-    </parent>
-    <properties>
-        <osgi.version>4.2.0</osgi.version>
-    </properties>
-    <name>Apache Felix Deployment Admin</name>
-    <artifactId>org.apache.felix.deploymentadmin</artifactId>
-    <version>0.9.8-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-    <dependencies>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
-            <version>${osgi.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.compendium</artifactId>
-            <version>${osgi.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${pom.groupId}</groupId>
-            <artifactId>org.apache.felix.dependencymanager</artifactId>
-            <version>3.1.0</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
-    <build>
-        <resources>
-            <resource>
-                <directory>.</directory>
-                <targetPath>META-INF</targetPath>
-                <includes>
-                    <include>LICENSE*</include>
-                    <include>NOTICE*</include>
-                    <include>DEPENDENCIES*</include>
-                    <include>*.txt</include>
-                </includes>
-            </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <version>2.3.4</version>
-                <extensions>true</extensions>
-                <configuration>
-                    <instructions>
-                        <Bundle-SymbolicName>org.apache.felix.deploymentadmin</Bundle-SymbolicName>
-                        <Bundle-Activator>org.apache.felix.deploymentadmin.Activator</Bundle-Activator>
-                        <Bundle-Name>Apache Felix Deployment Admin</Bundle-Name>
-                        <Bundle-Description>A bundle that implements the Deployment Admin.</Bundle-Description>
-                        <Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
-                        <Private-Package>org.apache.felix.deploymentadmin.*</Private-Package>
-                        <Export-Package>org.osgi.service.deploymentadmin;version="1.1",
-                        	org.osgi.service.deploymentadmin.spi;version="1.0"</Export-Package>
-                        <Import-Package>org.osgi.service.deploymentadmin;version="[1.1,2.0)",
-                        	org.osgi.service.deploymentadmin.spi;version="[1.0,2.0)",*</Import-Package>
-                    </instructions>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+<!-- 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/maven-v4_0_0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>org.apache.felix</groupId>
+		<artifactId>felix-parent</artifactId>
+		<version>3</version>
+		<relativePath>../../pom/pom.xml</relativePath>
+	</parent>
+	<properties>
+		<osgi.version>4.2.0</osgi.version>
+	</properties>
+	<name>Apache Felix Deployment Admin</name>
+	<artifactId>org.apache.felix.deploymentadmin</artifactId>
+	<version>0.9.8-SNAPSHOT</version>
+	<packaging>bundle</packaging>
+	<dependencies>
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.core</artifactId>
+			<version>${osgi.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>org.osgi</groupId>
+			<artifactId>org.osgi.compendium</artifactId>
+			<version>${osgi.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>${pom.groupId}</groupId>
+			<artifactId>org.apache.felix.dependencymanager</artifactId>
+			<version>4.1.1</version>
+		</dependency>
+		<dependency>
+			<groupId>org.mockito</groupId>
+			<artifactId>mockito-all</artifactId>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+	<build>
+		<resources>
+			<resource>
+				<directory>.</directory>
+				<targetPath>META-INF</targetPath>
+				<includes>
+					<include>LICENSE*</include>
+					<include>NOTICE*</include>
+					<include>DEPENDENCIES*</include>
+					<include>*.txt</include>
+				</includes>
+			</resource>
+		</resources>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.felix</groupId>
+				<artifactId>maven-bundle-plugin</artifactId>
+				<version>2.3.4</version>
+				<extensions>true</extensions>
+				<configuration>
+					<instructions>
+						<Bundle-SymbolicName>org.apache.felix.deploymentadmin</Bundle-SymbolicName>
+						<Bundle-Activator>org.apache.felix.deploymentadmin.Activator</Bundle-Activator>
+						<Bundle-Name>Apache Felix Deployment Admin</Bundle-Name>
+						<Bundle-Description>A bundle that implements the Deployment Admin.</Bundle-Description>
+						<Bundle-Vendor>The Apache Software Foundation</Bundle-Vendor>
+						<Private-Package>org.apache.felix.deploymentadmin.*</Private-Package>
+						<Export-Package>org.osgi.service.deploymentadmin;version="1.1",
+							org.osgi.service.deploymentadmin.spi;version="1.0"</Export-Package>
+						<Import-Package>org.osgi.service.deploymentadmin;version="[1.1,2.0)",
+							org.osgi.service.deploymentadmin.spi;version="[1.0,2.0)",*</Import-Package>
+					</instructions>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
 </project>

Modified: felix/trunk/deploymentadmin/itest/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/itest/pom.xml?rev=1716104&r1=1716103&r2=1716104&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/itest/pom.xml (original)
+++ felix/trunk/deploymentadmin/itest/pom.xml Tue Nov 24 11:06:57 2015
@@ -15,7 +15,7 @@
 	<parent>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>felix-parent</artifactId>
-		<version>1.2.0</version>
+		<version>3</version>
 		<relativePath>../../pom/pom.xml</relativePath>
 	</parent>
 	<properties>

Modified: felix/trunk/deploymentadmin/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/pom.xml?rev=1716104&r1=1716103&r2=1716104&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/pom.xml (original)
+++ felix/trunk/deploymentadmin/pom.xml Tue Nov 24 11:06:57 2015
@@ -22,8 +22,8 @@ under the License.
     <parent>
         <groupId>org.apache.felix</groupId>
         <artifactId>felix-parent</artifactId>
-        <version>1.2.0</version>
-        <relativePath>../../pom/pom.xml</relativePath>
+        <version>3</version>
+        <relativePath>../pom/pom.xml</relativePath>
     </parent>
     <packaging>pom</packaging>
     <name>Apache Felix Deployment Admin Subproject</name>

Modified: felix/trunk/deploymentadmin/testbundles/pom.xml
URL: http://svn.apache.org/viewvc/felix/trunk/deploymentadmin/testbundles/pom.xml?rev=1716104&r1=1716103&r2=1716104&view=diff
==============================================================================
--- felix/trunk/deploymentadmin/testbundles/pom.xml (original)
+++ felix/trunk/deploymentadmin/testbundles/pom.xml Tue Nov 24 11:06:57 2015
@@ -15,7 +15,7 @@
 	<parent>
 		<groupId>org.apache.felix</groupId>
 		<artifactId>felix-parent</artifactId>
-		<version>1.2.0</version>
+		<version>3</version>
 		<relativePath>../../pom/pom.xml</relativePath>
 	</parent>
 	<properties>