[jboss-cvs] JBossAS SVN: r96582 - in projects/jboss-osgi/trunk/reactor/framework/src: main/java/org/jboss/osgi/framework/resolver/internal and 8 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Nov 19 10:59:12 EST 2009
Author: thomas.diesler at jboss.com
Date: 2009-11-19 10:59:11 -0500 (Thu, 19 Nov 2009)
New Revision: 96582
Added:
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattribute/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattribute/META-INF/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattribute/META-INF/MANIFEST.MF
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattributemandatory/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattributemandatory/META-INF/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattributemandatory/META-INF/MANIFEST.MF
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageimportattribute/
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageimportattributefails/
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/ImportPackage.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/ImportPackageImpl.java
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractImportExportTest.java
projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverMetadataTest.java
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageimportattribute/META-INF/MANIFEST.MF
projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageimportattributefails/META-INF/MANIFEST.MF
Log:
Package attribute matching in resolver - WIP
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-19 15:27:17 UTC (rev 96581)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/ExportPackage.java 2009-11-19 15:59:11 UTC (rev 96582)
@@ -21,7 +21,6 @@
*/
package org.jboss.osgi.framework.resolver;
-import java.util.List;
import java.util.Set;
import org.osgi.framework.Version;
@@ -42,32 +41,32 @@
Version getVersion();
/**
- * Get the list of packages that is used by this export.
+ * Get the set of packages that is used by this export.
*
* @return the list of uses
*/
- List<String> getUses();
+ Set<String> getUses();
/**
- * Get the list of mandadtory attributes declared by this export.
+ * Get the set of mandadtory attributes declared by this export.
*
* @return An empty list if there are no mandatory exports declared.
*/
- List<String> getMandatoryAttributes();
+ Set<String> getMandatory();
/**
- * Get the list of included classes in this package export.
+ * Get the set of included classes in this package export.
*
* @return Null if there are no includes defined.
*/
- List<String> getIncludes();
+ Set<String> getIncludes();
/**
- * Get the list of excluded classes in this package export.
+ * Get the set of excluded classes in this package export.
*
* @return Null if there are no excludes defined.
*/
- List<String> getExcludes();
+ Set<String> getExcludes();
/**
* Get the current set of importers of this export package.
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-19 15:27:17 UTC (rev 96581)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/ImportPackage.java 2009-11-19 15:59:11 UTC (rev 96582)
@@ -58,6 +58,21 @@
boolean isOptional();
/**
+ * Match the attributes of the given export package
+ *
+ * In order for an import definition to be resolved to an export definition,
+ * the values of the attributes specified by the import definition must match the values
+ * of the attributes of the export definition. By default, a match is not prevented
+ * if the export definition contains attributes that do not occur in the import definition.
+ *
+ * The mandatory directive in the export definition can reverse this by listing all
+ * attributes that the Framework must match in the import definition.
+ *
+ * @return true if the attributes match
+ */
+ boolean matchAttributes(ExportPackage exportPackage);
+
+ /**
* Get the exporter that this import package is wired to.
*
* @return Null if the import is not yet resolved.
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-19 15:27:17 UTC (rev 96581)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ExportPackageImpl.java 2009-11-19 15:59:11 UTC (rev 96582)
@@ -21,11 +21,9 @@
*/
package org.jboss.osgi.framework.resolver.internal;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
-import java.util.List;
import java.util.Set;
import org.jboss.osgi.framework.metadata.Parameter;
@@ -57,38 +55,44 @@
return Version.parseVersion(version != null ? version.getValue().toString() : null);
}
- public List<String> getUses()
+ public Set<String> getUses()
{
- return getDirectiveValueList(Constants.USES_DIRECTIVE);
+ return getDirectiveValues(Constants.USES_DIRECTIVE);
}
- public List<String> getExcludes()
+ public Set<String> getExcludes()
{
- List<String> valueList = getDirectiveValueList(Constants.EXCLUDE_DIRECTIVE);
+ Set<String> valueList = getDirectiveValues(Constants.EXCLUDE_DIRECTIVE);
return valueList.isEmpty() ? null : valueList;
}
- public List<String> getIncludes()
+ public Set<String> getIncludes()
{
- List<String> valueList = getDirectiveValueList(Constants.INCLUDE_DIRECTIVE);
+ Set<String> valueList = getDirectiveValues(Constants.INCLUDE_DIRECTIVE);
return valueList.isEmpty() ? null : valueList;
}
- public List<String> getMandatoryAttributes()
+ public Set<String> getMandatory()
{
- return getDirectiveValueList(Constants.MANDATORY_DIRECTIVE);
+ return getDirectiveValues(Constants.MANDATORY_DIRECTIVE);
}
@SuppressWarnings("unchecked")
- private List<String> getDirectiveValueList(String key)
+ private Set<String> getDirectiveValues(String key)
{
- List<String> valueList = new ArrayList<String>();
+ Set<String> valueList = new HashSet<String>();
Parameter directive = getParameterizedAttribute().getDirective(key);
if (directive != null)
{
- valueList.addAll((Collection<String>)directive.getValue());
+ Object value = directive.getValue();
+ if (value instanceof Collection<?>)
+ valueList.addAll((Collection<String>)value);
+ else if (value instanceof String)
+ valueList.add((String)value);
+ else
+ throw new IllegalStateException("Invalid directive value: " + value);
}
- return Collections.unmodifiableList(valueList);
+ return Collections.unmodifiableSet(valueList);
}
public Set<ImportPackage> getImporters()
Modified: projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ImportPackageImpl.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ImportPackageImpl.java 2009-11-19 15:27:17 UTC (rev 96581)
+++ projects/jboss-osgi/trunk/reactor/framework/src/main/java/org/jboss/osgi/framework/resolver/internal/ImportPackageImpl.java 2009-11-19 15:59:11 UTC (rev 96582)
@@ -21,6 +21,8 @@
*/
package org.jboss.osgi.framework.resolver.internal;
+import java.util.Set;
+
import org.jboss.osgi.framework.metadata.Parameter;
import org.jboss.osgi.framework.metadata.ParameterizedAttribute;
import org.jboss.osgi.framework.metadata.VersionRange;
@@ -74,6 +76,19 @@
return optional;
}
+ public boolean matchAttributes(ExportPackage exportPackage)
+ {
+ if (exportPackage == null)
+ throw new IllegalArgumentException("Null exportPackage");
+
+ boolean match = false;
+ Set<String> importAttributes = getAttributes();
+ Set<String> exportAttributes = exportPackage.getAttributes();
+ Set<String> mandatoryAttributes = exportPackage.getMandatory();
+
+ return match;
+ }
+
public ExportPackage getExporter()
{
return exporter;
Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractImportExportTest.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractImportExportTest.java 2009-11-19 15:27:17 UTC (rev 96581)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/AbstractImportExportTest.java 2009-11-19 15:59:11 UTC (rev 96582)
@@ -1231,12 +1231,12 @@
*/
@Test
- public void testAttributeImportPackage() throws Exception
+ public void testImportPackageAttribute() throws Exception
{
}
@Test
- public void testAttributeImportPackageFails() throws Exception
+ public void testImportPackageAttributeFails() throws Exception
{
}
}
\ No newline at end of file
Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverMetadataTest.java
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverMetadataTest.java 2009-11-19 15:27:17 UTC (rev 96581)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/java/org/jboss/test/osgi/resolver/ResolverMetadataTest.java 2009-11-19 15:59:11 UTC (rev 96582)
@@ -30,14 +30,16 @@
import static org.junit.Assert.assertTrue;
import java.util.List;
+import java.util.Set;
import org.jboss.osgi.framework.resolver.ExportPackage;
import org.jboss.osgi.framework.resolver.ImportPackage;
import org.jboss.osgi.framework.resolver.RequiredBundle;
+import org.jboss.osgi.framework.resolver.Resolver;
import org.jboss.osgi.framework.resolver.ResolverBundle;
-import org.jboss.osgi.framework.resolver.Resolver;
import org.jboss.test.osgi.classloader.support.a.A;
import org.jboss.virtual.VirtualFile;
+import org.junit.Ignore;
import org.junit.Test;
import org.osgi.framework.Bundle;
import org.osgi.framework.Version;
@@ -62,39 +64,39 @@
Resolver resolver = getTestResolver();
assertEquals(1, resolver.getBundles().size());
- ResolverBundle resolvableA = resolver.getBundle(bundleA.getSymbolicName(), null);
- assertNotNull("Resolvable not null", resolvableA);
+ ResolverBundle resBundleA = resolver.getBundle(bundleA.getSymbolicName(), null);
+ assertNotNull("Resolvable not null", resBundleA);
- resolvableA = resolver.getBundle(bundleA.getSymbolicName(), bundleA.getVersion());
- assertNotNull("Resolvable not null", resolvableA);
+ resBundleA = resolver.getBundle(bundleA.getSymbolicName(), bundleA.getVersion());
+ assertNotNull("Resolvable not null", resBundleA);
- resolvableA = resolver.getBundle(bundleA);
- assertNotNull("Resolvable not null", resolvableA);
+ resBundleA = resolver.getBundle(bundleA);
+ assertNotNull("Resolvable not null", resBundleA);
- assertNotNull(resolvableA.getBundle());
- assertEquals("simpleexport", resolvableA.getSymbolicName());
- assertEquals(Version.emptyVersion, resolvableA.getVersion());
+ assertNotNull(resBundleA.getBundle());
+ assertEquals("simpleexport", resBundleA.getSymbolicName());
+ assertEquals(Version.emptyVersion, resBundleA.getVersion());
- List<ExportPackage> exportPackages = resolvableA.getExportPackages();
+ List<ExportPackage> exportPackages = resBundleA.getExportPackages();
assertNotNull("ExportPackages not null", exportPackages);
assertEquals(1, exportPackages.size());
- ExportPackage exportPackage = resolvableA.getExportPackage("org.jboss.test.osgi.classloader.support.a");
+ ExportPackage exportPackage = resBundleA.getExportPackage("org.jboss.test.osgi.classloader.support.a");
assertNotNull("ExportPackage not null", exportPackage);
assertEquals("org.jboss.test.osgi.classloader.support.a", exportPackage.getName());
assertEquals(Version.emptyVersion, exportPackage.getVersion());
assertEquals(0, exportPackage.getUses().size());
- assertEquals(0, exportPackage.getMandatoryAttributes().size());
+ assertEquals(0, exportPackage.getMandatory().size());
assertNull("Null includes", exportPackage.getIncludes());
assertNull("Null excludes", exportPackage.getExcludes());
- List<ImportPackage> importPackages = resolvableA.getImportPackages();
+ List<ImportPackage> importPackages = resBundleA.getImportPackages();
assertNotNull("ImportPackages not null", importPackages);
assertEquals(0, importPackages.size());
- assertFalse("No sigleton", resolvableA.isSingleton());
- assertFalse("Not resolved", resolvableA.isResolved());
+ assertFalse("No sigleton", resBundleA.isSingleton());
+ assertFalse("Not resolved", resBundleA.isResolved());
}
finally
{
@@ -111,13 +113,13 @@
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resolvableA = getTestResolver().getBundle(bundleA);
+ ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
- List<ImportPackage> importPackages = resolvableA.getImportPackages();
+ List<ImportPackage> importPackages = resBundleA.getImportPackages();
assertNotNull("ImportPackages not null", importPackages);
assertEquals(1, importPackages.size());
- ImportPackage importPackage = resolvableA.getImportPackage("org.jboss.test.osgi.classloader.support.a");
+ ImportPackage importPackage = resBundleA.getImportPackage("org.jboss.test.osgi.classloader.support.a");
assertNotNull("ImportPackage not null", importPackage);
assertEquals("org.jboss.test.osgi.classloader.support.a", importPackage.getName());
@@ -140,8 +142,8 @@
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resolvableA = getTestResolver().getBundle(bundleA);
- assertTrue("Sigleton", resolvableA.isSingleton());
+ ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ assertTrue("Sigleton", resBundleA.isSingleton());
}
finally
{
@@ -158,8 +160,8 @@
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resolvableA = getTestResolver().getBundle(bundleA);
- List<RequiredBundle> requiredBundles = resolvableA.getRequiredBundles();
+ ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ List<RequiredBundle> requiredBundles = resBundleA.getRequiredBundles();
assertEquals("RequiredBundles not null", 1, requiredBundles.size());
RequiredBundle reqBundle = requiredBundles.get(0);
assertEquals("simpleexport", reqBundle.getSymbolicName());
@@ -181,8 +183,8 @@
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resolvableA = getTestResolver().getBundle(bundleA);
- List<RequiredBundle> requiredBundles = resolvableA.getRequiredBundles();
+ ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ List<RequiredBundle> requiredBundles = resBundleA.getRequiredBundles();
assertEquals("RequiredBundles not null", 1, requiredBundles.size());
RequiredBundle reqBundle = requiredBundles.get(0);
assertEquals("simpleexport", reqBundle.getSymbolicName());
@@ -204,8 +206,8 @@
Bundle bundleA = framework.installBundle(fileA);
try
{
- ResolverBundle resolvableA = getTestResolver().getBundle(bundleA);
- List<RequiredBundle> requiredBundles = resolvableA.getRequiredBundles();
+ ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ List<RequiredBundle> requiredBundles = resBundleA.getRequiredBundles();
assertEquals("RequiredBundles not null", 1, requiredBundles.size());
RequiredBundle reqBundle = requiredBundles.get(0);
assertEquals("simpleexport", reqBundle.getSymbolicName());
@@ -217,4 +219,62 @@
bundleA.uninstall();
}
}
+
+ @Ignore
+ public void testPackageAttribute() throws Exception
+ {
+ //Bundle-SymbolicName: packageexportattribute
+ //Export-Package: org.jboss.test.osgi.classloader.support.a;test=x
+ VirtualFile fileA = assembleBundle("bundleA", "/bundles/resolver/packageexportattribute");
+ Bundle bundleA = framework.installBundle(fileA);
+ try
+ {
+ ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ExportPackage exportPackage = resBundleA.getExportPackage("org.jboss.test.osgi.classloader.support.a");
+ Set<String> attributes = exportPackage.getAttributes();
+ assertTrue("Contains attr", attributes.contains("test"));
+ assertEquals("x", exportPackage.getAttribute("test"));
+
+ //Bundle-SymbolicName: simpleimport
+ //Import-Package: org.jboss.test.osgi.classloader.support.a
+ VirtualFile fileB = assembleBundle("bundleA", "/bundles/resolver/simpleimport");
+ Bundle bundleB = framework.installBundle(fileB);
+ try
+ {
+ ResolverBundle resBundleB = getTestResolver().getBundle(bundleB);
+ ImportPackage importPackage = resBundleB.getImportPackage("org.jboss.test.osgi.classloader.support.a");
+ }
+ finally
+ {
+ bundleB.uninstall();
+ }
+ }
+ finally
+ {
+ bundleA.uninstall();
+ }
+ }
+
+ @Ignore
+ public void testPackageAttributeMandatory() throws Exception
+ {
+ //Bundle-SymbolicName: packageexportattributemandatory
+ //Export-Package: org.jboss.test.osgi.classloader.support.a;test=x;mandatory:=test
+ VirtualFile fileA = assembleBundle("bundleA", "/bundles/resolver/packageexportattributemandatory");
+ Bundle bundleA = framework.installBundle(fileA);
+ try
+ {
+ ResolverBundle resBundleA = getTestResolver().getBundle(bundleA);
+ ExportPackage exportPackage = resBundleA.getExportPackage("org.jboss.test.osgi.classloader.support.a");
+ Set<String> attributes = exportPackage.getAttributes();
+ assertTrue("Contains test", attributes.contains("test"));
+ assertEquals("x", exportPackage.getAttribute("test"));
+ Set<String> mandatory = exportPackage.getMandatory();
+ assertTrue("Contains test", mandatory.contains("test"));
+ }
+ finally
+ {
+ bundleA.uninstall();
+ }
+ }
}
\ No newline at end of file
Added: projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattribute/META-INF/MANIFEST.MF
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattribute/META-INF/MANIFEST.MF (rev 0)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattribute/META-INF/MANIFEST.MF 2009-11-19 15:59:11 UTC (rev 96582)
@@ -0,0 +1,3 @@
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: packageexportattribute
+Export-Package: org.jboss.test.osgi.classloader.support.a;test=x
Added: projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattributemandatory/META-INF/MANIFEST.MF
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattributemandatory/META-INF/MANIFEST.MF (rev 0)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageexportattributemandatory/META-INF/MANIFEST.MF 2009-11-19 15:59:11 UTC (rev 96582)
@@ -0,0 +1,3 @@
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: packageexportattributemandatory
+Export-Package: org.jboss.test.osgi.classloader.support.a;test=x;mandatory:=test
Copied: projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageimportattribute (from rev 96553, projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/attributeimportpackageA)
Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageimportattribute/META-INF/MANIFEST.MF
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/attributeimportpackageA/META-INF/MANIFEST.MF 2009-11-19 07:09:26 UTC (rev 96553)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageimportattribute/META-INF/MANIFEST.MF 2009-11-19 15:59:11 UTC (rev 96582)
@@ -1,7 +1,3 @@
-Manifest-Version: 1.0
-Implementation-Title: JBoss OSGi tests
-Implementation-Version: test
-Implementation-Vendor: jboss.org
-Bundle-Name: BundleB
-Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleB
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: packageimportattribute
Import-Package: org.jboss.test.osgi.classloader.support.a;test=x
Copied: projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageimportattributefails (from rev 96553, projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/attributeimportpackagefails)
Modified: projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageimportattributefails/META-INF/MANIFEST.MF
===================================================================
--- projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/classloader/attributeimportpackagefails/META-INF/MANIFEST.MF 2009-11-19 07:09:26 UTC (rev 96553)
+++ projects/jboss-osgi/trunk/reactor/framework/src/test/resources/bundles/resolver/packageimportattributefails/META-INF/MANIFEST.MF 2009-11-19 15:59:11 UTC (rev 96582)
@@ -1,7 +1,3 @@
-Manifest-Version: 1.0
-Implementation-Title: JBoss OSGi tests
-Implementation-Version: test
-Implementation-Vendor: jboss.org
-Bundle-Name: BundleB
-Bundle-SymbolicName: org.jboss.test.osgi.classloader.bundleB
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: packageimportattributefails
Import-Package: org.jboss.test.osgi.classloader.support.a;test=y
More information about the jboss-cvs-commits
mailing list