You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wookie.apache.org by sc...@apache.org on 2009/11/05 01:48:45 UTC
svn commit: r832940 - in /incubator/wookie/trunk:
src-tests/org/apache/wookie/tests/ src/org/apache/wookie/
src/org/apache/wookie/manager/impl/ src/org/apache/wookie/manifestmodel/
src/org/apache/wookie/manifestmodel/impl/ src/org/apache/wookie/util/
Author: scottbw
Date: Thu Nov 5 00:48:44 2009
New Revision: 832940
URL: http://svn.apache.org/viewvc?rev=832940&view=rev
Log:
Fix for issue WOOKIE-54 affecting processing of widgets using unicode whitespace characters; also fixed issues relating to non-localized elements and repeat elements. Overall this changeset should fix about 12 or so conformance errors.
Added:
incubator/wookie/trunk/src/org/apache/wookie/util/UnicodeUtils.java
Modified:
incubator/wookie/trunk/src-tests/org/apache/wookie/tests/W3CTest.java
incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AccessEntity.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AuthorEntity.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/ContentEntity.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/DescriptionEntity.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/FeatureEntity.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/IconEntity.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/LicenseEntity.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/NameEntity.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/ParamEntity.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/PreferenceEntity.java
incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/WidgetManifestModel.java
Modified: incubator/wookie/trunk/src-tests/org/apache/wookie/tests/W3CTest.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src-tests/org/apache/wookie/tests/W3CTest.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src-tests/org/apache/wookie/tests/W3CTest.java (original)
+++ incubator/wookie/trunk/src-tests/org/apache/wookie/tests/W3CTest.java Thu Nov 5 00:48:44 2009
@@ -108,13 +108,13 @@
IManifestModel model = WidgetManifestUtils.dealWithManifest(BASIC_MANIFEST,null);
assertNotNull(model);
assertEquals("http://www.getwookie.org/widgets/WP3/natter", model.getIdentifier());
- assertEquals("Natter", model.getFirstName());
+ assertEquals("Natter", model.getLocalName("en"));
assertEquals(255, model.getWidth());
assertEquals(383, model.getHeight());
assertEquals("Icon.png", model.getFirstIconPath());
assertEquals("Scott Wilson", model.getAuthor());
assertEquals("1.0", model.getVersion());
- assertEquals("basic chat widget", model.getFirstDescription());
+ assertEquals("basic chat widget", model.getLocalDescription("en"));
assertEquals("application", model.getViewModes());
}
catch (JDOMException ex) {
@@ -134,7 +134,7 @@
IManifestModel model = WidgetManifestUtils.dealWithManifest(FEATURES_MANIFEST, null);
assertNotNull(model);
assertEquals("http://www.getwookie.org/example", model.getIdentifier());
- assertEquals("Example Test Widget", model.getFirstName());
+ assertEquals("Example Test Widget", model.getLocalName("en"));
assertEquals(2, model.getNames().size());
assertEquals("es", model.getDescriptions().get(1).getLanguage());
Modified: incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/WidgetAdminServlet.java Thu Nov 5 00:48:44 2009
@@ -493,7 +493,7 @@
if(!manager.doesWidgetAlreadyExistInSystem(manifestIdentifier)){
int dbkey = manager.addNewWidget(widgetModel, new String[]{});
// widget added
- session.setAttribute("message_value", "'"+ widgetModel.getFirstName() +"' - " + localizedMessages.getString("WidgetAdminServlet.19")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ session.setAttribute("message_value", "'"+ widgetModel.getLocalName("en") +"' - " + localizedMessages.getString("WidgetAdminServlet.19")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
retrieveServices(session, manager);
session.setAttribute("hasValidated", Boolean.valueOf(true)); //$NON-NLS-1$
session.setAttribute("dbkey", dbkey); //$NON-NLS-1$
@@ -503,7 +503,7 @@
else{
// TODO - call the manager to update required resources
// widget updated
- session.setAttribute("message_value", "'"+ widgetModel.getFirstName() +"' - " + localizedMessages.getString("WidgetAdminServlet.20")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ session.setAttribute("message_value", "'"+ widgetModel.getLocalName("en") +"' - " + localizedMessages.getString("WidgetAdminServlet.20")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
}
else{
Modified: incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manager/impl/WidgetAdminManager.java Thu Nov 5 00:48:44 2009
@@ -83,8 +83,8 @@
int newWidgetIdx = -1;
Widget widget;
widget = new Widget();
- widget.setWidgetTitle(model.getFirstName());
- widget.setWidgetDescription(model.getFirstDescription());
+ widget.setWidgetTitle(model.getLocalName("en"));
+ widget.setWidgetDescription(model.getLocalDescription("en"));
widget.setWidgetAuthor(model.getAuthor());
widget.setWidgetIconLocation(model.getFirstIconPath());
widget.setUrl(model.getContent().getSrc());
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=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/IManifestModel.java Thu Nov 5 00:48:44 2009
@@ -32,11 +32,11 @@
public void updateIconPaths(String path);
- public String getFirstName();
+ public String getLocalName(String locale);
public List<INameEntity> getNames();
- public String getFirstDescription();
+ public String getLocalDescription(String locale);
public int getHeight();
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=832940&r1=832939&r2=832940&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 Thu Nov 5 00:48:44 2009
@@ -16,6 +16,7 @@
import org.apache.wookie.manifestmodel.IAccessEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
/**
* @author Paul Sharples
@@ -56,13 +57,10 @@
}
public void fromXML(Element element) {
- fUri = element.getAttributeValue(IW3CXMLConfiguration.URI_ATTRIBUTE);
+ fUri = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.URI_ATTRIBUTE));
//TODO this is required, but may need to be checked
- if(fUri == null){
- fUri = "";
- }
- String subDomains = element.getAttributeValue(IW3CXMLConfiguration.SUBDOMAINS_ATTRIBUTE);
- if(subDomains == null){
+ String subDomains = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.SUBDOMAINS_ATTRIBUTE));
+ if(subDomains.equals("")){
fSubDomains = false;
}
else{
Modified: incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AuthorEntity.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AuthorEntity.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AuthorEntity.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/AuthorEntity.java Thu Nov 5 00:48:44 2009
@@ -16,6 +16,7 @@
import org.apache.wookie.manifestmodel.IAuthorEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
/**
* @author Paul Sharples
@@ -69,19 +70,9 @@
}
public void fromXML(Element element) {
- fAuthorName = element.getText();
- if(fAuthorName == null){
- fAuthorName = "";
- }
- fHref = element.getAttributeValue(IW3CXMLConfiguration.HREF_ATTRIBUTE);
- if(fHref == null){
- fHref = "";
- }
- fEmail = element.getAttributeValue(IW3CXMLConfiguration.EMAIL_ATTRIBUTE);
- if(fEmail == null){
- fEmail = "";
- }
-
+ fAuthorName = UnicodeUtils.normalizeWhitespace(element.getText());
+ fHref = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.HREF_ATTRIBUTE));
+ fEmail = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.EMAIL_ATTRIBUTE));
}
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/ContentEntity.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/ContentEntity.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/ContentEntity.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/ContentEntity.java Thu Nov 5 00:48:44 2009
@@ -16,6 +16,7 @@
import org.apache.wookie.manifestmodel.IContentEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
/**
* @author Paul Sharples
@@ -69,20 +70,17 @@
}
public void fromXML(Element element) {
- fSrc = element.getAttributeValue(IW3CXMLConfiguration.SOURCE_ATTRIBUTE);
- if(fSrc == null){
- fSrc = IW3CXMLConfiguration.DEFAULT_SRC_PAGE;
- }
+ fSrc = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.SOURCE_ATTRIBUTE));
// just in case it's there, but they leave it empty
- if(fSrc == ""){
+ if(fSrc.equals("")){
fSrc = IW3CXMLConfiguration.DEFAULT_SRC_PAGE;
}
- fCharSet = element.getAttributeValue(IW3CXMLConfiguration.CHARSET_ATTRIBUTE);
- if(fCharSet == null){
+ fCharSet = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.CHARSET_ATTRIBUTE));
+ if(fSrc.equals("")){
fCharSet = IW3CXMLConfiguration.DEFAULT_CHARSET;
}
- fType = element.getAttributeValue(IW3CXMLConfiguration.TYPE_ATTRIBUTE);
- if(fType == null){
+ fType = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.TYPE_ATTRIBUTE));
+ if(fSrc.equals("")){
fType = IW3CXMLConfiguration.DEFAULT_MEDIA_TYPE;
}
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/DescriptionEntity.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/DescriptionEntity.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/DescriptionEntity.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/DescriptionEntity.java Thu Nov 5 00:48:44 2009
@@ -16,6 +16,7 @@
import org.apache.wookie.manifestmodel.IDescriptionEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
import org.jdom.Namespace;
/**
@@ -59,14 +60,8 @@
}
public void fromXML(Element element) {
- fDescription = element.getText();
- if(fDescription == null){
- fDescription = "";
- }
- fLanguage = element.getAttributeValue(IW3CXMLConfiguration.LANG_ATTRIBUTE, Namespace.XML_NAMESPACE);
- if(fLanguage == null){
- fLanguage = IW3CXMLConfiguration.DEFAULT_LANG;
- }
+ fDescription = UnicodeUtils.normalizeWhitespace(element.getText());
+ fLanguage = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.LANG_ATTRIBUTE, Namespace.XML_NAMESPACE));
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/FeatureEntity.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/FeatureEntity.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/FeatureEntity.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/FeatureEntity.java Thu Nov 5 00:48:44 2009
@@ -21,6 +21,7 @@
import org.apache.wookie.manifestmodel.IFeatureEntity;
import org.apache.wookie.manifestmodel.IParamEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
/**
* @author Paul Sharples
@@ -89,12 +90,12 @@
}
public void fromXML(Element element) throws BadManifestException {
- fName = element.getAttributeValue(IW3CXMLConfiguration.NAME_ATTRIBUTE);
- if(fName == null || fName == ""){
+ fName = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.NAME_ATTRIBUTE));
+ if(fName == null || fName.equals("")){
throw new BadManifestException("A Feature is defined in the manifest, but its name attribute is empty.");
}
- String isRequired = element.getAttributeValue(IW3CXMLConfiguration.REQUIRED_ATTRIBUTE);
- if(isRequired == null){
+ String isRequired = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.REQUIRED_ATTRIBUTE));
+ if(isRequired.equals("")){
fRequired = true;
}
else{
Modified: incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/IconEntity.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/IconEntity.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/IconEntity.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/IconEntity.java Thu Nov 5 00:48:44 2009
@@ -16,6 +16,7 @@
import org.apache.wookie.manifestmodel.IIconEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
/**
* @author Paul Sharples
@@ -65,26 +66,31 @@
public void fromXML(Element element) {
// src is required
- fSrc = element.getAttributeValue(IW3CXMLConfiguration.SOURCE_ATTRIBUTE);
+ fSrc = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.SOURCE_ATTRIBUTE));
// TODO - do we test that this file exists?
- if(fSrc==null){
- fSrc="";
- }
// height is optional
- String tempHeight = element.getAttributeValue(IW3CXMLConfiguration.HEIGHT_ATTRIBUTE);
- if(tempHeight == null){
+ String tempHeight = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.HEIGHT_ATTRIBUTE));
+ if(tempHeight.equals("")){
fHeight = IW3CXMLConfiguration.DEFAULT_HEIGHT_SMALL;
}
else{
- fHeight = Integer.valueOf(tempHeight);
+ try {
+ fHeight = Integer.valueOf(tempHeight);
+ } catch (NumberFormatException e) {
+ fHeight = IW3CXMLConfiguration.DEFAULT_HEIGHT_SMALL;
+ }
}
// width is optional
- String tempWidth = element.getAttributeValue(IW3CXMLConfiguration.WIDTH_ATTRIBUTE);
- if(tempWidth == null){
+ String tempWidth = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.WIDTH_ATTRIBUTE));
+ if(tempWidth.equals("")){
fWidth = IW3CXMLConfiguration.DEFAULT_WIDTH_SMALL;
}
else{
- fWidth = Integer.valueOf(tempWidth);
+ try {
+ fWidth = Integer.valueOf(tempWidth);
+ } catch (NumberFormatException e) {
+ fWidth = IW3CXMLConfiguration.DEFAULT_WIDTH_SMALL;
+ }
}
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/LicenseEntity.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/LicenseEntity.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/LicenseEntity.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/LicenseEntity.java Thu Nov 5 00:48:44 2009
@@ -16,6 +16,7 @@
import org.apache.wookie.manifestmodel.ILicenseEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
import org.jdom.Namespace;
/**
@@ -70,17 +71,10 @@
}
public void fromXML(Element element) {
- fLicenseText = element.getText();
-
- if(fLicenseText == null){
- fLicenseText = "";
- }
- fHref = element.getAttributeValue(IW3CXMLConfiguration.HREF_ATTRIBUTE);
- if(fHref == null){
- fHref = "";
- }
- fLanguage = element.getAttributeValue(IW3CXMLConfiguration.LANG_ATTRIBUTE, Namespace.XML_NAMESPACE);
- if(fLanguage == null){
+ fLicenseText = UnicodeUtils.normalizeWhitespace(element.getText());
+ fHref = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.HREF_ATTRIBUTE));
+ fLanguage = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.LANG_ATTRIBUTE, Namespace.XML_NAMESPACE));
+ if(fLanguage.equals("")){
fLanguage = IW3CXMLConfiguration.DEFAULT_LANG;
}
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/NameEntity.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/NameEntity.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/NameEntity.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/NameEntity.java Thu Nov 5 00:48:44 2009
@@ -16,6 +16,7 @@
import org.apache.wookie.manifestmodel.INameEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
import org.jdom.Namespace;
/**
@@ -70,22 +71,12 @@
}
public void fromXML(Element element) {
- fName = element.getText();
// Get the text value of name
- if(fName == null){
- fName = "";
- }
+ fName = UnicodeUtils.normalizeWhitespace(element.getText());
// Get the xml:lang attribute (if exists)
- fLanguage = element.getAttributeValue(IW3CXMLConfiguration.LANG_ATTRIBUTE, Namespace.XML_NAMESPACE);
- if(fLanguage == null){
- fLanguage = IW3CXMLConfiguration.DEFAULT_LANG;
- }
+ fLanguage = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.LANG_ATTRIBUTE, Namespace.XML_NAMESPACE));
// Get the short attribute (if exists)
- fShort = element.getAttributeValue(IW3CXMLConfiguration.SHORT_ATTRIBUTE);
- if(fShort == null){
- fShort = "";
- }
+ fShort = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.SHORT_ATTRIBUTE));
}
-
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/ParamEntity.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/ParamEntity.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/ParamEntity.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/ParamEntity.java Thu Nov 5 00:48:44 2009
@@ -17,6 +17,7 @@
import org.apache.wookie.exceptions.BadManifestException;
import org.apache.wookie.manifestmodel.IParamEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
/**
* @author Paul Sharples
@@ -59,16 +60,8 @@
}
public void fromXML(Element element) throws BadManifestException {
- // Name
- fName = element.getAttributeValue(IW3CXMLConfiguration.NAME_ATTRIBUTE);
- if(fName == null){
- fName = "";
- }
- // Value
- fValue = element.getAttributeValue(IW3CXMLConfiguration.VALUE_ATTRIBUTE);
- if(fValue == null){
- fValue = "";
- }
+ fName = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.NAME_ATTRIBUTE));
+ fValue = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.VALUE_ATTRIBUTE));
}
}
Modified: incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/PreferenceEntity.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/PreferenceEntity.java?rev=832940&r1=832939&r2=832940&view=diff
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/PreferenceEntity.java (original)
+++ incubator/wookie/trunk/src/org/apache/wookie/manifestmodel/impl/PreferenceEntity.java Thu Nov 5 00:48:44 2009
@@ -17,6 +17,7 @@
import org.apache.wookie.exceptions.BadManifestException;
import org.apache.wookie.manifestmodel.IPreferenceEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
/**
* @author Paul Sharples
@@ -45,8 +46,8 @@
public void fromXML(Element element) throws BadManifestException {
super.fromXML(element);
- String isReadOnly = element.getAttributeValue(IW3CXMLConfiguration.READONLY_ATTRIBUTE);
- if(isReadOnly == null){
+ String isReadOnly = UnicodeUtils.normalizeSpaces(element.getAttributeValue(IW3CXMLConfiguration.READONLY_ATTRIBUTE));
+ if(isReadOnly.equals("")){
fReadOnly = false;
}
else{
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=832940&r1=832939&r2=832940&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 Thu Nov 5 00:48:44 2009
@@ -31,6 +31,7 @@
import org.apache.wookie.manifestmodel.IPreferenceEntity;
import org.apache.wookie.manifestmodel.IW3CXMLConfiguration;
import org.apache.wookie.util.RandomGUID;
+import org.apache.wookie.util.UnicodeUtils;
import org.jdom.Element;
import org.jdom.Namespace;
/**
@@ -114,22 +115,24 @@
return fNamesList;
}
- public String getFirstName(){
- if(fNamesList.size() > 0){
- return fNamesList.get(0).getName();
- }
- else {
- return IW3CXMLConfiguration.UNKNOWN;
- }
- }
-
- public String getFirstDescription(){
- if(fDescriptionsList.size() > 0){
- return fDescriptionsList.get(0).getDescription();
- }
- else {
- return IW3CXMLConfiguration.UNKNOWN;
+ public String getLocalName(String locale){
+ String nonlocalizedvalue = null;
+ for (INameEntity name:fNamesList.toArray(new INameEntity[fNamesList.size()])){
+ if (name.getLanguage().equals(locale)) return name.getName();
+ if (name.getLanguage().equals("")) nonlocalizedvalue = name.getName();
+ }
+ if (nonlocalizedvalue == null) return IW3CXMLConfiguration.UNKNOWN;
+ return nonlocalizedvalue;
+ }
+
+ public String getLocalDescription(String locale){
+ String nonlocalizedvalue = "";
+ for (IDescriptionEntity desc:fDescriptionsList.toArray(new IDescriptionEntity[fDescriptionsList.size()])){
+ if (desc.getLanguage().equals(locale)) return desc.getDescription();
+ if (desc.getLanguage().equals("")) nonlocalizedvalue = desc.getDescription();
}
+ if (nonlocalizedvalue == null) return IW3CXMLConfiguration.UNKNOWN;
+ return nonlocalizedvalue;
}
public List<IIconEntity> getIconsList() {
@@ -196,12 +199,17 @@
//give up & generate one
RandomGUID r = new RandomGUID();
fIdentifier = "generated-uid-" + r.toString();
+ } else {
+ //normalize spaces
+ fIdentifier = UnicodeUtils.normalizeSpaces(fIdentifier);
}
// VERSION IS OPTIONAL
fVersion = element.getAttributeValue(IW3CXMLConfiguration.VERSION_ATTRIBUTE);
if(fVersion == null){
// give up
fVersion = IW3CXMLConfiguration.DEFAULT_WIDGET_VERSION;
+ } else {
+ fVersion = UnicodeUtils.normalizeSpaces(fVersion);
}
// HEIGHT IS OPTIONAL
String height = element.getAttributeValue(IW3CXMLConfiguration.HEIGHT_ATTRIBUTE);
@@ -225,6 +233,8 @@
fViewModes = element.getAttributeValue(IW3CXMLConfiguration.MODE_ATTRIBUTE);
if(fViewModes == null){
fViewModes = IW3CXMLConfiguration.DEFAULT_VIEWMODE;
+ } else {
+ fViewModes = UnicodeUtils.normalizeSpaces(fViewModes);
}
// xml:lang optional
fLang = element.getAttributeValue(IW3CXMLConfiguration.LANG_ATTRIBUTE, Namespace.XML_NAMESPACE);
@@ -254,8 +264,8 @@
fDescriptionsList.add(aDescription);
}
- // AUTHOR IS OPTIONAL - can only be one
- if(tag.equals(IW3CXMLConfiguration.AUTHOR_ELEMENT)) {
+ // AUTHOR IS OPTIONAL - can only be one, ignore subsequent repetitions
+ if(tag.equals(IW3CXMLConfiguration.AUTHOR_ELEMENT) && fAuthor == null) {
fAuthor = new AuthorEntity();
fAuthor.fromXML(child);
}
Added: incubator/wookie/trunk/src/org/apache/wookie/util/UnicodeUtils.java
URL: http://svn.apache.org/viewvc/incubator/wookie/trunk/src/org/apache/wookie/util/UnicodeUtils.java?rev=832940&view=auto
==============================================================================
--- incubator/wookie/trunk/src/org/apache/wookie/util/UnicodeUtils.java (added)
+++ incubator/wookie/trunk/src/org/apache/wookie/util/UnicodeUtils.java Thu Nov 5 00:48:44 2009
@@ -0,0 +1,67 @@
+package org.apache.wookie.util;
+
+import org.apache.commons.lang.CharSetUtils;
+import org.apache.commons.lang.StringUtils;
+
+/*
+ * 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.
+ */
+
+/**
+ * A utility class for sanitizing unicode strings in accordance with the rules for
+ * handling normalized text content and attributes set out in the W3C Widgets
+ * specification
+ */
+public class UnicodeUtils {
+
+ /**
+ * Normalizes all whitespace and space characters in the given string to
+ * U+0020, then collapses multiple adjacent spaces to a single space, and
+ * removes any leading and trailing spaces. If the input string is null,
+ * the method returns an empty string ("")
+ * @param in the string to normalize
+ * @return the normalized string
+ */
+ public static String normalizeWhitespace(String in){
+ return normalize(in, true);
+ }
+
+ /**
+ * Normalizes all space characters in the given string to
+ * U+0020, then collapses multiple adjacent spaces to a single space, and
+ * removes any leading and trailing spaces. If the input string is null,
+ * the method returns an empty string ("")
+ * @param in the string to normalize
+ * @return the normalized string
+ */
+ public static String normalizeSpaces(String in){
+ return normalize(in, false);
+ }
+
+ private static String normalize(String in, boolean includeWhitespace){
+ if (in == null) return "";
+ String out = "";
+ for (int x=0;x<in.length();x++){
+ String s = in.substring(x, x+1);
+ char ch = s.charAt(0);
+ if (Character.isSpaceChar(ch) || (Character.isWhitespace(ch) && includeWhitespace)){
+ s = " ";
+ }
+ out = out + s;
+ }
+ out = CharSetUtils.squeeze(out, " ");
+ out = StringUtils.strip(out);
+ return out;
+ }
+
+}