/* Copyright (c) 2008 Google Inc.
*
* Licensed 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.
*/
package com.google.gdata.data.media.mediarss;
import com.google.gdata.util.common.xml.XmlNamespace;
import com.google.gdata.data.BaseEntry;
import com.google.gdata.data.BaseFeed;
import com.google.gdata.data.ExtensionProfile;
import com.google.gdata.data.ExtensionDescription;
/**
* GData definitions for the
* <a href="http://search.yahoo.com/mrss">Yahoo media: namespace</a>.
*
*
*/
public class MediaRssNamespace {
/** Namespace URI */
public static final String URI = "http://search.yahoo.com/mrss/";
/** Standard namespace prefix. */
public static final String PREFIX = "media";
/** Namespace object. */
public static final XmlNamespace NS = new XmlNamespace(PREFIX, URI);
/**
* Description of extensions that can be used inside feed,
* extension and media:group tags.
*/
private static final ExtensionDescription[] STANDARD_EXTENSIONS = {
ExtensionDescription.getDefaultDescription(MediaRating.class),
ExtensionDescription.getDefaultDescription(MediaTitle.class),
ExtensionDescription.getDefaultDescription(MediaDescription.class),
MediaKeywords.getDefaultDescription(),
MediaThumbnail.getDefaultDescription(),
ExtensionDescription.getDefaultDescription(MediaCategory.class),
ExtensionDescription.getDefaultDescription(MediaHash.class),
MediaPlayer.getDefaultDescription(),
ExtensionDescription.getDefaultDescription(MediaCredit.class),
ExtensionDescription.getDefaultDescription(MediaCopyright.class),
ExtensionDescription.getDefaultDescription(MediaText.class),
ExtensionDescription.getDefaultDescription(MediaRestriction.class),
};
/**
* Extends given profile with Yahoo media RSS extensions.
*
* @param profile the profile to be extended
*/
public static void declareAll(ExtensionProfile profile) {
profile.declareAdditionalNamespace(NS);
// Register some extensions that require special treatment
profile.declare(BaseEntry.class, MediaGroup.getDefaultDescription());
profile.declare(BaseEntry.class, MediaContent.getDefaultDescription(false));
profile.declare(MediaGroup.class, MediaContent.getDefaultDescription(true));
// Register all standard extension everywhere, including in the aggregators
// declared above (MediaGroup and MediaContent)
for (ExtensionDescription desc : STANDARD_EXTENSIONS) {
profile.declare(BaseEntry.class, desc);
profile.declare(BaseFeed.class, desc);
profile.declare(MediaGroup.class, desc);
profile.declare(MediaContent.class, desc);
}
}
}