diff options
author | Olivier Lamy <olamy@apache.org> | 2012-03-11 23:58:01 +0000 |
---|---|---|
committer | Olivier Lamy <olamy@apache.org> | 2012-03-11 23:58:01 +0000 |
commit | cf74f31f832b0a175b5063299f9abd19349967a3 (patch) | |
tree | 6c451dc52ac8fc3b014e2f33928aee61629f035a /archiva-modules/archiva-base | |
parent | f2557bd4765f0e6e63c5acc3c97923ae026ba489 (diff) | |
download | archiva-cf74f31f832b0a175b5063299f9abd19349967a3.tar.gz archiva-cf74f31f832b0a175b5063299f9abd19349967a3.zip |
[MRM-1567] Artifact data incomplete.
move MavenMetadataReader to a new module to avoid cyclic dependency.
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1299489 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'archiva-modules/archiva-base')
9 files changed, 193 insertions, 70 deletions
diff --git a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java index 45d62658e..6c42176b9 100644 --- a/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java +++ b/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/archiva/consumers/core/repository/CleanupReleasedSnapshotsRepositoryPurge.java @@ -27,7 +27,6 @@ import org.apache.archiva.metadata.repository.RepositorySession; import org.apache.archiva.repository.events.RepositoryListener; import org.apache.archiva.common.utils.VersionComparator; import org.apache.archiva.common.utils.VersionUtil; -import org.apache.archiva.model.ArchivaArtifact; import org.apache.archiva.model.ArtifactReference; import org.apache.archiva.model.ProjectReference; import org.apache.archiva.model.VersionedReference; diff --git a/archiva-modules/archiva-base/archiva-maven2-metadata/pom.xml b/archiva-modules/archiva-base/archiva-maven2-metadata/pom.xml new file mode 100644 index 000000000..14da7c7ff --- /dev/null +++ b/archiva-modules/archiva-base/archiva-maven2-metadata/pom.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>archiva-base</artifactId>
+ <groupId>org.apache.archiva</groupId>
+ <version>1.4-M3-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>archiva-maven2-metadata</artifactId>
+ <version>1.4-M3-SNAPSHOT</version>
+
+ <name>archiva-maven2-metadata</name>
+
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-model</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.archiva</groupId>
+ <artifactId>archiva-xml-tools</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
diff --git a/archiva-modules/archiva-base/archiva-maven2-metadata/src/main/java/org/apache/archiva/maven2/metadata/MavenMetadataReader.java b/archiva-modules/archiva-base/archiva-maven2-metadata/src/main/java/org/apache/archiva/maven2/metadata/MavenMetadataReader.java new file mode 100644 index 000000000..ade5a1fc0 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-maven2-metadata/src/main/java/org/apache/archiva/maven2/metadata/MavenMetadataReader.java @@ -0,0 +1,114 @@ +package org.apache.archiva.maven2.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.archiva.model.ArchivaRepositoryMetadata; +import org.apache.archiva.model.Plugin; +import org.apache.archiva.model.SnapshotVersion; +import org.apache.archiva.xml.XMLException; +import org.apache.archiva.xml.XMLReader; +import org.apache.commons.lang.math.NumberUtils; +import org.dom4j.Element; + +import java.io.File; +import java.util.Date; + +/** + * @author Olivier Lamy + * @since 1.4-M3 + */ +public class MavenMetadataReader +{ + /* + <?xml version="1.0" encoding="UTF-8"?> + <metadata modelVersion="1.1.0"> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva</artifactId> + <version>1.4-M3-SNAPSHOT</version> + <versioning> + <snapshot> + <timestamp>20120310.230917</timestamp> + <buildNumber>2</buildNumber> + </snapshot> + <lastUpdated>20120310230917</lastUpdated> + <snapshotVersions> + <snapshotVersion> + <extension>pom</extension> + <value>1.4-M3-20120310.230917-2</value> + <updated>20120310230917</updated> + </snapshotVersion> + </snapshotVersions> + </versioning> + </metadata> + */ + + /** + * Read and return the {@link org.apache.archiva.model.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 XMLException + */ + public static ArchivaRepositoryMetadata read( File metadataFile ) + throws XMLException + { + + XMLReader xml = new XMLReader( "metadata", metadataFile ); + // invoke this to remove namespaces, see MRM-1136 + xml.removeNamespaces(); + + ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); + + metadata.setGroupId( xml.getElementText( "//metadata/groupId" ) ); + metadata.setArtifactId( xml.getElementText( "//metadata/artifactId" ) ); + metadata.setVersion( xml.getElementText( "//metadata/version" ) ); + metadata.setFileLastModified( new Date( metadataFile.lastModified() ) ); + metadata.setFileSize( metadataFile.length() ); + + metadata.setLastUpdated( xml.getElementText( "//metadata/versioning/lastUpdated" ) ); + metadata.setLatestVersion( xml.getElementText( "//metadata/versioning/latest" ) ); + metadata.setReleasedVersion( xml.getElementText( "//metadata/versioning/release" ) ); + metadata.setAvailableVersions( xml.getElementListText( "//metadata/versioning/versions/version" ) ); + + Element snapshotElem = xml.getElement( "//metadata/versioning/snapshot" ); + if ( snapshotElem != null ) + { + SnapshotVersion snapshot = new SnapshotVersion(); + snapshot.setTimestamp( snapshotElem.elementTextTrim( "timestamp" ) ); + String tmp = snapshotElem.elementTextTrim( "buildNumber" ); + if ( NumberUtils.isNumber( tmp ) ) + { + snapshot.setBuildNumber( NumberUtils.toInt( tmp ) ); + } + metadata.setSnapshotVersion( snapshot ); + } + + for ( Element plugin : xml.getElementList( "//metadata/plugins/plugin" ) ) + { + Plugin p = new Plugin(); + p.setPrefix( plugin.elementTextTrim( "prefix" ) ); + p.setArtifactId( plugin.elementTextTrim( "artifactId" ) ); + p.setName( plugin.elementTextTrim( "name" ) ); + metadata.addPlugin( p ); + } + + return metadata; + + } +} diff --git a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java index 928b669e1..b2f289953 100644 --- a/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java +++ b/archiva-modules/archiva-base/archiva-proxy/src/test/java/org/apache/archiva/proxy/MetadataTransferTest.java @@ -38,7 +38,6 @@ import org.apache.archiva.repository.metadata.RepositoryMetadataWriter; import org.apache.maven.wagon.TransferFailedException; import org.custommonkey.xmlunit.DetailedDiff; import org.custommonkey.xmlunit.Diff; -import org.junit.Before; import org.junit.Test; import java.io.File; diff --git a/archiva-modules/archiva-base/archiva-repository-layer/pom.xml b/archiva-modules/archiva-base/archiva-repository-layer/pom.xml index ed65056c5..518647ea1 100644 --- a/archiva-modules/archiva-base/archiva-repository-layer/pom.xml +++ b/archiva-modules/archiva-base/archiva-repository-layer/pom.xml @@ -54,6 +54,10 @@ <artifactId>archiva-xml-tools</artifactId> </dependency> <dependency> + <groupId>org.apache.archiva</groupId> + <artifactId>archiva-maven2-metadata</artifactId> + </dependency> + <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataException.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataException.java index f364bb1fd..d20da9fd2 100644 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataException.java +++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataException.java @@ -22,11 +22,12 @@ package org.apache.archiva.repository.metadata; import org.apache.archiva.repository.RepositoryException; /** - * RepositoryMetadataException + * RepositoryMetadataException * * @version $Id$ */ -public class RepositoryMetadataException extends RepositoryException +public class RepositoryMetadataException + extends RepositoryException { public RepositoryMetadataException() diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataReader.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataReader.java index e8a5eaa88..160afc1a8 100644 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataReader.java +++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataReader.java @@ -19,27 +19,24 @@ package org.apache.archiva.repository.metadata; * under the License. */ -import java.io.File; -import java.util.Date; - -import org.apache.commons.lang.math.NumberUtils; +import org.apache.archiva.maven2.metadata.MavenMetadataReader; import org.apache.archiva.model.ArchivaRepositoryMetadata; -import org.apache.archiva.model.Plugin; -import org.apache.archiva.model.SnapshotVersion; import org.apache.archiva.xml.XMLException; -import org.apache.archiva.xml.XMLReader; -import org.dom4j.Element; + +import java.io.File; /** * RepositoryMetadataReader - read maven-metadata.xml files. * * @version $Id$ + * @deprecated use {@link MavenMetadataReader} */ 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 @@ -49,46 +46,7 @@ public class RepositoryMetadataReader { try { - XMLReader xml = new XMLReader( "metadata", metadataFile ); - // invoke this to remove namespaces, see MRM-1136 - xml.removeNamespaces(); - - ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); - - metadata.setGroupId( xml.getElementText( "//metadata/groupId" ) ); - metadata.setArtifactId( xml.getElementText( "//metadata/artifactId" ) ); - metadata.setVersion( xml.getElementText( "//metadata/version" ) ); - metadata.setFileLastModified( new Date( metadataFile.lastModified() ) ); - metadata.setFileSize( metadataFile.length() ); - - metadata.setLastUpdated( xml.getElementText( "//metadata/versioning/lastUpdated" ) ); - metadata.setLatestVersion( xml.getElementText( "//metadata/versioning/latest" ) ); - metadata.setReleasedVersion( xml.getElementText( "//metadata/versioning/release" ) ); - metadata.setAvailableVersions( xml.getElementListText( "//metadata/versioning/versions/version" ) ); - - Element snapshotElem = xml.getElement( "//metadata/versioning/snapshot" ); - if ( snapshotElem != null ) - { - SnapshotVersion snapshot = new SnapshotVersion(); - snapshot.setTimestamp( snapshotElem.elementTextTrim( "timestamp" ) ); - String tmp = snapshotElem.elementTextTrim( "buildNumber" ); - if( NumberUtils.isNumber( tmp )) - { - snapshot.setBuildNumber( NumberUtils.toInt( tmp ) ); - } - metadata.setSnapshotVersion( snapshot ); - } - - for ( Element plugin : xml.getElementList( "//metadata/plugins/plugin" ) ) - { - Plugin p = new Plugin(); - p.setPrefix( plugin.elementTextTrim( "prefix" ) ); - p.setArtifactId( plugin.elementTextTrim( "artifactId" ) ); - p.setName( plugin.elementTextTrim( "name" ) ); - metadata.addPlugin( p ); - } - - return metadata; + return MavenMetadataReader.read( metadataFile ); } catch ( XMLException e ) { diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataWriter.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataWriter.java index 38146b6c7..2ab57b942 100644 --- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataWriter.java +++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/metadata/RepositoryMetadataWriter.java @@ -19,13 +19,14 @@ package org.apache.archiva.repository.metadata; * under the License. */ -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringUtils; import org.apache.archiva.model.ArchivaRepositoryMetadata; import org.apache.archiva.model.Plugin; import org.apache.archiva.xml.XMLException; import org.apache.archiva.xml.XMLWriter; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; +import org.apache.commons.lang.StringUtils; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; @@ -36,10 +37,9 @@ import java.io.IOException; import java.io.Writer; import java.util.Iterator; import java.util.List; -import org.apache.commons.io.FileUtils; /** - * RepositoryMetadataWriter + * RepositoryMetadataWriter * * @version $Id$ */ @@ -59,15 +59,15 @@ public class RepositoryMetadataWriter catch ( IOException e ) { thrown = true; - throw new RepositoryMetadataException( "Unable to write metadata file: " + outputFile.getAbsolutePath() - + " - " + e.getMessage(), e ); + throw new RepositoryMetadataException( + "Unable to write metadata file: " + outputFile.getAbsolutePath() + " - " + e.getMessage(), e ); } finally { IOUtils.closeQuietly( writer ); - if (thrown) + if ( thrown ) { - FileUtils.deleteQuietly(outputFile); + FileUtils.deleteQuietly( outputFile ); } } } @@ -80,14 +80,14 @@ public class RepositoryMetadataWriter Element root = DocumentHelper.createElement( "metadata" ); doc.setRootElement( root ); - addOptionalElementText( root, "groupId", metadata.getGroupId()); + addOptionalElementText( root, "groupId", metadata.getGroupId() ); addOptionalElementText( root, "artifactId", metadata.getArtifactId() ); addOptionalElementText( root, "version", metadata.getVersion() ); if ( CollectionUtils.isNotEmpty( metadata.getPlugins() ) ) { Element plugins = root.addElement( "plugins" ); - for ( Plugin plugin : (List<Plugin>)metadata.getPlugins() ) + for ( Plugin plugin : (List<Plugin>) metadata.getPlugins() ) { Element p = plugins.addElement( "plugin" ); p.addElement( "prefix" ).setText( plugin.getPrefix() ); @@ -96,9 +96,8 @@ public class RepositoryMetadataWriter } } - if ( CollectionUtils.isNotEmpty( metadata.getAvailableVersions() ) - || StringUtils.isNotBlank( metadata.getReleasedVersion() ) - || StringUtils.isNotBlank( metadata.getLatestVersion() ) + if ( CollectionUtils.isNotEmpty( metadata.getAvailableVersions() ) || StringUtils.isNotBlank( + metadata.getReleasedVersion() ) || StringUtils.isNotBlank( metadata.getLatestVersion() ) || StringUtils.isNotBlank( metadata.getLastUpdated() ) || ( metadata.getSnapshotVersion() != null ) ) { Element versioning = root.addElement( "versioning" ); @@ -113,7 +112,7 @@ public class RepositoryMetadataWriter addOptionalElementText( snapshot, "buildNumber", bnum ); addOptionalElementText( snapshot, "timestamp", metadata.getSnapshotVersion().getTimestamp() ); } - + if ( CollectionUtils.isNotEmpty( metadata.getAvailableVersions() ) ) { Element versions = versioning.addElement( "versions" ); diff --git a/archiva-modules/archiva-base/pom.xml b/archiva-modules/archiva-base/pom.xml index 46be8536c..1431d932a 100644 --- a/archiva-modules/archiva-base/pom.xml +++ b/archiva-modules/archiva-base/pom.xml @@ -16,8 +16,7 @@ ~ KIND, either express or implied. See the License for the ~ specific language governing permissions and limitations ~ under the License. - --> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + --><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.archiva</groupId> @@ -48,5 +47,6 @@ <module>archiva-repository-scanner</module> <module>archiva-repository-admin</module> <module>archiva-security-common</module> + <module>archiva-maven2-metadata</module> </modules> </project>
\ No newline at end of file |