Author: scottbw
Date: Thu Apr 28 14:23:01 2011
New Revision: 1097476

URL: http://svn.apache.org/viewvc?rev=1097476&view=rev
Log:
Added an UpdateUtils class, with utility methods for working with widget 
updates - checking for available updates, and acquiring updated widget packages 
over the network

Added:
    
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateUtils.java

Added: 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateUtils.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateUtils.java?rev=1097476&view=auto
==============================================================================
--- 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateUtils.java
 (added)
+++ 
incubator/wookie/trunk/parser/java/src/org/apache/wookie/w3c/updates/UpdateUtils.java
 Thu Apr 28 14:23:01 2011
@@ -0,0 +1,109 @@
+/*
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wookie.w3c.updates;
+
+import java.io.IOException;
+
+import org.apache.wookie.w3c.W3CWidget;
+import org.apache.wookie.w3c.W3CWidgetFactory;
+import org.apache.wookie.w3c.exceptions.BadManifestException;
+import org.apache.wookie.w3c.exceptions.BadWidgetZipFileException;
+import org.apache.wookie.w3c.exceptions.InvalidContentTypeException;
+
+/**
+ * Utility methods for working with updates
+ */
+public class UpdateUtils {
+       
+       /**
+        * Gets an update description document for a widget 
+        * Returns null if there is no update available, or the Update 
Description Document is not valid
+        * @param widget the widget to check for updates
+        * @return an UpdateDescriptionDocument for an update to the widget, or 
null if there is no update available
+        */
+       public static UpdateDescriptionDocument checkForUpdate(W3CWidget 
widget){
+               return checkForUpdate(widget.getUpdate(), widget.getVersion());
+       }
+       
+       /**
+        * Gets an update description document for a widget using the specified 
href and version. 
+        * Returns null if there is no update available, or the Update 
Description Document is not valid
+        * @param href the URL to use to obtain update information for the 
widget
+        * @param version the current version of the widget
+        * @return an UpdateDescriptionDocument for an update to the widget, or 
null if there is no update available
+        */
+       public static UpdateDescriptionDocument checkForUpdate(String href, 
String version){
+               try {
+                       // If there is no version for the widget, we must 
return Null
+                       if (version == null) return null;
+                       UpdateDescriptionDocument update = new 
UpdateDescriptionDocument(href);
+                       if (update.getVersionTag().equals(version)) return null;
+                       return update;
+               } catch (Exception e) {
+                       return null;
+               }
+       }
+
+       
+       /**
+        * Gets an updated widget of a widget. Note that by default this allows 
"unsafe" downloads over plain HTTP connections.
+        * @param factory
+        * @param widget the widget to update
+        * @return the latest version of the widget, or null if there is no 
updated version available, or the updated widget isn't valid
+        */
+       public static W3CWidget getUpdate(W3CWidgetFactory factory, W3CWidget 
widget){
+               try {
+                       return getUpdate(factory, widget.getUpdate(), 
widget.getVersion(), false);
+               } catch (Exception e) {
+                       return null;
+               }
+       }
+       
+       /**
+        * Gets an updated widget of a widget
+        * @param factory
+        * @param widget the widget to update
+        * @param onlyUseHttps only get updates using HTTPS, ignore plain HTTP 
updates
+        * @return the latest version of the widget, or null if there is no 
updated version available, or the updated widget isn't valid
+        */
+       public static W3CWidget getUpdate(W3CWidgetFactory factory, W3CWidget 
widget, boolean onlyUseHttps){
+               try {
+                       return getUpdate(factory, widget.getUpdate(), 
widget.getVersion(), onlyUseHttps);
+               } catch (Exception e) {
+                       return null;
+               }
+       }
+       
+       /**
+        * Gets the latest version of a widget
+        * @param factory
+        * @param href the location of the widget Update Description Document
+        * @param version the version of the currently installed widget
+        * @param onlyUseHttps only get updates using HTTPS, ignore plain HTTP 
updates
+        * @return the latest version of the widget, or null if the current 
version is up to date
+        * @throws Exception 
+        * @throws IOException 
+        * @throws BadManifestException 
+        * @throws BadWidgetZipFileException 
+        * @throws InvalidContentTypeException 
+        */
+       public static W3CWidget getUpdate(W3CWidgetFactory factory, String 
href, String version, boolean onlyUseHttps) throws InvalidContentTypeException, 
BadWidgetZipFileException, BadManifestException, IOException, Exception{
+               UpdateDescriptionDocument udd = checkForUpdate(href, version);
+               if (udd == null) return null;
+               if (onlyUseHttps && 
!udd.getUpdateSource().getProtocol().equalsIgnoreCase("https")) return  null;
+               W3CWidget updatedWidget = factory.parse(udd.getUpdateSource());
+               return updatedWidget;
+       }
+
+}


Reply via email to