001/* 002 * Copyright (c) 2006-2011 Nuxeo SA (http://nuxeo.com/) and others. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 * 009 * Contributors: 010 * Nuxeo - initial API and implementation 011 * $Id$ 012 */ 013 014package org.nuxeo.runtime.model; 015 016/** 017 * A component extension point. 018 * <p> 019 * Extension points are described by a name and a list of optional contribution object classes. 020 * <p> 021 * When defined, the contribution object classes are the type of objects accepted by this extension point. 022 * <p> 023 * The extension point is also responsible for extracting contribution objects from the extension data, if any. 024 * 025 * @author <a href="mailto:bs@nuxeo.com">Bogdan Stefanescu</a> 026 */ 027public interface ExtensionPoint { 028 029 /** 030 * Gets the extension point name. 031 * 032 * @return the extension point name 033 */ 034 String getName(); 035 036 /** 037 * Gets the object types of the contributions accepted by this extension point. 038 * 039 * @return the accepted contribution types 040 */ 041 Class[] getContributions(); 042 043 /** 044 * Gets the comment attached to this extension point if any. 045 * 046 * @return the comment 047 */ 048 String getDocumentation(); 049 050 /** 051 * Get the component owning the base extension which this one extends. 052 * <p> 053 * If this method returns null, it means the current extension point is extending another extension point and should 054 * forward any contribution to the base extension. The base extension has the same name as this one but it is 055 * declared in another component. 056 * 057 * @return the base extension point if this extension point is extending another extension point, or null if none 058 */ 059 String getSuperComponent(); 060 061}