You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/03/16 23:45:41 UTC
svn commit: r519169 [1/2] - in
/maven/archiva/branches/archiva-jpox-database-refactor: ./
archiva-common/src/main/java/org/apache/maven/archiva/common/utils/
archiva-common/src/test/java/org/apache/maven/archiva/common/utils/
archiva-consumer-api/src/m...
Author: joakime
Date: Fri Mar 16 15:45:38 2007
New Revision: 519169
URL: http://svn.apache.org/viewvc?view=rev&rev=519169
Log:
More Work Against Scanner / Layout / Artifact / Database
Added:
maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/DateUtil.java (with props)
maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/DateUtilTest.java (with props)
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayout.java
- copied, changed from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/BidirectionalRepositoryLayout.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayout.java
- copied, changed from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultBidirectionalRepositoryLayout.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LayoutException.java (with props)
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayout.java
- copied, changed from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/LegacyBidirectionalRepositoryLayout.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java (with props)
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/version/
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/version/VersionUtil.java (with props)
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java
- copied, changed from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/AbstractBidirectionalRepositoryLayoutTestCase.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayoutTest.java
- copied, changed from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultBidirectionalRepositoryLayoutTest.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayoutTest.java
- copied, changed from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/LegacyBidirectionalRepositoryLayoutTest.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java (with props)
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/CentralScannerTiming.java (with props)
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerTest.java (with props)
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/ScanConsumer.java (with props)
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/resources/log4j.xml (with props)
Removed:
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/Consumer.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/ConsumerException.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/ConsumerFactory.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-discoverer/
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/BidirectionalRepositoryLayout.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultBidirectionalRepositoryLayout.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/LegacyBidirectionalRepositoryLayout.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/AbstractBidirectionalRepositoryLayoutTestCase.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultBidirectionalRepositoryLayoutTest.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/LegacyBidirectionalRepositoryLayoutTest.java
Modified:
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractConsumer.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericArtifactConsumer.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericModelConsumer.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericRepositoryMetadataConsumer.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/executors/DataRefreshExecutor.java
maven/archiva/branches/archiva-jpox-database-refactor/archiva-model/pom.xml
maven/archiva/branches/archiva-jpox-database-refactor/archiva-model/src/main/mdo/archiva.xml
maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/ArchivaArtifact.java
maven/archiva/branches/archiva-jpox-database-refactor/pom.xml
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/DateUtil.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/DateUtil.java?view=auto&rev=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/DateUtil.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/DateUtil.java Fri Mar 16 15:45:38 2007
@@ -0,0 +1,130 @@
+package org.apache.maven.archiva.common.utils;
+
+/*
+ * 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.
+ */
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+/**
+ * DateUtil - some (not-so) common date utility methods.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class DateUtil
+{
+ public static String getDuration( long duration )
+ {
+ return getDuration( new Date( 0 ), new Date( duration ) );
+ }
+
+ public static String getDuration( long ms1, long ms2 )
+ {
+ return getDuration( new Date( ms1 ), new Date( ms2 ) );
+ }
+
+ public static String getDuration( Date d1, Date d2 )
+ {
+ Calendar cal1 = new GregorianCalendar();
+ cal1.setTime( d1 );
+
+ Calendar cal2 = new GregorianCalendar();
+ cal2.setTime( d2 );
+
+ return getDuration( cal1, cal2 );
+ }
+
+ public static String getDuration( Calendar cal1, Calendar cal2 )
+ {
+ int year1 = cal1.get( Calendar.YEAR );
+ int day1 = cal1.get( Calendar.DAY_OF_YEAR );
+ int hour1 = cal1.get( Calendar.HOUR_OF_DAY );
+ int min1 = cal1.get( Calendar.MINUTE );
+ int sec1 = cal1.get( Calendar.SECOND );
+ int ms1 = cal1.get( Calendar.MILLISECOND );
+
+ int year2 = cal2.get( Calendar.YEAR );
+ int day2 = cal2.get( Calendar.DAY_OF_YEAR );
+ int hour2 = cal2.get( Calendar.HOUR_OF_DAY );
+ int min2 = cal2.get( Calendar.MINUTE );
+ int sec2 = cal2.get( Calendar.SECOND );
+ int ms2 = cal2.get( Calendar.MILLISECOND );
+
+ int leftDays = ( day1 - day2 ) + ( year1 - year2 ) * 365;
+ int leftHours = hour2 - hour1;
+ int leftMins = min2 - min1;
+ int leftSeconds = sec2 - sec1;
+ int leftMilliSeconds = ms2 - ms1;
+
+ if ( leftMilliSeconds < 0 )
+ {
+ leftMilliSeconds += 1000;
+ --leftSeconds;
+ }
+
+ if ( leftSeconds < 0 )
+ {
+ leftSeconds += 60;
+ --leftMins;
+ }
+
+ if ( leftMins < 0 )
+ {
+ leftMins += 60;
+ --leftHours;
+ }
+
+ if ( leftHours < 0 )
+ {
+ leftHours += 24;
+ --leftDays;
+ }
+
+ StringBuffer interval = new StringBuffer();
+
+ appendInterval( interval, leftDays, "Day" );
+ appendInterval( interval, leftHours, "Hour" );
+ appendInterval( interval, leftMins, "Minute" );
+ appendInterval( interval, leftSeconds, "Second" );
+ appendInterval( interval, leftMilliSeconds, "Millisecond" );
+
+ return interval.toString();
+ }
+
+ private static void appendInterval( StringBuffer interval, int count, String type )
+ {
+ if ( count > 0 )
+ {
+ if ( interval.length() > 0 )
+ {
+ interval.append( " " );
+ }
+
+ interval.append( count );
+ interval.append( " " ).append( type );
+ if ( count > 1 )
+ {
+ interval.append( "s" );
+ }
+ }
+ }
+
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/DateUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/DateUtil.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/main/java/org/apache/maven/archiva/common/utils/DateUtil.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/DateUtilTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/DateUtilTest.java?view=auto&rev=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/DateUtilTest.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/DateUtilTest.java Fri Mar 16 15:45:38 2007
@@ -0,0 +1,69 @@
+package org.apache.maven.archiva.common.utils;
+
+/*
+ * 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.
+ */
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import junit.framework.TestCase;
+
+/**
+ * DateUtilTest
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class DateUtilTest extends TestCase
+{
+ private void assertDuration( String expectedDuration, String startTimestamp, String endTimestamp )
+ throws ParseException
+ {
+ SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss SSS" );
+ Date startDate = sdf.parse( startTimestamp );
+ Date endDate = sdf.parse( endTimestamp );
+
+// System.out.println( "Date: " + endTimestamp + " - " + startTimestamp + " = "
+// + ( endDate.getTime() - startDate.getTime() ) + " ms" );
+
+ assertEquals( expectedDuration, DateUtil.getDuration( startDate, endDate ) );
+ }
+
+ public void testGetDurationDifference() throws ParseException
+ {
+ assertDuration( "2 Seconds", "2006-08-22 13:00:02 0000",
+ "2006-08-22 13:00:04 0000" );
+
+ assertDuration( "12 Minutes 12 Seconds 234 Milliseconds", "2006-08-22 13:12:02 0000",
+ "2006-08-22 13:24:14 0234" );
+
+ assertDuration( "12 Minutes 501 Milliseconds", "2006-08-22 13:12:01 0500",
+ "2006-08-22 13:24:02 0001" );
+ }
+
+ public void testGetDurationDirect() throws ParseException
+ {
+ assertEquals( "2 Seconds", DateUtil.getDuration( 2000 ) );
+
+ assertEquals( "12 Minutes 12 Seconds 234 Milliseconds", DateUtil.getDuration( 732234 ) );
+
+ assertEquals( "12 Minutes 501 Milliseconds", DateUtil.getDuration( 720501 ) );
+ }
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/DateUtilTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/DateUtilTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-common/src/test/java/org/apache/maven/archiva/common/utils/DateUtilTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractConsumer.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractConsumer.java?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractConsumer.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/AbstractConsumer.java Fri Mar 16 15:45:38 2007
@@ -19,7 +19,8 @@
* under the License.
*/
-import org.apache.maven.archiva.model.ArchivaRepository;
+import org.apache.maven.archiva.repository.ArchivaRepository;
+import org.apache.maven.archiva.repository.consumer.Consumer;
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.codehaus.plexus.logging.AbstractLogEnabled;
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericArtifactConsumer.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericArtifactConsumer.java?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericArtifactConsumer.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericArtifactConsumer.java Fri Mar 16 15:45:38 2007
@@ -24,7 +24,9 @@
import org.apache.maven.archiva.common.artifact.builder.LayoutArtifactBuilder;
import org.apache.maven.archiva.common.artifact.builder.LegacyLayoutArtifactBuilder;
import org.apache.maven.archiva.common.utils.BaseFile;
-import org.apache.maven.archiva.model.ArchivaRepository;
+import org.apache.maven.archiva.repository.ArchivaRepository;
+import org.apache.maven.archiva.repository.consumer.Consumer;
+import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericModelConsumer.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericModelConsumer.java?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericModelConsumer.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericModelConsumer.java Fri Mar 16 15:45:38 2007
@@ -20,6 +20,8 @@
*/
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.repository.consumer.Consumer;
+import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.codehaus.plexus.util.IOUtil;
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericRepositoryMetadataConsumer.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericRepositoryMetadataConsumer.java?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericRepositoryMetadataConsumer.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/GenericRepositoryMetadataConsumer.java Fri Mar 16 15:45:38 2007
@@ -21,6 +21,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.repository.consumer.Consumer;
+import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractConsumerTestCase.java Fri Mar 16 15:45:38 2007
@@ -19,7 +19,7 @@
* under the License.
*/
-import org.apache.maven.archiva.model.ArchivaRepository;
+import org.apache.maven.archiva.repository.ArchivaRepository;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.util.FileUtils;
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/AbstractGenericConsumerTestCase.java Fri Mar 16 15:45:38 2007
@@ -1,5 +1,7 @@
package org.apache.maven.archiva.consumers;
+import org.apache.maven.archiva.repository.consumer.ConsumerFactory;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/FileProblemsTracker.java Fri Mar 16 15:45:38 2007
@@ -20,7 +20,7 @@
*/
import org.apache.maven.archiva.common.utils.BaseFile;
-import org.apache.maven.archiva.consumers.ConsumerException;
+import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.codehaus.plexus.util.StringUtils;
import java.util.ArrayList;
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-consumer-api/src/test/java/org/apache/maven/archiva/consumers/GenericArtifactConsumerTest.java Fri Mar 16 15:45:38 2007
@@ -21,7 +21,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.common.utils.BaseFile;
-import org.apache.maven.archiva.model.ArchivaRepository;
+import org.apache.maven.archiva.repository.ArchivaRepository;
+import org.apache.maven.archiva.repository.consumer.ConsumerException;
import org.apache.maven.artifact.Artifact;
import java.util.ArrayList;
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/executors/DataRefreshExecutor.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/executors/DataRefreshExecutor.java?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/executors/DataRefreshExecutor.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-core/src/main/java/org/apache/maven/archiva/scheduler/executors/DataRefreshExecutor.java Fri Mar 16 15:45:38 2007
@@ -23,12 +23,12 @@
import org.apache.maven.archiva.configuration.Configuration;
import org.apache.maven.archiva.configuration.ConfiguredRepositoryFactory;
import org.apache.maven.archiva.configuration.RepositoryConfiguration;
-import org.apache.maven.archiva.consumers.Consumer;
-import org.apache.maven.archiva.consumers.ConsumerException;
-import org.apache.maven.archiva.consumers.ConsumerFactory;
import org.apache.maven.archiva.discoverer.Discoverer;
import org.apache.maven.archiva.discoverer.DiscovererException;
import org.apache.maven.archiva.discoverer.DiscovererStatistics;
+import org.apache.maven.archiva.repository.consumer.Consumer;
+import org.apache.maven.archiva.repository.consumer.ConsumerException;
+import org.apache.maven.archiva.repository.consumer.ConsumerFactory;
import org.apache.maven.archiva.scheduler.task.DataRefreshTask;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.codehaus.plexus.logging.AbstractLogEnabled;
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-model/pom.xml
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-model/pom.xml?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-model/pom.xml (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-model/pom.xml Fri Mar 16 15:45:38 2007
@@ -38,6 +38,11 @@
<artifactId>plexus-utils</artifactId>
</dependency>
<dependency>
+ <groupId>javax.jdo</groupId>
+ <artifactId>jdo2-api</artifactId>
+ <version>2.0</version>
+ </dependency>
+ <dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-container-default</artifactId>
</dependency>
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-model/src/main/mdo/archiva.xml
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-model/src/main/mdo/archiva.xml?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-model/src/main/mdo/archiva.xml (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-model/src/main/mdo/archiva.xml Fri Mar 16 15:45:38 2007
@@ -169,6 +169,13 @@
<codeSegment>
<version>1.0.0+</version>
<code>
+ public RepositoryContent( String groupId, String artifactId, String version )
+ {
+ this.setGroupId( groupId );
+ this.setArtifactId( artifactId );
+ this.setVersion( version );
+ }
+
public RepositoryContent( String repositoryId, String groupId, String artifactId, String version )
{
this.setRepositoryId( repositoryId );
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/ArchivaArtifact.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/ArchivaArtifact.java?view=diff&rev=519169&r1=519168&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/ArchivaArtifact.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/ArchivaArtifact.java Fri Mar 16 15:45:38 2007
@@ -21,11 +21,9 @@
import org.apache.maven.archiva.model.ArchivaArtifactModel;
import org.apache.maven.archiva.model.RepositoryContent;
+import org.apache.maven.archiva.repository.version.VersionUtil;
import org.codehaus.plexus.util.StringUtils;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
/**
* ArchivaArtifact - Mutable artifact object.
*
@@ -34,16 +32,17 @@
*/
public class ArchivaArtifact
{
- private static final String SNAPSHOT_VERSION = "SNAPSHOT";
-
- private static final Pattern VERSION_FILE_PATTERN = Pattern.compile( "^(.*)-([0-9]{8}\\.[0-9]{6})-([0-9]+)$" );
-
private ArchivaArtifactModel model;
-
+
private String baseVersion;
-
+
private boolean snapshot = false;
-
+
+ public ArchivaArtifact( String groupId, String artifactId, String version, String classifier, String type )
+ {
+ this( null, groupId, artifactId, version, classifier, type );
+ }
+
public ArchivaArtifact( ArchivaRepository repository, String groupId, String artifactId, String version,
String classifier, String type )
{
@@ -69,22 +68,19 @@
model = new ArchivaArtifactModel();
- model.setContentKey( new RepositoryContent( repository.getModel(), groupId, artifactId, version ) );
- model.setClassifier( StringUtils.defaultString( classifier ) );
- model.setType( type );
-
- // Determine Snapshot Base Version.
- Matcher m = VERSION_FILE_PATTERN.matcher( version );
- if ( m.matches() )
+ if( repository == null )
{
- this.baseVersion = m.group( 1 ) + "-" + SNAPSHOT_VERSION ;
- snapshot = true;
+ model.setContentKey( new RepositoryContent( groupId, artifactId, version ) );
}
else
{
- this.baseVersion = version;
- snapshot = version.endsWith( SNAPSHOT_VERSION );
+ model.setContentKey( new RepositoryContent( repository.getModel(), groupId, artifactId, version ) );
}
+ model.setClassifier( StringUtils.defaultString( classifier ) );
+ model.setType( type );
+
+ this.snapshot = VersionUtil.isSnapshot( version );
+ this.baseVersion = VersionUtil.getBaseVersion( version );
}
public String getGroupId()
@@ -106,12 +102,12 @@
{
return baseVersion;
}
-
+
public boolean isSnapshot()
{
return snapshot;
}
-
+
public String getClassifier()
{
return model.getClassifier();
Copied: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayout.java (from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/BidirectionalRepositoryLayout.java)
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayout.java?view=diff&rev=519169&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/BidirectionalRepositoryLayout.java&r1=518797&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayout.java&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/BidirectionalRepositoryLayout.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayout.java Fri Mar 16 15:45:38 2007
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.repository.content;
+package org.apache.maven.archiva.repository.layout;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -50,6 +50,7 @@
*
* @param path the path relative to the repository base dir for the artifact.
* @return the ArchivaArtifact representing the path. (or null if path cannot be converted to an ArchivaArtifact)
+ * @throws LayoutException if there was a problem converting the path to an artifact.
*/
- ArchivaArtifact toArtifact( String path );
+ public ArchivaArtifact toArtifact( String path ) throws LayoutException;
}
Copied: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayout.java (from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultBidirectionalRepositoryLayout.java)
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayout.java?view=diff&rev=519169&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultBidirectionalRepositoryLayout.java&r1=518797&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayout.java&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/DefaultBidirectionalRepositoryLayout.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayout.java Fri Mar 16 15:45:38 2007
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.repository.content;
+package org.apache.maven.archiva.repository.layout;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,10 @@
* under the License.
*/
+import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.repository.content.ArtifactExtensionMapping;
+import org.apache.maven.archiva.repository.content.DefaultArtifactExtensionMapping;
/**
* DefaultBidirectionalRepositoryLayout - the layout mechanism for use by Maven 2.x repositories.
@@ -27,19 +30,19 @@
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*
- * @plexus.component role="org.apache.maven.archiva.repository.content.BidirectionalRepositoryLayout"
- * role-hint="default"
+ * @plexus.component role-hint="default"
*/
-public class DefaultBidirectionalRepositoryLayout implements BidirectionalRepositoryLayout
+public class DefaultBidirectionalRepositoryLayout
+ implements BidirectionalRepositoryLayout
{
private static final char PATH_SEPARATOR = '/';
private static final char GROUP_SEPARATOR = '.';
private static final char ARTIFACT_SEPARATOR = '-';
-
+
private ArtifactExtensionMapping extensionMapper = new DefaultArtifactExtensionMapping();
-
+
public String getId()
{
return "default";
@@ -63,16 +66,64 @@
return path.toString();
}
-
+
private String formatAsDirectory( String directory )
{
return directory.replace( GROUP_SEPARATOR, PATH_SEPARATOR );
}
- public ArchivaArtifact toArtifact( String path )
+ public ArchivaArtifact toArtifact( String path ) throws LayoutException
{
+ String normalizedPath = StringUtils.replace( path, "\\", "/" );
+
+ String pathParts[] = StringUtils.split( normalizedPath, '/' );
+
+ /* Minimum parts.
+ *
+ * path = "commons-lang/commons-lang/2.1/commons-lang-2.1.jar"
+ * path[0] = "commons-lang"; // The Group ID
+ * path[1] = "commons-lang"; // The Artifact ID
+ * path[2] = "2.1"; // The Version
+ * path[3] = "commons-lang-2.1.jar" // The filename.
+ */
+
+ if ( pathParts.length < 4 )
+ {
+ // Illegal Path Parts Length.
+ throw new LayoutException( "Not enough parts to the path [" + path
+ + "] to construct an ArchivaArtifact from. (Requires at least 4 parts)" );
+ }
+
+ // Maven 2.x path.
+ int partCount = pathParts.length;
+
+ // Last part is the filename
+ String filename = pathParts[partCount - 1];
+
+ // Second to last is the baseVersion (the directory version)
+ // (Don't need it) String baseVersion = pathParts[partCount - 2];
+
+ // Third to last is the artifact Id.
+ String artifactId = pathParts[partCount - 3];
+
+ // Remaining pieces are the groupId.
+ String groupId = "";
+ for ( int i = 0; i <= partCount - 4; i++ )
+ {
+ if ( groupId.length() > 0 )
+ {
+ groupId += ".";
+ }
+ groupId += pathParts[i];
+ }
-
- return null;
+ // Now we need to parse the filename to get the artifact version Id.
+ String fileParts[] = RepositoryLayoutUtils.splitFilename( filename, artifactId );
+ String version = fileParts[1];
+ String classifier = fileParts[2];
+
+ String type = extensionMapper.getType( filename );
+
+ return new ArchivaArtifact( groupId, artifactId, version, classifier, type );
}
}
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LayoutException.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LayoutException.java?view=auto&rev=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LayoutException.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LayoutException.java Fri Mar 16 15:45:38 2007
@@ -0,0 +1,41 @@
+package org.apache.maven.archiva.repository.layout;
+
+/*
+ * 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.
+ */
+
+import org.apache.maven.archiva.common.ArchivaException;
+
+/**
+ * LayoutException
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class LayoutException extends ArchivaException
+{
+ public LayoutException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public LayoutException( String message )
+ {
+ super( message );
+ }
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LayoutException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LayoutException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LayoutException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayout.java (from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/LegacyBidirectionalRepositoryLayout.java)
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayout.java?view=diff&rev=519169&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/LegacyBidirectionalRepositoryLayout.java&r1=518797&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayout.java&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/LegacyBidirectionalRepositoryLayout.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayout.java Fri Mar 16 15:45:38 2007
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.repository.content;
+package org.apache.maven.archiva.repository.layout;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,7 +19,10 @@
* under the License.
*/
+import org.apache.commons.lang.StringUtils;
import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.repository.content.ArtifactExtensionMapping;
+import org.apache.maven.archiva.repository.content.LegacyArtifactExtensionMapping;
import java.util.HashMap;
import java.util.Map;
@@ -30,8 +33,7 @@
* @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
* @version $Id$
*
- * @plexus.component role="org.apache.maven.archiva.repository.content.BidirectionalRepositoryLayout"
- * role-hint="legacy"
+ * @plexus.component role-hint="legacy"
*/
public class LegacyBidirectionalRepositoryLayout implements BidirectionalRepositoryLayout
{
@@ -92,10 +94,42 @@
return artifact.getType() + "s";
}
- public ArchivaArtifact toArtifact( String path )
+ public ArchivaArtifact toArtifact( String path ) throws LayoutException
{
- // TODO Auto-generated method stub
- return null;
+ String normalizedPath = StringUtils.replace( path, "\\", "/" );
+
+ String pathParts[] = StringUtils.split( normalizedPath, '/' );
+
+ /* Always 3 parts. (Never more or less)
+ *
+ * path = "commons-lang/jars/commons-lang-2.1.jar"
+ * path[0] = "commons-lang"; // The Group ID
+ * path[1] = "jars"; // The Directory Type
+ * path[2] = "commons-lang-2.1.jar"; // The Filename.
+ */
+
+ if ( pathParts.length != 3 )
+ {
+ // Illegal Path Parts Length.
+ throw new LayoutException( "Invalid number of parts to the path [" + path
+ + "] to construct an ArchivaArtifact from. (Required to be 3 parts)" );
+ }
+
+ // The Group ID.
+ String groupId = pathParts[0];
+
+ // The Filename.
+ String filename = pathParts[2];
+
+ String fileParts[] = RepositoryLayoutUtils.splitFilename( filename, null );
+
+ String artifactId = fileParts[0];
+ String version = fileParts[1];
+ String classifier = fileParts[2];
+
+ String type = extensionMapper.getType( filename );
+
+ return new ArchivaArtifact( groupId, artifactId, version, classifier, type );
}
}
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java?view=auto&rev=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java Fri Mar 16 15:45:38 2007
@@ -0,0 +1,219 @@
+package org.apache.maven.archiva.repository.layout;
+
+/*
+ * 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.
+ */
+
+import org.apache.commons.lang.StringUtils;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * RepositoryLayoutUtils - utility methods common for most BidirectionalRepositoryLayout implementation.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class RepositoryLayoutUtils
+{
+ /**
+ * Complex 2+ part extensions.
+ * Do not include initial "." character in extension names here.
+ */
+ private static final String ComplexExtensions[] = new String[] { "tar.gz", "tar.bz2" };
+
+ /**
+ * These are the version patterns found in the filenames of the various artifact's versions IDs.
+ * These patterns are all tackling lowercase version IDs.
+ */
+ private static final String VersionPatterns[] =
+ new String[] { "(snapshot)", "([0-9][_.0-9a-z]*)", "(g?[_.0-9ab]*(pre|rc|g|m)[_.0-9]*)", "(dev[_.0-9]*)",
+ "(alpha[_.0-9]*)", "(beta[_.0-9]*)", "(rc[_.0-9]*)", "(test[_.0-9]*)", "(debug[_.0-9]*)",
+ "(unofficial[_.0-9]*)", "(current)", "(latest)", "(fcs)", "(release[_.0-9]*)", "(nightly)", "(final)",
+ "(incubating)", "(incubator)", "([ab][_.0-9]*)" };
+
+ private static final String VersionMegaPattern = StringUtils.join( VersionPatterns, '|' );
+
+ /**
+ * Filename Parsing Mode - Artifact Id.
+ */
+ private static final int ARTIFACTID = 1;
+
+ /**
+ * Filename Parsing Mode - Version.
+ */
+ private static final int VERSION = 2;
+
+ /**
+ * Filename Parsing Mode - Classifier.
+ */
+ private static final int CLASSIFIER = 3;
+
+ /**
+ * Split the provided filename into 4 String parts.
+ *
+ * <pre>
+ * String part[] = splitFilename( filename );
+ * artifactId = part[0];
+ * version = part[1];
+ * classifier = part[2];
+ * extension = part[3];
+ * </pre>
+ *
+ * @param filename the filename to split.
+ * @param possibleArtifactId the optional artifactId to aide in splitting the filename.
+ * (null to allow algorithm to calculate one)
+ * @return the parts of the filename.
+ * @throws LayoutException
+ */
+ public static String[] splitFilename( String filename, String possibleArtifactId ) throws LayoutException
+ {
+ if ( StringUtils.isBlank( filename ) )
+ {
+ throw new IllegalArgumentException( "Unable to split blank filename." );
+ }
+
+ String filestring = filename.trim();
+
+ String artifactId = "";
+ String version = "";
+ String classifier = "";
+ String extension = "";
+
+ // I like working backwards.
+
+ // Find the extension.
+
+ // Work on multipart extensions first.
+ boolean found = false;
+
+ String lowercaseFilename = filestring.toLowerCase();
+ for ( int i = 0; i < ComplexExtensions.length && !found; i++ )
+ {
+ if ( lowercaseFilename.endsWith( "." + ComplexExtensions[i] ) )
+ {
+ extension = ComplexExtensions[i];
+ filestring = filestring.substring( 0, filestring.length() - ComplexExtensions[i].length() - 1 );
+ found = true;
+ }
+ }
+
+ if ( !found )
+ {
+ // Default to 1 part extension.
+
+ int index = filestring.lastIndexOf( '.' );
+ if ( index <= 0 )
+ {
+ // Bad Filename - No Extension
+ throw new LayoutException( "Unable to determine extension from filename " + filename );
+ }
+ extension = filestring.substring( index + 1 );
+ filestring = filestring.substring( 0, index );
+ }
+
+ // Work on version string.
+
+ if ( ( possibleArtifactId != null ) && filename.startsWith( possibleArtifactId ) )
+ {
+ artifactId = possibleArtifactId;
+ filestring = filestring.substring( possibleArtifactId.length() + 1 );
+ }
+
+ String fileParts[] = StringUtils.split( filestring, '-' );
+
+ int versionStart = -1;
+ int versionEnd = -1;
+
+ Pattern pat = Pattern.compile( VersionMegaPattern, Pattern.CASE_INSENSITIVE );
+ Matcher mat;
+
+ for ( int i = 0; i < fileParts.length; i++ )
+ {
+ String part = fileParts[i];
+ mat = pat.matcher( part );
+
+ if ( mat.matches() )
+ {
+ // It is a potential verion part.
+ if ( versionStart < 0 )
+ {
+ versionStart = i;
+ }
+
+ versionEnd = i;
+ }
+ }
+
+ if ( versionStart < 0 )
+ {
+ throw new LayoutException( "Unable to determine version from filename " + filename );
+ }
+
+ // Gather up the ArtifactID - Version - Classifier pieces found.
+
+ int mode = ARTIFACTID;
+ for ( int i = 0; i < fileParts.length; i++ )
+ {
+ String part = fileParts[i];
+
+ if ( ( mode == ARTIFACTID ) && ( i >= versionStart ) )
+ {
+ if ( StringUtils.isBlank( artifactId ) )
+ {
+ throw new LayoutException( "No Artifact Id detected." );
+ }
+ mode = VERSION;
+ }
+
+ switch ( mode )
+ {
+ case ARTIFACTID:
+ if ( artifactId.length() > 0 )
+ {
+ artifactId += "-";
+ }
+ artifactId += part;
+ break;
+ case VERSION:
+ if ( version.length() > 0 )
+ {
+ version += "-";
+ }
+ version += part;
+ break;
+ case CLASSIFIER:
+ if ( classifier.length() > 0 )
+ {
+ classifier += "-";
+ }
+ classifier += part;
+ break;
+ }
+
+ if ( i >= versionEnd )
+ {
+ mode = CLASSIFIER;
+ }
+ }
+
+ return new String[] { artifactId, version, classifier, extension };
+ }
+
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/version/VersionUtil.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/version/VersionUtil.java?view=auto&rev=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/version/VersionUtil.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/version/VersionUtil.java Fri Mar 16 15:45:38 2007
@@ -0,0 +1,62 @@
+package org.apache.maven.archiva.repository.version;
+
+/*
+ * 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.
+ */
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * VersionConstants
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class VersionUtil
+{
+ public static final String SNAPSHOT = "SNAPSHOT";
+
+ public static final Pattern UNIQUE_SNAPSHOT_PATTERN = Pattern.compile( "^(.*)-([0-9]{8}\\.[0-9]{6})-([0-9]+)$" );
+
+ public static boolean isSnapshot( String version )
+ {
+ Matcher m = UNIQUE_SNAPSHOT_PATTERN.matcher( version );
+ if ( m.matches() )
+ {
+ return true;
+ }
+ else
+ {
+ return version.endsWith( SNAPSHOT );
+ }
+ }
+
+ public static String getBaseVersion( String version )
+ {
+ Matcher m = UNIQUE_SNAPSHOT_PATTERN.matcher( version );
+ if ( m.matches() )
+ {
+ return m.group( 1 ) + "-" + SNAPSHOT;
+ }
+ else
+ {
+ return version;
+ }
+ }
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/version/VersionUtil.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/version/VersionUtil.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/version/VersionUtil.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Copied: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java (from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/AbstractBidirectionalRepositoryLayoutTestCase.java)
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java?view=diff&rev=519169&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/AbstractBidirectionalRepositoryLayoutTestCase.java&r1=518797&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/AbstractBidirectionalRepositoryLayoutTestCase.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java Fri Mar 16 15:45:38 2007
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.repository.content;
+package org.apache.maven.archiva.repository.layout;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -39,38 +39,42 @@
protected void setUp() throws Exception
{
super.setUp();
-
+
repository = createTestRepository();
}
-
+
protected ArchivaRepository createTestRepository()
{
File targetDir = new File( getBasedir(), "target" );
File testRepo = new File( targetDir, "test-repo" );
-
+
if ( !testRepo.exists() )
{
testRepo.mkdirs();
}
-
- String repoUri = "file://" + StringUtils.replace( testRepo.getAbsolutePath(), "\\", "/" ) ;
-
+
+ String repoUri = "file://" + StringUtils.replace( testRepo.getAbsolutePath(), "\\", "/" );
+
ArchivaRepository repo = new ArchivaRepository( "testRepo", "Test Repository", repoUri );
-
+
return repo;
}
- protected ArchivaArtifact createArtifact( String groupId, String artifactId, String version, String classifier, String type )
+ protected ArchivaArtifact createArtifact( String groupId, String artifactId, String version, String classifier,
+ String type )
{
ArchivaArtifact artifact = new ArchivaArtifact( repository, groupId, artifactId, version, classifier, type );
assertNotNull( artifact );
return artifact;
}
- protected void assertArtifact( ArchivaArtifact actualArtifact, String groupId, String artifactId, String version, String classifier, String type )
+ protected void assertArtifact( ArchivaArtifact actualArtifact, String groupId, String artifactId, String version,
+ String classifier, String type )
{
String expectedId = groupId + ":" + artifactId + ":" + version + ":" + classifier + ":" + type;
-
+
+ assertNotNull( expectedId + " - Should not be null.", actualArtifact );
+
assertEquals( expectedId + " - Group ID", actualArtifact.getGroupId(), groupId );
assertEquals( expectedId + " - Artifact ID", actualArtifact.getArtifactId(), artifactId );
assertEquals( expectedId + " - Version ID", actualArtifact.getVersion(), version );
@@ -78,10 +82,13 @@
assertEquals( expectedId + " - Type", actualArtifact.getType(), type );
}
- protected void assertSnapshotArtifact( ArchivaArtifact actualArtifact, String groupId, String artifactId, String version, String classifier, String type )
+ protected void assertSnapshotArtifact( ArchivaArtifact actualArtifact, String groupId, String artifactId,
+ String version, String classifier, String type )
{
String expectedId = groupId + ":" + artifactId + ":" + version + ":" + classifier + ":" + type;
-
+
+ assertNotNull( expectedId + " - Should not be null.", actualArtifact );
+
assertEquals( expectedId + " - Group ID", actualArtifact.getGroupId(), groupId );
assertEquals( expectedId + " - Artifact ID", actualArtifact.getArtifactId(), artifactId );
assertEquals( expectedId + " - Version ID", actualArtifact.getVersion(), version );
Copied: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayoutTest.java (from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultBidirectionalRepositoryLayoutTest.java)
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayoutTest.java?view=diff&rev=519169&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultBidirectionalRepositoryLayoutTest.java&r1=518797&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayoutTest.java&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/DefaultBidirectionalRepositoryLayoutTest.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayoutTest.java Fri Mar 16 15:45:38 2007
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.repository.content;
+package org.apache.maven.archiva.repository.layout;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -20,6 +20,8 @@
*/
import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout;
+import org.apache.maven.archiva.repository.layout.LayoutException;
/**
* DefaultBidirectionalRepositoryLayoutTest
@@ -54,7 +56,7 @@
public void testToPathWithClassifier()
{
- ArchivaArtifact artifact = createArtifact( "com.foo.lib", "foo-lib", "2.1-alpha-1", "sources", "jar" );
+ ArchivaArtifact artifact = createArtifact( "com.foo.lib", "foo-lib", "2.1-alpha-1", "sources", "java-source" );
assertEquals( "com/foo/lib/foo-lib/2.1-alpha-1/foo-lib-2.1-alpha-1-sources.jar", layout.pathOf( artifact ) );
}
@@ -66,28 +68,35 @@
assertEquals( "com/foo/foo-connector/2.1-SNAPSHOT/foo-connector-2.1-20060822.123456-35.jar",
layout.pathOf( artifact ) );
}
+
+ public void testToArtifactBasicSimpleGroupId() throws LayoutException
+ {
+ ArchivaArtifact artifact = layout.toArtifact( "commons-lang/commons-lang/2.1/commons-lang-2.1.jar" );
+ assertArtifact( artifact, "commons-lang", "commons-lang", "2.1", "", "jar" );
+ }
- public void testToArtifactBasic()
+ public void testToArtifactBasicLongGroupId() throws LayoutException
{
ArchivaArtifact artifact = layout.toArtifact( "com/foo/foo-tool/1.0/foo-tool-1.0.jar" );
assertArtifact( artifact, "com.foo", "foo-tool", "1.0", "", "jar" );
}
- public void testToArtifactEjbClient()
+ public void testToArtifactEjbClient() throws LayoutException
{
ArchivaArtifact artifact = layout.toArtifact( "com/foo/foo-client/1.0/foo-client-1.0.jar" );
// The type is correct. as we cannot possibly know this is an ejb client without parsing the pom
assertArtifact( artifact, "com.foo", "foo-client", "1.0", "", "jar" );
}
- public void testToArtifactWithClassifier()
+ public void testToArtifactWithClassifier() throws LayoutException
{
ArchivaArtifact artifact =
layout.toArtifact( "com/foo/lib/foo-lib/2.1-alpha-1/foo-lib-2.1-alpha-1-sources.jar" );
- assertArtifact( artifact, "com.foo.lib", "foo-lib", "2.1-alpha-1", "sources", "jar" );
+ // The 'java-source' type is correct. You might be thinking of extension, which we are not testing here.
+ assertArtifact( artifact, "com.foo.lib", "foo-lib", "2.1-alpha-1", "sources", "java-source" );
}
- public void testToArtifactUsingUniqueSnapshot()
+ public void testToArtifactUsingUniqueSnapshot() throws LayoutException
{
ArchivaArtifact artifact =
layout.toArtifact( "com/foo/foo-connector/2.1-SNAPSHOT/foo-connector-2.1-20060822.123456-35.jar" );
Copied: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayoutTest.java (from r518797, maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/LegacyBidirectionalRepositoryLayoutTest.java)
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayoutTest.java?view=diff&rev=519169&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/LegacyBidirectionalRepositoryLayoutTest.java&r1=518797&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayoutTest.java&r2=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/content/LegacyBidirectionalRepositoryLayoutTest.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayoutTest.java Fri Mar 16 15:45:38 2007
@@ -1,4 +1,4 @@
-package org.apache.maven.archiva.repository.content;
+package org.apache.maven.archiva.repository.layout;
/*
* Licensed to the Apache Software Foundation (ASF) under one
@@ -20,6 +20,7 @@
*/
import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout;
/**
* LegacyBidirectionalRepositoryLayoutTest
@@ -63,7 +64,44 @@
{
ArchivaArtifact artifact = createArtifact( "com.foo", "foo-connector", "2.1-20060822.123456-35", "", "jar" );
- assertEquals( "com.foo/jars/foo-connector-2.1-20060822.123456-35.jar",
- layout.pathOf( artifact ) );
+ assertEquals( "com.foo/jars/foo-connector-2.1-20060822.123456-35.jar", layout.pathOf( artifact ) );
+ }
+
+ public void testToArtifactBasicSimpleGroupId() throws LayoutException
+ {
+ ArchivaArtifact artifact = layout.toArtifact( "commons-lang/jars/commons-lang-2.1.jar" );
+ assertArtifact( artifact, "commons-lang", "commons-lang", "2.1", "", "jar" );
+ }
+
+ public void testToArtifactBasicLongGroupId() throws LayoutException
+ {
+ ArchivaArtifact artifact = layout.toArtifact( "org.apache.derby/jars/derby-10.2.2.0.jar" );
+ assertArtifact( artifact, "org.apache.derby", "derby", "10.2.2.0", "", "jar" );
+ }
+
+ public void testToArtifactLongGroupId() throws LayoutException
+ {
+ ArchivaArtifact artifact = layout.toArtifact( "org.apache.geronimo.specs/jars/geronimo-ejb_2.1_spec-1.0.1.jar" );
+ assertArtifact( artifact, "org.apache.geronimo.specs", "geronimo-ejb_2.1_spec", "1.0.1", "", "jar" );
+ }
+
+ public void testToArtifactEjbClient() throws LayoutException
+ {
+ ArchivaArtifact artifact = layout.toArtifact( "org.apache.beehive/jars/beehive-ejb-control-1.0.1.jar" );
+ // The type is correct. as we cannot possibly know this is an ejb client without parsing the pom
+ assertArtifact( artifact, "org.apache.beehive", "beehive-ejb-control", "1.0.1", "", "jar" );
+ }
+
+ public void testToArtifactWithClassifier() throws LayoutException
+ {
+ ArchivaArtifact artifact = layout.toArtifact( "commons-lang/jars/commons-lang-2.3-sources.jar" );
+ // The 'java-source' type is correct. You might be thinking of extension, which we are not testing here.
+ assertArtifact( artifact, "commons-lang", "commons-lang", "2.3", "sources", "java-source" );
+ }
+
+ public void testToArtifactSnapshot() throws LayoutException
+ {
+ ArchivaArtifact artifact = layout.toArtifact( "directory-clients/poms/ldap-clients-0.9.1-SNAPSHOT.pom" );
+ assertSnapshotArtifact( artifact, "directory-clients", "ldap-clients", "0.9.1-SNAPSHOT", "", "pom" );
}
}
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java?view=auto&rev=519169
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java Fri Mar 16 15:45:38 2007
@@ -0,0 +1,206 @@
+package org.apache.maven.archiva.repository.layout;
+
+/*
+ * 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.
+ */
+
+import junit.framework.TestCase;
+
+/**
+ * RepositoryLayoutUtilsTest
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class RepositoryLayoutUtilsTest extends TestCase
+{
+ public void testSplitFilenameBasic() throws LayoutException
+ {
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-2.1.jar", "commons-lang" ), "commons-lang",
+ "2.1", "", "jar" );
+ }
+
+ public void testSplitFilenameAlphaVersion() throws LayoutException
+ {
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-2.0-alpha-1.jar", "commons-lang" ),
+ "commons-lang", "2.0-alpha-1", "", "jar" );
+ }
+
+ public void testSplitFilenameSnapshot() throws LayoutException
+ {
+ assertSplit( RepositoryLayoutUtils.splitFilename( "foo-2.0-SNAPSHOT.jar", "foo" ), "foo", "2.0-SNAPSHOT", "",
+ "jar" );
+ }
+
+ public void testSplitFilenameUniqueSnapshot() throws LayoutException
+ {
+ assertSplit( RepositoryLayoutUtils.splitFilename( "fletch-2.0-20060822-123456-35.tar.gz", "fletch" ), "fletch",
+ "2.0-20060822-123456-35", "", "tar.gz" );
+ }
+
+ public void testSplitFilenameBasicClassifier() throws LayoutException
+ {
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-2.1-sources.jar", "commons-lang" ),
+ "commons-lang", "2.1", "sources", "jar" );
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-2.1-javadoc.jar", "commons-lang" ),
+ "commons-lang", "2.1", "javadoc", "jar" );
+ }
+
+ public void testSplitFilenameAlphaClassifier() throws LayoutException
+ {
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-2.0-alpha-1-sources.jar", "commons-lang" ),
+ "commons-lang", "2.0-alpha-1", "sources", "jar" );
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-2.0-alpha-1-javadoc.jar", "commons-lang" ),
+ "commons-lang", "2.0-alpha-1", "javadoc", "jar" );
+ }
+
+ public void testSplitFilenameSnapshotClassifier() throws LayoutException
+ {
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-3.1-SNAPSHOT-sources.jar", "commons-lang" ),
+ "commons-lang", "3.1-SNAPSHOT", "sources", "jar" );
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-3.1-SNAPSHOT-javadoc.jar", "commons-lang" ),
+ "commons-lang", "3.1-SNAPSHOT", "javadoc", "jar" );
+ }
+
+ public void testSplitFilenameUniqueSnapshotClassifier() throws LayoutException
+ {
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-3.1-SNAPSHOT-sources.jar", "commons-lang" ),
+ "commons-lang", "3.1-SNAPSHOT", "sources", "jar" );
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-3.1-SNAPSHOT-javadoc.jar", "commons-lang" ),
+ "commons-lang", "3.1-SNAPSHOT", "javadoc", "jar" );
+ }
+
+ public void testSplitFilenameApacheIncubator() throws LayoutException
+ {
+ assertSplit( RepositoryLayoutUtils.splitFilename( "cxf-common-2.0-incubator-M1.pom", null ), "cxf-common",
+ "2.0-incubator-M1", "", "pom" );
+ assertSplit( RepositoryLayoutUtils.splitFilename( "commonj-api_r1.1-1.0-incubator-M2.jar", null ),
+ "commonj-api_r1.1", "1.0-incubator-M2", "", "jar" );
+ }
+
+ public void testSplitFilenameBlankInputs()
+ {
+ try
+ {
+ RepositoryLayoutUtils.splitFilename( null, null );
+ fail( "Should have thrown an IllegalArgumentException." );
+ }
+ catch ( IllegalArgumentException e )
+ {
+ /* expected path */
+ }
+ catch ( LayoutException e )
+ {
+ fail( "Should have thrown an IllegalArgumentException." );
+ }
+
+ try
+ {
+ RepositoryLayoutUtils.splitFilename( "", null );
+ fail( "Should have thrown an IllegalArgumentException." );
+ }
+ catch ( IllegalArgumentException e )
+ {
+ /* expected path */
+ }
+ catch ( LayoutException e )
+ {
+ fail( "Should have thrown an IllegalArgumentException." );
+ }
+
+ try
+ {
+ RepositoryLayoutUtils.splitFilename( " ", null );
+ fail( "Should have thrown an IllegalArgumentException." );
+ }
+ catch ( IllegalArgumentException e )
+ {
+ /* expected path */
+ }
+ catch ( LayoutException e )
+ {
+ fail( "Should have thrown an IllegalArgumentException." );
+ }
+
+ try
+ {
+ RepositoryLayoutUtils.splitFilename( " \t \n ", null );
+ fail( "Should have thrown an IllegalArgumentException." );
+ }
+ catch ( IllegalArgumentException e )
+ {
+ /* expected path */
+ }
+ catch ( LayoutException e )
+ {
+ fail( "Should have thrown an IllegalArgumentException." );
+ }
+ }
+
+ public void testSplitFilenameBadInputs()
+ {
+ try
+ {
+ RepositoryLayoutUtils.splitFilename( "commons-lang.jar", null );
+ fail( "Should have thrown a LayoutException (No Version)." );
+ }
+ catch ( LayoutException e )
+ {
+ /* Expected Path */
+ }
+
+ try
+ {
+ RepositoryLayoutUtils.splitFilename( "geronimo-store", null );
+ fail( "Should have thrown a LayoutException (No Extension)." );
+ }
+ catch ( LayoutException e )
+ {
+ /* Expected Path */
+ }
+
+ try
+ {
+ RepositoryLayoutUtils.splitFilename( "The Sixth Sick Sheiks Sixth Sheep is Sick.", null );
+ fail( "Should have thrown a LayoutException (No Extension)." );
+ }
+ catch ( LayoutException e )
+ {
+ /* Expected Path */
+ }
+
+ try
+ {
+ RepositoryLayoutUtils.splitFilename( "1.0.jar", null );
+ fail( "Should have thrown a LayoutException (No Artifact ID)." );
+ }
+ catch ( LayoutException e )
+ {
+ /* Expected Path */
+ }
+ }
+
+ private void assertSplit( String[] actualSplit, String artifactId, String version, String classifier,
+ String extension )
+ {
+ assertEquals( "Split - artifactId", artifactId, actualSplit[0] );
+ assertEquals( "Split - version", version, actualSplit[1] );
+ assertEquals( "Split - classifier", classifier, actualSplit[2] );
+ assertEquals( "Split - extension", extension, actualSplit[3] );
+ }
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java
------------------------------------------------------------------------------
svn:mime-type = text/plain