1 /* 2 * Copyright 1999-2002,2004 The Apache Software Foundation. 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.apache.cocoon.portal.coplet.adapter; 17 18 import org.apache.avalon.framework.component.Component; 19 import org.apache.cocoon.portal.coplet.CopletInstanceData; 20 import org.xml.sax.ContentHandler; 21 import org.xml.sax.SAXException; 22 23 /** 24 * This is the "portlet" implementation. 25 * A coplet adapter is the interface between the portal engine and 26 * the implementation of a coplet. 27 * Usually there is only one instance of an adapter (= singleton). 28 * Whenever an instance of this coplet is rendered, the 29 * adapter is invoked to render the coplet. 30 * 31 * The behaviour of the adapter can be controlled by a set of 32 * parameters. In general, the coplet base data defines the default 33 * for all coplets, but the value can be overriden by the coplet 34 * data. The coplet base data stores the information in the coplet 35 * config map whereas the coplet data stores them in the attributes. 36 * Apart from that the keys and the data types are the same. 37 * 38 * Configuration: 39 * 40 * buffer - A boolean value (default is false) that defines if the 41 * xml data stream from the coplet is buffered. If the stream 42 * is not buffered and an exception occurs then the whole 43 * portal will be rendered invalid. 44 * timeout - An integer value (default is endless) that defines the 45 * maximum time (in seconds) the coplet has to deliver it's content. 46 * If the timeout is reached the content is assumed as not 47 * gettable. If you set a timeout, the content is automatically 48 * buffered. 49 * 50 * @author <a HREF="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a> 51 * @author <a HREF="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a> 52 * 53 * @version CVS $Id: CopletAdapter.java 30932 2004-07-29 17:35:38Z vgritsenko $ 54 */ 55 public interface CopletAdapter 56 extends Component { 57 58 String ROLE = CopletAdapter.class.getName(); 59 60 /** 61 * Initialize the coplet 62 * This method is called immediately after a new instance is created. 63 * For each coplet, this method is only invoked once. 64 * @param coplet The coplet 65 */ 66 void init(CopletInstanceData coplet); 67 68 /** 69 * Destroy the coplet 70 * This method is invoked when a coplet instance will be destroyed 71 * For each coplet, this method is only invoked once. 72 * @param coplet 73 */ 74 void destroy(CopletInstanceData coplet); 75 76 /** 77 * Stream the content of the coplet 78 */ 79 void toSAX(CopletInstanceData coplet, ContentHandler contentHandler) 80 throws SAXException; 81 82 /** 83 * User logs in to a coplet 84 * This method is invoked when a user logs in for each coplet instance 85 * of the user 86 */ 87 void login(CopletInstanceData coplet); 88 89 /** 90 * User logs out from a coplet 91 * This method is invoked when a user logs out for each coplet instance 92 * of this user. 93 */ 94 void logout(CopletInstanceData coplet); 95 } 96