]> source.dussan.org Git - archiva.git/blob
b1639aac1e0d4b00cdd633b75a762f7310de2d6b
[archiva.git] /
1 package org.apache.maven.archiva.repository.metadata;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.commons.lang.math.NumberUtils;
23 import org.apache.maven.archiva.model.ArchivaRepositoryMetadata;
24 import org.apache.maven.archiva.model.Plugin;
25 import org.apache.maven.archiva.model.SnapshotVersion;
26 import org.apache.maven.archiva.xml.XMLException;
27 import org.apache.maven.archiva.xml.XMLReader;
28 import org.dom4j.Element;
29
30 import java.io.File;
31 import java.util.Date;
32
33 /**
34  * RepositoryMetadataReader - read maven-metadata.xml files.
35  *
36  * @version $Id$
37  */
38 public class RepositoryMetadataReader
39 {
40     /**
41      * Read and return the {@link ArchivaRepositoryMetadata} object from the provided xml file.
42      * 
43      * @param metadataFile the maven-metadata.xml file to read.
44      * @return the archiva repository metadata object that represents the provided file contents.
45      * @throws RepositoryMetadataException
46      */
47     public static ArchivaRepositoryMetadata read( File metadataFile )
48         throws RepositoryMetadataException
49     {
50         try
51         {
52             XMLReader xml = new XMLReader( "metadata", metadataFile );
53
54             ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata();
55
56             metadata.setGroupId( xml.getElementText( "//metadata/groupId" ) );
57             metadata.setArtifactId( xml.getElementText( "//metadata/artifactId" ) );
58             metadata.setVersion( xml.getElementText( "//metadata/version" ) );
59             metadata.setFileLastModified( new Date( metadataFile.lastModified() ) );
60             metadata.setFileSize( metadataFile.length() );
61             metadata.setWhenIndexed( null );
62
63             metadata.setLastUpdated( xml.getElementText( "//metadata/versioning/lastUpdated" ) );
64             metadata.setLatestVersion( xml.getElementText( "//metadata/versioning/latest" ) );
65             metadata.setReleasedVersion( xml.getElementText( "//metadata/versioning/release" ) );
66             metadata.setAvailableVersions( xml.getElementListText( "//metadata/versioning/versions/version" ) );
67
68             Element snapshotElem = xml.getElement( "//metadata/versioning/snapshot" );
69             if ( snapshotElem != null )
70             {
71                 SnapshotVersion snapshot = new SnapshotVersion();
72                 snapshot.setTimestamp( snapshotElem.elementTextTrim( "timestamp" ) );
73                 String tmp = snapshotElem.elementTextTrim( "buildNumber" );
74                 if( NumberUtils.isNumber( tmp ))
75                 {
76                     snapshot.setBuildNumber( NumberUtils.toInt( tmp ) );
77                 }
78                 metadata.setSnapshotVersion( snapshot );
79             }
80
81             for ( Element plugin : xml.getElementList( "//metadata/plugins/plugin" ) )
82             {
83                 Plugin p = new Plugin();
84                 p.setPrefix( plugin.elementTextTrim( "prefix" ) );
85                 p.setArtifactId( plugin.elementTextTrim( "artifactId" ) );
86                 p.setName( plugin.elementTextTrim( "name" ) );
87                 metadata.addPlugin( p );
88             }
89
90             return metadata;
91         }
92         catch ( XMLException e )
93         {
94             throw new RepositoryMetadataException( e.getMessage(), e );
95         }
96     }
97 }