Author: scottbw
Date: Fri Feb 19 23:31:29 2010
New Revision: 912033

URL: http://svn.apache.org/viewvc?rev=912033&view=rev
Log:
Implemented the Access element as per the W3C WARP spec draft at 
http://www.w3.org/TR/widgets-access/

Modified:
    
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IAccessEntity.java
    
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java
    
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IW3CXMLConfiguration.java
    
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AccessEntity.java
    
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/WidgetManifestModel.java

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IAccessEntity.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IAccessEntity.java?rev=912033&r1=912032&r2=912033&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IAccessEntity.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IAccessEntity.java 
Fri Feb 19 23:31:29 2010
@@ -19,9 +19,9 @@
  */
 public interface IAccessEntity extends IManifestModelBase {
 
-       public String getUri();
+       public String getOrigin();
 
-       public void setUri(String uri);
+       public void setOrigin(String uri);
 
        public boolean hasSubDomains();
 

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=912033&r1=912032&r2=912033&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java 
(original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java 
Fri Feb 19 23:31:29 2010
@@ -25,6 +25,7 @@
  */
 public interface IManifestModel extends IManifestModelBase{
 
+       public List<IAccessEntity> getAccessList();
        public List<IContentEntity> getContentList();
        public List<IIconEntity> getIconsList();
        public String getIdentifier();

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IW3CXMLConfiguration.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IW3CXMLConfiguration.java?rev=912033&r1=912032&r2=912033&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IW3CXMLConfiguration.java
 (original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IW3CXMLConfiguration.java
 Fri Feb 19 23:31:29 2010
@@ -44,7 +44,7 @@
        public static final String ICON_ELEMENT = "icon"; // widget [0..*]
        
        public static final String ACCESS_ELEMENT = "access"; // widget [0..*]
-               public static final String URI_ATTRIBUTE = "uri"; // access     
+               public static final String ORIGIN_ATTRIBUTE = "origin"; // 
access       
                public static final String SUBDOMAINS_ATTRIBUTE = "subdomains"; 
// access
         
        public static final String CONTENT_ELEMENT = "content"; // widget [0..*]

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AccessEntity.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AccessEntity.java?rev=912033&r1=912032&r2=912033&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AccessEntity.java
 (original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AccessEntity.java
 Fri Feb 19 23:31:29 2010
@@ -14,62 +14,90 @@
 
 package org.apache.wookie.manifestmodel.impl;
 
+import java.net.URI;
+
 import org.apache.wookie.manifestmodel.IAccessEntity;
 import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.IRIValidator;
 import org.apache.wookie.util.UnicodeUtils;
+import org.jdom.Attribute;
 import org.jdom.Element;
 /**
- * @author Paul Sharples
- * @version $Id: AccessEntity.java,v 1.3 2009-09-02 18:37:31 scottwilson Exp $
+ * The Access element is defined in: http://www.w3.org/TR/widgets-access/
  */
 public class AccessEntity implements IAccessEntity {
-       
-       private String fUri;
+
+       private String fOrigin;
        private boolean fSubDomains;
-       
+
        public AccessEntity(){
-               fUri = "";
+               fOrigin = null;
                fSubDomains = false;
        }
-       
+
        public AccessEntity(String uri, boolean subDomains) {
                super();
-               fUri = uri;
+               fOrigin = uri;
                fSubDomains = subDomains;
        }
-       
-       public String getUri() {
-               return fUri;
+
+       public String getOrigin() {
+               return fOrigin;
        }
-       public void setUri(String uri) {
-               fUri = uri;
+       public void setOrigin(String uri) {
+               fOrigin = uri;
        }
        public boolean hasSubDomains() {
                return fSubDomains;
        }
-
        public void setSubDomains(boolean subDomains) {
                fSubDomains = subDomains;
        }
-
        public String getXMLTagName() {
                return IW3CXMLConfiguration.ACCESS_ELEMENT;
        }
-       
-       public void fromXML(Element element) {          
-               fUri = 
UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.URI_ATTRIBUTE));
-               //TODO this is required, but may need to be checked
-               String subDomains = 
UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.SUBDOMAINS_ATTRIBUTE));
-               if(subDomains.equals("")){
+
+       public void fromXML(Element element) {  
+               // Origin is required
+               if 
(element.getAttribute(IW3CXMLConfiguration.ORIGIN_ATTRIBUTE)==null) return;
+               fOrigin = 
UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.ORIGIN_ATTRIBUTE));
+               if (fOrigin.equals("*")) return;
+               try {
+                       processOrigin();
+               } catch (Exception e) {
+                       fOrigin =  null;
+                       return;
+               }
+               // Subdomains is optional
+               try {
+                       
processSubdomains(element.getAttribute(IW3CXMLConfiguration.SUBDOMAINS_ATTRIBUTE));
+               } catch (Exception e) {
                        fSubDomains = false;
+               }                       
+       }
+
+       /**
+        * Processes an origin attribute
+        * @throws Exception if the origin attribute is not valid
+        */
+       private void processOrigin() throws Exception{
+               if (!IRIValidator.isValidIRI(fOrigin)) throw new 
Exception("origin is not a valid IRI");
+               URI uri = new URI(fOrigin);
+               if (uri.getHost() == null) throw new Exception("origin has no 
host");
+               if (uri.getUserInfo()!=null) throw new Exception("origin has 
userinfo");
+               URI processedURI = new 
URI(uri.getScheme(),null,uri.getHost(),uri.getPort(),null,null,null);
+               fOrigin = processedURI.toString();
+       }
+
+       /**
+        * Processes a subdomains attribute
+        * @param subDomains
+        * @throws Exception if the attribute is not valid
+        */
+       private void processSubdomains(Attribute attr) throws Exception{
+               if (attr != null){
+                       String subDomains = 
UnicodeUtils.normalizeSpaces(attr.getValue());
+                       fSubDomains = Boolean.valueOf(subDomains);
                }
-               else{
-                       try {
-                               fSubDomains = Boolean.valueOf(subDomains);
-                       } 
-                       catch (Exception e) {
-                               fSubDomains = false;
-                       }
-               }       
        }
 }

Modified: 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/WidgetManifestModel.java
URL: 
http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/WidgetManifestModel.java?rev=912033&r1=912032&r2=912033&view=diff
==============================================================================
--- 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/WidgetManifestModel.java
 (original)
+++ 
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/WidgetManifestModel.java
 Fri Feb 19 23:31:29 2010
@@ -179,6 +179,10 @@
                return fFeaturesList;
        }
        
+       public List<IAccessEntity> getAccessList(){
+               return fAccessList;
+       }
+       
        public String getAuthor(){
                if (fAuthor == null) return null;
                return fAuthor.getAuthorName();
@@ -355,11 +359,10 @@
                        }
                        
                        // ACCESS IS OPTIONAL  can be many 
-                       // (not sure if this has been removed from the spec?)
                        if(tag.equals(IW3CXMLConfiguration.ACCESS_ELEMENT)) {   
                                                                                
                                IAccessEntity access = new AccessEntity();
                                access.fromXML(child);
-                               fAccessList.add(access);
+                               if (access.getOrigin()!=null) 
fAccessList.add(access);
                        }
                        
                        // CONTENT IS OPTIONAL - can be 0 or 1


Reply via email to