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/04/03 17:22:01 UTC
svn commit: r525176 [10/12] - in
/maven/archiva/branches/archiva-jpox-database-refactor: ./
archiva-api/src/main/java/org/apache/maven/archiva/configuration/
archiva-api/src/main/java/org/apache/maven/archiva/consumers/
archiva-api/src/main/java/org/ap...
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/AbstractArtifactExtensionMapping.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/AbstractArtifactExtensionMapping.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/AbstractArtifactExtensionMapping.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/AbstractArtifactExtensionMapping.java Tue Apr 3 08:21:33 2007
@@ -19,7 +19,7 @@
* under the License.
*/
-import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaArtifact;
import java.util.HashMap;
import java.util.Map;
@@ -44,6 +44,8 @@
typeToExtensionMap.put( "java-source", "jar" );
typeToExtensionMap.put( "aspect", "jar" );
typeToExtensionMap.put( "uberjar", "jar" );
+ typeToExtensionMap.put( "maven-plugin", "jar" );
+ typeToExtensionMap.put( "maven-archetype", "jar" );
}
public String getExtension( ArchivaArtifact artifact )
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/content/ArtifactExtensionMapping.java Tue Apr 3 08:21:33 2007
@@ -19,7 +19,7 @@
* under the License.
*/
-import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaArtifact;
/**
* ArtifactExtensionMapping - Utility to provide the mapping between an Artifact's extension and it's type and
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayout.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayout.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayout.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/BidirectionalRepositoryLayout.java Tue Apr 3 08:21:33 2007
@@ -19,7 +19,7 @@
* under the License.
*/
-import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaArtifact;
/**
* BidirectionalRepositoryLayout - Similar in scope to ArtifactRepositoryLayout, but does
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayout.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayout.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayout.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayout.java Tue Apr 3 08:21:33 2007
@@ -20,7 +20,8 @@
*/
import org.apache.commons.lang.StringUtils;
-import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.common.utils.VersionUtil;
+import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.repository.content.ArtifactExtensionMapping;
import org.apache.maven.archiva.repository.content.DefaultArtifactExtensionMapping;
@@ -32,8 +33,7 @@
*
* @plexus.component role-hint="default"
*/
-public class DefaultBidirectionalRepositoryLayout
- implements BidirectionalRepositoryLayout
+public class DefaultBidirectionalRepositoryLayout implements BidirectionalRepositoryLayout
{
private static final char PATH_SEPARATOR = '/';
@@ -101,7 +101,7 @@
String filename = pathParts[partCount - 1];
// Second to last is the baseVersion (the directory version)
- // (Don't need it) String baseVersion = pathParts[partCount - 2];
+ String baseVersion = pathParts[partCount - 2];
// Third to last is the artifact Id.
String artifactId = pathParts[partCount - 3];
@@ -116,14 +116,26 @@
}
groupId += pathParts[i];
}
-
+
// 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];
+ FilenameParts fileParts = RepositoryLayoutUtils.splitFilename( filename, artifactId );
String type = extensionMapper.getType( filename );
- return new ArchivaArtifact( groupId, artifactId, version, classifier, type );
+ ArchivaArtifact artifact = new ArchivaArtifact( groupId, artifactId, fileParts.version, fileParts.classifier, type );
+
+ // Sanity Checks.
+ String artifactBaseVersion = VersionUtil.getBaseVersion( fileParts.version );
+ if ( !artifactBaseVersion.equals( baseVersion ) )
+ {
+ throw new LayoutException( "Invalid artifact location, version directory and filename mismatch." );
+ }
+
+ if ( !artifactId.equals( fileParts.artifactId ) )
+ {
+ throw new LayoutException( "Invalid artifact Id" );
+ }
+
+ return artifact;
}
}
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/FilenameParts.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/FilenameParts.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/FilenameParts.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/FilenameParts.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,73 @@
+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.
+ */
+
+/**
+ * FilenameParts - data object for {@link RepositoryLayoutUtils#splitFilename(String, String)} method.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+class FilenameParts
+{
+ public String artifactId;
+
+ public String version;
+
+ public String classifier;
+
+ public String extension;
+
+ public void appendArtifactId( String piece )
+ {
+ if ( artifactId == null )
+ {
+ artifactId = piece;
+ }
+ else
+ {
+ artifactId += "-" + piece;
+ }
+ }
+
+ public void appendVersion( String piece )
+ {
+ if ( version == null )
+ {
+ version = piece;
+ }
+ else
+ {
+ version += "-" + piece;
+ }
+ }
+
+ public void appendClassifier( String piece )
+ {
+ if ( classifier == null )
+ {
+ classifier = piece;
+ }
+ else
+ {
+ classifier += "-" + piece;
+ }
+ }
+}
\ No newline at end of file
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/FilenameParts.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/FilenameParts.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/FilenameParts.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayout.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayout.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayout.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayout.java Tue Apr 3 08:21:33 2007
@@ -20,7 +20,7 @@
*/
import org.apache.commons.lang.StringUtils;
-import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.repository.content.ArtifactExtensionMapping;
import org.apache.maven.archiva.repository.content.LegacyArtifactExtensionMapping;
@@ -118,18 +118,31 @@
// The Group ID.
String groupId = pathParts[0];
+ // The Expected Type.
+ String expectedType = pathParts[1];
+
// The Filename.
String filename = pathParts[2];
- String fileParts[] = RepositoryLayoutUtils.splitFilename( filename, null );
-
- String artifactId = fileParts[0];
- String version = fileParts[1];
- String classifier = fileParts[2];
+ FilenameParts fileParts = RepositoryLayoutUtils.splitFilename( filename, null );
String type = extensionMapper.getType( filename );
- return new ArchivaArtifact( groupId, artifactId, version, classifier, type );
+ ArchivaArtifact artifact =
+ new ArchivaArtifact( groupId, fileParts.artifactId, fileParts.version, fileParts.classifier, type );
+
+ // Sanity Checks.
+ if ( StringUtils.isEmpty( fileParts.extension ) )
+ {
+ throw new LayoutException( "Invalid artifact, no extension." );
+ }
+
+ if ( !expectedType.equals( fileParts.extension + "s" ) )
+ {
+ throw new LayoutException( "Invalid artifact, extension and layout specified type mismatch." );
+ }
+
+ return artifact;
}
}
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/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-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtils.java Tue Apr 3 08:21:33 2007
@@ -82,7 +82,7 @@
* @return the parts of the filename.
* @throws LayoutException
*/
- public static String[] splitFilename( String filename, String possibleArtifactId ) throws LayoutException
+ public static FilenameParts splitFilename( String filename, String possibleArtifactId ) throws LayoutException
{
if ( StringUtils.isBlank( filename ) )
{
@@ -91,11 +91,7 @@
String filestring = filename.trim();
- String artifactId = "";
- String version = "";
- String classifier = "";
- String extension = "";
-
+ FilenameParts parts = new FilenameParts();
// I like working backwards.
// Find the extension.
@@ -108,7 +104,7 @@
{
if ( lowercaseFilename.endsWith( "." + ComplexExtensions[i] ) )
{
- extension = ComplexExtensions[i];
+ parts.extension = ComplexExtensions[i];
filestring = filestring.substring( 0, filestring.length() - ComplexExtensions[i].length() - 1 );
found = true;
}
@@ -124,7 +120,7 @@
// Bad Filename - No Extension
throw new LayoutException( "Unable to determine extension from filename " + filename );
}
- extension = filestring.substring( index + 1 );
+ parts.extension = filestring.substring( index + 1 );
filestring = filestring.substring( 0, index );
}
@@ -132,7 +128,7 @@
if ( ( possibleArtifactId != null ) && filename.startsWith( possibleArtifactId ) )
{
- artifactId = possibleArtifactId;
+ parts.artifactId = possibleArtifactId;
filestring = filestring.substring( possibleArtifactId.length() + 1 );
}
@@ -175,7 +171,7 @@
if ( ( mode == ARTIFACTID ) && ( i >= versionStart ) )
{
- if ( StringUtils.isBlank( artifactId ) )
+ if ( StringUtils.isBlank( parts.artifactId ) )
{
throw new LayoutException( "No Artifact Id detected." );
}
@@ -185,25 +181,13 @@
switch ( mode )
{
case ARTIFACTID:
- if ( artifactId.length() > 0 )
- {
- artifactId += "-";
- }
- artifactId += part;
+ parts.appendArtifactId( part );
break;
case VERSION:
- if ( version.length() > 0 )
- {
- version += "-";
- }
- version += part;
+ parts.appendVersion( part );
break;
case CLASSIFIER:
- if ( classifier.length() > 0 )
- {
- classifier += "-";
- }
- classifier += part;
+ parts.appendClassifier( part );
break;
}
@@ -213,7 +197,7 @@
}
}
- return new String[] { artifactId, version, classifier, extension };
+ return parts;
}
}
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataException.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataException.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataException.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataException.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,52 @@
+package org.apache.maven.archiva.repository.metadata;
+
+/*
+ * 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.repository.RepositoryException;
+
+/**
+ * RepositoryMetadataException
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class RepositoryMetadataException extends RepositoryException
+{
+
+ public RepositoryMetadataException()
+ {
+ super();
+ }
+
+ public RepositoryMetadataException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public RepositoryMetadataException( String message )
+ {
+ super( message );
+ }
+
+ public RepositoryMetadataException( Throwable cause )
+ {
+ super( cause );
+ }
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,73 @@
+package org.apache.maven.archiva.repository.metadata;
+
+/*
+ * 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.model.ArchivaRepositoryMetadata;
+import org.apache.maven.archiva.model.RepositoryContent;
+import org.apache.maven.archiva.xml.XMLException;
+import org.apache.maven.archiva.xml.XMLReader;
+
+import java.io.File;
+import java.util.Date;
+
+/**
+ * RepositoryMetadataReader - read maven-metadata.xml files.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class RepositoryMetadataReader
+{
+ /**
+ * Read and return the {@link ArchivaRepositoryMetadata} object from the provided xml file.
+ *
+ * @param metadataFile the maven-metadata.xml file to read.
+ * @return the archiva repository metadata object that represents the provided file contents.
+ * @throws RepositoryMetadataException
+ */
+ public ArchivaRepositoryMetadata read( File metadataFile ) throws RepositoryMetadataException
+ {
+ try
+ {
+ XMLReader xml = new XMLReader( "metadata", metadataFile );
+
+ ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata();
+
+ RepositoryContent contentKey = new RepositoryContent();
+ contentKey.setGroupId( xml.getElementText( "//metadata/groupId" ) );
+ contentKey.setArtifactId( xml.getElementText( "//metadata/artifactId" ) );
+
+ metadata.setContentKey( contentKey );
+
+ metadata.setLastModified( new Date( metadataFile.lastModified() ) );
+ metadata.setSize( metadataFile.length() );
+ metadata.setWhenIndexed( new Date() );
+
+ metadata.setReleasedVersion( xml.getElementText( "//metadata/versioning/release" ) );
+ metadata.setAvailableVersions( xml.getElementListText( "//metadata/versioning/versions/version" ) );
+
+ return metadata;
+ }
+ catch ( XMLException e )
+ {
+ throw new RepositoryMetadataException( e.getMessage(), e );
+ }
+ }
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/metadata/RepositoryMetadataReader.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel300Reader.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel300Reader.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel300Reader.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel300Reader.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,42 @@
+package org.apache.maven.archiva.repository.project;
+
+/*
+ * 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.model.ArchivaProjectModel;
+
+import java.io.File;
+
+/**
+ * ProjectModel300Reader
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class ProjectModel300Reader implements ProjectModelReader
+{
+
+ public ArchivaProjectModel read( File pomFile )
+ throws ProjectModelException
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel300Reader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel300Reader.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel300Reader.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel400Reader.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel400Reader.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel400Reader.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel400Reader.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,405 @@
+package org.apache.maven.archiva.repository.project;
+
+/*
+ * 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 org.apache.maven.archiva.model.ArchivaProjectModel;
+import org.apache.maven.archiva.model.CiManagement;
+import org.apache.maven.archiva.model.Dependency;
+import org.apache.maven.archiva.model.DependencyScope;
+import org.apache.maven.archiva.model.Exclusion;
+import org.apache.maven.archiva.model.Individual;
+import org.apache.maven.archiva.model.IssueManagement;
+import org.apache.maven.archiva.model.License;
+import org.apache.maven.archiva.model.Organization;
+import org.apache.maven.archiva.model.ProjectRepository;
+import org.apache.maven.archiva.model.RepositoryContent;
+import org.apache.maven.archiva.model.Scm;
+import org.apache.maven.archiva.xml.XMLException;
+import org.apache.maven.archiva.xml.XMLReader;
+import org.dom4j.Element;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * ProjectModel400Reader
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class ProjectModel400Reader implements ProjectModelReader
+{
+
+ public ArchivaProjectModel read( File pomFile ) throws ProjectModelException
+ {
+ try
+ {
+ XMLReader xml = new XMLReader( "project", pomFile );
+
+ ArchivaProjectModel model = new ArchivaProjectModel();
+
+ RepositoryContent contentKey = new RepositoryContent();
+ contentKey.setGroupId( xml.getElementText( "//project/groupId" ) );
+ contentKey.setArtifactId( xml.getElementText( "//project/artifactId" ) );
+ contentKey.setVersion( xml.getElementText( "//project/version" ) );
+ model.setContentKey( contentKey );
+
+ model.setName( xml.getElementText( "//project/name" ) );
+ model.setDescription( xml.getElementText( "//project/description" ) );
+ model.setUrl( xml.getElementText( "//project/url" ) );
+ model.setPackaging( StringUtils.defaultIfEmpty( xml.getElementText( "//project/packaging" ), "jar" ) );
+
+ model.setParentContentKey( getParentContentKey( xml ) );
+
+ model.setCiManagement( getCiManagement( xml ) );
+ model.setIndividuals( getIndividuals( xml ) );
+ model.setIssueManagement( getIssueManagement( xml ) );
+ model.setLicenses( getLicenses( xml ) );
+ model.setOrganization( getOrganization( xml ) );
+ model.setScm( getSCM( xml ) );
+ model.setRepositories( getRepositories( xml ) );
+
+ model.setDependencies( getDependencies( xml ) );
+ model.setPlugins( getPlugins( xml ) );
+ model.setReports( getReports( xml ) );
+
+ return model;
+ }
+ catch ( XMLException e )
+ {
+ throw new ProjectModelException( e.getMessage(), e );
+ }
+ }
+
+ private CiManagement getCiManagement( XMLReader xml ) throws XMLException
+ {
+ Element elemCiMgmt = xml.getElement( "//project/ciManagement" );
+ if ( elemCiMgmt != null )
+ {
+ CiManagement ciManagement = new CiManagement();
+ ciManagement.setSystem( elemCiMgmt.elementTextTrim( "system" ) );
+ ciManagement.setUrl( elemCiMgmt.elementTextTrim( "url" ) );
+ return ciManagement;
+ }
+
+ return null;
+ }
+
+ private List getDependencies( XMLReader xml ) throws XMLException
+ {
+ List dependencies = new ArrayList();
+
+ Iterator it = xml.getElementList( "//project/dependencies/dependency" ).iterator();
+ while ( it.hasNext() )
+ {
+ Element elemDependency = (Element) it.next();
+ Dependency dependency = new Dependency();
+
+ dependency.setContentKey( getContentKey( elemDependency ) );
+
+ dependency.setClassifier( elemDependency.elementTextTrim( "classifier" ) );
+ dependency.setType( StringUtils.defaultIfEmpty( elemDependency.elementTextTrim( "type" ), "jar" ) );
+ dependency.setScope( StringUtils.defaultIfEmpty( elemDependency.elementTextTrim( "scope" ), "compile" ) );
+ // Not for v4.0.0 -> dependency.setUrl( elemDependency.elementTextTrim( "url" ) );
+ dependency.setOptional( toBoolean( elemDependency.elementTextTrim( "optional" ), false ) );
+ if ( DependencyScope.isSystemScoped( dependency ) )
+ {
+ dependency.setSystemPath( elemDependency.elementTextTrim( "systemPath" ) );
+ }
+
+ dependency.setExclusions( getExclusions( elemDependency ) );
+
+ dependencies.add( dependency );
+ }
+
+ return dependencies;
+ }
+
+ private List getExclusions( Element elemDependency )
+ {
+ List exclusions = new ArrayList();
+
+ Element elemExclusions = elemDependency.element( "exclusions" );
+
+ if ( elemExclusions != null )
+ {
+ Iterator it = elemExclusions.elementIterator( "exclusion" );
+ while ( it.hasNext() )
+ {
+ Element elemExclusion = (Element) it.next();
+ Exclusion exclusion = new Exclusion();
+
+ exclusion.setGroupId( elemExclusion.elementTextTrim( "groupId" ) );
+ exclusion.setArtifactId( elemExclusion.elementTextTrim( "artifactId" ) );
+
+ exclusions.add( exclusion );
+ }
+ }
+
+ return exclusions;
+ }
+
+ private List getIndividuals( XMLReader xml ) throws XMLException
+ {
+ List individuals = new ArrayList();
+
+ individuals.addAll( getIndividuals( xml, true, "//project/developers/developer" ) );
+ individuals.addAll( getIndividuals( xml, false, "//project/contributors/contributor" ) );
+
+ return individuals;
+ }
+
+ private List getIndividuals( XMLReader xml, boolean isCommitor, String xpathExpr ) throws XMLException
+ {
+ List ret = new ArrayList();
+
+ List modelPersonList = xml.getElementList( xpathExpr );
+
+ Iterator iter = modelPersonList.iterator();
+ while ( iter.hasNext() )
+ {
+ Element elemPerson = (Element) iter.next();
+ Individual individual = new Individual();
+
+ individual.setCommitor( isCommitor );
+ individual.setEmail( elemPerson.elementTextTrim( "email" ) );
+ individual.setName( elemPerson.elementTextTrim( "name" ) );
+ individual.setOrganization( elemPerson.elementTextTrim( "organization" ) );
+ individual.setOrganizationUrl( elemPerson.elementTextTrim( "organizationUrl" ) );
+ individual.setUrl( elemPerson.elementTextTrim( "url" ) );
+ individual.setTimezone( elemPerson.elementTextTrim( "timezone" ) );
+
+ // Roles
+ Element elemRoles = elemPerson.element( "roles" );
+ if ( elemRoles != null )
+ {
+ List roleNames = elemRoles.elements( "role" );
+ Iterator itRole = roleNames.iterator();
+ while ( itRole.hasNext() )
+ {
+ Element role = (Element) itRole.next();
+ individual.addRole( role.getTextTrim() );
+ }
+ }
+
+ // Properties
+ Element elemProperties = elemPerson.element( "properties" );
+ if ( elemProperties != null )
+ {
+ Iterator itProps = elemProperties.elements().iterator();
+ while ( itProps.hasNext() )
+ {
+ Element elemProp = (Element) itProps.next();
+ individual.addProperty( elemProp.getName(), elemProp.getText() );
+ }
+ }
+
+ ret.add( individual );
+ }
+
+ return ret;
+ }
+
+ private IssueManagement getIssueManagement( XMLReader xml ) throws XMLException
+ {
+ Element elemIssueMgmt = xml.getElement( "//project/issueManagement" );
+ if ( elemIssueMgmt != null )
+ {
+ IssueManagement issueMgmt = new IssueManagement();
+
+ issueMgmt.setSystem( elemIssueMgmt.elementTextTrim( "system" ) );
+ issueMgmt.setUrl( elemIssueMgmt.elementTextTrim( "url" ) );
+
+ return issueMgmt;
+ }
+
+ return null;
+ }
+
+ private List getLicenses( XMLReader xml ) throws XMLException
+ {
+ List licenses = new ArrayList();
+
+ Element elemLicenses = xml.getElement( "//project/licenses" );
+
+ if ( elemLicenses != null )
+ {
+ Iterator itLicense = elemLicenses.elements( "license" ).iterator();
+ while ( itLicense.hasNext() )
+ {
+ Element elemLicense = (Element) itLicense.next();
+ License license = new License();
+
+ // TODO: Create LicenseIdentity class to managed license ids.
+ // license.setId( elemLicense.elementTextTrim( "id" ) );
+ license.setName( elemLicense.elementTextTrim( "name" ) );
+ license.setUrl( elemLicense.elementTextTrim( "url" ) );
+ license.setComments( elemLicense.elementTextTrim( "comments" ) );
+
+ licenses.add( license );
+ }
+ }
+
+ return licenses;
+ }
+
+ private Organization getOrganization( XMLReader xml ) throws XMLException
+ {
+ Element elemOrg = xml.getElement( "//project/organization" );
+ if ( elemOrg != null )
+ {
+ Organization org = new Organization();
+
+ org.setName( elemOrg.elementTextTrim( "name" ) );
+ org.setUrl( elemOrg.elementTextTrim( "url" ) );
+
+ return org;
+ }
+
+ return null;
+ }
+
+ private RepositoryContent getParentContentKey( XMLReader xml ) throws XMLException
+ {
+ Element elemParent = xml.getElement( "//project/parent" );
+
+ if ( elemParent != null )
+ {
+ return getContentKey( elemParent );
+ }
+
+ return null;
+ }
+
+ private RepositoryContent getContentKey( Element elem )
+ {
+ RepositoryContent contentKey = new RepositoryContent();
+
+ contentKey.setGroupId( elem.elementTextTrim( "groupId" ) );
+ contentKey.setArtifactId( elem.elementTextTrim( "artifactId" ) );
+ contentKey.setVersion( elem.elementTextTrim( "version" ) );
+
+ return contentKey;
+ }
+
+ private List getPlugins( XMLReader xml ) throws XMLException
+ {
+ return getPlugins( xml, "//project/build/plugins/plugin" );
+ }
+
+ private List getReports( XMLReader xml ) throws XMLException
+ {
+ return getPlugins( xml, "//project/reporting/plugins/plugin" );
+ }
+
+ /**
+ * Get List of {@link RepositoryContent} objects from plugin definitions.
+ */
+ private List getPlugins( XMLReader xml, String xpathExpr ) throws XMLException
+ {
+ List plugins = new ArrayList();
+
+ Iterator it = xml.getElementList( xpathExpr ).iterator();
+ while ( it.hasNext() )
+ {
+ Element elemPlugin = (Element) it.next();
+
+ plugins.add( getContentKey( elemPlugin ) );
+ }
+
+ return plugins;
+ }
+
+ private List getRepositories( XMLReader xml ) throws XMLException
+ {
+ List repos = new ArrayList();
+
+ repos.addAll( getRepositories( xml, false, "//project/repositories/repository" ) );
+ repos.addAll( getRepositories( xml, true, "//project/pluginRepositories/pluginRepository" ) );
+
+ return repos;
+ }
+
+ private List getRepositories( XMLReader xml, boolean isPluginRepo, String xpathExpr ) throws XMLException
+ {
+ List ret = new ArrayList();
+
+ List repositoriesList = xml.getElementList( xpathExpr );
+
+ Iterator itRepos = repositoriesList.iterator();
+ while ( itRepos.hasNext() )
+ {
+ Element elemRepo = (Element) itRepos.next();
+ ProjectRepository repo = new ProjectRepository();
+
+ repo.setId( elemRepo.elementTextTrim( "id" ) );
+ repo.setName( elemRepo.elementTextTrim( "name" ) );
+ repo.setUrl( elemRepo.elementTextTrim( "url" ) );
+ repo.setLayout( StringUtils.defaultIfEmpty( elemRepo.elementTextTrim( "layout" ), "default" ) );
+ repo.setPlugins( isPluginRepo );
+
+ repo.setReleases( toBoolean( xml.getElementText( elemRepo, "releases/enabled" ), true ) );
+ repo.setReleases( toBoolean( xml.getElementText( elemRepo, "snapshots/enabled" ), false ) );
+
+ ret.add( repo );
+ }
+
+ return ret;
+ }
+
+ private Scm getSCM( XMLReader xml ) throws XMLException
+ {
+ Element elemScm = xml.getElement( "//project/scm" );
+
+ if ( elemScm != null )
+ {
+ Scm scm = new Scm();
+
+ scm.setConnection( elemScm.elementTextTrim( "connection" ) );
+ scm.setDeveloperConnection( elemScm.elementTextTrim( "developerConnection" ) );
+ scm.setUrl( elemScm.elementTextTrim( "url" ) );
+
+ return scm;
+ }
+
+ return null;
+ }
+
+ private boolean toBoolean( String value, boolean defaultValue )
+ {
+ if ( StringUtils.equalsIgnoreCase( value, "true" ) )
+ {
+ return true;
+ }
+ else if ( StringUtils.equalsIgnoreCase( value, "false" ) )
+ {
+ return false;
+ }
+ else
+ {
+ // If unset, or not "true" or "false".
+ return defaultValue;
+ }
+ }
+
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel400Reader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel400Reader.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModel400Reader.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelException.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelException.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelException.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelException.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,41 @@
+package org.apache.maven.archiva.repository.project;
+
+/*
+ * 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;
+
+/**
+ * ProjectModelException
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class ProjectModelException extends ArchivaException
+{
+ public ProjectModelException( String message, Throwable cause )
+ {
+ super( message, cause );
+ }
+
+ public ProjectModelException( String message )
+ {
+ super( message );
+ }
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelException.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelException.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelReader.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelReader.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelReader.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelReader.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,35 @@
+package org.apache.maven.archiva.repository.project;
+
+/*
+ * 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.model.ArchivaProjectModel;
+
+import java.io.File;
+
+/**
+ * ProjectModelReader
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public interface ProjectModelReader
+{
+ public ArchivaProjectModel read( File pomFile ) throws ProjectModelException;
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelReader.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelReader.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/project/ProjectModelReader.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScanner.java Tue Apr 3 08:21:33 2007
@@ -19,10 +19,10 @@
* under the License.
*/
+import org.apache.maven.archiva.consumers.RepositoryContentConsumer;
+import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.model.RepositoryContentStatistics;
-import org.apache.maven.archiva.repository.ArchivaRepository;
import org.apache.maven.archiva.repository.RepositoryException;
-import org.apache.maven.archiva.repository.consumer.Consumer;
import org.codehaus.plexus.util.DirectoryWalker;
import org.codehaus.plexus.util.FileUtils;
@@ -146,14 +146,14 @@
Iterator it = consumers.iterator();
while ( it.hasNext() )
{
- Consumer consumer = (Consumer) it.next();
+ RepositoryContentConsumer consumer = (RepositoryContentConsumer) it.next();
/* NOTE: Do not insert the consumer exclusion patterns here.
* Exclusion patterns are handled by RepositoryScanner.wantsFile(Consumer, String)
*
* addUniqueElements( consumer.getExcludePatterns(), allExcludes );
*/
- addUniqueElements( consumer.getIncludePatterns(), allIncludes );
+ addUniqueElements( consumer.getIncludes(), allIncludes );
}
if ( extraFileInclusions != null )
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java Tue Apr 3 08:21:33 2007
@@ -21,9 +21,10 @@
import org.apache.commons.lang.SystemUtils;
import org.apache.maven.archiva.common.utils.BaseFile;
+import org.apache.maven.archiva.consumers.ConsumerException;
+import org.apache.maven.archiva.consumers.RepositoryContentConsumer;
+import org.apache.maven.archiva.model.ArchivaRepository;
import org.apache.maven.archiva.model.RepositoryContentStatistics;
-import org.apache.maven.archiva.repository.ArchivaRepository;
-import org.apache.maven.archiva.repository.consumer.Consumer;
import org.codehaus.plexus.util.DirectoryWalkListener;
import org.codehaus.plexus.util.SelectorUtils;
import org.codehaus.plexus.util.StringUtils;
@@ -60,17 +61,19 @@
this.consumers = consumerList;
stats = new RepositoryContentStatistics();
stats.setRepositoryId( repository.getId() );
-
Iterator it = this.consumers.iterator();
while ( it.hasNext() )
{
- Consumer consumer = (Consumer) it.next();
-
- if ( !consumer.init( this.repository ) )
+ RepositoryContentConsumer consumer = (RepositoryContentConsumer) it.next();
+ try
+ {
+ consumer.beginScan( repository );
+ }
+ catch ( ConsumerException e )
{
- throw new IllegalStateException( "Consumer [" + consumer.getName() +
- "] is reporting that it is incompatible with the [" + repository.getId() + "] repository." );
+ // TODO: remove bad consumers from list
+ log.warn( "Consumer [" + consumer.getId() + "] cannot begin: " + e.getMessage(), e );
}
}
@@ -94,7 +97,7 @@
public void directoryWalkStep( int percentage, File file )
{
log.debug( "Walk Step: " + percentage + ", " + file );
-
+
stats.increaseFileCount();
// Timestamp finished points to the last successful scan, not this current one.
@@ -114,28 +117,27 @@
Iterator itConsumers = this.consumers.iterator();
while ( itConsumers.hasNext() )
{
- Consumer consumer = (Consumer) itConsumers.next();
+ RepositoryContentConsumer consumer = (RepositoryContentConsumer) itConsumers.next();
if ( wantsFile( consumer, StringUtils.replace( basefile.getRelativePath(), "\\", "/" ) ) )
{
try
{
- log.debug( "Sending to consumer: " + consumer.getName() );
- consumer.processFile( basefile );
+ log.debug( "Sending to consumer: " + consumer.getId() );
+ consumer.processFile( basefile.getRelativePath() );
}
catch ( Exception e )
{
/* Intentionally Catch all exceptions.
* So that the discoverer processing can continue.
*/
- log.error( "Consumer [" + consumer.getName() + "] had an error when processing file [" +
- basefile.getAbsolutePath() + "]: " + e.getMessage(), e );
+ log.error( "Consumer [" + consumer.getId() + "] had an error when processing file ["
+ + basefile.getAbsolutePath() + "]: " + e.getMessage(), e );
}
}
else
{
- log.debug(
- "Skipping consumer " + consumer.getName() + " for file " + basefile.getRelativePath() );
+ log.debug( "Skipping consumer " + consumer.getId() + " for file " + basefile.getRelativePath() );
}
}
}
@@ -147,24 +149,27 @@
stats.triggerFinished();
}
- private boolean wantsFile( Consumer consumer, String relativePath )
+ private boolean wantsFile( RepositoryContentConsumer consumer, String relativePath )
{
Iterator it;
// Test excludes first.
- it = consumer.getExcludePatterns().iterator();
- while ( it.hasNext() )
+ if ( consumer.getExcludes() != null )
{
- String pattern = (String) it.next();
- if ( SelectorUtils.matchPath( pattern, relativePath, isCaseSensitive ) )
+ it = consumer.getExcludes().iterator();
+ while ( it.hasNext() )
{
- // Definately does NOT WANT FILE.
- return false;
+ String pattern = (String) it.next();
+ if ( SelectorUtils.matchPath( pattern, relativePath, isCaseSensitive ) )
+ {
+ // Definately does NOT WANT FILE.
+ return false;
+ }
}
}
// Now test includes.
- it = consumer.getIncludePatterns().iterator();
+ it = consumer.getIncludes().iterator();
while ( it.hasNext() )
{
String pattern = (String) it.next();
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/AllTests.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/AllTests.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/AllTests.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/AllTests.java Tue Apr 3 08:21:33 2007
@@ -36,6 +36,10 @@
TestSuite suite = new TestSuite( "Test for org.apache.maven.archiva.repository" );
//$JUnit-BEGIN$
suite.addTestSuite( RepositoryURLTest.class );
+ suite.addTest( org.apache.maven.archiva.repository.metadata.AllTests.suite() );
+ suite.addTest( org.apache.maven.archiva.repository.project.AllTests.suite() );
+ suite.addTest( org.apache.maven.archiva.repository.scanner.AllTests.suite() );
+ suite.addTest( org.apache.maven.archiva.repository.layout.AllTests.suite() );
//$JUnit-END$
return suite;
}
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/RepositoryURLTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/RepositoryURLTest.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/RepositoryURLTest.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/RepositoryURLTest.java Tue Apr 3 08:21:33 2007
@@ -20,6 +20,8 @@
*/
+import org.apache.maven.archiva.model.RepositoryURL;
+
import java.net.MalformedURLException;
import junit.framework.TestCase;
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AbstractBidirectionalRepositoryLayoutTestCase.java Tue Apr 3 08:21:33 2007
@@ -20,8 +20,8 @@
*/
import org.apache.commons.lang.StringUtils;
-import org.apache.maven.archiva.repository.ArchivaArtifact;
-import org.apache.maven.archiva.repository.ArchivaRepository;
+import org.apache.maven.archiva.model.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaRepository;
import org.codehaus.plexus.PlexusTestCase;
import java.io.File;
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AllTests.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AllTests.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AllTests.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AllTests.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,45 @@
+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.Test;
+import junit.framework.TestSuite;
+
+/**
+ * AllTests - Useful for developers using IDEs.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AllTests
+{
+
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite( "Test for org.apache.maven.archiva.repository.layout" );
+ //$JUnit-BEGIN$
+ suite.addTestSuite( LegacyBidirectionalRepositoryLayoutTest.class );
+ suite.addTestSuite( DefaultBidirectionalRepositoryLayoutTest.class );
+ suite.addTestSuite( RepositoryLayoutUtilsTest.class );
+ //$JUnit-END$
+ return suite;
+ }
+
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AllTests.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AllTests.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/AllTests.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayoutTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayoutTest.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayoutTest.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/DefaultBidirectionalRepositoryLayoutTest.java Tue Apr 3 08:21:33 2007
@@ -19,7 +19,7 @@
* under the License.
*/
-import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout;
import org.apache.maven.archiva.repository.layout.LayoutException;
@@ -68,7 +68,7 @@
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" );
@@ -95,11 +95,102 @@
// 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() throws LayoutException
{
ArchivaArtifact artifact =
layout.toArtifact( "com/foo/foo-connector/2.1-SNAPSHOT/foo-connector-2.1-20060822.123456-35.jar" );
assertSnapshotArtifact( artifact, "com.foo", "foo-connector", "2.1-20060822.123456-35", "", "jar" );
+ }
+
+ public void testInvalidMissingType()
+ {
+ try
+ {
+ layout.toArtifact( "invalid/invalid/1/invalid-1" );
+ fail( "Should have detected missing type." );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
+ }
+
+ public void testInvalidNonSnapshotInSnapshotDir()
+ {
+ try
+ {
+ layout.toArtifact( "invalid/invalid/1.0-SNAPSHOT/invalid-1.0.jar" );
+ fail( "Should have detected non snapshot artifact inside of a snapshot dir." );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
+ }
+
+ public void testInvalidPathTooShort()
+ {
+ try
+ {
+ layout.toArtifact( "invalid/invalid-1.0.jar" );
+ fail( "Should have detected that path is too short." );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
+ }
+
+ public void testInvalidTimestampSnapshotNotInSnapshotDir()
+ {
+ try
+ {
+ layout.toArtifact( "invalid/invalid/1.0-20050611.123456-1/invalid-1.0-20050611.123456-1.jar" );
+ fail( "Shoult have detected Timestamped Snapshot artifact not inside of an Snapshot dir is invalid." );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
+ }
+
+ public void testInvalidVersionPathMismatch()
+ {
+ try
+ {
+ layout.toArtifact( "invalid/invalid/1.0/invalid-2.0.jar" );
+ fail( "Should have detected version mismatch between path and artifact." );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
+ }
+
+ public void testInvalidVersionPathMismatchAlt()
+ {
+ try
+ {
+ layout.toArtifact( "invalid/invalid/1.0/invalid-1.0b.jar" );
+ fail( "Should have version mismatch between directory and artifact." );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
+ }
+
+ public void testInvalidArtifactIdForPath()
+ {
+ try
+ {
+ layout.toArtifact( "org/apache/maven/test/1.0-SNAPSHOT/wrong-artifactId-1.0-20050611.112233-1.jar" );
+ fail( "Should have detected wrong artifact Id." );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
}
}
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayoutTest.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayoutTest.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayoutTest.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/LegacyBidirectionalRepositoryLayoutTest.java Tue Apr 3 08:21:33 2007
@@ -19,7 +19,7 @@
* under the License.
*/
-import org.apache.maven.archiva.repository.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaArtifact;
import org.apache.maven.archiva.repository.layout.BidirectionalRepositoryLayout;
/**
@@ -103,5 +103,54 @@
{
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" );
+ }
+
+ public void testInvalidNoType()
+ {
+ try
+ {
+ layout.toArtifact( "invalid/invalid/1/invalid-1" );
+ fail( "Should have detected no type." );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
+ }
+
+ public void testInvalidArtifactPackaging()
+ {
+ try
+ {
+ layout.toArtifact( "org.apache.maven.test/jars/artifactId-1.0.jar.md5" );
+ fail( "Should have detected wrong package extension." );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
+ }
+
+ public void testInvalidNoArtifactId()
+ {
+ try
+ {
+ layout.toArtifact( "groupId/jars/-1.0.jar" );
+ fail( "Should have detected artifactId is missing" );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
+
+ try
+ {
+ layout.toArtifact( "groupId/jars/1.0.jar" );
+ fail( "Should have detected artifactId is missing" );
+ }
+ catch ( LayoutException e )
+ {
+ /* expected path */
+ }
}
}
Modified: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/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-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java?view=diff&rev=525176&r1=525175&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/layout/RepositoryLayoutUtilsTest.java Tue Apr 3 08:21:33 2007
@@ -31,66 +31,72 @@
{
public void testSplitFilenameBasic() throws LayoutException
{
- assertSplit( RepositoryLayoutUtils.splitFilename( "commons-lang-2.1.jar", "commons-lang" ), "commons-lang",
- "2.1", "", "jar" );
+ assertFilenameParts( RepositoryLayoutUtils.splitFilename( "commons-lang-2.1.jar", "commons-lang" ),
+ "commons-lang", "2.1", null, "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" );
+ assertFilenameParts( RepositoryLayoutUtils.splitFilename( "commons-lang-2.0-alpha-1.jar", "commons-lang" ),
+ "commons-lang", "2.0-alpha-1", null, "jar" );
}
public void testSplitFilenameSnapshot() throws LayoutException
{
- assertSplit( RepositoryLayoutUtils.splitFilename( "foo-2.0-SNAPSHOT.jar", "foo" ), "foo", "2.0-SNAPSHOT", "",
- "jar" );
+ assertFilenameParts( RepositoryLayoutUtils.splitFilename( "foo-2.0-SNAPSHOT.jar", "foo" ), "foo",
+ "2.0-SNAPSHOT", null, "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" );
+ assertFilenameParts( RepositoryLayoutUtils.splitFilename( "fletch-2.0-20060822-123456-35.tar.gz", "fletch" ),
+ "fletch", "2.0-20060822-123456-35", null, "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" );
+ assertFilenameParts( RepositoryLayoutUtils.splitFilename( "commons-lang-2.1-sources.jar", "commons-lang" ),
+ "commons-lang", "2.1", "sources", "jar" );
+ assertFilenameParts( 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" );
+ assertFilenameParts( RepositoryLayoutUtils.splitFilename( "commons-lang-2.0-alpha-1-sources.jar",
+ "commons-lang" ), "commons-lang", "2.0-alpha-1",
+ "sources", "jar" );
+ assertFilenameParts( 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" );
+ assertFilenameParts( RepositoryLayoutUtils.splitFilename( "commons-lang-3.1-SNAPSHOT-sources.jar",
+ "commons-lang" ), "commons-lang", "3.1-SNAPSHOT",
+ "sources", "jar" );
+ assertFilenameParts( 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" );
+ assertFilenameParts( RepositoryLayoutUtils.splitFilename( "commons-lang-3.1-SNAPSHOT-sources.jar",
+ "commons-lang" ), "commons-lang", "3.1-SNAPSHOT",
+ "sources", "jar" );
+ assertFilenameParts( 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" );
+ assertFilenameParts( RepositoryLayoutUtils.splitFilename( "cxf-common-2.0-incubator-M1.pom", null ),
+ "cxf-common", "2.0-incubator-M1", null, "pom" );
+ assertFilenameParts( RepositoryLayoutUtils.splitFilename( "commonj-api_r1.1-1.0-incubator-M2.jar", null ),
+ "commonj-api_r1.1", "1.0-incubator-M2", null, "jar" );
}
public void testSplitFilenameBlankInputs()
@@ -108,7 +114,7 @@
{
fail( "Should have thrown an IllegalArgumentException." );
}
-
+
try
{
RepositoryLayoutUtils.splitFilename( "", null );
@@ -122,7 +128,7 @@
{
fail( "Should have thrown an IllegalArgumentException." );
}
-
+
try
{
RepositoryLayoutUtils.splitFilename( " ", null );
@@ -136,7 +142,7 @@
{
fail( "Should have thrown an IllegalArgumentException." );
}
-
+
try
{
RepositoryLayoutUtils.splitFilename( " \t \n ", null );
@@ -151,7 +157,7 @@
fail( "Should have thrown an IllegalArgumentException." );
}
}
-
+
public void testSplitFilenameBadInputs()
{
try
@@ -163,7 +169,7 @@
{
/* Expected Path */
}
-
+
try
{
RepositoryLayoutUtils.splitFilename( "geronimo-store", null );
@@ -173,7 +179,7 @@
{
/* Expected Path */
}
-
+
try
{
RepositoryLayoutUtils.splitFilename( "The Sixth Sick Sheiks Sixth Sheep is Sick.", null );
@@ -183,7 +189,7 @@
{
/* Expected Path */
}
-
+
try
{
RepositoryLayoutUtils.splitFilename( "1.0.jar", null );
@@ -195,12 +201,12 @@
}
}
- private void assertSplit( String[] actualSplit, String artifactId, String version, String classifier,
- String extension )
+ private void assertFilenameParts( FilenameParts actualParts, 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] );
+ assertEquals( "Split - artifactId", artifactId, actualParts.artifactId );
+ assertEquals( "Split - version", version, actualParts.version );
+ assertEquals( "Split - classifier", classifier, actualParts.classifier );
+ assertEquals( "Split - extension", extension, actualParts.extension );
}
}
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/AllTests.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/AllTests.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/AllTests.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/AllTests.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,43 @@
+package org.apache.maven.archiva.repository.metadata;
+
+/*
+ * 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.Test;
+import junit.framework.TestSuite;
+
+/**
+ * AllTests
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class AllTests
+{
+
+ public static Test suite()
+ {
+ TestSuite suite = new TestSuite( "Test for org.apache.maven.archiva.repository.metadata" );
+ //$JUnit-BEGIN$
+ suite.addTestSuite( RepositoryMetadataReaderTest.class );
+ //$JUnit-END$
+ return suite;
+ }
+
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/AllTests.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/AllTests.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/metadata/AllTests.java
------------------------------------------------------------------------------
svn:mime-type = text/plain