You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wookie.apache.org by sc...@apache.org on 2009/10/20 19:59:20 UTC
svn commit: r827748 - in /incubator/wookie/trunk/src/org/apache/wookie:
WidgetAdminServlet.java manifestmodel/IManifestModel.java
messages.properties messages_nl.properties util/WidgetPackageUtils.java
Author: scottbw
Date: Tue Oct 20 17:59:19 2009
New Revision: 827748
URL: http://svn.apache.org/viewvc?rev=827748&view=rev
Log:
Added checks for default start files as well as custom start files in config.xml, and added some error messages for different error conditions associated with this. See also WOOKIE-45
Modified:
incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java
incubator/wookie/trunk/src/org/apache/wookie/messages.properties
incubator/wookie/trunk/src/org/apache/wookie/messages_nl.properties
incubator/wookie/trunk/src/org/apache/wookie/util/WidgetPackageUtils.java
Modified: incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java?rev=827748&r1=827747&r2=827748&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java Tue Oct 20 17:59:19 2009
@@ -40,6 +40,7 @@
import org.apache.wookie.manager.IWidgetAdminManager;
import org.apache.wookie.manager.impl.WidgetAdminManager;
import org.apache.wookie.manifestmodel.IManifestModel;
+import org.apache.wookie.manifestmodel.impl.ContentEntity;
import org.apache.wookie.server.LocaleHandler;
import org.apache.wookie.util.WidgetManifestUtils;
import org.apache.wookie.util.StartPageJSParser;
@@ -57,7 +58,7 @@
*
*/
public class WidgetAdminServlet extends HttpServlet implements Servlet {
-
+
// our list of allowed operations
private enum Operation {
ADDNEWSERVICE, ADDNEWWHITELISTENTRY, LISTSERVICES, LISTSERVICESFORADDITION,
@@ -65,10 +66,10 @@
REVISETYPES, SETDEFAULTWIDGET, SETWIDGETTYPES, UPLOADWIDGET, VIEWWHITELIST, REGISTERGADGET,
LISTAPIKEYS, REVOKEAPIKEY
}
-
+
// Get the logger
static Logger _logger = Logger.getLogger(WidgetAdminServlet.class.getName());
-
+
// jsp page handles
private static final String fAddNewServicesPage = "/admin/addnewservice.jsp"; //$NON-NLS-1$
private static final String faddToWhiteListPage = "/admin/addtowhitelist.jsp"; //$NON-NLS-1$
@@ -82,11 +83,11 @@
private static final String fViewWhiteListPage = "/admin/viewwhitelist.jsp"; //$NON-NLS-1$
private static final String fRegisterGadgetPage = "/admin/registergadget.jsp"; //$NON-NLS-1$
private static final String fListAPIKeysPage = "/admin/keys.jsp"; //$NON-NLS-1$
-
+
private static final long serialVersionUID = -3026022301561798524L;;
-
-
- /*
+
+
+ /*
* (non-Java-doc)
*
* @see javax.servlet.http.HttpServlet#HttpServlet()
@@ -94,7 +95,7 @@
public WidgetAdminServlet() {
super();
}
-
+
/**
* Add a new service type to the DB
@@ -145,14 +146,14 @@
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(true);
Messages localizedMessages = LocaleHandler.localizeMessages(request);
-
+
IWidgetAdminManager manager = (IWidgetAdminManager)session.getAttribute(WidgetAdminManager.class.getName());
if(manager == null){
manager = new WidgetAdminManager(localizedMessages);
session.setAttribute(WidgetAdminManager.class.getName(), manager);
}
Configuration properties = (Configuration) session.getServletContext().getAttribute("properties"); //$NON-NLS-1$
-
+
session.setAttribute("error_value", null); //$NON-NLS-1$
session.setAttribute("message_value", null); //$NON-NLS-1$
session.setAttribute("widget_defaults", null); //$NON-NLS-1$
@@ -171,119 +172,119 @@
}
if(op!=null){
switch (op) {
- case ADDNEWWHITELISTENTRY: {
- addWhiteListEntry(session, request, manager);
- listWhiteListOperation(session, manager);
+ case ADDNEWWHITELISTENTRY: {
+ addWhiteListEntry(session, request, manager);
+ listWhiteListOperation(session, manager);
+ doForward(request, response, faddToWhiteListPage);
+ break;
+ }
+ case VIEWWHITELIST: {
+ listWhiteListOperation(session, manager);
+ if(request.getParameter("param").equalsIgnoreCase("list")){ //$NON-NLS-1$ //$NON-NLS-2$
+ doForward(request, response, fViewWhiteListPage);
+ }
+ else if(request.getParameter("param").equalsIgnoreCase("add")){ //$NON-NLS-1$ //$NON-NLS-2$
doForward(request, response, faddToWhiteListPage);
- break;
}
- case VIEWWHITELIST: {
- listWhiteListOperation(session, manager);
- if(request.getParameter("param").equalsIgnoreCase("list")){ //$NON-NLS-1$ //$NON-NLS-2$
- doForward(request, response, fViewWhiteListPage);
- }
- else if(request.getParameter("param").equalsIgnoreCase("add")){ //$NON-NLS-1$ //$NON-NLS-2$
- doForward(request, response, faddToWhiteListPage);
- }
- else if(request.getParameter("param").equalsIgnoreCase("remove")){ //$NON-NLS-1$ //$NON-NLS-2$
- doForward(request, response, fremoveWhiteListPage);
- }
- break;
+ else if(request.getParameter("param").equalsIgnoreCase("remove")){ //$NON-NLS-1$ //$NON-NLS-2$
+ doForward(request, response, fremoveWhiteListPage);
}
- case REMOVEWIDGET: {
- removeWidget(session, request, properties, manager);
+ break;
+ }
+ case REMOVEWIDGET: {
+ removeWidget(session, request, properties, manager);
+ listOperation(session, manager, false);
+ doForward(request, response, fListWidgetsForDeletePage);
+ break;
+ }
+ case REVISETYPES: {
+ reviseTypes(session, request, manager);
+ doForward(request, response, fUpLoadResultsPage);
+ break;
+ }
+ case ADDNEWSERVICE: {
+ addNewService(session, request, manager);
+ retrieveServices(session, manager);
+ doForward(request, response, fAddNewServicesPage);
+ break;
+ }
+ case UPLOADWIDGET: {
+ uploadOperation(request, properties, manager, session);
+ doForward(request, response, fUpLoadResultsPage);
+ break;
+ }
+ case LISTWIDGETS: {
+ if(request.getParameter("param").equalsIgnoreCase("remove")){ //$NON-NLS-1$ //$NON-NLS-2$
listOperation(session, manager, false);
- doForward(request, response, fListWidgetsForDeletePage);
- break;
+ doForward(request, response, fListWidgetsForDeletePage);
}
- case REVISETYPES: {
- reviseTypes(session, request, manager);
- doForward(request, response, fUpLoadResultsPage);
- break;
- }
- case ADDNEWSERVICE: {
- addNewService(session, request, manager);
- retrieveServices(session, manager);
- doForward(request, response, fAddNewServicesPage);
- break;
- }
- case UPLOADWIDGET: {
- uploadOperation(request, properties, manager, session);
- doForward(request, response, fUpLoadResultsPage);
- break;
+ else{
+ listOperation(session, manager, true);
+ doForward(request, response, fListWidgetsPage);
}
- case LISTWIDGETS: {
- if(request.getParameter("param").equalsIgnoreCase("remove")){ //$NON-NLS-1$ //$NON-NLS-2$
- listOperation(session, manager, false);
- doForward(request, response, fListWidgetsForDeletePage);
- }
- else{
- listOperation(session, manager, true);
- doForward(request, response, fListWidgetsPage);
- }
- break;
+ break;
+ }
+ case LISTSERVICES: {
+ retrieveServices(session, manager);
+ if(request.getParameter("param").equalsIgnoreCase("list")){ //$NON-NLS-1$ //$NON-NLS-2$
+ doForward(request, response, fListServicesPage);
}
- case LISTSERVICES: {
- retrieveServices(session, manager);
- if(request.getParameter("param").equalsIgnoreCase("list")){ //$NON-NLS-1$ //$NON-NLS-2$
- doForward(request, response, fListServicesPage);
- }
- else if(request.getParameter("param").equalsIgnoreCase("add")){ //$NON-NLS-1$ //$NON-NLS-2$
- doForward(request, response, fAddNewServicesPage);
- }
- else if(request.getParameter("param").equalsIgnoreCase("remove")){ //$NON-NLS-1$ //$NON-NLS-2$
- doForward(request, response, fRemoveServicesPage);
- }
- break;
+ else if(request.getParameter("param").equalsIgnoreCase("add")){ //$NON-NLS-1$ //$NON-NLS-2$
+ doForward(request, response, fAddNewServicesPage);
}
- case SETWIDGETTYPES: {
- updateWidgetTypes(session, request, manager);
- listOperation(session, manager, true);
- doForward(request, response, fListWidgetsPage);
- break;
- }
- case REMOVESERVICE:{
- removeServiceOperation(session, request, manager);
+ else if(request.getParameter("param").equalsIgnoreCase("remove")){ //$NON-NLS-1$ //$NON-NLS-2$
doForward(request, response, fRemoveServicesPage);
- break;
- }
- case REMOVEWHITELISTENTRY: {
- removeWhiteListEntry(session, request, manager);
- listWhiteListOperation(session, manager);
- doForward(request, response, fremoveWhiteListPage);
- break;
- }
- case REMOVESINGLEWIDGETTYPE:{
- removeSingleWidgetTypeOperation(session, request, manager);
- listOperation(session, manager, true);
- doForward(request, response, fListWidgetsPage);
- break;
- }
- case SETDEFAULTWIDGET:{
- setDefaultWidgetOperation(session, request, manager);
- doForward(request, response, fListWidgetsPage);
- break;
- }
- case REGISTERGADGET:{
- registerOperation(request, properties, manager, session);
- doForward(request, response,fRegisterGadgetPage);
- break;
- }
- case LISTAPIKEYS:{
- listAPIKeysOperation(session, request, manager);
- doForward(request, response, fListAPIKeysPage);
- break;
- }
- case REVOKEAPIKEY:{
- revokeAPIKeyOperation(session, request, manager);
- doForward(request, response, fListAPIKeysPage);
- break;
- }
-
- default: {
- session.setAttribute("error_value", localizedMessages.getString("WidgetAdminServlet.5"));// need to i18n this //$NON-NLS-1$ //$NON-NLS-2$
- doForward(request, response, fMainPage);
}
+ break;
+ }
+ case SETWIDGETTYPES: {
+ updateWidgetTypes(session, request, manager);
+ listOperation(session, manager, true);
+ doForward(request, response, fListWidgetsPage);
+ break;
+ }
+ case REMOVESERVICE:{
+ removeServiceOperation(session, request, manager);
+ doForward(request, response, fRemoveServicesPage);
+ break;
+ }
+ case REMOVEWHITELISTENTRY: {
+ removeWhiteListEntry(session, request, manager);
+ listWhiteListOperation(session, manager);
+ doForward(request, response, fremoveWhiteListPage);
+ break;
+ }
+ case REMOVESINGLEWIDGETTYPE:{
+ removeSingleWidgetTypeOperation(session, request, manager);
+ listOperation(session, manager, true);
+ doForward(request, response, fListWidgetsPage);
+ break;
+ }
+ case SETDEFAULTWIDGET:{
+ setDefaultWidgetOperation(session, request, manager);
+ doForward(request, response, fListWidgetsPage);
+ break;
+ }
+ case REGISTERGADGET:{
+ registerOperation(request, properties, manager, session);
+ doForward(request, response,fRegisterGadgetPage);
+ break;
+ }
+ case LISTAPIKEYS:{
+ listAPIKeysOperation(session, request, manager);
+ doForward(request, response, fListAPIKeysPage);
+ break;
+ }
+ case REVOKEAPIKEY:{
+ revokeAPIKeyOperation(session, request, manager);
+ doForward(request, response, fListAPIKeysPage);
+ break;
+ }
+
+ default: {
+ session.setAttribute("error_value", localizedMessages.getString("WidgetAdminServlet.5"));// need to i18n this //$NON-NLS-1$ //$NON-NLS-2$
+ doForward(request, response, fMainPage);
+ }
}
}
else {
@@ -301,7 +302,7 @@
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
-
+
private void listOperation(HttpSession session, IWidgetAdminManager manager, boolean getDefaults){
retrieveWidgets(session, manager);
if(getDefaults){
@@ -319,7 +320,7 @@
private void listWhiteListOperation(HttpSession session, IWidgetAdminManager manager) {
session.setAttribute("whitelist", Whitelist.findAll()); //$NON-NLS-1$
}
-
+
private void removeServiceOperation(HttpSession session, HttpServletRequest request, IWidgetAdminManager manager) {
Messages localizedMessages = LocaleHandler.localizeMessages(request);
String serviceId = request.getParameter("serviceId"); //$NON-NLS-1$
@@ -331,7 +332,7 @@
}
retrieveServices(session, manager);
}
-
+
private void removeSingleWidgetTypeOperation(HttpSession session,
HttpServletRequest request, IWidgetAdminManager manager) {
Messages localizedMessages = LocaleHandler.localizeMessages(request);
@@ -345,7 +346,7 @@
}
session.setAttribute("widgets", null); //$NON-NLS-1$
}
-
+
private void removeWhiteListEntry(HttpSession session, HttpServletRequest request, IWidgetAdminManager manager) {
Messages localizedMessages = LocaleHandler.localizeMessages(request);
String entryId = request.getParameter("entryId"); //$NON-NLS-1$
@@ -356,7 +357,7 @@
session.setAttribute("error_value", localizedMessages.getString("WidgetAdminServlet.11")); //$NON-NLS-1$ //$NON-NLS-2$
}
}
-
+
private void removeWidget(HttpSession session, HttpServletRequest request, Configuration properties, IWidgetAdminManager manager) {
Messages localizedMessages = LocaleHandler.localizeMessages(request);
String widgetId = request.getParameter("widgetId"); //$NON-NLS-1$
@@ -373,17 +374,17 @@
session.setAttribute("error_value", localizedMessages.getString("WidgetAdminServlet.14")); //$NON-NLS-1$ //$NON-NLS-2$
}
}
-
+
private void retrieveServices(HttpSession session, IWidgetAdminManager manager){
session.setAttribute("services", WidgetService.findAll()); //$NON-NLS-1$
}
-
+
private void retrieveWidgets(HttpSession session, IWidgetAdminManager manager){
session.setAttribute("widgets", Widget.findAll()); //$NON-NLS-1$
}
-
-
+
+
private void reviseTypes(HttpSession session, HttpServletRequest request, IWidgetAdminManager manager) {
retrieveServices(session, manager);
session.setAttribute("hasValidated", Boolean.valueOf(true)); //$NON-NLS-1$
@@ -393,28 +394,28 @@
session.setAttribute("isMaxable", Boolean.valueOf(isMaxable)); //$NON-NLS-1$
session.setAttribute("dbkey", Integer.parseInt(dbkey)); //$NON-NLS-1$
}
-
+
private void setDefaultWidgetOperation(HttpSession session, HttpServletRequest request, IWidgetAdminManager manager){
String widgetId = request.getParameter("widgetId"); //$NON-NLS-1$
String widgetType = request.getParameter("widgetType"); //$NON-NLS-1$
manager.setDefaultWidget(Integer.parseInt(widgetId), widgetType);
listOperation(session, manager, true);
}
-
+
private void updateWidgetTypes(HttpSession session, HttpServletRequest request, IWidgetAdminManager manager) throws IOException{
Messages localizedMessages = LocaleHandler.localizeMessages(request);
boolean canMax = false;
-
- String maximize = request.getParameter("max"); //$NON-NLS-1$
- if(maximize!=null){
- canMax = Boolean.valueOf(maximize);
- }
- int dbKey = Integer.parseInt(request.getParameter("dbkey")); //$NON-NLS-1$
- String[] widgetTypes = request.getParameterValues("widgetTypes"); //$NON-NLS-1$
- manager.setWidgetTypesForWidget(dbKey, widgetTypes, canMax);
+
+ String maximize = request.getParameter("max"); //$NON-NLS-1$
+ if(maximize!=null){
+ canMax = Boolean.valueOf(maximize);
+ }
+ int dbKey = Integer.parseInt(request.getParameter("dbkey")); //$NON-NLS-1$
+ String[] widgetTypes = request.getParameterValues("widgetTypes"); //$NON-NLS-1$
+ manager.setWidgetTypesForWidget(dbKey, widgetTypes, canMax);
session.setAttribute("message_value", localizedMessages.getString("WidgetAdminServlet.15")); //$NON-NLS-1$ //$NON-NLS-2$
}
-
+
private void registerOperation(HttpServletRequest request, Configuration properties, IWidgetAdminManager manager, HttpSession session){
Messages localizedMessages = LocaleHandler.localizeMessages(request);
Widget widget = null;
@@ -431,7 +432,7 @@
}
}
-
+
private void listAPIKeysOperation(HttpSession session, HttpServletRequest request, IWidgetAdminManager manager){
session.setAttribute("keys", ApiKey.findAll());
}
@@ -444,7 +445,7 @@
session.setAttribute("error_value", "Key could not be revoked");
}
}
-
+
private void uploadOperation(HttpServletRequest request, Configuration properties, IWidgetAdminManager manager, HttpSession session) {
Messages localizedMessages = LocaleHandler.localizeMessages(request);
session.setAttribute("hasValidated", Boolean.valueOf(false)); //$NON-NLS-1$
@@ -457,60 +458,53 @@
session.setAttribute("error_value", localizedMessages.getString("WidgetAdminServlet.28") + "\n" + ex.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
return;
}
-
+
try {
if(zipFile.exists()){
ZipFile zip = new ZipFile(zipFile);
if (WidgetPackageUtils.hasManifest(zip)){
// build the model
IManifestModel widgetModel = WidgetManifestUtils.dealWithManifest(WidgetPackageUtils.extractManifest(zip), localizedMessages);
- // get the src value from content
- if (widgetModel.getContent() == null) throw new BadManifestException("No start file found");
- if (widgetModel.getContent().getSrc() == null) throw new BadManifestException("No start file found");
- String src = widgetModel.getContent().getSrc();
- // check if the start file exists in the zip file
- if(zip.getEntry(src)!=null){
- // get the widget identifier
- String manifestIdentifier = widgetModel.getIdentifier();
- // create the folder structure to unzip the zip into
- File newWidgetFolder = WidgetPackageUtils.createUnpackedWidgetFolder(request, properties, manifestIdentifier);
- // now unzip it into that folder
- WidgetPackageUtils.unpackZip(zip, newWidgetFolder);
- // get the url to the start page
- String relativestartUrl = (WidgetPackageUtils.getURLForWidget(properties, manifestIdentifier, src));
- // update the model version of the start page
- widgetModel.getContent().setSrc(relativestartUrl);
- // now update the js links in the start page
- File startFile = new File(newWidgetFolder.getCanonicalPath() + File.separator + src);
- if(startFile.exists()){
- StartPageJSParser parser = new StartPageJSParser(startFile, widgetModel);
- parser.doParse();
- }
- // get the path to the root of the unzipped folder
- String localPath = WidgetPackageUtils.getURLForWidget(properties, manifestIdentifier, "");
- // now pass this to the model which will prepend the path to local resources (not web icons)
- widgetModel.updateIconPaths(localPath);
- // check to see if this widget already exists in the DB - using the ID (guid) key from the manifest
- if(!manager.doesWidgetAlreadyExistInSystem(manifestIdentifier)){
- int dbkey = manager.addNewWidget(widgetModel, new String[]{});
- // widget added
- session.setAttribute("message_value", "'"+ widgetModel.getFirstName() +"' - " + localizedMessages.getString("WidgetAdminServlet.19")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- retrieveServices(session, manager);
- session.setAttribute("hasValidated", Boolean.valueOf(true)); //$NON-NLS-1$
- session.setAttribute("dbkey", dbkey); //$NON-NLS-1$
- boolean isMaxable = manager.isWidgetMaximized(dbkey);
- session.setAttribute("isMaxable", Boolean.valueOf(isMaxable)); //$NON-NLS-1$
- }
- else{
- // TODO - call the manager to update required resources
- // widget updated
- session.setAttribute("message_value", "'"+ widgetModel.getFirstName() +"' - " + localizedMessages.getString("WidgetAdminServlet.20")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- }
- }
+
+ // get the start file; if there is no valid start file an exception will be thrown
+ String src = WidgetPackageUtils.locateStartFile(widgetModel, zip, localizedMessages);
+ // get the widget identifier
+ String manifestIdentifier = widgetModel.getIdentifier();
+ // create the folder structure to unzip the zip into
+ File newWidgetFolder = WidgetPackageUtils.createUnpackedWidgetFolder(request, properties, manifestIdentifier);
+ // now unzip it into that folder
+ WidgetPackageUtils.unpackZip(zip, newWidgetFolder);
+ // get the url to the start page
+ String relativestartUrl = (WidgetPackageUtils.getURLForWidget(properties, manifestIdentifier, src));
+ // update the model version of the start page (or create one if none exists)
+ if (widgetModel.getContent() == null) widgetModel.setContent(new ContentEntity());
+ widgetModel.getContent().setSrc(relativestartUrl);
+ // now update the js links in the start page
+ File startFile = new File(newWidgetFolder.getCanonicalPath() + File.separator + src);
+ if(startFile.exists()){
+ StartPageJSParser parser = new StartPageJSParser(startFile, widgetModel);
+ parser.doParse();
+ }
+ // get the path to the root of the unzipped folder
+ String localPath = WidgetPackageUtils.getURLForWidget(properties, manifestIdentifier, "");
+ // now pass this to the model which will prepend the path to local resources (not web icons)
+ widgetModel.updateIconPaths(localPath);
+ // check to see if this widget already exists in the DB - using the ID (guid) key from the manifest
+ if(!manager.doesWidgetAlreadyExistInSystem(manifestIdentifier)){
+ int dbkey = manager.addNewWidget(widgetModel, new String[]{});
+ // widget added
+ session.setAttribute("message_value", "'"+ widgetModel.getFirstName() +"' - " + localizedMessages.getString("WidgetAdminServlet.19")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ retrieveServices(session, manager);
+ session.setAttribute("hasValidated", Boolean.valueOf(true)); //$NON-NLS-1$
+ session.setAttribute("dbkey", dbkey); //$NON-NLS-1$
+ boolean isMaxable = manager.isWidgetMaximized(dbkey);
+ session.setAttribute("isMaxable", Boolean.valueOf(isMaxable)); //$NON-NLS-1$
+ }
else{
- // the start page as defined in config.xml does not exist in zip file
- throw new BadWidgetZipFileException(localizedMessages.getString("WidgetAdminServlet.22")); //$NON-NLS-1$
- }
+ // TODO - call the manager to update required resources
+ // widget updated
+ session.setAttribute("message_value", "'"+ widgetModel.getFirstName() +"' - " + localizedMessages.getString("WidgetAdminServlet.20")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ }
}
else{
// no manifest file found in zip archive
@@ -538,11 +532,10 @@
_logger.error(ex);
session.setAttribute("error_value", ex.getMessage()); //$NON-NLS-1$
}
-
-
+
+
}
-
+
}
-
\ No newline at end of file
Modified: incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java?rev=827748&r1=827747&r2=827748&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java Tue Oct 20 17:59:19 2009
@@ -55,4 +55,6 @@
public String getViewModes();
public List<IDescriptionEntity> getDescriptions();
+
+ public void setContent(IContentEntity content);
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/messages.properties
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/messages.properties?rev=827748&r1=827747&r2=827748&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/messages.properties (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/messages.properties Tue Oct 20 17:59:19 2009
@@ -20,11 +20,14 @@
WidgetAdminServlet.19=Widget was successfully imported into the system.
WidgetAdminServlet.20=Widget was successfully updated in the system.
WidgetAdminServlet.21=The id of this widget cannot be empty - please modifiy the manifest xml attribute 'id' of the widget element and try again.
-WidgetAdminServlet.22=Referenced start page not found in zip file
-WidgetAdminServlet.23=Unable to find manifest file in uploaded content.
+WidgetAdminServlet.22=A custom start file was defined in config.xml, but was not found in the zip file
+WidgetAdminServlet.23=Invalid Widget:Unable to find config.xml in uploaded content.
WidgetAdminServlet.24=No file found uploaded to server
WidgetAdminServlet.25=Unable to parse the config.xml file
WidgetAdminServlet.26=test
+WidgetAdminServlet.27=Invalid Widget: No custom start file was specified, and no default start file can be located
+WidgetAdminServlet.28=Invalid Widget: Root element of config.xml was not "Widget"
+WidgetAdminServlet.28=Invalid Widget: Bad zip file
WidgetServiceServlet.0=No valid requestid was found.
WidgetServiceServlet.1=completed
Modified: incubator/wookie/trunk/src/org/apache/wookie/messages_nl.properties
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/messages_nl.properties?rev=827748&r1=827747&r2=827748&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/messages_nl.properties (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/messages_nl.properties Tue Oct 20 17:59:19 2009
@@ -24,6 +24,10 @@
WidgetAdminServlet.23=Unable to find manifest file in uploaded content.(dutch)
WidgetAdminServlet.24=No file found uploaded to server(dutch)
WidgetAdminServlet.25=Unable to parse the config.xml file(dutch)
+WidgetAdminServlet.26=Test
+WidgetAdminServlet.27=Invalid Widget: No custom start file was specified, and no default start file can be located(dutch)
+WidgetAdminServlet.28=Invalid Widget: Root element of config.xml was not "Widget"(dutch)
+WidgetAdminServlet.28=Invalid Widget: Bad zip file(dutch)
WidgetServiceServlet.0=No valid requestid was found.(dutch)
WidgetServiceServlet.1=completed(dutch)
Modified: incubator/wookie/trunk/src/org/apache/wookie/util/WidgetPackageUtils.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/util/WidgetPackageUtils.java?rev=827748&r1=827747&r2=827748&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/util/WidgetPackageUtils.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/util/WidgetPackageUtils.java Tue Oct 20 17:59:19 2009
@@ -34,6 +34,10 @@
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.log4j.Logger;
+import org.apache.wookie.Messages;
+import org.apache.wookie.exceptions.BadManifestException;
+import org.apache.wookie.exceptions.BadWidgetZipFileException;
+import org.apache.wookie.manifestmodel.IManifestModel;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
/**
@@ -43,6 +47,42 @@
*/
public class WidgetPackageUtils {
static Logger _logger = Logger.getLogger(WidgetPackageUtils.class.getName());
+
+ public static final String[] START_FILES = {"index.htm","index.html","index.svg","index.xhtml","index.xht"};
+
+ /**
+ * Identify the start file for a given zipfile and manifest, or throw an exception
+ * @param widgetModel
+ * @param zip
+ * @param localizedMessages
+ * @return the name of the start file
+ * @throws BadWidgetZipFileException if a custom start file is specified, but is not present
+ * @throws BadManifestException if no custom start file is found, and no default start file can be located
+ */
+ public static String locateStartFile(IManifestModel widgetModel, ZipFile zip, Messages localizedMessages) throws BadWidgetZipFileException, BadManifestException{
+ String startFile = null;
+ // Check for a custom start file
+ if (widgetModel.getContent() != null) {
+ if (widgetModel.getContent().getSrc() == null){
+ startFile = widgetModel.getContent().getSrc();
+ // Check that the specified custom start file exists
+ if (zip.getEntry(startFile)==null){
+ startFile = null;
+ throw new BadWidgetZipFileException(localizedMessages.getString("WidgetAdminServlet.22")); //$NON-NLS-1$
+ }
+ }
+ }
+ // If no custom start file exists, look for defaults
+ for (String s: START_FILES){
+ if (startFile == null && zip.getEntry(s)!=null){
+ startFile = s;
+ }
+ }
+ // If no start file has been found, throw an exception
+ if (startFile == null)
+ throw new BadManifestException("WidgetAdminServlet.27"); //$NON-NLS-1$
+ return startFile;
+ }
public static File createUnpackedWidgetFolder(HttpServletRequest request, Configuration properties, String folder) throws IOException{
folder = convertIdToFolderName(folder);