001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package org.apache.pluto.spi.optional;
018:
019: import org.apache.pluto.descriptors.portlet.PortletAppDD;
020: import org.apache.pluto.descriptors.portlet.PortletDD;
021: import org.apache.pluto.PortletContainerException;
022:
023: import javax.portlet.PortletContext;
024: import javax.portlet.PortletConfig;
025: import java.util.Iterator;
026:
027: /**
028: * Interface defining the services used by the container
029: * to access portlet application descriptors. The registry
030: * acts as both internally as descriptor cache and publically
031: * as a mechanism for notifying the container of new applications.
032: *
033: * @since 1.1.0
034: *
035: */
036: public interface PortletRegistryService {
037:
038: /**
039: * Retrieve all registered applications. This list
040: * will only contain those applications which have
041: * been registered with the container. Others may
042: * or may not be available within the servers.
043: *
044: * @return iterator of all application descriptors.
045: */
046: Iterator getRegisteredPortletApplications();
047:
048: /**
049: * Retrieve the ids of all registered applications.
050: * This list will only contain those applications
051: * which have been registered with the container.
052: * Others may or may not be available within
053: * the servers.
054: *
055: * @return iterator of all ids (strings).
056: */
057: Iterator getRegisteredPortletApplicationIds();
058:
059: /**
060: * Retrieve the portlet descriptor for the specified
061: * portlet application. If the name does not match
062: * the name of a contextPath registered with the container
063: * the portlet application name must be checked.
064: *
065: * @param name the name of the portlet application.
066: * @return the named portlet application descriptor.
067: * @throws PortletContainerException if the descriptor
068: * can not be found or if the portlet.xml can not be parsed.
069: */
070: PortletAppDD getPortletApplicationDescriptor(String name)
071: throws PortletContainerException;
072:
073: /**
074: * Retrieve the PortletContext for the specified applicationId
075: *
076: * @param applicationId context identifier
077: * @return portlet context
078: * @throws PortletContainerException if internal error occurs
079: */
080: PortletContext getPortletContext(String applicationId)
081: throws PortletContainerException;
082:
083: /**
084: * Retreive the portlet descriptor for the given portlet.
085: *
086: * @param applicationId context identifier
087: * @param portletName portlet name
088: * @return descriptor
089: * @throws PortletContainerException if unexpected error
090: */
091: PortletDD getPortletDescriptor(String applicationId,
092: String portletName) throws PortletContainerException;
093:
094: /**
095: * Retrieve the portlet configuration for the specified portlet
096: * @param applicationId context identifier
097: * @param portletName portlet name
098: * @return portletconfig
099: * @throws PortletContainerException if internal error occurs
100: */
101: PortletConfig getPortletConfig(String applicationId,
102: String portletName) throws PortletContainerException;
103:
104: /**
105: * Add a listener which will recieve notifications of newly
106: * registered applications.
107: *
108: * @param listener the listener to add
109: */
110: void addPortletRegistryListener(PortletRegistryListener listener);
111:
112: /**
113: * Remove a previously registered listener.
114: *
115: * @param listener the listener to remove
116: */
117: void removePortletRegistryListener(PortletRegistryListener listener);
118:
119: }
|