01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17: package org.apache.cocoon.portal.coplet.adapter;
18:
19: import org.apache.avalon.framework.component.Component;
20: import org.apache.cocoon.portal.coplet.CopletInstanceData;
21: import org.xml.sax.ContentHandler;
22: import org.xml.sax.SAXException;
23:
24: /**
25: * This is the "portlet" implementation.
26: * A coplet adapter is the interface between the portal engine and
27: * the implementation of a coplet.
28: * Usually there is only one instance of an adapter (= singleton).
29: * Whenever an instance of this coplet is rendered, the
30: * adapter is invoked to render the coplet.
31: *
32: * The behaviour of the adapter can be controlled by a set of
33: * parameters. In general, the coplet base data defines the default
34: * for all coplets, but the value can be overriden by the coplet
35: * data. The coplet base data stores the information in the coplet
36: * config map whereas the coplet data stores them in the attributes.
37: * Apart from that the keys and the data types are the same.
38: *
39: * Configuration:
40: *
41: * buffer - A boolean value (default is false) that defines if the
42: * xml data stream from the coplet is buffered. If the stream
43: * is not buffered and an exception occurs then the whole
44: * portal will be rendered invalid.
45: * timeout - An integer value (default is endless) that defines the
46: * maximum time (in seconds) the coplet has to deliver it's content.
47: * If the timeout is reached the content is assumed as not
48: * gettable. If you set a timeout, the content is automatically
49: * buffered.
50: *
51: * @author <a href="mailto:cziegeler@s-und-n.de">Carsten Ziegeler</a>
52: * @author <a href="mailto:volker.schmitt@basf-it-services.com">Volker Schmitt</a>
53: *
54: * @version CVS $Id: CopletAdapter.java 433543 2006-08-22 06:22:54Z crossley $
55: */
56: public interface CopletAdapter 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: }
|