diff options
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java')
-rw-r--r-- | framework/src/maven/apache-maven-3.3.3/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java b/framework/src/maven/apache-maven-3.3.3/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java new file mode 100644 index 00000000..bf199218 --- /dev/null +++ b/framework/src/maven/apache-maven-3.3.3/maven-compat/src/main/java/org/apache/maven/artifact/repository/metadata/MetadataBridge.java @@ -0,0 +1,172 @@ +package org.apache.maven.artifact.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 java.io.File; +import java.util.Collections; +import java.util.Map; + +import org.apache.maven.artifact.metadata.ArtifactMetadata; +import org.apache.maven.artifact.repository.ArtifactRepository; +import org.apache.maven.artifact.repository.DefaultArtifactRepository; +import org.codehaus.plexus.util.FileUtils; +import org.eclipse.aether.RepositoryException; +import org.eclipse.aether.metadata.AbstractMetadata; +import org.eclipse.aether.metadata.MergeableMetadata; +import org.eclipse.aether.metadata.Metadata; + +/** + * <strong>Warning:</strong> This is an internal utility class that is only public for technical reasons, it is not part + * of the public API. In particular, this class can be changed or deleted without prior notice. + * + * @author Benjamin Bentmann + */ +public final class MetadataBridge + extends AbstractMetadata + implements MergeableMetadata +{ + + private ArtifactMetadata metadata; + + private boolean merged; + + public MetadataBridge( ArtifactMetadata metadata ) + { + this.metadata = metadata; + } + + public void merge( File current, File result ) + throws RepositoryException + { + try + { + if ( current.exists() ) + { + FileUtils.copyFile( current, result ); + } + ArtifactRepository localRepo = new MetadataRepository( result ); + metadata.storeInLocalRepository( localRepo, localRepo ); + merged = true; + } + catch ( Exception e ) + { + throw new RepositoryException( e.getMessage(), e ); + } + } + + public boolean isMerged() + { + return merged; + } + + public String getGroupId() + { + return emptify( metadata.getGroupId() ); + } + + public String getArtifactId() + { + return metadata.storedInGroupDirectory() ? "" : emptify( metadata.getArtifactId() ); + } + + public String getVersion() + { + return metadata.storedInArtifactVersionDirectory() ? emptify( metadata.getBaseVersion() ) : ""; + } + + public String getType() + { + return metadata.getRemoteFilename(); + } + + private String emptify( String string ) + { + return ( string != null ) ? string : ""; + } + + public File getFile() + { + return null; + } + + public MetadataBridge setFile( File file ) + { + return this; + } + + public Nature getNature() + { + if ( metadata instanceof RepositoryMetadata ) + { + switch ( ( (RepositoryMetadata) metadata ).getNature() ) + { + case RepositoryMetadata.RELEASE_OR_SNAPSHOT: + return Nature.RELEASE_OR_SNAPSHOT; + case RepositoryMetadata.SNAPSHOT: + return Nature.SNAPSHOT; + default: + return Nature.RELEASE; + } + } + else + { + return Nature.RELEASE; + } + } + + public Map<String, String> getProperties() + { + return Collections.emptyMap(); + } + + @Override + public Metadata setProperties( Map<String, String> properties ) + { + return this; + } + + @SuppressWarnings( "deprecation" ) + static class MetadataRepository + extends DefaultArtifactRepository + { + + private File metadataFile; + + public MetadataRepository( File metadataFile ) + { + super( "local", "", null ); + this.metadataFile = metadataFile; + } + + @Override + public String getBasedir() + { + return metadataFile.getParent(); + } + + @Override + public String pathOfLocalRepositoryMetadata( ArtifactMetadata metadata, ArtifactRepository repository ) + { + return metadataFile.getName(); + } + + } + +} |