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{