From 96b61f3ac7f77e435d4628b463dbbf5db7b7f284 Mon Sep 17 00:00:00 2001 From: David Caruana Date: Fri, 4 May 2007 15:11:38 +0000 Subject: [PATCH] Web Scripts as JSR-168 portlets git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5628 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../web/scripts/WebScriptRequest.java | 137 ++++++++++++++++++ .../web/scripts/WebScriptResponse.java | 81 +++++++++++ 2 files changed, 218 insertions(+) create mode 100644 source/java/org/alfresco/web/scripts/WebScriptRequest.java create mode 100644 source/java/org/alfresco/web/scripts/WebScriptResponse.java diff --git a/source/java/org/alfresco/web/scripts/WebScriptRequest.java b/source/java/org/alfresco/web/scripts/WebScriptRequest.java new file mode 100644 index 0000000000..6f5f3fa043 --- /dev/null +++ b/source/java/org/alfresco/web/scripts/WebScriptRequest.java @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.web.scripts; + + +/** + * Web Script Request + * + * @author davidc + */ +public interface WebScriptRequest +{ + /** + * Gets the matching API Service for this request + * + * @return the service match + */ + public WebScriptMatch getServiceMatch(); + + /** + * Get server portion of the request + * + * e.g. scheme://host:port + * + * @return server path + */ + public String getServerPath(); + + /** + * Gets the Alfresco Context Path + * + * @return context url e.g. /alfresco + */ + public String getContextPath(); + + /** + * Gets the Alfresco Web Script Context Path + * + * @return service url e.g. /alfresco/service + */ + public String getServiceContextPath(); + + /** + * Gets the Alfresco Service Path + * + * @return service url e.g. /alfresco/service/search/keyword + */ + public String getServicePath(); + + /** + * Gets the full request URL + * + * @return request url e.g. /alfresco/service/search/keyword?q=term + */ + public String getURL(); + + /** + * Gets the query String + * + * @return query string e.g. q=alfresco&format=atom + */ + public String getQueryString(); + + /** + * Gets the names of all parameters on the Url + * + * @return the names (empty, if none) + */ + public String[] getParameterNames(); + + /** + * Gets the value of the named parameter + * + * @param name parameter name + * @return parameter value (or null, if parameter does not exist) + */ + public String getParameter(String name); + + /** + * Gets the path extension beyond the path registered for this service + * + * e.g. + * a) service registered path = /search/engine + * b) request path = /search/engine/external + * + * => /external + * + * @return extension path + */ + public String getExtensionPath(); + + /** + * Determine if Guest User? + * + * @return true => guest user + */ + public boolean isGuest(); + + /** + * Get Requested Format + * + * @return content type requested + */ + public String getFormat(); + + /** + * Get User Agent + * + * TODO: Expand on known agents + * + * @return MSIE / Firefox + */ + public String getAgent(); + +} diff --git a/source/java/org/alfresco/web/scripts/WebScriptResponse.java b/source/java/org/alfresco/web/scripts/WebScriptResponse.java new file mode 100644 index 0000000000..3dde185821 --- /dev/null +++ b/source/java/org/alfresco/web/scripts/WebScriptResponse.java @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2005-2007 Alfresco Software Limited. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" + */ +package org.alfresco.web.scripts; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.Writer; + + +/** + * Web Script Response + * + * @author davidc + */ +public interface WebScriptResponse +{ + // API Formats + public static final String HTML_FORMAT = "html"; + public static final String ATOM_FORMAT = "atom"; + public static final String RSS_FORMAT = "rss"; + public static final String XML_FORMAT = "xml"; + public static final String JSON_FORMAT = "json"; + public static final String OPENSEARCH_DESCRIPTION_FORMAT = "opensearchdescription"; + + + /** + * Sets the Content Type + * + * @param contentType + */ + public void setContentType(String contentType); + + /** + * Gets the Writer + * + * @return writer + * @throws IOException + */ + public Writer getWriter() throws IOException; + + /** + * Gets the Output Stream + * + * @return output stream + * @throws IOException + */ + public OutputStream getOutputStream() throws IOException; + + /** + * Encode a script URL + * + * Note: Some Web Script Runtime environments (e.g. portal) require urls to be re-written. + * + * @param url url to encode + * @return encoded url + */ + public String encodeScriptUrl(String url); + +}