/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community 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://opensource.org/licenses/ecl2.txt * * 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. * */ package org.opencastproject.metadata.api; import org.opencastproject.mediapackage.MediaPackage; /** * Generic interface for metadata providing services. * @param <A> * the type of metadata provided */ public interface MetadataService<A> { /** The static constant used when configuring the priority */ String PRIORITY_KEY = "priority"; /** * The priority of this MetadataService compared to others when more than one is registered in the system. * * When more than one MetadataService is registered, the {@link #getMetadata(MediaPackage)} method may be * called on each service in order of priority. Metadata objects returned by higher priority * MetadataServices should override those returned by lower priority services. * * The lowest number is the highest priority (i.e. 1 is a higher priority than 2). * * @return The priority */ int getPriority(); /** * Gets the metadata for a {@link MediaPackage} if possible. If no metadata can be extracted * from the catalogs in the {@link MediaPackage}, this returns null; * * @param mediaPackage The mediapackage to inspect for catalogs * @return The metadata extracted from the media package */ A getMetadata(MediaPackage mediaPackage); }