aboutsummaryrefslogtreecommitdiffstats
path: root/archiva-modules/metadata/metadata-model
diff options
context:
space:
mode:
authorMartin Stockhammer <martin_s@apache.org>2019-08-18 20:56:46 +0200
committerMartin Stockhammer <martin_s@apache.org>2019-08-18 20:56:46 +0200
commit6cf4073a9e73b6517c51dc22db75fd97d2523695 (patch)
treef969c1eee474fd298092ec8cbf087c5d8f3e0e90 /archiva-modules/metadata/metadata-model
parent118604a706f1fd66bcda450c1ac8370eff60e4cf (diff)
downloadarchiva-6cf4073a9e73b6517c51dc22db75fd97d2523695.tar.gz
archiva-6cf4073a9e73b6517c51dc22db75fd97d2523695.zip
Changing facet factories. Adding stream methods to metadata repository.
Diffstat (limited to 'archiva-modules/metadata/metadata-model')
-rw-r--r--archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/MetadataFacetFactory.java14
-rw-r--r--archiva-modules/metadata/metadata-model/src/main/java/org/apache/archiva/metadata/model/facets/AbstractMetadataFacetFactory.java67
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;
+ }
+}