From 4d02d6cb2771b2c19f1b9d67f3e03fbbed0e4d20 Mon Sep 17 00:00:00 2001 From: jsdelfino Date: Mon, 29 Sep 2008 01:14:54 +0000 Subject: Pulled from trunk. Changes from SVN revision r698020. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@699942 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/test/java/store/CatalogImpl.java | 6 +- .../src/test/java/store/ShoppingCartImpl.java | 4 +- .../src/test/resources/content/atomModel.js | 1119 ++++++++++++++++++++ .../src/test/resources/content/storeJS.html | 144 +++ .../src/test/resources/widgetJS.composite | 58 + 5 files changed, 1326 insertions(+), 5 deletions(-) create mode 100644 branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/content/atomModel.js create mode 100644 branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/content/storeJS.html create mode 100644 branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/widgetJS.composite (limited to 'branches/sca-equinox/modules') diff --git a/branches/sca-equinox/modules/implementation-widget-runtime/src/test/java/store/CatalogImpl.java b/branches/sca-equinox/modules/implementation-widget-runtime/src/test/java/store/CatalogImpl.java index f694c758dc..bed053eeee 100644 --- a/branches/sca-equinox/modules/implementation-widget-runtime/src/test/java/store/CatalogImpl.java +++ b/branches/sca-equinox/modules/implementation-widget-runtime/src/test/java/store/CatalogImpl.java @@ -34,9 +34,9 @@ public class CatalogImpl implements Catalog { @Init public void init() { - catalog.add("Apple - US$ 2.99"); - catalog.add("Orange - US$ 3.55"); - catalog.add("Pear - US$ 1.55"); + catalog.add("Apple - $ 2.99"); + catalog.add("Orange - $ 3.55"); + catalog.add("Pear - $ 1.55"); } public String[] get() { diff --git a/branches/sca-equinox/modules/implementation-widget-runtime/src/test/java/store/ShoppingCartImpl.java b/branches/sca-equinox/modules/implementation-widget-runtime/src/test/java/store/ShoppingCartImpl.java index d4d2810d5c..37e8d0161a 100644 --- a/branches/sca-equinox/modules/implementation-widget-runtime/src/test/java/store/ShoppingCartImpl.java +++ b/branches/sca-equinox/modules/implementation-widget-runtime/src/test/java/store/ShoppingCartImpl.java @@ -47,7 +47,6 @@ public class ShoppingCartImpl implements Collection { for (Entry entry : cart.values()) { feed.addEntry(entry); } - return feed; } @@ -83,7 +82,7 @@ public class ShoppingCartImpl implements Collection { entry.addLink(id, "edit"); entry.addLink(id, "alternate"); - entry.setEdited(new Date()); + entry.setUpdated(new Date()); cart.put(id, entry); return entry; @@ -106,6 +105,7 @@ public class ShoppingCartImpl implements Collection { String currencySymbol = ""; if (!cart.isEmpty()) { String item = ((Entry)cart.values().iterator().next()).getContent(); + // Select first symbol after dash. currencySymbol = item.substring(item.indexOf("-") + 2, item.indexOf("-") + 3); } for (Entry entry : cart.values()) { diff --git a/branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/content/atomModel.js b/branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/content/atomModel.js new file mode 100644 index 0000000000..f4e44bf589 --- /dev/null +++ b/branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/content/atomModel.js @@ -0,0 +1,1119 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +/** + * Class that defines a URI represented as a string, + */ +function Uri( value ) { + this.value = value; + this.getValue = function() { + return this.value; + }; + + this.setValue = function(value) { + this.value = value; + }; + + this.toString = function() { + return "Uri value=" + this.value; + }; +} + +/* Updated is Date */ +/* Published is Date */ + +/** + * Class that defines an Email represented as a string, + */ +function Email( value ) { + this.value = value; + this.getValue = function() { + return this.value; + }; + + this.setValue = function(value) { + this.value = value; + }; + + this.toString = function() { + return "Email value=" + this.value; + }; +} + +/** + * Class that defines an Id represented as a string, + */ +function Id( value ) { + this.value = value; + this.getValue = function() { + return this.value; + }; + + this.setValue = function(value) { + this.value = value; + }; + + this.toString = function() { + return "Id value=" + this.value; + }; +} + + +/** + * Class that defines an Id represented as a string, + */ +function Logo( value ) { + this.value = value; + this.getValue = function() { + return this.value; + }; + + this.setValue = function(value) { + this.value = value; + }; + + this.toString = function() { + return "Logo value=" + this.value; + }; +} + +/** + * Class that defines an Name represented as a string, + */ +function Name( value ) { + this.value = value; + this.getValue = function() { + return this.value; + }; + + this.setValue = function(value) { + this.value = value; + }; + + this.toString = function() { + return "Name value=" + this.value; + }; +} + +/** + * Class that defines a Text object. + */ +function Text( content, /* optional */ type ) { + this.content = content; + this.type = type; + if (!type) this.type = "text"; // If undefined or null, use text + + this.getValue = function() { + return this.value; + }; + + this.setText = function(content) { + this.content = content; + }; + + this.getText = function() { + return this.content; + }; + + this.setType = function(type) { + if ((type != "text") && (type != "html") && (type != "xhtml")) { + error( "Text type must be one of text, html, or xhtml" ); + } + this.type = type; + }; + + this.getType = function() { + return this.type; + }; + + this.setLang = function(lang) { + this.lang = lang; + }; + + this.getLang = function() { + return this.lang; + }; + + this.setUri = function(uri) { + this.uri = new Uri( uri ); + }; + + this.getUri = function() { + return this.uri; + }; + + this.toString = function() { + return "Text type=" + this.type + ", content=" + this.content; + }; +} + +/** + * Class that defines a Person object. + * atomPersonConstruct = + * atomCommonAttributes, + * (element atom:name { text } + * & element atom:uri { atomUri }? + * & element atom:email { atomEmailAddress }? + * & extensionElement*) + */ +function Person( name, email ) { + this.name = new Name( name ); + this.email = new Email( email ); + + this.setName = function( name ) { + this.name = new Name( name ); + }; + + this.getName = function() { + return this.name; + }; + + this.setLang = function(lang) { + this.lang = lang; + }; + + this.getLang = function() { + return this.lang; + }; + + this.setEmail = function( email ) { + this.email = new Email( email ); + }; + + this.getEmail = function() { + return this.email; + }; + + this.setUri = function( uri ) { + this.uri = new Uri( uri ); + }; + + this.getUri = function() { + return this.uri; + }; + + this.toString = function() { + return "Person name=" + this.name + ", email=" + this.email; + }; +} + +/** + * Class that defines a Generator object. + */ +function Generator( name, uri ) { + this.name = new Name( name ); + this.uri = new Uri( uri ); + + this.setName = function( name ) { + this.name = new Name( name ); + }; + + this.getName = function() { + return this.name; + }; + + this.setVersion = function(version) { + this.version = version; + }; + + this.getVersion = function() { + return this.version; + }; + + this.setUri = function( uri ) { + this.uri = new Email( uri ); + }; + + this.getUri = function() { + return this.uri; + }; + + this.toString = function() { + return "Generator name=" + this.name + ", email=" + this.email; + }; +} + +/** + * Class that defines a Category object. + *atomCategory = + * element atom:category { + * atomCommonAttributes, + * attribute term { text }, + * attribute scheme { atomUri }?, + * attribute label { text }?, + * undefinedContent + * } + */ +function Category( label, uri ) { + this.label = new Label( label ); + + this.setLabel = function( label ) { + this.label = label; + }; + + this.getLabel = function() { + return this.label; + }; + + this.setLang = function(lang) { + this.lang = lang; + }; + + this.getLang = function() { + return this.lang; + }; + + this.setTerm = function(term) { + this.term = term; + }; + + this.getTerm = function() { + return this.term; + }; + + this.setScheme = function( scheme ) { + this.scheme = scheme; + }; + + this.getScheme = function() { + return this.scheme; + }; + + this.toString = function() { + return "Category label=" + this.label; + }; +} + +/** + * Class that defines a Link object. + */ +function Link( href ) { + this.href = new Uri( href ); + + this.setHRef = function( uri ) { + this.href = new Uri( uri ); + }; + + this.getHRef = function() { + return this.href; + }; + + this.setTitle = function( title ) { + this.title = title; + }; + + this.getTitle = function() { + return this.title; + }; + + this.setHRefLang = function(lang) { + this.hrefLang = lang; + }; + + this.getHRefLang = function() { + return this.hreflang; + }; + + this.setTitleLang = function(lang) { + this.titleLang = lang; + }; + + this.getTitleLang = function() { + return this.titleLang; + }; + this.setLength= function( length ) { + this.length= length; + }; + + this.getLength = function() { + return this.length; + }; + +/* + String TYPE_ATOM + Link type used for Atom content. + String TYPE_HTML + Link type used for HTML content. +*/ + this.setMimeType = function(mimeType) { + this.mimeType = mimeType; + }; + + this.getMimeType = function() { + return this.mimeType; + }; + +/* + String REL_ALTERNATE + Link that provides the URI of an alternate format of the entry's or feed's contents. + String REL_ENTRY_EDIT + Link that provides the URI that can be used to edit the entry. + String REL_MEDIA_EDIT + Link that provides the URI that can be used to edit the media associated with an entry. + String REL_NEXT + Link that provides the URI of next page in a paged feed. + String REL_PREVIOUS + Link that provides the URI of previous page in a paged feed. + String REL_RELATED + Link that provides the URI of a related link to the entry. + String REL_SELF + Link that provides the URI of the feed or entry. + String REL_VIA + Link that provides the URI that of link that provides the data for the content in the feed. +*/ + this.setRelation = function( relation ) { + this.relation = relation; + }; + + this.getRelation = function() { + return this.relation; + }; + + this.toString = function() { + return "Link href=" + this.href + ", title=" + this.title; + }; +} + +/** + * Class that defines an Entry object. + * atomEntry = + * element atom:entry { + * atomCommonAttributes, + * (atomAuthor* + * & atomCategory* + * & atomContent? + * & atomContributor* + * & atomId + * & atomLink* + * & atomPublished? + * & atomRights? + * & atomSource? + * & atomSummary? + * & atomTitle + * & atomUpdated + * & extensionElement*) + * } + */ +function Entry( init ) { + // Constructor code at bottom after function definition + + var authors = new Array(); + var contributors = new Array(); + var categories = new Array(); + var links = new Array(); + + this.setPublished = function( published ) { + this.published = published; + }; + + this.getPublished = function() { + return this.published; + }; + + this.setUpdated = function( updated ) { + this.updated = updated; + }; + + this.getUpdated = function() { + return this.updated; + }; + + this.setNamespace = function( namespace ) { + this.namespace = namespace; + }; + + this.getNamespace = function() { + return this.namespace; + }; + + this.setContent = function( content ) { + if (!((typeof content == "object") && (content instanceof Text))) + error( "Entry content must be of type Text" ); + + this.content = content; + } + + this.getContent = function() { + return this.content; + }; + + this.setRights = function( rights ) { + if (!((typeof rights == "object") && (rights instanceof Text))) + error( "Entry rights must be of type Text" ); + this.rights = rights; + } + + this.getRights = function() { + return this.rights; + }; + + /* Type Text */ + this.setSummary = function( summary ) { + this.summary = summary; + } + + this.getSummary = function() { + return this.summary; + }; + + /* Type Text */ + this.setTitle = function( title ) { + if (!((typeof title == "object") && (title instanceof Text))) + error( "Entry title must be of type Text" ); + this.title = title; + } + + this.getTitle = function() { + return this.title; + }; + + /* Type Id */ + this.setId = function( id ) { + this.id = id; + } + + this.getId = function() { + return this.id; + }; + + /** + * Add an author. + * @param name Author + */ + this.addAuthor = function(person) { + if (!((typeof person == "object") && (person instanceof Person))) + error( "Entry author must be of type Person" ); + var i = authors.length; + authors[ i ] = person; + } + + /** + * Get an author. + * @param name Author + */ + this.getAuthor = function(name) { + return authors[ name ]; + } + + /** + * Set list of authors. + * @param name Author + */ + this.setAuthors = function( authors ) { + return this.authors = authors; + } + + /** + * Get an author"pom.xml". + * @param name Author + */ + this.getAuthors = function() { + return authors; + } + + /** + * Add an contributor. + * @param name Contributor + */ + this.addContributor = function(person) { + if (!((typeof person == "object") && (person instanceof Person))) + error( "Entry contributor must be of type Person" ); + var i = contributors.length; + contributors[ i ] = person; + } + + /** + * Get an contributor. + * @param name Contributor + */ + this.getContributor = function(name) { + return contributors[ name ]; + } + + /** + * Set list of contributors + * @param name Author + */ + this.setContributors = function( contributors ) { + return this.contributors = contributors; + } + + /** + * Get an contributor. + * @param name Contributor + */ + this.getContributors = function() { + return contributors; + } + + /** + * Add an contributor. + * @param name Category + */ + this.addCategory = function(category) { + if (!((typeof category == "object") && (person instanceof Category))) + error( "Entry category must be of type Category" ); + var i = categories.length + categories[ i ] = category; + } + + /** + * Get an contributor. + * @param name Category + */ + this.getCategory = function(name) { + return categories[ name ]; + } + + /** + * Set list of categories + * @param name Author + */ + this.setCategories = function( categories ) { + return this.categories = categories; + } + + /** + * Get an contributor. + * @param name Category + */ + this.getCategories = function() { + return categories; + } + + /** + * Add an link. + * @param name Link + */ + this.addLink = function(link) { + if (!((typeof link == "object") && (link instanceof Link))) + error( "Entry link must be of type Link" ); + var i = links.length; + links[ i ] = link; + } + + /** + * Get an link. + * @param name Link + */ + this.getLink = function(name) { + return links[ name ]; + } + + /** + * Set list of links. + * @param name Link + */ + this.setLinks = function( links ) { + return this.links = links; + } + + /** + * Get an link. + * @param name Link + */ + this.getLinks = function() { + return links; + } + + this.readFromXML = function( xml ) { + if (!((typeof xml == "object") && (xml instanceof string))) + error( "Entry xml must be of type string" ); + // To Do - Read from arbutrary XML such as + // + // cart-item + // Apple - $ 2.99 + // cart-bd5323d6-1f59-4fae-a8f5-01f7654f1e77 + // + // + // 2008-09-21T23:06:43.921Z + // + + } + this.readFromDoc = function( htmlDoc ) { + // Expect HTML collection. + var entryDoc = htmlDoc.getElementsByTagName("entry"); + for (var i = 0; i < entryDoc.length; i++) { + this.readFromNode( entryDoc[ i ] ); + } + } + + this.readFromNode = function( entryNode ) { + // Expect entry node + var childNodes = entryNode.childNodes; + for ( var i = 0; i < childNodes.length; i++ ) { + var node = childNodes[ i ]; + if (node.nodeType == 1 /*Node.ELEMENT_NODE*/) { + var tagName = node.tagName; + if (tagName == "title" ) { + var title = new Text( getTextContent( node ) ); + title.setType( "text" ); + this.setTitle( title ); + } else if ( tagName == "subtitle" ) { + var title = new Text( getTextContent( node ) ); + title.setType( "text" ); + this.setSubTitle( title ); + } else if ( tagName == "id" ) { + var id = new Id( getTextContent( node ) ); + this.setId( id ); + } else if ( tagName == "updated" ) { + var dateText = getTextContent( node ); + var date = new Date( dateText ); // 2008-09-21T23:06:43.921Z + this.setUpdated( date ); + } else if ( tagName == "link" ) { + var href = node.attributes[ "href" ]; + var link = new Link( href.value ); + var rel = node.attributes[ "rel" ]; + link.setRelation( rel.value ); + this.addLink( link ); + } else if ( tagName == "content" ) { + var content = new Text( getTextContent( node ) ); + var attr = node.attributes[ "type" ]; + if ( attr != null ) { + content.setType( attr.value ); + } + this.setContent( content ); + } else { + // To Do - implement rest of nodes + error( "undefined element node" ); + } + } else if (node.nodeType == 2 /*Node.ATTRIBUTE_NODE*/) { + var attrName = node.tagName; + } else if (node.nodeType == 3 /*Node.TEXT_NODE*/) { + } + } + } + + this.toString = function() { + return "Entry title=" + this.title + ", updated=" + this.updated; + }; + + // Initialize from constructor + if (typeof init == 'object') { + if ( init.nodeType == 1 ) { /* Document Node.ELEMENT_NODE 1 */ + this.readFromDoc( init ); + } else { + error( "Feed init unknown type" ); + } + } +} + +/** + * Class that defines an Feed object. + * atomFeed = + * element atom:feed { + * atomCommonAttributes, + * (atomAuthor* + * & atomCategory* + * & atomContributor* + * & atomGenerator? + * & atomIcon? + * & atomId + * & atomLink* + * & atomLogo? + * & atomRights? + * & atomSubtitle? + * & atomTitle + * & atomUpdated + * & extensionElement*), + * atomEntry* + */ +function Feed( init ) { + // See init after functions have been defined. + + var authors = new Array(); + var contributors = new Array(); + var categories = new Array(); + var links = new Array(); + var entries = new Array(); + + this.setPublished = function( published ) { + this.published = published; + }; + + this.getPublished = function() { + return this.published; + }; + + this.setUpdated = function( updated ) { + this.updated = updated; + }; + + this.getUpdated = function() { + return this.updated; + }; + + this.setNamespace = function( namespace ) { + this.namespace = namespace; + }; + + this.getNamespace = function() { + return this.namespace; + }; + + this.setContent = function( content ) { + if (!((typeof content == "object") && (content instanceof Text))) + error( "Entry content must be of type Text" ); + + this.content = content; + } + + this.getContent = function() { + return this.content; + }; + + this.setRights = function( rights ) { + if (!((typeof rights == "object") && (rights instanceof Text))) + error( "Feed rights must be of type Text" ); + this.rights = rights; + } + + this.getRights = function() { + return this.rights; + }; + + this.setSummary = function( summary ) { + if (!((typeof summary == "object") && (summary instanceof Text))) + error( "Feed summary must be of type Text" ); + this.summary = summary; + } + + this.getSummary = function() { + return this.summary; + }; + + this.setTitle = function( title ) { + if (!((typeof title == "object") && (title instanceof Text))) + error( "Feed title must be of type Text" ); + this.title = title; + } + + this.getTitle = function() { + return this.title; + }; + + this.setSubTitle = function( subtitle ) { + if (!((typeof subtitle == "object") && (subtitle instanceof Text))) + error( "Feed subtitle must be of type Text" ); + this.subtitle = subtitle; + } + + this.getSubTitle = function() { + return this.subtitle; + }; + + /* Type Id */ + this.setId = function( id ) { + this.id = id; + } + + this.getId = function() { + return this.id; + }; + + this.setGenerator = function( generator ) { + if (!((typeof generator == "object") && (generator instanceof Generator))) + error( "Feed generator must be of type Generator" ); + this.generator = generator; + } + + this.getGenerator = function() { + return this.generator; + }; + + this.setBase = function( base ) { + this.base = base; + } + + this.getBase = function() { + return this.base; + }; + + this.setLogo = function( logo ) { + this.logo = logo; + } + + this.getLogo = function() { + return this.logo; + }; + + /** + * Add an author. + * @param name Author + */ + this.addAuthor = function(person) { + if (!((typeof person == "object") && (person instanceof Person))) + error( "Entry author must be of type Person" ); + var i = authors.length; + authors[ i ] = person; + } + + /** + * Get an author. + * @param name Author + */ + this.getAuthor = function(name) { + return authors[ name ]; + } + + /** + * Set list of authors. + * @param name Author + */ + this.setAuthors = function( authors ) { + return this.authors = authors; + } + + /** + * Get an author. + * @param name Author + */ + this.getAuthors = function() { + return authors; + } + + /** + * Add an contributor. + * @param name Contributor + */ + this.addContributor = function(person) { + if (!((typeof person == "object") && (person instanceof Person))) + error( "Entry contributor must be of type Person" ); + var i = contributors.length; + contributors[ i ] = person; + } + + /** + * Get an contributor. + * @param name Contributor + */ + this.getContributor = function(name) { + return contributors[ name ]; + } + + /** + * Set list of contributors + * @param name Author + */ + this.setContributors = function( contributors ) { + return this.contributors = contributors; + } + + /** + * Get an contributor. + * @param name Contributor + */ + this.getContributors = function() { + return contributors; + } + + /** + * Add an contributor. + * @param name Category + */ + this.addCategory = function(category) { + if (!((typeof category == "object") && (person instanceof Category))) + error( "Entry category must be of type Category" ); + var i = categories.length; + categories[ i ] = category; + } + + /** + * Get an contributor. + * @param name Category + */ + this.getCategory = function(name) { + return categories[ name ]; + } + + /** + * Set list of categories + * @param name Author + */ + this.setCategories = function( categories ) { + return this.categories = categories; + } + + /** + * Get an contributor. + * @param name Category + */ + this.getCategories = function() { + return categories; + } + + /** + * Add an link. + * @param name Link + */ + this.addLink = function(link) { + if (!((typeof link == "object") && (link instanceof Link))) + error( "Entry link must be of type Link" ); + var i = links.length + links[ i ] = link; + } + + /** + * Get an link. + * @param name Link + */ + this.getLink = function(name) { + return links[ name ]; + } + + /** + * Set list of links. + * @param name Link + */ + this.setLinks = function( links ) { + return this.links = links; + } + + /** + * Get an link. + * @param name Link + */ + this.getLinks = function() { + return links; + } + + /** + * Add an entry. + * @param name Entry + */ + this.addEntry = function(entry) { + if (!((typeof entry == "object") && (entry instanceof Entry))) + error( "Entry entry must be of type Entry" ); + var i = entries.length; + entries[ i ] = entry; + } + + /** + * Get an entry by name. + * @param name Entry + */ + this.getEntry = function(name) { + return entries[ name ]; + } + + /** + * Set list of entries + * @param name Author + */ + this.setEntries = function( entries ) { + return this.entries = entries; + } + + /** + * Get an contributor. + * @param name Entry + */ + this.getEntries = function() { + return entries; + } + + this.readFromXML = function( xml ) { + // To Do Read from arbitraty XML such as + // + // shopping cart + // Total : $4.54 + // + // ... + // + // + } + + this.readFromDoc = function( htmlDoc ) { + // Expect HTML collection. + var feedDoc = htmlDoc.getElementsByTagName("feed"); + for (var i = 0; i < feedDoc.length; i++) { + this.readFromNode( feedDoc[ i ] ); + } + } + this.readFromNode = function( feedNode ) { + var entries = this.getEntries(); + var entryCount = 0; + if ( entries != null ) { + entryCount = entries.length; + } + // Expect feed node + var childNodes = feedNode.childNodes; + for ( var i = 0; i < childNodes.length; i++ ) { + var node = childNodes[ i ]; + if (node.nodeType == 1 /*Node.ELEMENT_NODE*/) { + var tagName = node.tagName; + if (tagName == "title" ) { + var title = new Text( getTextContent( node ) ); + title.setType( "text" ); + this.setTitle( title ); + } else if ( tagName == "subtitle" ) { + var title = new Text( getTextContent( node ) ); + title.setType( "text" ); + this.setSubTitle( title ); + } else if ( tagName == "entry" ) { + var entry = new Entry(); + entry.readFromNode( node ); + this.addEntry( entry ); + } else if ( tagName == "id" ) { + var id = new Id( getTextContent( node ) ); + this.setId( id ); + } else if ( tagName == "updated" ) { + var dateText = getTextContent( node ); + var date = new Date( dateText ); //2008-09-21T23:06:53.750Z + this.setUpdated( date ); + } else if ( tagName == "link" ) { + var href = node.attributes[ "href" ]; + var link = new Link( href.value ); + var rel = node.attributes[ "rel" ]; + link.setRelation( rel.value ); + this.addLink( link ); + } else { + // To Do - implement rest of nodes + error( "undefined element node" ); + } + } else if (node.nodeType == 2 /*Node.ATTRIBUTE_NODE*/) { + var attrName = node.tagName; + } else if (node.nodeType == 3 /*Node.TEXT_NODE*/) { + } + } + } + + this.toString = function() { + return "Feed title=" + this.title + ", updated=" + this.updated; + }; + + // Initialize from constructor + if (typeof init == 'object') { + if ( init.nodeType == 9 ) { /* Document Node.DOCUMENT_NODE 9 */ + this.readFromDoc( init ); + } else { + error( "Feed init unknown type" ); + } + } +} + +function error( message ) { + alert( message ); +} + +/* Returns inner text on both IE and modern browsers. */ +function getTextContent(obj) { + // innerText for IE, textContent for others, "" for others. + return (obj.innerText) ? obj.innerText : (obj.textContent) ? obj.textContent : ""; +} \ No newline at end of file diff --git a/branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/content/storeJS.html b/branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/content/storeJS.html new file mode 100644 index 0000000000..ae1fbb4356 --- /dev/null +++ b/branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/content/storeJS.html @@ -0,0 +1,144 @@ + + + +Store + + + + + + + + + + + + +

Store

+
+

Catalog

+
+
+
+ +
+ +
+ +

Your Shopping Cart

+
+
+
+
+
+ + + (feed) +
+
+ + diff --git a/branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/widgetJS.composite b/branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/widgetJS.composite new file mode 100644 index 0000000000..e44a56e520 --- /dev/null +++ b/branches/sca-equinox/modules/implementation-widget-runtime/src/test/resources/widgetJS.composite @@ -0,0 +1,58 @@ + + + + + + + + en + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3