You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ca...@apache.org on 2007/06/12 02:50:37 UTC
svn commit: r546338 - in /maven/sandbox/trunk/shared/maven-osgi: ./ src/
src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/
src/main/java/org/apache/maven/ src/main/java/org/apache/maven/shared/
src/main/java/org/apache/maven/shared/...
Author: carlos
Date: Mon Jun 11 17:50:35 2007
New Revision: 546338
URL: http://svn.apache.org/viewvc?view=rev&rev=546338
Log:
First version of a Maven-OSGi conversion library
Added:
maven/sandbox/trunk/shared/maven-osgi/ (with props)
maven/sandbox/trunk/shared/maven-osgi/pom.xml (with props)
maven/sandbox/trunk/shared/maven-osgi/src/
maven/sandbox/trunk/shared/maven-osgi/src/main/
maven/sandbox/trunk/shared/maven-osgi/src/main/java/
maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/
maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/
maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/
maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/
maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/
maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/ManifestReadingException.java (with props)
maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/Maven2OsgiConverter.java (with props)
maven/sandbox/trunk/shared/maven-osgi/src/main/resources/
maven/sandbox/trunk/shared/maven-osgi/src/test/
maven/sandbox/trunk/shared/maven-osgi/src/test/java/
maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/
maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/
maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/maven/
maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/maven/shared/
maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/maven/shared/osgi/
maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiTest.java (with props)
maven/sandbox/trunk/shared/maven-osgi/src/test/resources/
maven/sandbox/trunk/shared/maven-osgi/src/test/resources/commons-logging-1.1.jar (with props)
Propchange: maven/sandbox/trunk/shared/maven-osgi/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Mon Jun 11 17:50:35 2007
@@ -0,0 +1,2 @@
+.classpath
+.project
Added: maven/sandbox/trunk/shared/maven-osgi/pom.xml
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-osgi/pom.xml?view=auto&rev=546338
==============================================================================
--- maven/sandbox/trunk/shared/maven-osgi/pom.xml (added)
+++ maven/sandbox/trunk/shared/maven-osgi/pom.xml Mon Jun 11 17:50:35 2007
@@ -0,0 +1,52 @@
+<!--
+ 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">
+ <parent>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-shared-components</artifactId>
+ <version>7</version>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>maven-osgi</artifactId>
+ <version>0.1.0-SNAPSHOT</version>
+ <name>Maven OSGi integration</name>
+ <description>Library for Maven-OSGi integration</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>2.0.6</version>
+ </dependency>
+ <dependency>
+ <groupId>biz.aQute</groupId>
+ <artifactId>bndlib</artifactId>
+ <version>0.0.145</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared</groupId>
+ <artifactId>maven-plugin-testing-harness</artifactId>
+ <version>1.0</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
Propchange: maven/sandbox/trunk/shared/maven-osgi/pom.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/shared/maven-osgi/pom.xml
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/ManifestReadingException.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/ManifestReadingException.java?view=auto&rev=546338
==============================================================================
--- maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/ManifestReadingException.java (added)
+++ maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/ManifestReadingException.java Mon Jun 11 17:50:35 2007
@@ -0,0 +1,32 @@
+package org.apache.maven.shared.osgi;
+
+/**
+ * Encapsulates an IOException to make it runtime
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class ManifestReadingException
+ extends RuntimeException
+{
+
+ public ManifestReadingException()
+ {
+ super();
+ }
+
+ public ManifestReadingException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public ManifestReadingException( String message )
+ {
+ super( message );
+ }
+
+ public ManifestReadingException( Throwable cause )
+ {
+ super( cause );
+ }
+}
Propchange: maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/ManifestReadingException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/ManifestReadingException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/Maven2OsgiConverter.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/Maven2OsgiConverter.java?view=auto&rev=546338
==============================================================================
--- maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/Maven2OsgiConverter.java (added)
+++ maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/Maven2OsgiConverter.java Mon Jun 11 17:50:35 2007
@@ -0,0 +1,278 @@
+/*
+ * 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.
+ */
+package org.apache.maven.shared.osgi;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.jar.JarFile;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.zip.ZipEntry;
+
+import org.apache.maven.artifact.Artifact;
+
+import aQute.lib.osgi.Analyzer;
+
+/**
+ * Converter from Maven groupId,artifactId and versions to OSGi Bundle-SymbolicName and version
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class Maven2OsgiConverter
+{
+
+ /** Bundle-Version must match this pattern */
+ private static final Pattern OSGI_VERSION_PATTERN = Pattern
+ .compile( "[0-9]+(\\.[0-9]+(\\.[0-9]+(\\.[0-9A-Za-z_-]+)?)?)?" );
+
+ /** pattern used to change - to . */
+ // private static final Pattern P_VERSION = Pattern.compile("([0-9]+(\\.[0-9])*)-(.*)");
+ /** pattern that matches strings that contain only numbers */
+ private static final Pattern ONLY_NUMBERS = Pattern.compile( "[0-9]+" );
+
+ private static final String FILE_SEPARATOR = System.getProperty( "file.separator" );
+
+ private String getBundleSymbolicName( String groupId, String artifactId )
+ {
+ return groupId + "." + artifactId;
+ }
+
+ /**
+ * Get the symbolic name as groupId + "." + artifactId, with the following exceptions
+ * <ul>
+ * <li>if artifact.getFile is not null and the jar contains a OSGi Manifest with
+ * Bundle-SymbolicName property then that value is returned</li>
+ * <li>if groupId has only one section (no dots) and artifact.getFile is not null then the
+ * first package name with classes is returned. eg. commons-logging:commons-logging ->
+ * org.apache.commons.logging</li>
+ * <li>if artifactId is equal to last section of groupId then groupId is returned. eg.
+ * org.apache.maven:maven -> org.apache.maven</li>
+ * <li>if artifactId starts with last section of groupId that portion is removed. eg.
+ * org.apache.maven:maven-core -> org.apache.maven.core</li>
+ * </ul>
+ *
+ * @param artifact
+ * @return
+ */
+ public String getBundleSymbolicName( Artifact artifact )
+ {
+ if ( ( artifact.getFile() != null ) && artifact.getFile().exists() )
+ {
+ Analyzer analyzer = new Analyzer();
+
+ try
+ {
+ JarFile jar = new JarFile( artifact.getFile(), false );
+
+ if ( jar.getManifest() != null )
+ {
+ String symbolicNameAttribute = jar.getManifest().getMainAttributes()
+ .getValue( Analyzer.BUNDLE_SYMBOLICNAME );
+ Map bundleSymbolicNameHeader = analyzer.parseHeader( symbolicNameAttribute );
+
+ Iterator it = bundleSymbolicNameHeader.keySet().iterator();
+ if ( it.hasNext() )
+ {
+ return (String) it.next();
+ }
+ }
+ }
+ catch ( IOException e )
+ {
+ throw new ManifestReadingException( "Error reading manifest in jar "
+ + artifact.getFile().getAbsolutePath(), e );
+ }
+ }
+
+ int i = artifact.getGroupId().lastIndexOf( '.' );
+ if ( ( i < 0 ) && ( artifact.getFile() != null ) && artifact.getFile().exists() )
+ {
+ return getGroupIdFromPackage( artifact.getFile() );
+ }
+ String lastSection = artifact.getGroupId().substring( ++i );
+ if ( artifact.getArtifactId().equals( lastSection ) )
+ {
+ return artifact.getGroupId();
+ }
+ if ( artifact.getArtifactId().startsWith( lastSection ) )
+ {
+ String artifactId = artifact.getArtifactId().substring( lastSection.length() + 1 );
+ if ( Character.isLetterOrDigit( artifactId.charAt( 0 ) ) )
+ {
+ return getBundleSymbolicName( artifact.getGroupId(), artifactId );
+ }
+ else
+ {
+ return getBundleSymbolicName( artifact.getGroupId(), artifactId.substring( 1 ) );
+ }
+ }
+ return getBundleSymbolicName( artifact.getGroupId(), artifact.getArtifactId() );
+ }
+
+ private String getGroupIdFromPackage( File artifactFile )
+ {
+ try
+ {
+ String groupId = null;
+ JarFile jar = new JarFile( artifactFile, false );
+ Enumeration entries = jar.entries();
+ while ( entries.hasMoreElements() )
+ {
+ ZipEntry entry = (ZipEntry) entries.nextElement();
+ if ( entry.getName().endsWith( ".class" ) )
+ {
+ File f = new File( entry.getName() );
+ if ( ( groupId == null ) || ( f.getParent().length() < groupId.length() ) )
+ {
+ groupId = f.getParent();
+ }
+ }
+ }
+
+ return groupId.replaceAll( "\\" + FILE_SEPARATOR, "." );
+ }
+ catch ( IOException e )
+ {
+ throw new RuntimeException( e );
+ }
+ }
+
+ public String getBundleFileName( Artifact artifact )
+ {
+ return getBundleSymbolicName( artifact ) + "_" + getVersion( artifact.getVersion() ) + ".jar";
+ }
+
+ /**
+ * Convert a Maven version into an OSGi compliant version
+ *
+ * @param artifact Maven artifact
+ * @return the OSGi version
+ */
+ public String getVersion( Artifact artifact )
+ {
+ return getVersion( artifact.getVersion() );
+ }
+
+ /**
+ * Convert a Maven version into an OSGi compliant version
+ *
+ * @param version Maven version
+ * @return the OSGi version
+ */
+ public String getVersion( String version )
+ {
+ String osgiVersion;
+
+ // Matcher m = P_VERSION.matcher(version);
+ // if (m.matches()) {
+ // osgiVersion = m.group(1) + "." + m.group(3);
+ // }
+
+ /* TODO need a regexp guru here */
+
+ Matcher m;
+
+ /* if it's already OSGi compliant don't touch it */
+ m = OSGI_VERSION_PATTERN.matcher( version );
+ if ( m.matches() )
+ {
+ return version;
+ }
+
+ osgiVersion = version;
+
+ /* check for dated snapshot versions with only major or major and minor */
+ Pattern DATED_SNAPSHOT = Pattern.compile( "([0-9])(\\.([0-9]))?(\\.([0-9]))?\\-([0-9]{8}\\.[0-9]{6}\\-[0-9]*)" );
+ m = DATED_SNAPSHOT.matcher( osgiVersion );
+ if ( m.matches() )
+ {
+ String major = m.group( 1 );
+ String minor = ( m.group( 3 ) != null ) ? m.group( 3 ) : "0";
+ String service = ( m.group( 5 ) != null ) ? m.group( 5 ) : "0";
+ String qualifier = m.group( 6 ).replaceAll( "-", "_" ).replaceAll( "\\.", "_" );
+ osgiVersion = major + "." + minor + "." + service + "." + qualifier;
+ }
+
+ /* else transform first - to . and others to _ */
+ osgiVersion = osgiVersion.replaceFirst( "-", "\\." );
+ osgiVersion = osgiVersion.replaceAll( "-", "_" );
+ m = OSGI_VERSION_PATTERN.matcher( osgiVersion );
+ if ( m.matches() )
+ {
+ return osgiVersion;
+ }
+
+ /* remove dots in the middle of the qualifier */
+ Pattern DOTS_IN_QUALIFIER = Pattern.compile( "([0-9])(\\.[0-9])?\\.([0-9A-Za-z_-]+)\\.([0-9A-Za-z_-]+)" );
+ m = DOTS_IN_QUALIFIER.matcher( osgiVersion );
+ if ( m.matches() )
+ {
+ String s1 = m.group( 1 );
+ String s2 = m.group( 2 );
+ String s3 = m.group( 3 );
+ String s4 = m.group( 4 );
+
+ Matcher qualifierMatcher = ONLY_NUMBERS.matcher( s3 );
+ /*
+ * if last portion before dot is only numbers then it's not in the middle of the
+ * qualifier
+ */
+ if ( !qualifierMatcher.matches() )
+ {
+ osgiVersion = s1 + s2 + "." + s3 + "_" + s4;
+ }
+ }
+
+ /* convert 1.string into 1.0.0.string and 1.2.string into 1.2.0.string */
+ Pattern NEED_TO_FILL_ZEROS = Pattern.compile( "([0-9])(\\.([0-9]))?\\.([0-9A-Za-z_-]+)" );
+ m = NEED_TO_FILL_ZEROS.matcher( osgiVersion );
+ if ( m.matches() )
+ {
+ String major = m.group( 1 );
+ String minor = ( m.group( 3 ) != null ) ? m.group( 3 ) : "0";
+ String service = "0";
+ String qualifier = m.group( 4 );
+
+ Matcher qualifierMatcher = ONLY_NUMBERS.matcher( qualifier );
+ /* if last portion is only numbers then it's not a qualifier */
+ if ( !qualifierMatcher.matches() )
+ {
+ osgiVersion = major + "." + minor + "." + service + "." + qualifier;
+ }
+ }
+
+ m = OSGI_VERSION_PATTERN.matcher( osgiVersion );
+ /* if still its not OSGi version then add everything as qualifier */
+ if ( !m.matches() )
+ {
+ String major = "0";
+ String minor = "0";
+ String service = "0";
+ String qualifier = osgiVersion.replaceAll( "\\.", "_" );
+ osgiVersion = major + "." + minor + "." + service + "." + qualifier;
+ }
+
+ return osgiVersion;
+ }
+
+}
Propchange: maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/Maven2OsgiConverter.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/shared/maven-osgi/src/main/java/org/apache/maven/shared/osgi/Maven2OsgiConverter.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiTest.java
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiTest.java?view=auto&rev=546338
==============================================================================
--- maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiTest.java (added)
+++ maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiTest.java Mon Jun 11 17:50:35 2007
@@ -0,0 +1,121 @@
+/*
+ * 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.
+ */
+package org.apache.maven.shared.osgi;
+
+import java.io.File;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.plugin.testing.stubs.ArtifactStub;
+
+/**
+ * Test for {@link Maven2OsgiConverter}
+ *
+ * @author <a href="mailto:carlos@apache.org">Carlos Sanchez</a>
+ * @version $Id$
+ */
+public class Maven2OsgiTest
+ extends TestCase
+{
+
+ private Maven2OsgiConverter maven2Osgi = new Maven2OsgiConverter();
+
+ public void testGetBundleSymbolicName()
+ {
+ ArtifactStub artifact = getTestArtifact();
+ String s = maven2Osgi.getBundleSymbolicName( artifact );
+ assertEquals( "org.apache.commons.logging", s );
+
+ artifact.setGroupId( "org.apache.commons" );
+ s = maven2Osgi.getBundleSymbolicName( artifact );
+ assertEquals( "org.apache.commons.logging", s );
+
+ artifact.setGroupId( "org.apache.commons.commons-logging" );
+ s = maven2Osgi.getBundleSymbolicName( artifact );
+ assertEquals( "org.apache.commons.commons-logging", s );
+ }
+
+ public void testGetBundleFileName()
+ {
+ ArtifactStub artifact = getTestArtifact();
+ String s = maven2Osgi.getBundleFileName( artifact );
+ assertEquals( "org.apache.commons.logging_1.1.jar", s );
+ }
+
+ public void testGetVersion()
+ {
+ ArtifactStub artifact = getTestArtifact();
+ String s = maven2Osgi.getVersion( artifact );
+ assertEquals( "1.1", s );
+ }
+
+ public void testConvertVersionToOsgi()
+ {
+ String osgiVersion;
+
+ osgiVersion = maven2Osgi.getVersion( "2.1.0-SNAPSHOT" );
+ assertEquals( "2.1.0.SNAPSHOT", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "2.1-SNAPSHOT" );
+ assertEquals( "2.1.0.SNAPSHOT", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "2-SNAPSHOT" );
+ assertEquals( "2.0.0.SNAPSHOT", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "2" );
+ assertEquals( "2", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "2.1" );
+ assertEquals( "2.1", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "2.1.3" );
+ assertEquals( "2.1.3", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "2.1.3.4" );
+ assertEquals( "2.1.3.4", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "4aug2000r7-dev" );
+ assertEquals( "0.0.0.4aug2000r7_dev", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "1.1-alpha-2" );
+ assertEquals( "1.1.0.alpha_2", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "1.0-alpha-16-20070122.203121-13" );
+ assertEquals( "1.0.0.alpha_16_20070122_203121_13", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "1.0-20070119.021432-1" );
+ assertEquals( "1.0.0.20070119_021432_1", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "1-20070119.021432-1" );
+ assertEquals( "1.0.0.20070119_021432_1", osgiVersion );
+
+ osgiVersion = maven2Osgi.getVersion( "1.4.1-20070217.082013-7" );
+ assertEquals( "1.4.1.20070217_082013_7", osgiVersion );
+ }
+
+ private ArtifactStub getTestArtifact()
+ {
+ ArtifactStub a = new ArtifactStub();
+ a.setGroupId( "commons-logging" );
+ a.setArtifactId( "commons-logging" );
+ a.setVersion( "1.1" );
+ a.setFile( new File( "src/test/resources", "commons-logging-1.1.jar" ) );
+ return a;
+ }
+}
Propchange: maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/sandbox/trunk/shared/maven-osgi/src/test/java/org/apache/maven/shared/osgi/Maven2OsgiTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/sandbox/trunk/shared/maven-osgi/src/test/resources/commons-logging-1.1.jar
URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-osgi/src/test/resources/commons-logging-1.1.jar?view=auto&rev=546338
==============================================================================
Binary file - no diff available.
Propchange: maven/sandbox/trunk/shared/maven-osgi/src/test/resources/commons-logging-1.1.jar
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream