001: /******************************************************************************
002: * JBoss, a division of Red Hat *
003: * Copyright 2006, Red Hat Middleware, LLC, and individual *
004: * contributors as indicated by the @authors tag. See the *
005: * copyright.txt in the distribution for a full listing of *
006: * individual contributors. *
007: * *
008: * This is free software; you can redistribute it and/or modify it *
009: * under the terms of the GNU Lesser General Public License as *
010: * published by the Free Software Foundation; either version 2.1 of *
011: * the License, or (at your option) any later version. *
012: * *
013: * This software is distributed in the hope that it will be useful, *
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of *
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
016: * Lesser General Public License for more details. *
017: * *
018: * You should have received a copy of the GNU Lesser General Public *
019: * License along with this software; if not, write to the Free *
020: * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
021: * 02110-1301 USA, or see the FSF site: http://www.fsf.org. *
022: ******************************************************************************/package org.jboss.portal.widget;
023:
024: import java.util.concurrent.TimeUnit;
025:
026: import javax.portlet.GenericPortlet;
027: import javax.portlet.PortletConfig;
028: import javax.portlet.PortletException;
029: import javax.portlet.PortletMode;
030:
031: /**
032: * @author <a href="mailto:emuckenh@redhat.com">Emanuel Muckenhuber</a>
033: * @version $Revision$
034: */
035: public abstract class AbstractWidgetPortlet extends GenericPortlet {
036: /** . */
037: private static final org.jboss.logging.Logger log = org.jboss.logging.Logger
038: .getLogger(AbstractWidgetPortlet.class);
039:
040: /** . */
041: public final static String INIT_PARAM_CONNECTION_TIMEOUT = "connectionTimeout";
042:
043: /** .*/
044: public final static String INIT_PARAM_ENTRY_EXPIRATION = "widgetExpiration";
045:
046: /** . */
047: public final static String INIT_PARAM_QUERY_EXPIRATION = "queryExpiration";
048:
049: /** .*/
050: public final static String INIT_PARAM_FETCH_WIDGETS_ON_LOOKUP = "fetchWidgetsOnDirectoryLookup";
051:
052: /** .*/
053: protected final PortletMode EDIT_CONTENT = new PortletMode(
054: "edit_content");
055:
056: /**
057: * @return WidgetProvider
058: */
059: protected abstract WidgetProvider getProvider();
060:
061: public void init() throws PortletException {
062: PortletConfig config = getPortletConfig();
063: WidgetProvider provider = getProvider();
064: // Connection timeout
065: String timeout = config
066: .getInitParameter(INIT_PARAM_CONNECTION_TIMEOUT);
067: if (timeout != null && timeout.length() > 0) {
068: try {
069: // time in millisecond
070: provider
071: .setConnectionTimeout(Integer.parseInt(timeout));
072: } catch (NumberFormatException e) {
073: log
074: .error(
075: "Failed to parse connectionTimeout init parameter - should be integer number: ",
076: e);
077: }
078: }
079: // Query expiration
080: String queryExpiration = config
081: .getInitParameter(INIT_PARAM_QUERY_EXPIRATION);
082: if (queryExpiration != null && queryExpiration.length() > 0) {
083: try {
084: // time in minutes
085: int expiration = Integer.parseInt(queryExpiration) * 60;
086: provider.setQueryExpiration(TimeUnit.MILLISECONDS
087: .convert(expiration, TimeUnit.SECONDS));
088: } catch (NumberFormatException e) {
089: log
090: .error(
091: "Failed to parse queryExpiration init parameter - should be integer number: ",
092: e);
093: }
094: }
095: // Entry expiration
096: String entryExpiration = config
097: .getInitParameter(INIT_PARAM_ENTRY_EXPIRATION);
098: if (entryExpiration != null && entryExpiration.length() > 0) {
099: try {
100: // time in minutes
101: int expiration = Integer.parseInt(entryExpiration) * 60;
102: provider.setEntryExpiration(TimeUnit.MILLISECONDS
103: .convert(expiration, TimeUnit.SECONDS));
104: } catch (NumberFormatException e) {
105: log
106: .error(
107: "Failed to parse entryExpiration init parameter - should be integer number: ",
108: e);
109: }
110: }
111: // Fetch all widgets of a query result ?
112: String fetchWidgetsOnDirectoryLookup = config
113: .getInitParameter(INIT_PARAM_FETCH_WIDGETS_ON_LOOKUP);
114: if (fetchWidgetsOnDirectoryLookup != null
115: && fetchWidgetsOnDirectoryLookup.length() > 0) {
116: provider.setFetchWidgetsOnDirectoryLookup(Boolean
117: .parseBoolean(fetchWidgetsOnDirectoryLookup));
118: }
119:
120: // Finally start widget provider
121: provider.start();
122: }
123:
124: public void destroy() {
125: WidgetProvider provider = getProvider();
126: provider.stop();
127: }
128: }
|