diff options
author | Martin Stockhammer <martin_s@apache.org> | 2019-08-18 20:56:46 +0200 |
---|---|---|
committer | Martin Stockhammer <martin_s@apache.org> | 2019-08-18 20:56:46 +0200 |
commit | 6cf4073a9e73b6517c51dc22db75fd97d2523695 (patch) | |
tree | f969c1eee474fd298092ec8cbf087c5d8f3e0e90 /archiva-modules/metadata/metadata-model | |
parent | 118604a706f1fd66bcda450c1ac8370eff60e4cf (diff) | |
download | archiva-6cf4073a9e73b6517c51dc22db75fd97d2523695.tar.gz archiva-6cf4073a9e73b6517c51dc22db75fd97d2523695.zip |
Changing facet factories. Adding stream methods to metadata repository.
Diffstat (limited to 'archiva-modules/metadata/metadata-model')
2 files changed, 78 insertions, 3 deletions
diff --git a/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java b/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java index e0804edc1..ec35ad7ec 100644 --- a/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java +++ b/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java @@ -19,9 +19,17 @@ package org.apache.archiva.metadata.model; * under the License. */ -public interface MetadataFacetFactory +public interface MetadataFacetFactory<T extends MetadataFacet> { - MetadataFacet createMetadataFacet(); + T createMetadataFacet(); - MetadataFacet createMetadataFacet( String repositoryId, String name ); + T createMetadataFacet( String repositoryId, String name ); + + default boolean assignsFacet( Class<?> clazz ) { + return getFacetClass( ).isAssignableFrom( clazz ); + } + + Class<T> getFacetClass( ); + + String getFacetId(); } diff --git a/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/facets/AbstractMetadataFacetFactory.java b/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/facets/AbstractMetadataFacetFactory.java new file mode 100644 index 000000000..725774e94 --- /dev/null +++ b/archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/facets/AbstractMetadataFacetFactory.java @@ -0,0 +1,67 @@ +package org.apache.archiva.metadata.model.facets; + +/* + * 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.metadata.model.MetadataFacet; +import org.apache.archiva.metadata.model.MetadataFacetFactory; + +/** + * @author Martin Stockhammer <martin_s@apache.org> + */ +public abstract class AbstractMetadataFacetFactory<T extends MetadataFacet> implements MetadataFacetFactory<T> +{ + private final String facetId; + private final Class<T> facetClazz; + + protected AbstractMetadataFacetFactory( Class<T> facetClazz, String facetId) { + this.facetId = facetId; + this.facetClazz = facetClazz; + } + + protected AbstractMetadataFacetFactory(Class<T> facetClazz ) { + this.facetClazz = facetClazz; + try + { + this.facetId = (String) this.facetClazz.getField( "FACET_ID" ).get(null); + } + catch ( Throwable e) + { + throw new RuntimeException( "There is no FACET_ID static public field on the class " + facetClazz ); + } + } + + @Override + public abstract T createMetadataFacet( ); + + @Override + public abstract T createMetadataFacet( String repositoryId, String name ); + + @Override + public Class<T> getFacetClass( ) + { + return facetClazz; + } + + @Override + public String getFacetId( ) + { + return facetId; + } +} |