[jboss-osgi-commits] JBoss-OSGI SVN: r96183 - in projects/jboss-osgi/trunk/reactor/framework/src: main/java/org/jboss/osgi/framework/classloading and 9 other directories.

jboss-osgi-commits at lists.jboss.org jboss-osgi-commits at lists.jboss.org
Mon Nov 9 12:30:34 EST 2009


Author: adrian at jboss.org
Date: 2009-11-09 12:30:32 -0500 (Mon, 09 Nov 2009)
New Revision: 96183

Modified:
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleCapability.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleRequirement.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageCapability.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageRequirement.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/ParameterizedAttribute.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractOSGiMetaData.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractPackageAttribute.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractParameterizedAttribute.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/ManifestParser.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/ExportPackage.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/ImportPackage.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/NamedPackage.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolvable.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolver.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ExportPackageImpl.java
   projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BasicResolverImpl.java
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/bundle/metadata/HeaderValuesTestCase.java
   projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ImportDirectiveResolutionTest.java
   projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/singleton/singleton1/META-INF/MANIFEST.MF
   projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/singleton/singleton2/META-INF/MANIFEST.MF
Log:
[JBOSGI-200] - Split parameters into attributes and directives - also completed validation of bundles at install

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/bundle/OSGiBundleManager.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -36,6 +36,7 @@
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.Dictionary;
+import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
@@ -64,6 +65,7 @@
 import org.jboss.kernel.Kernel;
 import org.jboss.logging.Logger;
 import org.jboss.osgi.framework.metadata.OSGiMetaData;
+import org.jboss.osgi.framework.metadata.PackageAttribute;
 import org.jboss.osgi.framework.metadata.internal.AbstractOSGiMetaData;
 import org.jboss.osgi.framework.plugins.AutoInstallPlugin;
 import org.jboss.osgi.framework.plugins.ResolverPlugin;
@@ -612,18 +614,7 @@
       if (bundleState == null)
          throw new IllegalArgumentException("Null bundle state");
 
-      // todo more validation
-      OSGiMetaData metaData = bundleState.getOSGiMetaData();
-      if (metaData.isSingleton())
-      {
-         String symbolicName = metaData.getBundleSymbolicName();
-         for (AbstractBundleState bundle : getBundles())
-         {
-            OSGiMetaData other = bundle.getOSGiMetaData();
-            if (other.isSingleton() && symbolicName.equals(other.getBundleSymbolicName()))
-               throw new IllegalStateException("Cannot install singleton " + bundleState + " another singleton is already installed: " + bundle);
-         }
-      }
+      validateBundle(bundleState);
 
       bundleState.setBundleManager(this);
       bundles.add(bundleState);
@@ -642,6 +633,69 @@
    }
 
    /**
+    * Validate the bundle
+    * 
+    * @param bundleState the bundle state
+    */
+   private void validateBundle(AbstractBundleState bundleState)
+   {
+      
+      OSGiMetaData metaData = bundleState.getOSGiMetaData();
+
+      String symbolicName = metaData.getBundleSymbolicName();
+      if (symbolicName == null)
+         throw new IllegalStateException("No bundle symbolic name " + bundleState);
+
+      int manifestVersion = metaData.getBundleManifestVersion();
+      if (manifestVersion > 2)
+         throw new IllegalStateException("Unsupported manifest version " + manifestVersion + " for " + bundleState);
+
+      for (AbstractBundleState bundle : getBundles())
+      {
+         OSGiMetaData other = bundle.getOSGiMetaData();
+         if (symbolicName.equals(other.getBundleSymbolicName()))
+         {
+            if (other.isSingleton() && metaData.isSingleton())
+               throw new IllegalStateException("Cannot install singleton " + bundleState + " another singleton is already installed: " + bundle.getLocation());
+            if (other.getBundleVersion().equals(metaData.getBundleVersion()))
+               throw new IllegalStateException("Cannot install " + bundleState + " a bundle with that name and version is already installed: " + bundle.getLocation());
+         }
+      }
+      
+      List<PackageAttribute> importPackages = metaData.getImportPackages();
+      if (importPackages != null && importPackages.isEmpty() == false)
+      {
+         Set<String> packages = new HashSet<String>();
+         for (PackageAttribute packageAttribute : importPackages)
+         {
+            String packageName = packageAttribute.getAttribute();
+            if (packages.contains(packageName))
+               throw new IllegalStateException("Duplicate import of package " + packageName + " for " + bundleState);
+            packages.add(packageName);
+            
+            if (packageName.startsWith("java."))
+               throw new IllegalStateException("Not allowed to import java.* for " + bundleState);
+
+            String version = packageAttribute.getAttributeValue(Constants.VERSION_ATTRIBUTE, String.class);
+            String specificationVersion = packageAttribute.getAttributeValue(Constants.PACKAGE_SPECIFICATION_VERSION, String.class);
+            if (version != null && specificationVersion != null && version.equals(specificationVersion) == false)
+               throw new IllegalStateException(packageName + " version and specification version should be the same for " + bundleState);
+         }
+      }
+      
+      List<PackageAttribute> exportPackages = metaData.getExportPackages();
+      if (exportPackages != null && exportPackages.isEmpty() == false)
+      {
+         for (PackageAttribute packageAttribute : exportPackages)
+         {
+            String packageName = packageAttribute.getAttribute();
+            if (packageName.startsWith("java."))
+               throw new IllegalStateException("Not allowed to export java.* for " + bundleState);
+         }
+      }
+   }
+
+   /**
     * Remove a bundle
     * 
     * @param bundleState the bundle state

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleCapability.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleCapability.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleCapability.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -108,22 +108,19 @@
       ParameterizedAttribute otherParameters = bundleRequirement.getRequireBundle();
       if (otherParameters != null)
       {
-         Map<String, Parameter> params = otherParameters.getParameters();
+         Map<String, Parameter> params = otherParameters.getAttributes();
          if (params != null && params.isEmpty() == false)
          {
             for (String name : params.keySet())
             {
-               // todo we shouldn't mix attributes and directives in the metadata
-               if (Constants.VISIBILITY_DIRECTIVE.equals(name) == false
-                && Constants.RESOLUTION_DIRECTIVE.equals(name) == false
-                && Constants.BUNDLE_VERSION_ATTRIBUTE.equals(name) == false)
+               if (Constants.BUNDLE_VERSION_ATTRIBUTE.equals(name) == false)
                {
                   if (ourParameters == null)
                      return false;
-                  String ourValue = ourParameters.getParameterValue(name, String.class);
+                  String ourValue = ourParameters.getAttributeValue(name, String.class);
                   if (ourValue == null)
                      return false;
-                  if (ourValue.equals(otherParameters.getParameterValue(name, String.class)) == false)
+                  if (ourValue.equals(otherParameters.getAttributeValue(name, String.class)) == false)
                      return false;
                }
             }
@@ -152,9 +149,9 @@
       ParameterizedAttribute parameters = metadata.getBundleParameters();
       if (parameters != null)
       {
-         Map<String, Parameter> params = parameters.getParameters();
+         Map<String, Parameter> params = parameters.getAttributes();
          if (params != null && params.isEmpty() == false)
-            buffer.append(" parameters=").append(params);
+            buffer.append(" attributes=").append(params);
       }
    }
 }

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleRequirement.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleRequirement.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiBundleRequirement.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -61,7 +61,7 @@
       String name = requireBundle.getAttribute();
       
       AbstractVersionRange range = null;
-      String version = requireBundle.getParameterValue(Constants.BUNDLE_VERSION_ATTRIBUTE, String.class);
+      String version = requireBundle.getAttributeValue(Constants.BUNDLE_VERSION_ATTRIBUTE, String.class);
       if (version != null)
          range = (AbstractVersionRange) AbstractVersionRange.valueOf(version);
 
@@ -83,11 +83,11 @@
          throw new IllegalArgumentException("Null requireBundle");
       this.requireBundle = requireBundle;
 
-      String visibility = requireBundle.getParameterValue(Constants.VISIBILITY_DIRECTIVE, String.class);
+      String visibility = requireBundle.getDirectiveValue(Constants.VISIBILITY_DIRECTIVE, String.class);
       if (Constants.VISIBILITY_REEXPORT.equals(visibility))
          setReExport(true);
 
-      String resolution = requireBundle.getParameterValue(Constants.RESOLUTION_DIRECTIVE, String.class);
+      String resolution = requireBundle.getDirectiveValue(Constants.RESOLUTION_DIRECTIVE, String.class);
       if (Constants.RESOLUTION_OPTIONAL.equals(resolution))
          setOptional(true);
    }
@@ -119,8 +119,8 @@
    protected void toString(StringBuffer buffer)
    {
       super.toString(buffer);
-      Map<String, Parameter> parameters = requireBundle.getParameters();
+      Map<String, Parameter> parameters = requireBundle.getAttributes();
       if (parameters != null && parameters.isEmpty() == false)
-         buffer.append(" parameters=").append(parameters);
+         buffer.append(" attributes=").append(parameters);
    }
 }

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageCapability.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageCapability.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageCapability.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -82,9 +82,9 @@
          throw new IllegalArgumentException("Null bundle");
 
       String name = exportPackage.getAttribute();
-      String versionString = exportPackage.getParameterValue(Constants.VERSION_ATTRIBUTE, String.class);
+      String versionString = exportPackage.getAttributeValue(Constants.VERSION_ATTRIBUTE, String.class);
 
-      String oldVersionString = exportPackage.getParameterValue(Constants.PACKAGE_SPECIFICATION_VERSION, String.class);
+      String oldVersionString = exportPackage.getAttributeValue(Constants.PACKAGE_SPECIFICATION_VERSION, String.class);
       if (oldVersionString != null)
       {
          if (versionString != null && versionString.equals(oldVersionString) == false)
@@ -116,7 +116,7 @@
       this.bundleState = bundleState;
       this.exportPackage = exportPackage;
 
-      String mandatory = exportPackage.getParameterValue(Constants.MANDATORY_DIRECTIVE, String.class);
+      String mandatory = exportPackage.getAttributeValue(Constants.MANDATORY_DIRECTIVE, String.class);
       if (mandatory != null)
       {
          StringTokenizer tokens = new StringTokenizer(mandatory, ",");
@@ -126,9 +126,9 @@
             mandatoryAttributes[i++] = tokens.nextToken();
       }
 
-      if (exportPackage.getParameter(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE) != null)
+      if (exportPackage.getAttribute(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE) != null)
          throw new IllegalStateException("You cannot specify " + Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE + " on an Export-Package");
-      if (exportPackage.getParameter(Constants.BUNDLE_VERSION_ATTRIBUTE) != null)
+      if (exportPackage.getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE) != null)
          throw new IllegalStateException("You cannot specify " + Constants.BUNDLE_VERSION_ATTRIBUTE + " on an Export-Package");
    }
 
@@ -209,7 +209,7 @@
          {
             for (String mand : mandatoryAttributes)
             {
-               if (reqParameters.getParameter(mand) == null)
+               if (reqParameters.getAttribute(mand) == null)
                {
                   validMatch = false;
                   break;
@@ -220,15 +220,14 @@
 
       if (validMatch == true && reqParameters != null)
       {
-         Map<String, Parameter> params = reqParameters.getParameters();
+         Map<String, Parameter> params = reqParameters.getAttributes();
          if (params != null && params.isEmpty() == false)
          {
             for (String name : params.keySet())
             {
-               String otherValue = reqParameters.getParameterValue(name, String.class);
-               String ourValue = capParameters.getParameterValue(name, String.class);
+               String otherValue = reqParameters.getAttributeValue(name, String.class);
+               String ourValue = capParameters.getAttributeValue(name, String.class);
 
-               // todo we shouldn't mix attributes and directives in the metadata
                if (Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE.equals(name))
                {
                   if (otherValue.equals(metaData.getBundleSymbolicName()) == false)
@@ -240,7 +239,7 @@
                   if (range.isInRange(metaData.getBundleVersion()) == false)
                      validMatch = false;
                }
-               else if (Constants.RESOLUTION_DIRECTIVE.equals(name) == false && Constants.PACKAGE_SPECIFICATION_VERSION.equals(name) == false
+               else if (Constants.PACKAGE_SPECIFICATION_VERSION.equals(name) == false
                      && Constants.VERSION_ATTRIBUTE.equals(name) == false)
                {
                   if (ourValue == null || ourValue.equals(otherValue) == false)
@@ -277,9 +276,9 @@
       ParameterizedAttribute parameters = metadata.getBundleParameters();
       if (parameters != null)
       {
-         Map<String, Parameter> params = parameters.getParameters();
+         Map<String, Parameter> params = parameters.getAttributes();
          if (params != null && params.isEmpty() == false)
-            buffer.append(" parameters=").append(params);
+            buffer.append(" attributes=").append(params);
       }
    }
 }

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageRequirement.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageRequirement.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/classloading/OSGiPackageRequirement.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -72,18 +72,18 @@
       String name = requirePackage.getAttribute();
 
       AbstractVersionRange range = null;
-      String versionString = requirePackage.getParameterValue(Constants.VERSION_ATTRIBUTE, String.class);
+      String versionString = requirePackage.getAttributeValue(Constants.VERSION_ATTRIBUTE, String.class);
       if (versionString != null)
       {
          range = (AbstractVersionRange)AbstractVersionRange.valueOf(versionString);
-         String oldVersionString = requirePackage.getParameterValue(Constants.PACKAGE_SPECIFICATION_VERSION, String.class);
+         String oldVersionString = requirePackage.getAttributeValue(Constants.PACKAGE_SPECIFICATION_VERSION, String.class);
          if (oldVersionString != null && oldVersionString.equals(versionString) == false)
             throw new IllegalStateException(Constants.VERSION_ATTRIBUTE + " of " + versionString + " does not match " + Constants.PACKAGE_SPECIFICATION_VERSION
                   + " of " + oldVersionString);
       }
       else
       {
-         versionString = requirePackage.getParameterValue(Constants.PACKAGE_SPECIFICATION_VERSION, String.class);
+         versionString = requirePackage.getAttributeValue(Constants.PACKAGE_SPECIFICATION_VERSION, String.class);
          if (versionString != null)
             range = (AbstractVersionRange)AbstractVersionRange.valueOf(versionString);
       }
@@ -108,7 +108,7 @@
       if (requirePackage != null)
       {
          this.requirePackage = requirePackage;
-         String resolution = requirePackage.getParameterValue(Constants.RESOLUTION_DIRECTIVE, String.class);
+         String resolution = requirePackage.getDirectiveValue(Constants.RESOLUTION_DIRECTIVE, String.class);
          if (Constants.RESOLUTION_OPTIONAL.equals(resolution))
             setOptional(true);
       }
@@ -157,7 +157,7 @@
       super.toString(buffer);
       if (requirePackage != null)
       {
-         Map<String, Parameter> parameters = requirePackage.getParameters();
+         Map<String, Parameter> parameters = requirePackage.getAttributes();
          if (parameters != null)
          {
             Map<String, Object> keyValueMap = new LinkedHashMap<String, Object>();

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/ParameterizedAttribute.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/ParameterizedAttribute.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/ParameterizedAttribute.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -32,28 +32,74 @@
 public interface ParameterizedAttribute extends AttributeAware
 {
    /**
-    * Get the parameters.
+    * Get the attributes.
     *
-    * @return properties for this attribute
+    * @return the attributes
     */
-   Map<String, Parameter> getParameters();
+   Map<String, Parameter> getAttributes();
 
    /**
-    * Get the parameter by name.
-    * Helper method to getParameters method.
+    * Get an attribute by name.
     *
-    * @param name parameter's name
-    * @return parameter value
+    * @param name attributes's name
+    * @return the attribute
     */
-   Parameter getParameter(String name);
+   Parameter getAttribute(String name);
 
    /**
-    * Get a parameter value
+    * Get an attribute value
     * 
     * @param <T> the expected type
-    * @param name the name of the parameter
+    * @param name the name of the attribute
     * @param type the expected type
-    * @return the parmaeter value
+    * @return the attribute value
     */
-   <T> T getParameterValue(String name, Class<T> type);
+   <T> T getAttributeValue(String name, Class<T> type);
+
+   /**
+    * Get a directive value
+    * 
+    * @param <T> the expected type
+    * @param name the name of the directive
+    * @param defaultValue the default value when no attribute is specified
+    * @param type the expected type
+    * @return the attribute value
+    */
+   <T> T getAttributeValue(String name, T defaultValue, Class<T> type);
+   
+   /**
+    * Get the declerations
+    *
+    * @return the directives
+    */
+   Map<String, Parameter> getDirectives();
+
+   /**
+    * Get a directive by name.
+    *
+    * @param name directive's name
+    * @return the directive
+    */
+   Parameter getDirective(String name);
+
+   /**
+    * Get a directive value
+    * 
+    * @param <T> the expected type
+    * @param name the name of the directive
+    * @param type the expected type
+    * @return the directive value
+    */
+   <T> T getDirectiveValue(String name, Class<T> type);
+
+   /**
+    * Get a directive value
+    * 
+    * @param <T> the expected type
+    * @param name the name of the directive
+    * @param defaultValue the default value when no directive is specified
+    * @param type the expected type
+    * @return the directive value
+    */
+   <T> T getDirectiveValue(String name, T defaultValue, Class<T> type);
 }

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractOSGiMetaData.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractOSGiMetaData.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractOSGiMetaData.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -151,7 +151,7 @@
 
    public int getBundleManifestVersion()
    {
-      return get(BUNDLE_MANIFESTVERSION, INTEGER_VC, 1);
+      return get(BUNDLE_MANIFESTVERSION, INTEGER_VC, 2);
    }
 
    public String getBundleName()
@@ -225,7 +225,7 @@
       parseSymbolicName();
       if (parameters == null)
          return false;
-      return "true".equals(parameters.getParameterValue(Constants.SINGLETON_DIRECTIVE, String.class));
+      return "true".equals(parameters.getDirectiveValue(Constants.SINGLETON_DIRECTIVE, String.class));
    }
 
    public String getFragmentAttachment()
@@ -233,7 +233,7 @@
       parseSymbolicName();
       if (parameters == null)
          return null;
-      return parameters.getParameterValue(Constants.FRAGMENT_ATTACHMENT_DIRECTIVE, String.class);
+      return parameters.getDirectiveValue(Constants.FRAGMENT_ATTACHMENT_DIRECTIVE, String.class);
    }
 
    protected ParameterizedAttribute parseSymbolicName()

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractPackageAttribute.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractPackageAttribute.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractPackageAttribute.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -43,9 +43,9 @@
    protected PackageInfo packageInfo;
    protected VersionRange versionRange;
 
-   public AbstractPackageAttribute(String attribute, Map<String, Parameter> parameters)
+   public AbstractPackageAttribute(String attribute, Map<String, Parameter> attributes, Map<String, Parameter> directives)
    {
-      super(attribute, parameters);
+      super(attribute, attributes, directives);
       packageInfo = new PackageInfoImpl(attribute);
    }
 
@@ -58,7 +58,7 @@
    {
       if (versionRange == null)
       {
-         Parameter parameter = getParameter(Constants.VERSION_ATTRIBUTE);
+         Parameter parameter = getDirective(Constants.VERSION_ATTRIBUTE);
          if (parameter != null)
          {
             if (parameter.isCollection())

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractParameterizedAttribute.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractParameterizedAttribute.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/AbstractParameterizedAttribute.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -21,6 +21,7 @@
 */
 package org.jboss.osgi.framework.metadata.internal;
 
+import java.util.Collections;
 import java.util.Map;
 
 import org.jboss.osgi.framework.metadata.Parameter;
@@ -36,48 +37,83 @@
 {
    private static final long serialVersionUID = 1l;
    
-   protected Map<String, Parameter> parameters;
+   protected Map<String, Parameter> attributes;
+   
+   protected Map<String, Parameter> directives;
 
-   public AbstractParameterizedAttribute(String attribute, Map<String, Parameter> parameters)
+   public AbstractParameterizedAttribute(String attribute, Map<String, Parameter> attributes, Map<String, Parameter> directives)
    {
       super(attribute);
-      this.parameters = parameters;
+      if (attributes == null)
+         attributes = Collections.emptyMap();
+      this.attributes = attributes;
+      if (directives == null)
+         directives = Collections.emptyMap(); 
+      this.directives = directives;
    }
 
-   public Map<String, Parameter> getParameters()
+   public Map<String, Parameter> getAttributes()
    {
-      return parameters;
+      return attributes;
    }
 
-   public Parameter getParameter(String name)
+   public Parameter getAttribute(String name)
    {
-      return parameters.get(name);
+      return attributes.get(name);
    }
 
-   /**
-    * Get a parameter
-    * 
-    * @param <T> the expected type
-    * @param name the name of the parameter
-    * @param type the expected type
-    * @return the parmaeter value
-    */
-   public <T> T getParameterValue(String name, Class<T> type)
+   public <T> T getAttributeValue(String name, Class<T> type)
    {
-      Parameter parameter = getParameter(name);
+      return getAttributeValue(name, null, type);
+   }
+
+   public <T> T getAttributeValue(String name, T defaultValue, Class<T> type)
+   {
+      Parameter parameter = getAttribute(name);
       if (parameter == null)
-         return null;
+         return defaultValue;
       if (parameter.isCollection())
-         throw new IllegalArgumentException("Duplicate " + name + " parameter.");
+         throw new IllegalArgumentException("Duplicate " + name + " attribute.");
       Object value = parameter.getValue();
       if (value == null)
-         return null;
+         return defaultValue;
       return type.cast(value);
    }
 
+   public Map<String, Parameter> getDirectives()
+   {
+      return directives;
+   }
+
+   public Parameter getDirective(String name)
+   {
+      return directives.get(name);
+   }
+
+   public <T> T getDirectiveValue(String name, Class<T> type)
+   {
+      return getDirectiveValue(name, null, type);
+   }
+
+   public <T> T getDirectiveValue(String name, T defaultValue, Class<T> type)
+   {
+      Parameter parameter = getDirective(name);
+      if (parameter == null)
+         return defaultValue;
+      if (parameter.isCollection())
+         throw new IllegalArgumentException("Duplicate " + name + " directive.");
+      Object value = parameter.getValue();
+      if (value == null)
+         return defaultValue;
+      return type.cast(value);
+   }
+
    protected void toString(JBossStringBuilder buffer)
    {
       super.toString(buffer);
-      buffer.append(" parameters=" + parameters);
+      if (attributes.isEmpty() == false)
+         buffer.append(" attributes=" + attributes);
+      if (directives.isEmpty() == false)
+         buffer.append(" directives=" + directives);
    }
 }

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/ManifestParser.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/ManifestParser.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/metadata/internal/ManifestParser.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -144,7 +144,10 @@
                String value = piece.substring(seperator + 2);
                if (directives == null)
                   directives = new HashMap<String, Parameter>();
-               directives.put(unquote(name), new AbstractParameter(unquote(value)));
+               String unquoted = unquote(name);
+               if (directives.containsKey(unquoted))
+                  throw new IllegalStateException("Dupicate directive: " + unquoted);
+               directives.put(unquoted, new AbstractParameter(unquote(value)));
             }
             else
             {
@@ -155,7 +158,10 @@
                   String value = piece.substring(seperator + 1);
                   if (attributes == null)
                      attributes = new HashMap<String, Parameter>();
-                  attributes.put(unquote(name), new AbstractParameter(unquote(value)));
+                  String unquoted = unquote(name);
+                  if (attributes.containsKey(unquoted))
+                     throw new IllegalStateException("Dupicate attribute: " + unquoted);
+                  attributes.put(unquoted, new AbstractParameter(unquote(value)));
                }
                else
                {
@@ -164,20 +170,13 @@
             }
          }
          
-         // TODO JBOSGI-200 replace with seperate attribute and directives in the metadata
-         if (attributes == null)
-            attributes = new HashMap<String, Parameter>();
-         if (directives != null)
-            attributes.putAll(directives);
-         // END JBOSGI-200
-         
          for (String path : paths)
          {
             ParameterizedAttribute metadata = null;
             if (packages)
-               metadata = new AbstractPackageAttribute(path, attributes);
+               metadata = new AbstractPackageAttribute(path, attributes, directives);
             else
-               metadata = new AbstractParameterizedAttribute(path, attributes);
+               metadata = new AbstractParameterizedAttribute(path, attributes, directives);
             
             list.add(metadata);
          }

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/ExportPackage.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/ExportPackage.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/ExportPackage.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -36,11 +36,15 @@
 {
    /**
     * Get the version of this export.
+    * 
+    * @return the version
     */
    Version getVersion();
    
    /**
     * Get the list of packages that is used by this export.
+    * 
+    * @return the list of uses
     */
    List<String> getUses();
    

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/ImportPackage.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/ImportPackage.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/ImportPackage.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -39,11 +39,15 @@
 
    /**
     * Get the version range for this import package.
+    * 
+    * @return the version range
     */
    VersionRange getVersion();
 
    /**
     * Get the resolution directive for this import package.
+    * 
+    * @return the resolution directive
     */
    Resolution getResolution();
 

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/NamedPackage.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/NamedPackage.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/NamedPackage.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -34,11 +34,15 @@
 {
    /**
     * Get the bundle that owns this package decalaration
+    * 
+    * @return the owner
     */
    Resolvable getOwner();
 
    /**
     * Get the package name
+    * 
+    * @return the name
     */
    String getName();
 

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolvable.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolvable.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolvable.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -36,16 +36,22 @@
 {
    /**
     * Get the underlying bundle that this resolvable is associated with.
+    * 
+    * @return the bundle
     */
    Bundle getBundle();
    
    /**
     * Get the bundle's symbolic name.
+    * 
+    * @return the symbolic name
     */
    String getSymbolicName();
    
    /**
     * Get the bundle's version.
+    * 
+    * @return the version
     */
    Version getVersion();
    
@@ -57,6 +63,8 @@
    
    /**
     * Get an exported package by name.
+    * 
+    * @param packageName the package name
     * @return The exported package or null if the bundle does not export that package.
     */
    ExportPackage getExportPackage(String packageName);
@@ -69,17 +77,19 @@
    
    /**
     * Get an imported package by name.
+    * 
+    * @param packageName the package name
     * @return The imported package or null if the bundle does not import that package.
     */
    ImportPackage getImportPackage(String packageName);
    
    /**
-    * True if this resovable is a singleton bundle.
+    * @return True if this resovable is a singleton bundle.
     */
    boolean isSingleton();
    
    /**
-    * True if this resovable has been resolved.
+    * @return True if this resovable has been resolved.
     */
    boolean isResolved();
 }
\ No newline at end of file

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolver.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolver.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/Resolver.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -41,12 +41,16 @@
    
    /**
     * Add a bundle to the resolver.
+    * 
+    * @param bundle the bundle
     * @return The resolvable associated with the added bundle.
     */
    Resolvable addBundle(Bundle bundle);
    
    /**
     * Remove a bundle from the resolver.
+
+    * @param bundle the bundle
     * @return The resolvable associated with the removed bundle.
     */
    Resolvable removeBundle(Bundle bundle);

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ExportPackageImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ExportPackageImpl.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ExportPackageImpl.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -26,7 +26,6 @@
 
 import org.jboss.osgi.framework.resolver.ExportPackage;
 import org.jboss.osgi.framework.resolver.ImportPackage;
-import org.jboss.osgi.framework.resolver.NamedPackage;
 import org.jboss.osgi.framework.resolver.Resolvable;
 import org.jboss.osgi.spi.NotImplementedException;
 import org.osgi.framework.Version;

Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BasicResolverImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BasicResolverImpl.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/basic/BasicResolverImpl.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -40,7 +40,6 @@
 import org.jboss.osgi.framework.bundle.OSGiBundleState;
 import org.jboss.osgi.framework.classloading.OSGiPackageRequirement;
 import org.jboss.osgi.framework.metadata.OSGiMetaData;
-import org.jboss.osgi.framework.metadata.Parameter;
 import org.jboss.osgi.framework.metadata.ParameterizedAttribute;
 import org.jboss.osgi.framework.plugins.ResolverPlugin;
 import org.jboss.osgi.framework.plugins.internal.AbstractPlugin;
@@ -420,21 +419,12 @@
             if (requiredBundleName == null)
                throw new IllegalStateException("Cannot obtain value for: " + Constants.REQUIRE_BUNDLE);
 
-            String visibility = Constants.VISIBILITY_PRIVATE;
-            Parameter param = attr.getParameter(Constants.VISIBILITY_DIRECTIVE);
-            if (param != null)
-               visibility = (String)param.getValue();
+            String visibility = attr.getDirectiveValue(Constants.VISIBILITY_DIRECTIVE, Constants.VISIBILITY_PRIVATE, String.class);
 
-            String resolution = Constants.RESOLUTION_MANDATORY;
-            param = attr.getParameter(Constants.RESOLUTION_DIRECTIVE);
-            if (param != null)
-               resolution = (String)param.getValue();
+            String resolution = attr.getDirectiveValue(Constants.RESOLUTION_DIRECTIVE, Constants.RESOLUTION_MANDATORY, String.class);
 
             // [TODO] bundle-version
-            //String bundleVersion = null;
-            //param = attr.getParameter(Constants.BUNDLE_VERSION_ATTRIBUTE);
-            //if (param != null)
-            //   bundleVersion = (String)param.getValue();
+            //String bundleVersion = attr.getAttributeValue(Constants.BUNDLE_VERSION_ATTRIBUTE, String.class);
 
             if (Constants.RESOLUTION_MANDATORY.equals(resolution))
             {

Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/bundle/metadata/HeaderValuesTestCase.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/bundle/metadata/HeaderValuesTestCase.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/bundle/metadata/HeaderValuesTestCase.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -104,12 +104,12 @@
       Map<String, Parameter> bnc1 = new HashMap<String, Parameter>();
       bnc1.put("osname", new AbstractParameter("QNX"));
       bnc1.put("osversion", new AbstractParameter("3.1"));
-      bundleNativeCode.add(new AbstractPackageAttribute("/lib/http.DLL", bnc1));
+      bundleNativeCode.add(new AbstractPackageAttribute("/lib/http.DLL", bnc1, null));
       Map<String, Parameter> bnc2 = new HashMap<String, Parameter>();
       bnc2.put("osname", new AbstractParameter("QWE"));
       bnc2.put("osversion", new AbstractParameter("4.0"));
-      bundleNativeCode.add(new AbstractPackageAttribute("/lib/tcp.DLL", bnc2));
-      bundleNativeCode.add(new AbstractPackageAttribute("/lib/iiop.DLL", bnc2));
+      bundleNativeCode.add(new AbstractPackageAttribute("/lib/tcp.DLL", bnc2, null));
+      bundleNativeCode.add(new AbstractPackageAttribute("/lib/iiop.DLL", bnc2, null));
       List<ParameterizedAttribute> metadataBNC = metaData.getBundleNativeCode();
       assertNotNull(metadataBNC);
       assertEquals(bundleNativeCode.size(), metadataBNC.size());
@@ -118,19 +118,19 @@
          ParameterizedAttribute paMD = metadataBNC.get(i);
          ParameterizedAttribute myPA = bundleNativeCode.get(i);
          assertEquals(paMD.getAttribute(), myPA.getAttribute());
-         assertEquals(paMD.getParameters(), myPA.getParameters());
+         assertEquals(paMD.getAttributes(), myPA.getAttributes());
       }
 
       List<PackageAttribute> dynamicImports = new ArrayList<PackageAttribute>();
       Map<String, Parameter> dyna1 = new HashMap<String, Parameter>();
       dyna1.put("user", new AbstractParameter("alesj"));
-      dynamicImports.add(new AbstractPackageAttribute("org.jboss.test", dyna1));
+      dynamicImports.add(new AbstractPackageAttribute("org.jboss.test", dyna1, null));
       Map<String, Parameter> dyna2 = new HashMap<String, Parameter>();
       dyna2.put("version", new AbstractParameter("1.2.3.GA"));
-      dynamicImports.add(new AbstractPackageAttribute("com.acme.plugin.*", dyna2));
+      dynamicImports.add(new AbstractPackageAttribute("com.acme.plugin.*", dyna2, null));
       Map<String, Parameter> dyna3 = new HashMap<String, Parameter>();
       dyna3.put("test", new AbstractParameter("test"));
-      dynamicImports.add(new AbstractPackageAttribute("*", dyna3));
+      dynamicImports.add(new AbstractPackageAttribute("*", dyna3, null));
       List<PackageAttribute> metadataDyna = metaData.getDynamicImports();
       assertNotNull(metadataDyna);
       assertEquals(dynamicImports.size(), metadataDyna.size());
@@ -140,17 +140,17 @@
          PackageAttribute myPA = dynamicImports.get(i);
          assertEquals(paMD.getAttribute(), myPA.getAttribute());
          assertEquals(paMD.getPackageInfo(), myPA.getPackageInfo());
-         assertEquals(paMD.getParameters(), myPA.getParameters());
+         assertEquals(paMD.getAttributes(), myPA.getAttributes());
       }
 
       List<PackageAttribute> exportPackages = new ArrayList<PackageAttribute>();
       Map<String, Parameter> ep1 = new HashMap<String, Parameter>();
       ep1.put("version", new AbstractParameter("1.3"));
-      exportPackages.add(new AbstractPackageAttribute("org.osgi.util.tracker", ep1));
-      exportPackages.add(new AbstractPackageAttribute("net.osgi.foo", ep1));
+      exportPackages.add(new AbstractPackageAttribute("org.osgi.util.tracker", ep1, null));
+      exportPackages.add(new AbstractPackageAttribute("net.osgi.foo", ep1, null));
       Map<String, Parameter> ep2 = new HashMap<String, Parameter>();
       ep2.put("version", new AbstractParameter("[1.0,2.0)"));
-      exportPackages.add(new AbstractPackageAttribute("org.jboss.test", ep2));
+      exportPackages.add(new AbstractPackageAttribute("org.jboss.test", ep2, null));
       List<PackageAttribute> metadataExport = metaData.getExportPackages();
       assertNotNull(metadataExport);
       assertEquals(exportPackages.size(), metadataExport.size());
@@ -160,9 +160,9 @@
          PackageAttribute myPA = exportPackages.get(i);
          assertEquals(paMD.getAttribute(), myPA.getAttribute());
          assertEquals(paMD.getPackageInfo(), myPA.getPackageInfo());
-         assertEquals(paMD.getParameters(), myPA.getParameters());
-         OSGiParameters o1 = new OSGiParameters(paMD.getParameters());
-         OSGiParameters o2 = new OSGiParameters(myPA.getParameters());
+         assertEquals(paMD.getAttributes(), myPA.getAttributes());
+         OSGiParameters o1 = new OSGiParameters(paMD.getAttributes());
+         OSGiParameters o2 = new OSGiParameters(myPA.getAttributes());
          VersionRange v1 = o1.getVersion();
          VersionRange v2 = o2.getVersion();
          assertEquals(v1, v2);
@@ -170,12 +170,12 @@
 
       Map<String, Parameter> parameters = new HashMap<String, Parameter>();
       parameters.put("bundle-version", new AbstractParameter("\"[3.0.0,4.0.0)\""));
-      ParameterizedAttribute fragmentHost = new AbstractParameterizedAttribute("org.eclipse.swt", parameters);
+      ParameterizedAttribute fragmentHost = new AbstractParameterizedAttribute("org.eclipse.swt", parameters, null);
       ParameterizedAttribute metadataFragment = metaData.getFragmentHost();
       assertNotNull(metadataFragment);
       assertEquals(fragmentHost.getAttribute(), metadataFragment.getAttribute());
-      OSGiParameters o1 = new OSGiParameters(fragmentHost.getParameters());
-      OSGiParameters o2 = new OSGiParameters(metadataFragment.getParameters());
+      OSGiParameters o1 = new OSGiParameters(fragmentHost.getAttributes());
+      OSGiParameters o2 = new OSGiParameters(metadataFragment.getAttributes());
       VersionRange v1 = o1.getBundleVersion();
       VersionRange v2 = o2.getBundleVersion();
       assertNotNull(v1);
@@ -186,12 +186,13 @@
       Map<String, Parameter> ip1 = new HashMap<String, Parameter>();
       ip1.put("version", new AbstractParameter("1.4"));
       ip1.put("name", new AbstractParameter("osgi"));
-      importPackages.add(new AbstractPackageAttribute("org.osgi.util.tracker", ip1));
-      importPackages.add(new AbstractPackageAttribute("org.osgi.service.io", ip1));
+      importPackages.add(new AbstractPackageAttribute("org.osgi.util.tracker", ip1, null));
+      importPackages.add(new AbstractPackageAttribute("org.osgi.service.io", ip1, null));
       Map<String, Parameter> ip2 = new HashMap<String, Parameter>();
       ip2.put("version", new AbstractParameter("[2.0,3.0)"));
-      ip2.put("resolution", new AbstractParameter("osgi-int"));
-      importPackages.add(new AbstractPackageAttribute("org.jboss.test", ip2));
+      Map<String, Parameter> ip2d = new HashMap<String, Parameter>();
+      ip2d.put("resolution", new AbstractParameter("osgi-int"));
+      importPackages.add(new AbstractPackageAttribute("org.jboss.test", ip2, ip2d));
       List<PackageAttribute> metadataImport = metaData.getImportPackages();
       assertNotNull(metadataImport);
       assertEquals(importPackages.size(), metadataImport.size());
@@ -201,9 +202,10 @@
          PackageAttribute myPA = importPackages.get(i);
          assertEquals(paMD.getAttribute(), myPA.getAttribute());
          assertEquals(paMD.getPackageInfo(), myPA.getPackageInfo());
-         assertEquals(paMD.getParameters(), myPA.getParameters());
-         OSGiParameters oi1 = new OSGiParameters(paMD.getParameters());
-         OSGiParameters oi2 = new OSGiParameters(myPA.getParameters());
+         assertEquals(paMD.getAttributes(), myPA.getAttributes());
+         assertEquals(paMD.getDirectives(), myPA.getDirectives());
+         OSGiParameters oi1 = new OSGiParameters(paMD.getAttributes());
+         OSGiParameters oi2 = new OSGiParameters(myPA.getAttributes());
          VersionRange vi1 = oi1.getVersion();
          VersionRange vi2 = oi2.getVersion();
          assertEquals(vi1, vi2);
@@ -212,10 +214,10 @@
       List<ParameterizedAttribute> requireBundles = new ArrayList<ParameterizedAttribute>();
       Map<String, Parameter> rb1 = new HashMap<String, Parameter>();
       rb1.put("visibility", new AbstractParameter("true"));
-      requireBundles.add(new AbstractParameterizedAttribute("com.acme.chess", rb1));
+      requireBundles.add(new AbstractParameterizedAttribute("com.acme.chess", null, rb1));
       Map<String, Parameter> rb2 = new HashMap<String, Parameter>();
       rb2.put("bundle-version", new AbstractParameter("1.2"));
-      requireBundles.add(new AbstractParameterizedAttribute("com.alesj.test", rb2));
+      requireBundles.add(new AbstractParameterizedAttribute("com.alesj.test", rb2, null));
       List<ParameterizedAttribute> metadataRB = metaData.getRequireBundles();
       assertNotNull(metadataRB);
       assertEquals(requireBundles.size(), metadataRB.size());
@@ -224,9 +226,10 @@
          ParameterizedAttribute paMD = metadataRB.get(i);
          ParameterizedAttribute myPA = requireBundles.get(i);
          assertEquals(paMD.getAttribute(), myPA.getAttribute());
-         assertEquals(paMD.getParameters(), myPA.getParameters());
-         OSGiParameters oi1 = new OSGiParameters(paMD.getParameters());
-         OSGiParameters oi2 = new OSGiParameters(myPA.getParameters());
+         assertEquals(paMD.getAttributes(), myPA.getAttributes());
+         assertEquals(paMD.getDirectives(), myPA.getDirectives());
+         OSGiParameters oi1 = new OSGiParameters(paMD.getAttributes());
+         OSGiParameters oi2 = new OSGiParameters(myPA.getAttributes());
          String vis1 = oi1.getVisibility();
          String vis2 = oi2.getVisibility();
          assertEquals(vis1, vis2);

Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ImportDirectiveResolutionTest.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ImportDirectiveResolutionTest.java	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ImportDirectiveResolutionTest.java	2009-11-09 17:30:32 UTC (rev 96183)
@@ -63,6 +63,8 @@
    }
    /**
     * [TODO] testImportAvailable
+    * 
+    * @throws BundleException
     */
    public void testImportAvailable() throws BundleException
    {
@@ -70,6 +72,8 @@
 
    /**
     * [TODO] testImportNotAvailable
+
+    * @throws BundleException
     */
    public void testImportNotAvailable() throws BundleException
    {

Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/singleton/singleton1/META-INF/MANIFEST.MF
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/singleton/singleton1/META-INF/MANIFEST.MF	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/singleton/singleton1/META-INF/MANIFEST.MF	2009-11-09 17:30:32 UTC (rev 96183)
@@ -3,4 +3,4 @@
 Implementation-Version: test
 Implementation-Vendor: jboss.org
 Bundle-Name: Singleton1
-Bundle-SymbolicName: org.jboss.test.osgi.singleton;singleton=true
+Bundle-SymbolicName: org.jboss.test.osgi.singleton;singleton:=true

Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/singleton/singleton2/META-INF/MANIFEST.MF
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/singleton/singleton2/META-INF/MANIFEST.MF	2009-11-09 17:28:33 UTC (rev 96182)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/singleton/singleton2/META-INF/MANIFEST.MF	2009-11-09 17:30:32 UTC (rev 96183)
@@ -3,4 +3,4 @@
 Implementation-Version: test
 Implementation-Vendor: jboss.org
 Bundle-Name: Singleton2
-Bundle-SymbolicName: org.jboss.test.osgi.singleton;singleton=true
+Bundle-SymbolicName: org.jboss.test.osgi.singleton;singleton:=true



More information about the jboss-osgi-commits mailing list