diff options
author | Martin Stockhammer <martin_s@apache.org> | 2020-02-12 08:41:22 +0100 |
---|---|---|
committer | Martin Stockhammer <martin_s@apache.org> | 2020-02-12 08:41:22 +0100 |
commit | 15187ea422859c2f660f03320fc8b93911a8eef9 (patch) | |
tree | 5aa7789032a8f01964c39233775ac5ba0f00904b /archiva-modules/archiva-base/archiva-repository-api | |
parent | 8fc137a6bd83d4bed20ce9587bc6dcbb9c074ce5 (diff) | |
download | archiva-15187ea422859c2f660f03320fc8b93911a8eef9.tar.gz archiva-15187ea422859c2f660f03320fc8b93911a8eef9.zip |
Updating content item api
Diffstat (limited to 'archiva-modules/archiva-base/archiva-repository-api')
5 files changed, 107 insertions, 70 deletions
diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedConversionException.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedConversionException.java new file mode 100644 index 000000000..f675ea0f0 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/UnsupportedConversionException.java @@ -0,0 +1,45 @@ +package org.apache.archiva.repository; + +/* + * 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. + */ + +/** + * Thrown, if conversion to a specific class is not possible. + */ +public class UnsupportedConversionException extends RepositoryException +{ + public UnsupportedConversionException( ) + { + } + + public UnsupportedConversionException( String message, Throwable cause ) + { + super( message, cause ); + } + + public UnsupportedConversionException( String message ) + { + super( message ); + } + + public UnsupportedConversionException( Throwable cause ) + { + super( cause ); + } +} diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Artifact.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Artifact.java index b2ae2183c..cd1f2e24f 100644 --- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Artifact.java +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Artifact.java @@ -39,7 +39,7 @@ import java.util.Map; * * @author Martin Stockhammer <martin_s@apache.org> */ -public interface Artifact extends Comparable<Artifact> +public interface Artifact extends ContentItem { /** * The namespace is the location of the artifact. @@ -146,30 +146,5 @@ public interface Artifact extends Comparable<Artifact> */ StorageAsset getAsset(); - /** - * Returns additional attributes of the artifact. Implementations may add additional attributes, e.g. author name - * or creation date. Specific implementation attributes can be accessed either by the {@link #getAttributes()} method - * or by a specific implementation class (see {@link #adapt(Class)}. Use via the adapter is type safe. - * - * @return a map of attribute key, value pairs - */ - Map<String,String> getAttributes(); - - - /** - * Returns the repository type specific implementation - * @param clazz the specific implementation class - * @param <T> the class or interface - * @return the specific project implementation - */ - <T extends Artifact> T adapt(Class<T> clazz) throws UnsupportedRepositoryTypeException; - - /** - * Returns <code>true</code>, if this project supports the given adaptor class. - * @param clazz the class to convert this project to - * @param <T> the type - * @return <code>true/code>, if the implementation is supported, otherwise false - */ - <T extends Artifact> boolean supports(Class<T> clazz); } diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/ContentItem.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/ContentItem.java new file mode 100644 index 000000000..ec9fca6d3 --- /dev/null +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/ContentItem.java @@ -0,0 +1,58 @@ +package org.apache.archiva.repository.content; + +/* + * 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.repository.UnsupportedConversionException; + +import java.util.Map; + +public interface ContentItem +{ + /** + * Returns the repository type specific implementation + * @param clazz the specific implementation class + * @param <T> the class or interface + * @return the specific project implementation + */ + <T extends Project> T adapt( Class<T> clazz ) throws UnsupportedConversionException; + + /** + * Returns <code>true</code>, if this project supports the given adaptor class. + * @param clazz the class to convert this project to + * @param <T> the type + * @return <code>true/code>, if the implementation is supported, otherwise false + */ + <T extends Project> boolean supports( Class<T> clazz ); + + /** + * Additional attributes + * @return the additional attributes + */ + Map<String, String> getAttributes( ); + + /** + * Returns the attribute value for the given key. + * + * @param key the attribute key + * @return the value, if the key exists, otherwise <code>null</code> + * + */ + String getAttribute( String key ); +} diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Project.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Project.java index d52339d8f..2ad2c88db 100644 --- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Project.java +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Project.java @@ -20,6 +20,7 @@ package org.apache.archiva.repository.content; */ import org.apache.archiva.repository.RepositoryContent; +import org.apache.archiva.repository.UnsupportedConversionException; import org.apache.archiva.repository.UnsupportedRepositoryTypeException; import java.util.Map; @@ -40,7 +41,7 @@ import java.util.Map; * * @author Martin Stockhammer <martin_s@apache.org> */ -public interface Project extends Comparable<Project> +public interface Project extends ContentItem { /** @@ -61,25 +62,4 @@ public interface Project extends Comparable<Project> */ RepositoryContent getRepository(); - /** - * Additional attributes - * @return the additional attributes - */ - Map<String, String> getAttributes(); - - /** - * Returns the repository type specific implementation - * @param clazz the specific implementation class - * @param <T> the class or interface - * @return the specific project implementation - */ - <T extends Project> T adapt(Class<T> clazz) throws UnsupportedRepositoryTypeException; - - /** - * Returns <code>true</code>, if this project supports the given adaptor class. - * @param clazz the class to convert this project to - * @param <T> the type - * @return <code>true/code>, if the implementation is supported, otherwise false - */ - <T extends Project> boolean supports(Class<T> clazz); } diff --git a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Version.java b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Version.java index 6c17dee75..011493946 100644 --- a/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Version.java +++ b/archiva-modules/archiva-base/archiva-repository-api/src/main/java/org/apache/archiva/repository/content/Version.java @@ -32,7 +32,7 @@ import java.util.Map; * * @author Martin Stockhammer <martin_s@apache.org> */ -public interface Version extends Comparable<Version> +public interface Version extends ContentItem { /** * Returns the version string. @@ -55,26 +55,5 @@ public interface Version extends Comparable<Version> */ Project getProject(); - /** - * Returns additional attributes. - * @return the map of attribute key, value pairs - */ - Map<String,String> getAttributes(); - - /** - * Returns the repository type specific implementation - * @param clazz the specific implementation class - * @param <T> the class or interface - * @return the specific project implementation - */ - <T extends Project> T adapt(Class<T> clazz) throws UnsupportedRepositoryTypeException; - - /** - * Returns <code>true</code>, if this project supports the given adaptor class. - * @param clazz the class to convert this project to - * @param <T> the type - * @return <code>true/code>, if the implementation is supported, otherwise false - */ - <T extends Project> boolean supports(Class<T> clazz); } |