public static ArchivaRepositoryMetadata merge( final ArchivaRepositoryMetadata mainMetadata, final ArchivaRepositoryMetadata sourceMetadata ) throws RepositoryMetadataException { if ( mainMetadata == null ) { throw new RepositoryMetadataException( "Cannot merge a null main project." ); } if ( sourceMetadata == null ) { throw new RepositoryMetadataException( "Cannot copy to a null parent project." ); } ArchivaRepositoryMetadata merged = new ArchivaRepositoryMetadata(); merged.setGroupId( merge( mainMetadata.getGroupId(), sourceMetadata.getGroupId() ) ); merged.setArtifactId( merge(mainMetadata.getArtifactId(), sourceMetadata.getArtifactId())); merged.setVersion( merge(mainMetadata.getVersion(), sourceMetadata.getVersion()) ); merged.setReleasedVersion( merge( mainMetadata.getReleasedVersion(), sourceMetadata.getReleasedVersion() ) ); merged.setSnapshotVersion( merge( mainMetadata.getSnapshotVersion(), sourceMetadata.getSnapshotVersion() ) ); merged.setAvailableVersions( mergeAvailableVersions( mainMetadata.getAvailableVersions(), sourceMetadata.getAvailableVersions() ) ); merged.setPlugins( mergePlugins( mainMetadata.getPlugins(), sourceMetadata.getPlugins() ) ); //Don't set if merge was not possible long lastUpdated = mergeTimestamp( mainMetadata.getLastUpdated(), sourceMetadata.getLastUpdated()); if (lastUpdated > -1) { merged.setLastUpdated( Long.toString(lastUpdated) ); } return merged; }
/** * Update version level metadata for snapshot artifacts. If it does not exist, create the metadata and fix checksums * if necessary. */ private void updateVersionMetadata( ArchivaRepositoryMetadata metadata, Path metadataFile, Date lastUpdatedTimestamp, String timestamp, int buildNumber, boolean fixChecksums, FileMetadata fileMetadata, String groupId, String artifactId, String version, String packaging ) throws RepositoryMetadataException { if ( !Files.exists(metadataFile) ) { metadata.setGroupId( groupId ); metadata.setArtifactId( artifactId ); metadata.setVersion( version ); } if ( metadata.getSnapshotVersion() == null ) { metadata.setSnapshotVersion( new SnapshotVersion() ); } metadata.getSnapshotVersion().setBuildNumber( buildNumber ); metadata.getSnapshotVersion().setTimestamp( timestamp ); metadata.setLastUpdatedTimestamp( lastUpdatedTimestamp ); RepositoryMetadataWriter.write( metadata, metadataFile ); if ( fixChecksums ) { fixChecksums( metadataFile ); } }
/** * Method equals. * * @param other * @return boolean */ public boolean equals( Object other ) { if ( this == other ) { return true; } if ( !( other instanceof ArchivaRepositoryMetadata ) ) { return false; } ArchivaRepositoryMetadata that = (ArchivaRepositoryMetadata) other; boolean result = true; result = result && ( getGroupId() == null ? that.getGroupId() == null : getGroupId().equals( that.getGroupId() ) ); result = result && ( getArtifactId() == null ? that.getArtifactId() == null : getArtifactId().equals( that.getArtifactId() ) ); result = result && ( getVersion() == null ? that.getVersion() == null : getVersion().equals( that.getVersion() ) ); return result; } //-- boolean equals( Object )
private void updateVersionMetadata( Path versionMetaDataFileInTargetRepo, ArtifactMetadata artifactMetadata, Date lastUpdatedTimestamp ) throws RepositoryMetadataException { ArchivaRepositoryMetadata versionMetadata = getMetadata( versionMetaDataFileInTargetRepo ); if ( !Files.exists(versionMetaDataFileInTargetRepo) ) { versionMetadata.setGroupId( artifactMetadata.getNamespace() ); versionMetadata.setArtifactId( artifactMetadata.getProject() ); versionMetadata.setVersion( artifactMetadata.getProjectVersion() ); } versionMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp ); RepositoryMetadataWriter.write( versionMetadata, versionMetaDataFileInTargetRepo ); }
availableVersions = projectMetadata.getAvailableVersions(); projectMetadata.setGroupId( groupId ); projectMetadata.setArtifactId( artifactId ); if ( projectMetadata.getGroupId() == null ) projectMetadata.setGroupId( groupId ); if ( projectMetadata.getArtifactId() == null ) projectMetadata.setArtifactId( artifactId ); projectMetadata.setLatestVersion( latestVersion ); projectMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp ); projectMetadata.setAvailableVersions( availableVersions ); projectMetadata.setReleasedVersion( latestVersion );
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" ) ); metadata.setSnapshotVersion( snapshot ); p.setArtifactId( plugin.elementTextTrim( "artifactId" ) ); p.setName( plugin.elementTextTrim( "name" ) ); metadata.addPlugin( p );
ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); metadata.setGroupId( reference.getGroupId() ); metadata.setArtifactId( reference.getArtifactId() ); allPlugins = new LinkedHashSet<Plugin>( MavenMetadataReader.read( metadataFile ).getPlugins() ); if ( proxyMetadata != null ) allVersions.addAll( proxyMetadata.getAvailableVersions() ); allPlugins.addAll( proxyMetadata.getPlugins() ); long proxyLastUpdated = getLastUpdated( proxyMetadata ); metadata.setPlugins( new ArrayList<>( allPlugins ) ); metadata.setGroupId( metadata.getGroupId() + "." + metadata.getArtifactId() ); metadata.setArtifactId( null ); metadata.setLastUpdatedTimestamp( toLastUpdatedDate( lastUpdated ) );
addOptionalElementText( root, "groupId", metadata.getGroupId() ); addOptionalElementText( root, "artifactId", metadata.getArtifactId() ); addOptionalElementText( root, "version", metadata.getVersion() ); if ( CollectionUtils.isNotEmpty( metadata.getPlugins() ) ) List<Plugin> pluginList = metadata.getPlugins(); Collections.sort( pluginList, PluginComparator.INSTANCE ); for ( Plugin plugin : metadata.getPlugins() ) if ( CollectionUtils.isNotEmpty( metadata.getAvailableVersions() ) // || StringUtils.isNotBlank( metadata.getReleasedVersion() ) // || StringUtils.isNotBlank( metadata.getLatestVersion() ) // || StringUtils.isNotBlank( metadata.getLastUpdated() ) // || ( metadata.getSnapshotVersion() != null ) ) addOptionalElementText( versioning, "latest", metadata.getLatestVersion() ); addOptionalElementText( versioning, "release", metadata.getReleasedVersion() ); if ( metadata.getSnapshotVersion() != null ) String bnum = String.valueOf( metadata.getSnapshotVersion().getBuildNumber() ); addOptionalElementText( snapshot, "buildNumber", bnum ); addOptionalElementText( snapshot, "timestamp", metadata.getSnapshotVersion().getTimestamp() ); if ( CollectionUtils.isNotEmpty( metadata.getAvailableVersions() ) ) Iterator<String> it = metadata.getAvailableVersions().iterator();
metadata.setAvailableVersions( sortedVersions ); metadata.setLatestVersion( latestVersion ); metadata.setReleasedVersion( releaseVersion );
private ArchivaRepositoryMetadata getMetadata( Path metadataFile ) throws RepositoryMetadataException { ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); if ( Files.exists(metadataFile) ) { try { metadata = MavenMetadataReader.read( metadataFile ); } catch ( XMLException e ) { throw new RepositoryMetadataException( e.getMessage(), e ); } } return metadata; }
/** * Method addAvailableVersion. * * @param string */ public void addAvailableVersion( String string ) { getAvailableVersions().add( string ); } //-- void addAvailableVersion( String )
private boolean isProject( Path dir, Filter<String> filter ) { // scan directories for a valid project version subdirectory, meaning this must be a project directory final Predicate<Path> dFilter = new DirectoryFilter(filter); try(Stream<Path> stream = Files.list(dir)) { boolean projFound = stream.filter(dFilter) .anyMatch(path -> isProjectVersion(path)); if (projFound) { return true; } } catch (IOException e) { LOGGER.error("Could not read directory list {}: {}", dir, e.getMessage(), e); } // if a metadata file is present, check if this is the "artifactId" directory, marking it as a project ArchivaRepositoryMetadata metadata = readMetadata( dir ); if ( metadata != null && dir.getFileName().toString().equals( metadata.getArtifactId() ) ) { return true; } return false; }
public void updateTimestamp() { setLastUpdatedTimestamp( new java.util.Date() ); }
availableVersions = projectMetadata.getAvailableVersions(); projectMetadata.setGroupId( groupId ); projectMetadata.setArtifactId( artifactId ); if ( projectMetadata.getGroupId() == null ) projectMetadata.setGroupId( groupId ); if ( projectMetadata.getArtifactId() == null ) projectMetadata.setArtifactId( artifactId ); projectMetadata.setLatestVersion( latestVersion ); projectMetadata.setLastUpdatedTimestamp( lastUpdatedTimestamp ); projectMetadata.setAvailableVersions( availableVersions ); projectMetadata.setReleasedVersion( latestVersion );
ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); metadata.setGroupId( xml.getElementText( "//metadata/groupId" ) ); metadata.setArtifactId( xml.getElementText( "//metadata/artifactId" ) ); metadata.setVersion( xml.getElementText( "//metadata/version" ) ); Date modTime; try log.error("Could not read modification time of {}", metadataFile); metadata.setFileLastModified( modTime ); try metadata.setFileSize( Files.size( metadataFile ) ); metadata.setFileSize( 0 ); log.error("Could not read file size of {}", metadataFile); 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" ) ); metadata.setSnapshotVersion( snapshot ); p.setArtifactId( plugin.elementTextTrim( "artifactId" ) ); p.setName( plugin.elementTextTrim( "name" ) ); metadata.addPlugin( p );
/** * Method equals. * * @param other * @return boolean */ public boolean equals( Object other ) { if ( this == other ) { return true; } if ( !( other instanceof ArchivaRepositoryMetadata ) ) { return false; } ArchivaRepositoryMetadata that = (ArchivaRepositoryMetadata) other; boolean result = true; result = result && ( getGroupId() == null ? that.getGroupId() == null : getGroupId().equals( that.getGroupId() ) ); result = result && ( getArtifactId() == null ? that.getArtifactId() == null : getArtifactId().equals( that.getArtifactId() ) ); result = result && ( getVersion() == null ? that.getVersion() == null : getVersion().equals( that.getVersion() ) ); return result; } //-- boolean equals( Object )
private ArchivaRepositoryMetadata getMetadata( Path metadataFile ) throws RepositoryMetadataException { ArchivaRepositoryMetadata metadata = new ArchivaRepositoryMetadata(); if ( Files.exists(metadataFile) ) { try { metadata = MavenMetadataReader.read( metadataFile ); } catch ( XMLException e ) { throw new RepositoryMetadataException( e.getMessage(), e ); } } return metadata; }
/** * Method addAvailableVersion. * * @param string */ public void addAvailableVersion( String string ) { getAvailableVersions().add( string ); } //-- void addAvailableVersion( String )
private boolean isProject( File dir, Filter<String> filter ) { // scan directories for a valid project version subdirectory, meaning this must be a project directory File[] files = dir.listFiles( new DirectoryFilter( filter ) ); if ( files != null ) { for ( File file : files ) { if ( isProjectVersion( file ) ) { return true; } } } // if a metadata file is present, check if this is the "artifactId" directory, marking it as a project ArchivaRepositoryMetadata metadata = readMetadata( dir ); if ( metadata != null && dir.getName().equals( metadata.getArtifactId() ) ) { return true; } return false; }
public void updateTimestamp() { setLastUpdatedTimestamp( new java.util.Date() ); }