Author: scottbw
Date: Sat Apr 10 14:58:06 2010
New Revision: 932740

URL: http://svn.apache.org/viewvc?rev=932740&view=rev
Log:
Conduct additional input validation on the W3CWidgetFactory, throwing 
exceptions for missing or read-only output directories, and invoke methods on 
WidgetPackageUtils using a File rather than a path String for the widget output 
folder. Also added more comments.

Modified:
    
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/W3CWidgetFactory.java
    
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/util/WidgetPackageUtils.java

Modified: 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/W3CWidgetFactory.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/W3CWidgetFactory.java?rev=932740&r1=932739&r2=932740&view=diff
==============================================================================
--- 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/W3CWidgetFactory.java
 (original)
+++ 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/W3CWidgetFactory.java
 Sat Apr 10 14:58:06 2010
@@ -14,6 +14,8 @@
 package org.apache.wookie.w3c;
 
 import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
 
 import org.apache.wookie.w3c.exceptions.BadManifestException;
 import org.apache.wookie.w3c.exceptions.BadWidgetZipFileException;
@@ -50,16 +52,16 @@ import org.apache.wookie.w3c.util.Widget
  */
 public class W3CWidgetFactory {
        
-       private String outputDirectory;
+       private File outputDirectory;
        private IStartPageProcessor startPageProcessor;
        private String[] locales;
        private String localPath;
        private String[] features;
 
-       public String[] getFeatures() {
-               return features;
-       }
-
+       /**
+        * Set the features to be included when parsing widgets
+        * @param features
+        */
        public void setFeatures(String[] features) {
                this.features = features;
        }
@@ -77,36 +79,45 @@ public class W3CWidgetFactory {
                        
                };
        }
-
-       public String getOutputDirectory() {
-               return outputDirectory;
-       }
-
-       public void setOutputDirectory(String outputDirectory) {
-               this.outputDirectory = outputDirectory;
-       }
-
-       public IStartPageProcessor getStartPageProcessor() {
-               return startPageProcessor;
+       
+       /**
+        * Set the directory to use to save widgets.
+        * @param outputDirectory
+        * @throws IOException if the directory does not exist
+        */
+       public void setOutputDirectory(final String outputDirectory) throws 
IOException {
+               if (outputDirectory == null) throw new NullPointerException();
+               File file = new File(outputDirectory);
+               if (!file.exists()) throw new FileNotFoundException("the output 
directory does not exist");
+               if (!file.canWrite()) throw new IOException("the output 
directory cannot be written to");
+               if (!file.isDirectory()) throw new IOException("the output 
directory is not a folder");
+               this.outputDirectory = file;
        }
 
-       public void setStartPageProcessor(IStartPageProcessor 
startPageProcessor) {
+       /**
+        * Set the start page processor to use when parsing widgets
+        * @param startPageProcessor
+        */
+       public void setStartPageProcessor(final IStartPageProcessor 
startPageProcessor) {
                this.startPageProcessor = startPageProcessor;
        }
 
-       public String[] getLocales() {
-               return locales;
-       }
-
-       public void setLocales(String[] locales) {
+       /**
+        * Set the supported locales to be used when parsing widgets
+        * @param locales
+        */
+       public void setLocales(final String[] locales) {
+               if (locales == null) throw new NullPointerException("locales 
cannot be specified as Null");
                this.locales = locales;
        }
 
-       public String getLocalPath() {
-               return localPath;
-       }
-
-       public void setLocalPath(String localPath) {
+       /**
+        * Set the base URL to use
+        * @param localPath
+        * @throws Exception 
+        */
+       public void setLocalPath(final String localPath){
+               if (localPath == null) throw new NullPointerException("local 
path cannot be set to Null");
                this.localPath = localPath;
        };
        
@@ -119,7 +130,8 @@ public class W3CWidgetFactory {
         * @throws BadWidgetZipFileException if there is a problem with the zip 
package
         * @throws BadManifestException if there is a problem with the 
config.xml manifest file in the package
         */
-       public W3CWidget parse(File zipFile) throws BadWidgetZipFileException, 
BadManifestException{
+       public W3CWidget parse(final File zipFile) throws Exception, 
BadWidgetZipFileException, BadManifestException{
+               if (outputDirectory == null) throw new Exception("No output 
directory has been set; use setOutputDirectory(File) to set the location to 
output widget files");
                return WidgetPackageUtils.processWidgetPackage(zipFile, 
localPath, outputDirectory, locales, startPageProcessor, features);
        }
 }

Modified: 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/util/WidgetPackageUtils.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/util/WidgetPackageUtils.java?rev=932740&r1=932739&r2=932740&view=diff
==============================================================================
--- 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/util/WidgetPackageUtils.java
 (original)
+++ 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/util/WidgetPackageUtils.java
 Sat Apr 10 14:58:06 2010
@@ -136,9 +136,9 @@ public class WidgetPackageUtils {
                return (String[]) content.toArray(new String[content.size()]);  
        }
        
-       public static File createUnpackedWidgetFolder(String widgetFolder, 
String folder) throws IOException{
+       public static File createUnpackedWidgetFolder(File widgetFolder, String 
folder) throws IOException{
                folder = convertIdToFolderName(folder);
-               String serverPath = widgetFolder + File.separator + folder;
+               String serverPath = widgetFolder.getPath() + File.separator + 
folder;
                File file = new File(convertPathToPlatform(serverPath));
                return file;
        }
@@ -228,7 +228,7 @@ public class WidgetPackageUtils {
                return true;
        }
        
-       public static W3CWidget processWidgetPackage(File zipFile, String 
localWidgetPath, String WIDGETFOLDER, String[] locales, IStartPageProcessor 
processor, String[] features) throws BadWidgetZipFileException, 
BadManifestException{
+       public static W3CWidget processWidgetPackage(File zipFile, String 
localWidgetPath, File WIDGETFOLDER, String[] locales, IStartPageProcessor 
processor, String[] features) throws BadWidgetZipFileException, 
BadManifestException{
                ZipFile zip;
                try {
                        zip = new ZipFile(zipFile);
@@ -253,7 +253,7 @@ public class WidgetPackageUtils {
                                        File startFile = new 
File(newWidgetFolder.getCanonicalPath() + File.separator + content.getSrc());
                                        String relativestartUrl = 
(WidgetPackageUtils.getURLForWidget(localWidgetPath, manifestIdentifier, 
content.getSrc()));                                  
                                        content.setSrc(relativestartUrl);
-                                       if(startFile.exists()){         
+                                       if(startFile.exists() && processor != 
null){            
                                                
processor.processStartFile(startFile, widgetModel);
                                        }       
                                }
@@ -273,7 +273,7 @@ public class WidgetPackageUtils {
                        } catch (BadManifestException e) {
                                throw e;
                        } catch (Exception e){
-                               throw new BadManifestException();
+                               throw new BadManifestException(e);
                        }
                }
                else{


Reply via email to