FELIX-3167 Support new Password type for attributes
 - export the MetaType API as version 1.2 (from the OSGi R 4.3 Compendium library)
 - import ServiceTracker instead of embedding it

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1399635 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/metatype/pom.xml b/metatype/pom.xml
index 27dfed6..fb934f2 100644
--- a/metatype/pom.xml
+++ b/metatype/pom.xml
@@ -39,11 +39,13 @@
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.core</artifactId>
             <version>4.0.0</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.compendium</artifactId>
-            <version>4.0.0</version>
+            <version>4.3.0</version>
+            <scope>provided</scope>
         </dependency>
         <dependency>
             <groupId>net.sf.kxml</groupId>
@@ -57,7 +59,7 @@
             <plugin>
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
-                <version>2.3.5</version>
+                <version>2.3.7</version>
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
@@ -70,12 +72,11 @@
                         </Bundle-DocURL>
                         <Export-Package>
                             org.apache.felix.metatype; version=1.2,
-                            org.osgi.service.metatype; version=1.1;provide:=true
+                            org.osgi.service.metatype; provide:=true
                         </Export-Package>
                         <Private-Package>
                             org.apache.felix.metatype.internal,
-                            org.apache.felix.metatype.internal.l10n,
-                            org.osgi.util.tracker
+                            org.apache.felix.metatype.internal.l10n
                         </Private-Package>
                         <Bundle-Activator>
                             org.apache.felix.metatype.internal.Activator
diff --git a/metatype/src/main/java/org/apache/felix/metatype/AD.java b/metatype/src/main/java/org/apache/felix/metatype/AD.java
index 4e88897..15b40d0 100644
--- a/metatype/src/main/java/org/apache/felix/metatype/AD.java
+++ b/metatype/src/main/java/org/apache/felix/metatype/AD.java
@@ -379,6 +379,10 @@
         {
             return AttributeDefinition.SHORT;
         }
+        else if ( "Password".equals( typeString ) )
+        {
+            return AttributeDefinition.PASSWORD;
+        }
 
         // finally fall back to string for illegal values
         return AttributeDefinition.STRING;
@@ -469,6 +473,7 @@
                     case AttributeDefinition.DOUBLE:
                         return Double.valueOf( value );
                     case AttributeDefinition.STRING:
+                    case AttributeDefinition.PASSWORD:
                     default:
                         return value;
                 }
diff --git a/metatype/src/test/java/org/apache/felix/metatype/ADTest.java b/metatype/src/test/java/org/apache/felix/metatype/ADTest.java
index 77bfcfd..5c4980b 100644
--- a/metatype/src/test/java/org/apache/felix/metatype/ADTest.java
+++ b/metatype/src/test/java/org/apache/felix/metatype/ADTest.java
@@ -130,6 +130,7 @@
         assertEquals( AttributeDefinition.CHARACTER, AD.toType( "Char" ) );
         assertEquals( AttributeDefinition.BOOLEAN, AD.toType( "Boolean" ) );
         assertEquals( AttributeDefinition.SHORT, AD.toType( "Short" ) );
+        assertEquals( AttributeDefinition.PASSWORD, AD.toType( "Password" ) );
         assertEquals( AttributeDefinition.STRING, AD.toType( "JohnDoe" ) );
     }
 }