You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-commits@incubator.apache.org by ma...@apache.org on 2006/07/25 04:42:46 UTC

svn commit: r425276 [4/12] - in /incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src: main/java/org/apache/myfaces/adfinternal/agent/ main/java/org/apache/myfaces/adfinternal/agent/parse/ main/java/org/apache/myfaces/adfi...

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/CapabilityDataDocumentParser.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/CapabilityDataDocumentParser.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/CapabilityDataDocumentParser.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/CapabilityDataDocumentParser.java Mon Jul 24 21:42:41 2006
@@ -13,149 +13,149 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package org.apache.myfaces.adfinternal.agent.parse;
-
-import org.xml.sax.SAXException;
-import org.xml.sax.InputSource;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXParseException;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.ArrayList;
-import java.net.URL;
-import java.net.URLConnection;
-
-import org.apache.myfaces.adf.logging.ADFLogger;
-import org.apache.myfaces.adfinternal.agent.CapabilityKey;
-import org.apache.myfaces.adfinternal.agent.CapabilityValue;
-import org.apache.myfaces.adfinternal.share.xml.BaseNodeParser;
-import org.apache.myfaces.adfinternal.share.xml.ParseContextImpl;
-import org.apache.myfaces.adfinternal.share.xml.TreeBuilder;
-import org.apache.myfaces.adfinternal.share.xml.ParseContext;
-import org.apache.myfaces.adfinternal.share.xml.NodeParser;
-
-/**
- * CapabilitiesData document parser
- */
-public class CapabilityDataDocumentParser  extends BaseNodeParser
-        implements XMLConstants
-{
-
-  private CapabilityDataDocumentParser()
-  {
-  }
-
-  static public Object[] parse (URL srcUrl)
-  {
-    //if URL is null return empty documen
-    if (srcUrl == null)
-      return new Object[0];
-
-    CapabilityDataDocumentParser parser = new CapabilityDataDocumentParser();
-    InputStream stream = null;
-    try
-    {
-      URLConnection connection = srcUrl.openConnection();
-      stream = connection.getInputStream();
-
-      InputSource source = new InputSource(stream);
-      source.setSystemId(srcUrl.toExternalForm());
-
-      ParseContextImpl pc = new ParseContextImpl ();
-      TreeBuilder builder =  new  TreeBuilder();
-      return (Object[]) builder.parse(null, source, pc, parser);
-    }
-    catch (SAXException saxe)
-    {
-      _LOG.severe("Failed to parse capabilities data document", saxe);
-    }
-    catch (IOException ioe)
-    {
-      _LOG.severe("Failed to parse capabilities data document", ioe);
-    }
-    finally
-    {
-      try
-      {
-        if (stream != null)
-          stream.close();
-      }
-      catch (IOException e)
-      {
-        //do nothing
-        ;
-      }
-    }
-
-    return new Object[0];
-  }
-
-  public void startElement (ParseContext context,
-                            String       namespaceURI,
-                            String       localName,
-                            Attributes   attrs )
-          throws SAXParseException
-  {
-    if (!NS_URI.equals(namespaceURI))
-    {
-      throw new SAXParseException("Invalid Namespace: " +
-                                  namespaceURI, context.getLocator());
-    }
-  }
-
-  public NodeParser startChildElement(
-    ParseContext context,
-    String       namespaceURI,
-    String       localName,
-    Attributes   attrs) throws SAXParseException
-  {
-    if (ELEMENT_CAPABILITY.equals(localName))
-    {
-      String name = attrs.getValue(ATTRIBUTE_NAME);
-      String value = attrs.getValue(ATTRIBUTE_VALUE);
-
-      if (name != null)
-        name = name.trim();
-      if (value != null)
-        value = value.trim();
-
-
-      if ((name == null) || (name.length() <= 0) ||
-          (value == null) || (value.length() <= 0))
-      {
-        _LOG.warning("Element " + ELEMENT_CAPABILITIES +
-                     " has missing (or empty) attributes");
-      }
-
-      CapabilityKey key =
-              CapabilityKey.getCapabilityKey(name, true);
-      Object valueObject =
-              CapabilityValue.getCapabilityValue(key, value);
-
-      _capList.add(key);
-      _capList.add(valueObject);
-
-      return this;
-    }
-
-    return null;
-  }
-
-
-  public Object endElement (ParseContext context,
-                            String       namespaceURI,
-                            String       localName)
-  {
-    if (ELEMENT_CAPABILITY_DATA.equals(localName))
-       return _capList.toArray(new Object[_capList.size()]);
-
-    return null;
-  }
-
-  private List _capList = new ArrayList();
-
-  static private final ADFLogger _LOG = ADFLogger.createADFLogger(CapabilityDataDocumentParser.class);
-
-}
+package org.apache.myfaces.adfinternal.agent.parse;
+
+import org.xml.sax.SAXException;
+import org.xml.sax.InputSource;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXParseException;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+import java.util.ArrayList;
+import java.net.URL;
+import java.net.URLConnection;
+
+import org.apache.myfaces.adf.logging.ADFLogger;
+import org.apache.myfaces.adfinternal.agent.CapabilityKey;
+import org.apache.myfaces.adfinternal.agent.CapabilityValue;
+import org.apache.myfaces.adfinternal.share.xml.BaseNodeParser;
+import org.apache.myfaces.adfinternal.share.xml.ParseContextImpl;
+import org.apache.myfaces.adfinternal.share.xml.TreeBuilder;
+import org.apache.myfaces.adfinternal.share.xml.ParseContext;
+import org.apache.myfaces.adfinternal.share.xml.NodeParser;
+
+/**
+ * CapabilitiesData document parser
+ */
+public class CapabilityDataDocumentParser  extends BaseNodeParser
+        implements XMLConstants
+{
+
+  private CapabilityDataDocumentParser()
+  {
+  }
+
+  static public Object[] parse (URL srcUrl)
+  {
+    //if URL is null return empty documen
+    if (srcUrl == null)
+      return new Object[0];
+
+    CapabilityDataDocumentParser parser = new CapabilityDataDocumentParser();
+    InputStream stream = null;
+    try
+    {
+      URLConnection connection = srcUrl.openConnection();
+      stream = connection.getInputStream();
+
+      InputSource source = new InputSource(stream);
+      source.setSystemId(srcUrl.toExternalForm());
+
+      ParseContextImpl pc = new ParseContextImpl ();
+      TreeBuilder builder =  new  TreeBuilder();
+      return (Object[]) builder.parse(null, source, pc, parser);
+    }
+    catch (SAXException saxe)
+    {
+      _LOG.severe("Failed to parse capabilities data document", saxe);
+    }
+    catch (IOException ioe)
+    {
+      _LOG.severe("Failed to parse capabilities data document", ioe);
+    }
+    finally
+    {
+      try
+      {
+        if (stream != null)
+          stream.close();
+      }
+      catch (IOException e)
+      {
+        //do nothing
+        ;
+      }
+    }
+
+    return new Object[0];
+  }
+
+  public void startElement (ParseContext context,
+                            String       namespaceURI,
+                            String       localName,
+                            Attributes   attrs )
+          throws SAXParseException
+  {
+    if (!NS_URI.equals(namespaceURI))
+    {
+      throw new SAXParseException("Invalid Namespace: " +
+                                  namespaceURI, context.getLocator());
+    }
+  }
+
+  public NodeParser startChildElement(
+    ParseContext context,
+    String       namespaceURI,
+    String       localName,
+    Attributes   attrs) throws SAXParseException
+  {
+    if (ELEMENT_CAPABILITY.equals(localName))
+    {
+      String name = attrs.getValue(ATTRIBUTE_NAME);
+      String value = attrs.getValue(ATTRIBUTE_VALUE);
+
+      if (name != null)
+        name = name.trim();
+      if (value != null)
+        value = value.trim();
+
+
+      if ((name == null) || (name.length() <= 0) ||
+          (value == null) || (value.length() <= 0))
+      {
+        _LOG.warning("Element " + ELEMENT_CAPABILITIES +
+                     " has missing (or empty) attributes");
+      }
+
+      CapabilityKey key =
+              CapabilityKey.getCapabilityKey(name, true);
+      Object valueObject =
+              CapabilityValue.getCapabilityValue(key, value);
+
+      _capList.add(key);
+      _capList.add(valueObject);
+
+      return this;
+    }
+
+    return null;
+  }
+
+
+  public Object endElement (ParseContext context,
+                            String       namespaceURI,
+                            String       localName)
+  {
+    if (ELEMENT_CAPABILITY_DATA.equals(localName))
+       return _capList.toArray(new Object[_capList.size()]);
+
+    return null;
+  }
+
+  private List _capList = new ArrayList();
+
+  static private final ADFLogger _LOG = ADFLogger.createADFLogger(CapabilityDataDocumentParser.class);
+
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/CapabilityDataDocumentParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/ComponentNodeParser.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/ComponentNodeParser.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/ComponentNodeParser.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/ComponentNodeParser.java Mon Jul 24 21:42:41 2006
@@ -13,86 +13,86 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package org.apache.myfaces.adfinternal.agent.parse;
-
-import org.apache.myfaces.adfinternal.share.xml.NodeParser;
-import org.apache.myfaces.adfinternal.share.xml.BaseNodeParser;
-import org.apache.myfaces.adfinternal.share.xml.ParseContext;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXParseException;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Node parser for component nodes in the capabilities file
- */
-class ComponentNodeParser extends BaseNodeParser implements XMLConstants
-{
-
-  public void startElement (ParseContext context,
-                            String       namespaceURI,
-                            String       localName,
-                            Attributes   attrs )
-          throws SAXParseException
-  {
-    if (!NS_URI.equals(namespaceURI))
-    {
-      throw new SAXParseException("Invalid Namespace: " +
-                                  namespaceURI, context.getLocator());
-    }
-
-    _type = attrs.getValue(ATTRIBUTE_TYPE);
-
-  }
-
-  public NodeParser startChildElement(ParseContext context,
-                                      String       namespaceURI,
-                                      String       localName,
-                                      Attributes   attrs)
-          throws SAXParseException
-  {
-    if (ELEMENT_INCLUDE.equals(localName))
-      return new IncludeNodeParser();
-
-    //return null; if unknown element
-    return null;
-  }
-
-
-  public void addCompletedChild (ParseContext context,
-                                 String       namespaceURI,
-                                 String       localName,
-                                 Object       child)
-          throws SAXParseException
-  {
-    if (child == null)
-      return;
-
-    _includeNodes.add(child);
-  }
-
-  public Object endElement (ParseContext context,
-                            String       namespaceURI,
-                            String       localName)
-  {
-    ArrayList nodesWithRefList = new ArrayList(_includeNodes.size());
-    ArrayList nodesWithSrcList = new ArrayList(_includeNodes.size());
-    for (int i = 0; i < _includeNodes.size(); i++)
-    {
-      IncludeNode node = (IncludeNode) _includeNodes.get(i);
-      if (node.__getRefId() != null)
-        nodesWithRefList.add(node);
-      else
-        nodesWithSrcList.add(node);
-    }
-    IncludeNode[] nodesWithRef = (IncludeNode[])
-            nodesWithRefList.toArray(new IncludeNode[nodesWithRefList.size()]);
-    IncludeNode[] nodesWithSrc = (IncludeNode[])
-            nodesWithSrcList.toArray(new IncludeNode[nodesWithSrcList.size()]);
-    return new DeviceComponentNode(_type, nodesWithRef, nodesWithSrc);    
-  }
-
-  private List _includeNodes = new ArrayList();
-  private String _type;
-}
+package org.apache.myfaces.adfinternal.agent.parse;
+
+import org.apache.myfaces.adfinternal.share.xml.NodeParser;
+import org.apache.myfaces.adfinternal.share.xml.BaseNodeParser;
+import org.apache.myfaces.adfinternal.share.xml.ParseContext;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXParseException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Node parser for component nodes in the capabilities file
+ */
+class ComponentNodeParser extends BaseNodeParser implements XMLConstants
+{
+
+  public void startElement (ParseContext context,
+                            String       namespaceURI,
+                            String       localName,
+                            Attributes   attrs )
+          throws SAXParseException
+  {
+    if (!NS_URI.equals(namespaceURI))
+    {
+      throw new SAXParseException("Invalid Namespace: " +
+                                  namespaceURI, context.getLocator());
+    }
+
+    _type = attrs.getValue(ATTRIBUTE_TYPE);
+
+  }
+
+  public NodeParser startChildElement(ParseContext context,
+                                      String       namespaceURI,
+                                      String       localName,
+                                      Attributes   attrs)
+          throws SAXParseException
+  {
+    if (ELEMENT_INCLUDE.equals(localName))
+      return new IncludeNodeParser();
+
+    //return null; if unknown element
+    return null;
+  }
+
+
+  public void addCompletedChild (ParseContext context,
+                                 String       namespaceURI,
+                                 String       localName,
+                                 Object       child)
+          throws SAXParseException
+  {
+    if (child == null)
+      return;
+
+    _includeNodes.add(child);
+  }
+
+  public Object endElement (ParseContext context,
+                            String       namespaceURI,
+                            String       localName)
+  {
+    ArrayList nodesWithRefList = new ArrayList(_includeNodes.size());
+    ArrayList nodesWithSrcList = new ArrayList(_includeNodes.size());
+    for (int i = 0; i < _includeNodes.size(); i++)
+    {
+      IncludeNode node = (IncludeNode) _includeNodes.get(i);
+      if (node.__getRefId() != null)
+        nodesWithRefList.add(node);
+      else
+        nodesWithSrcList.add(node);
+    }
+    IncludeNode[] nodesWithRef = (IncludeNode[])
+            nodesWithRefList.toArray(new IncludeNode[nodesWithRefList.size()]);
+    IncludeNode[] nodesWithSrc = (IncludeNode[])
+            nodesWithSrcList.toArray(new IncludeNode[nodesWithSrcList.size()]);
+    return new DeviceComponentNode(_type, nodesWithRef, nodesWithSrc);    
+  }
+
+  private List _includeNodes = new ArrayList();
+  private String _type;
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/ComponentNodeParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceComponentNode.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceComponentNode.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceComponentNode.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceComponentNode.java Mon Jul 24 21:42:41 2006
@@ -13,102 +13,102 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package org.apache.myfaces.adfinternal.agent.parse;
-
-
-/**
- * Object that holds information about the device component node in capabilities file
- */
-class DeviceComponentNode
-{
-
-  /**
-   * The User Agent component of device
-   */
-  public static final Object TYPE_BROWSER = "browser";
-  /**
-   * The software/os platform of the device
-   */
-  public static final Object TYPE_PLATFORM = "platform";
-  /**
-   * The hardware platform of the device
-   */
-  public static final Object TYPE_HARDWARE = "hardware";
-  /**
-   * The push component of the device
-   */
-  public static final Object TYPE_PUSH = "push";
-  /**
-   * the mms component of the device
-   */
-  public static final Object TYPE_MMS = "mms";
-  /**
-   * unknown component
-   */
-  private static final Object TYPE_UNKNOWN = "unknown";
-
-  public DeviceComponentNode(String type,
-                             IncludeNode[] nodesWithRef,
-                             IncludeNode[] nodesWithSrc)
-  {
-    _type = _getType(type);
-    _nodesWithRef = nodesWithRef;
-    _nodesWithSrc = nodesWithSrc;
-  }
-
-  IncludeNode[] __getIncludesByUri()
-  {
-    return _nodesWithSrc;
-  }
-
-  IncludeNode[] __getIncludesByRef()
-  {
-    return _nodesWithRef;
-  }
-
-  Object __getType()
-  {
-    return _type;
-  }
-
-
-  private Object _getType(String type)
-  {
-    if (type == null)
-      return TYPE_UNKNOWN;
-
-    type = type.intern();
-    if ((type == TYPE_BROWSER) ||
-        (TYPE_BROWSER.equals(type)))
-    {
-      return TYPE_BROWSER;
-    }
-    else if ((type == TYPE_PLATFORM) ||
-             (TYPE_PLATFORM.equals(type)))
-    {
-      return TYPE_PLATFORM;
-    }
-    else if ((type == TYPE_HARDWARE) ||
-             (TYPE_HARDWARE.equals(type)))
-    {
-      return TYPE_HARDWARE;
-    }
-    else if ((type == TYPE_MMS) ||
-             (TYPE_MMS.equals(type)))
-    {
-      return TYPE_MMS;
-    }
-    else if ((type == TYPE_PUSH) ||
-             (TYPE_PUSH.equals(type)))
-    {
-      return TYPE_PUSH;
-    }
-
-    return TYPE_UNKNOWN;
-  }
-
-
-  private Object _type;
-  private IncludeNode[] _nodesWithRef;
-  private IncludeNode[] _nodesWithSrc;
-}
+package org.apache.myfaces.adfinternal.agent.parse;
+
+
+/**
+ * Object that holds information about the device component node in capabilities file
+ */
+class DeviceComponentNode
+{
+
+  /**
+   * The User Agent component of device
+   */
+  public static final Object TYPE_BROWSER = "browser";
+  /**
+   * The software/os platform of the device
+   */
+  public static final Object TYPE_PLATFORM = "platform";
+  /**
+   * The hardware platform of the device
+   */
+  public static final Object TYPE_HARDWARE = "hardware";
+  /**
+   * The push component of the device
+   */
+  public static final Object TYPE_PUSH = "push";
+  /**
+   * the mms component of the device
+   */
+  public static final Object TYPE_MMS = "mms";
+  /**
+   * unknown component
+   */
+  private static final Object TYPE_UNKNOWN = "unknown";
+
+  public DeviceComponentNode(String type,
+                             IncludeNode[] nodesWithRef,
+                             IncludeNode[] nodesWithSrc)
+  {
+    _type = _getType(type);
+    _nodesWithRef = nodesWithRef;
+    _nodesWithSrc = nodesWithSrc;
+  }
+
+  IncludeNode[] __getIncludesByUri()
+  {
+    return _nodesWithSrc;
+  }
+
+  IncludeNode[] __getIncludesByRef()
+  {
+    return _nodesWithRef;
+  }
+
+  Object __getType()
+  {
+    return _type;
+  }
+
+
+  private Object _getType(String type)
+  {
+    if (type == null)
+      return TYPE_UNKNOWN;
+
+    type = type.intern();
+    if ((type == TYPE_BROWSER) ||
+        (TYPE_BROWSER.equals(type)))
+    {
+      return TYPE_BROWSER;
+    }
+    else if ((type == TYPE_PLATFORM) ||
+             (TYPE_PLATFORM.equals(type)))
+    {
+      return TYPE_PLATFORM;
+    }
+    else if ((type == TYPE_HARDWARE) ||
+             (TYPE_HARDWARE.equals(type)))
+    {
+      return TYPE_HARDWARE;
+    }
+    else if ((type == TYPE_MMS) ||
+             (TYPE_MMS.equals(type)))
+    {
+      return TYPE_MMS;
+    }
+    else if ((type == TYPE_PUSH) ||
+             (TYPE_PUSH.equals(type)))
+    {
+      return TYPE_PUSH;
+    }
+
+    return TYPE_UNKNOWN;
+  }
+
+
+  private Object _type;
+  private IncludeNode[] _nodesWithRef;
+  private IncludeNode[] _nodesWithSrc;
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceComponentNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceNode.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceNode.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceNode.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceNode.java Mon Jul 24 21:42:41 2006
@@ -13,42 +13,42 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package org.apache.myfaces.adfinternal.agent.parse;
-
-import org.apache.myfaces.adf.context.Agent;
-
-/**
- * Object that holds information about the device nodes in capabilities file
- */
-class DeviceNode
-{
-  public DeviceNode(String id, NameVersion makeModel,
-                    String extendsId, DeviceComponentNode[] components)
-  {
-    _id = id;
-    //Really should be using only the name part. There is no version here
-    _makeModel = makeModel;
-    _extendsId = extendsId;
-    _componentNodes = components;
-  }
-
-  DeviceComponentNode[] __getComponents()
-  {
-    return _componentNodes;
-  }
-
-  double __matches(Agent agent)
-  {
-    //TODO: Have a "Does not matter" match constant
-    if (_makeModel == null)
-      return 1;
-
-    String makeModel = agent.getHardwareMakeModel();
-    return _makeModel.match(makeModel, null);
-  }
-
-  private String _id;
-  private NameVersion _makeModel;
-  private String _extendsId;
-  private DeviceComponentNode[] _componentNodes;
-}
+package org.apache.myfaces.adfinternal.agent.parse;
+
+import org.apache.myfaces.adf.context.Agent;
+
+/**
+ * Object that holds information about the device nodes in capabilities file
+ */
+class DeviceNode
+{
+  public DeviceNode(String id, NameVersion makeModel,
+                    String extendsId, DeviceComponentNode[] components)
+  {
+    _id = id;
+    //Really should be using only the name part. There is no version here
+    _makeModel = makeModel;
+    _extendsId = extendsId;
+    _componentNodes = components;
+  }
+
+  DeviceComponentNode[] __getComponents()
+  {
+    return _componentNodes;
+  }
+
+  double __matches(Agent agent)
+  {
+    //TODO: Have a "Does not matter" match constant
+    if (_makeModel == null)
+      return 1;
+
+    String makeModel = agent.getHardwareMakeModel();
+    return _makeModel.match(makeModel, null);
+  }
+
+  private String _id;
+  private NameVersion _makeModel;
+  private String _extendsId;
+  private DeviceComponentNode[] _componentNodes;
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceNodeParser.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceNodeParser.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceNodeParser.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceNodeParser.java Mon Jul 24 21:42:41 2006
@@ -13,110 +13,110 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package org.apache.myfaces.adfinternal.agent.parse;
-
-import org.apache.myfaces.adfinternal.share.xml.NodeParser;
-import org.apache.myfaces.adfinternal.share.xml.BaseNodeParser;
-import org.apache.myfaces.adfinternal.share.xml.ParseContext;
-import org.apache.myfaces.adf.logging.ADFLogger;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXParseException;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.text.ParseException;
-
-/**
- * NodePaser for device nodes in the capabilities file
- */
-class DeviceNodeParser extends BaseNodeParser implements XMLConstants
-{
-  public void startElement (ParseContext context,
-                            String       namespaceURI,
-                            String       localName,
-                            Attributes   attrs )
-          throws SAXParseException
-  {
-    if (!NS_URI.equals(namespaceURI))
-    {
-      throw new SAXParseException("Invalid Namespace: " +
-                                  namespaceURI, context.getLocator());
-    }
-
-    String id = attrs.getValue(ATTRIBUTE_ID);
-    String model = attrs.getValue(ATTRIBUTE_MODEL);
-    String extendsId = attrs.getValue(ATTRIBUTE_EXTENDS);
-    if (((id == null) && (model == null)) ||
-        ((id != null) && (id.trim().length() <= 0)) ||
-        ((model != null) && (model.trim().length() <= 0)))
-    {
-      _LOG.warning("Element " + ELEMENT_DEVICE +
-                   " has missing (or empty) attributes");
-    }
-
-    _id = id;
-    _extendsId = extendsId;
-    if (model != null)
-    {
-      try
-      {
-        //Really should be using only the name part. There is no version here
-        _model = new NameVersion(model);
-      }
-      catch (ParseException pe)
-      {
-        _LOG.warning("Unable to parse model string");
-      }
-    }
-  }
-
-
-  public NodeParser startChildElement(ParseContext context,
-                                      String       namespaceURI,
-                                      String       localName,
-                                      Attributes   attrs)
-          throws SAXParseException
-  {
-    if (ELEMENT_COMPONENT.equals(localName))
-      return new ComponentNodeParser();
-
-    //return null; if unknown element
-    return null;
-
-  }
-
-  public void addCompletedChild (ParseContext context,
-                                 String       namespaceURI,
-                                 String       localName,
-                                 Object       child)
-          throws SAXParseException
-  {
-    if (child == null)
-      return;
-
-    _componentNodes.add(child);
-  }
-
-  public Object endElement (ParseContext context,
-                            String       namespaceURI,
-                            String       localName)
-  {
-    if ((_id == null) && (_model == null))
-      return null;
-
-    DeviceComponentNode[] cNodes = (DeviceComponentNode[])
-            _componentNodes.toArray(
-                    new DeviceComponentNode[_componentNodes.size()]);
-    return new DeviceNode(_id, _model, _extendsId, cNodes);
-  }
-
-
-  private String _id;
-  private NameVersion _model;
-  private String _extendsId;
-  private List _componentNodes = new ArrayList();
-
-  static private final ADFLogger _LOG = ADFLogger.createADFLogger(DeviceNodeParser.class);
-}
-
-
+package org.apache.myfaces.adfinternal.agent.parse;
+
+import org.apache.myfaces.adfinternal.share.xml.NodeParser;
+import org.apache.myfaces.adfinternal.share.xml.BaseNodeParser;
+import org.apache.myfaces.adfinternal.share.xml.ParseContext;
+import org.apache.myfaces.adf.logging.ADFLogger;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXParseException;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.text.ParseException;
+
+/**
+ * NodePaser for device nodes in the capabilities file
+ */
+class DeviceNodeParser extends BaseNodeParser implements XMLConstants
+{
+  public void startElement (ParseContext context,
+                            String       namespaceURI,
+                            String       localName,
+                            Attributes   attrs )
+          throws SAXParseException
+  {
+    if (!NS_URI.equals(namespaceURI))
+    {
+      throw new SAXParseException("Invalid Namespace: " +
+                                  namespaceURI, context.getLocator());
+    }
+
+    String id = attrs.getValue(ATTRIBUTE_ID);
+    String model = attrs.getValue(ATTRIBUTE_MODEL);
+    String extendsId = attrs.getValue(ATTRIBUTE_EXTENDS);
+    if (((id == null) && (model == null)) ||
+        ((id != null) && (id.trim().length() <= 0)) ||
+        ((model != null) && (model.trim().length() <= 0)))
+    {
+      _LOG.warning("Element " + ELEMENT_DEVICE +
+                   " has missing (or empty) attributes");
+    }
+
+    _id = id;
+    _extendsId = extendsId;
+    if (model != null)
+    {
+      try
+      {
+        //Really should be using only the name part. There is no version here
+        _model = new NameVersion(model);
+      }
+      catch (ParseException pe)
+      {
+        _LOG.warning("Unable to parse model string");
+      }
+    }
+  }
+
+
+  public NodeParser startChildElement(ParseContext context,
+                                      String       namespaceURI,
+                                      String       localName,
+                                      Attributes   attrs)
+          throws SAXParseException
+  {
+    if (ELEMENT_COMPONENT.equals(localName))
+      return new ComponentNodeParser();
+
+    //return null; if unknown element
+    return null;
+
+  }
+
+  public void addCompletedChild (ParseContext context,
+                                 String       namespaceURI,
+                                 String       localName,
+                                 Object       child)
+          throws SAXParseException
+  {
+    if (child == null)
+      return;
+
+    _componentNodes.add(child);
+  }
+
+  public Object endElement (ParseContext context,
+                            String       namespaceURI,
+                            String       localName)
+  {
+    if ((_id == null) && (_model == null))
+      return null;
+
+    DeviceComponentNode[] cNodes = (DeviceComponentNode[])
+            _componentNodes.toArray(
+                    new DeviceComponentNode[_componentNodes.size()]);
+    return new DeviceNode(_id, _model, _extendsId, cNodes);
+  }
+
+
+  private String _id;
+  private NameVersion _model;
+  private String _extendsId;
+  private List _componentNodes = new ArrayList();
+
+  static private final ADFLogger _LOG = ADFLogger.createADFLogger(DeviceNodeParser.class);
+}
+
+

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/DeviceNodeParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/IncludeNode.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/IncludeNode.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/IncludeNode.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/IncludeNode.java Mon Jul 24 21:42:41 2006
@@ -13,33 +13,33 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package org.apache.myfaces.adfinternal.agent.parse;
-
-import java.net.URL;
-
-/**
- * Object that holds information about the include node in capabilities file
- */
-class IncludeNode
-{
-
-  IncludeNode(String refid, URL srcUrl)
-  {
-    _refid = refid;
-    _srcUrl = srcUrl;
-  }
-
-  String __getRefId()
-  {
-    return _refid;
-  }
-
-  URL __getSrcUrl()
-  {
-    return _srcUrl;
-  }
-
-  private String _refid;
-  private URL _srcUrl;
-
-}
+package org.apache.myfaces.adfinternal.agent.parse;
+
+import java.net.URL;
+
+/**
+ * Object that holds information about the include node in capabilities file
+ */
+class IncludeNode
+{
+
+  IncludeNode(String refid, URL srcUrl)
+  {
+    _refid = refid;
+    _srcUrl = srcUrl;
+  }
+
+  String __getRefId()
+  {
+    return _refid;
+  }
+
+  URL __getSrcUrl()
+  {
+    return _srcUrl;
+  }
+
+  private String _refid;
+  private URL _srcUrl;
+
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/IncludeNode.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/IncludeNodeParser.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/IncludeNodeParser.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/IncludeNodeParser.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/IncludeNodeParser.java Mon Jul 24 21:42:41 2006
@@ -13,87 +13,87 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package org.apache.myfaces.adfinternal.agent.parse;
-
-import org.apache.myfaces.adfinternal.share.xml.BaseNodeParser;
-import org.apache.myfaces.adfinternal.share.xml.ParseContext;
-import org.apache.myfaces.adf.logging.ADFLogger;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXParseException;
-
-import java.net.URL;
-import java.net.MalformedURLException;
-
-/**
- * NodePaser for include nodes in the capabilities file
- */
-class IncludeNodeParser extends BaseNodeParser implements XMLConstants
-{
-
-  public void startElement (ParseContext context,
-                            String       namespaceURI,
-                            String       localName,
-                            Attributes   attrs )
-          throws SAXParseException
-  {
-    if (!NS_URI.equals(namespaceURI))
-    {
-      throw new SAXParseException("Invalid Namespace: " +
-                                  namespaceURI, context.getLocator());
-    }
-
-    String refId = attrs.getValue(ATTRIBUTE_REFID);
-    String src = attrs.getValue(ATTRIBUTE_SRC);
-    if (((refId == null) && (src == null)) ||
-        ((refId != null) && (refId.length() <= 0)) ||
-        ((src != null) && (src.length() <= 0)))
-    {
-      _LOG.warning("Element " + ELEMENT_INCLUDE +
-                   " has missing (or empty) attributes");
-      return;
-    }
-
-    _src = src;
-    _refId = refId;
-  }
-
-  public Object endElement (ParseContext context,
-                            String       namespaceURI,
-                            String       localName)
-  {
-    URL srcUrl = _getUrl(context, _src);
-    if ((_refId == null) && (srcUrl == null))
-      return null;
-
-    return new IncludeNode(_refId, srcUrl);
-  }
-
-  private URL _getUrl(ParseContext context, String url)
-  {
-    if (url == null)
-      return null;
-
-
-    URL baseURL = (URL) context.getProperty(NS_URI,
-                                            CapabilitiesDocumentParser.__BASE_URL);
-    try
-    {
-      if (baseURL != null)
-        return  new URL(baseURL, url);
-
-      return new URL(url);
-    }
-    catch (MalformedURLException mue)
-    {
-       _LOG.warning("Capability data url " + _src + " is invalid");
-    }
-
-    return null;
-  }
-
-
-  private String _src;
-  private String _refId;
-
-  static private final ADFLogger _LOG = ADFLogger.createADFLogger(IncludeNodeParser.class);
-}
+package org.apache.myfaces.adfinternal.agent.parse;
+
+import org.apache.myfaces.adfinternal.share.xml.BaseNodeParser;
+import org.apache.myfaces.adfinternal.share.xml.ParseContext;
+import org.apache.myfaces.adf.logging.ADFLogger;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXParseException;
+
+import java.net.URL;
+import java.net.MalformedURLException;
+
+/**
+ * NodePaser for include nodes in the capabilities file
+ */
+class IncludeNodeParser extends BaseNodeParser implements XMLConstants
+{
+
+  public void startElement (ParseContext context,
+                            String       namespaceURI,
+                            String       localName,
+                            Attributes   attrs )
+          throws SAXParseException
+  {
+    if (!NS_URI.equals(namespaceURI))
+    {
+      throw new SAXParseException("Invalid Namespace: " +
+                                  namespaceURI, context.getLocator());
+    }
+
+    String refId = attrs.getValue(ATTRIBUTE_REFID);
+    String src = attrs.getValue(ATTRIBUTE_SRC);
+    if (((refId == null) && (src == null)) ||
+        ((refId != null) && (refId.length() <= 0)) ||
+        ((src != null) && (src.length() <= 0)))
+    {
+      _LOG.warning("Element " + ELEMENT_INCLUDE +
+                   " has missing (or empty) attributes");
+      return;
+    }
+
+    _src = src;
+    _refId = refId;
+  }
+
+  public Object endElement (ParseContext context,
+                            String       namespaceURI,
+                            String       localName)
+  {
+    URL srcUrl = _getUrl(context, _src);
+    if ((_refId == null) && (srcUrl == null))
+      return null;
+
+    return new IncludeNode(_refId, srcUrl);
+  }
+
+  private URL _getUrl(ParseContext context, String url)
+  {
+    if (url == null)
+      return null;
+
+
+    URL baseURL = (URL) context.getProperty(NS_URI,
+                                            CapabilitiesDocumentParser.__BASE_URL);
+    try
+    {
+      if (baseURL != null)
+        return  new URL(baseURL, url);
+
+      return new URL(url);
+    }
+    catch (MalformedURLException mue)
+    {
+       _LOG.warning("Capability data url " + _src + " is invalid");
+    }
+
+    return null;
+  }
+
+
+  private String _src;
+  private String _refId;
+
+  static private final ADFLogger _LOG = ADFLogger.createADFLogger(IncludeNodeParser.class);
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/IncludeNodeParser.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/NameVersion.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/NameVersion.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/NameVersion.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/NameVersion.java Mon Jul 24 21:42:41 2006
@@ -13,505 +13,505 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package org.apache.myfaces.adfinternal.agent.parse;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.text.ParseException;
-
-/**
- * An implementation that encapsulates "Name/Version Name/version ..." string and
- * supports a match method for matching other names and versions
- * <p/>
- * Name String can contain .*'s wild char
- * //TODO: Check if Name String *really* needs to support wild char
- * <p/>
- * Version string can contain +'s or *'s at the end
- * "*" at the end of version implies an 5xx.xx.xx version
- * "+" at the end implies greater than version 5
- * E.g "ie/5* ie/5.5+"
- * <p/>
- * <p/>
- * the name can have wild char charactes (at the end)
- * the version string may contain wild char or "+" (at the end)
- *
- */
-class NameVersion
-{
-
-  NameVersion(String value) throws ParseException
-  {
-    _entries = _parseEntries(value);
-  }
-
-  public double match(String name, VersionId version)
-  {
-    if (_entries == null)
-      return 0;
-
-    if (name == null)
-      return 0;
-
-    double score = 0;
-    for (int i = 0; i < _entries.length; i++)
-    {
-      Object[] entry = (Object[]) _entries[i];
-      if (entry[0] != null)
-      {
-        double score1 = _matchName((NameEntry) entry[0], name);
-        if (score1 > 0)
-        {
-          if ((entry[1] == null) & (score1 >= score))
-          {
-            score = score1;
-          }
-          else
-          {
-            double score2 = _matchVersion((VersionEntry) entry[1], version);
-            //a match only if the score is > 0
-            if ((score2 > 0) && (score1 + score2 >= score))
-              score = score1 + score2;
-          }
-        }
-      }
-    }
-
-    return score;
-  }
-
-
-  /**
-   * Parse the condtions into an an array of [name, version] pairs
-   * Right now the parse routine is very forgiving.
-   * It will parse strings like "name/version/something", "name///version"
-   *
-   * @param value
-   * @return
-   */
-  private Object[] _parseEntries(String value)
-          throws ParseException
-  {
-
-    if (value == null)
-      return null;
-
-    int length = value.length();
-    char[] data = new char[length + 1];
-
-
-    value.getChars(0, length, data, 0);
-    data[length] = (char) 0x1000000; //untype-able ascii char;
-
-    boolean inQuote = false;
-    int start = 0;
-    int i = 0;
-    char ch = data[i];
-
-    ArrayList entries = new ArrayList(5);
-    VersionEntry vEntry = null;
-    NameEntry head, curr;
-    head = curr = new NameEntry();
-    curr.next = curr;
-
-    while (i < length + 1)
-    {
-      switch (ch)
-      {
-        case '\'':
-          if (!inQuote)
-            inQuote = true;
-          else
-          {
-            inQuote = false;
-            if (start != i)
-              throw new ParseException("Unexpected '\\'.", i);
-          }
-
-          ch = data[++i];
-          break;
-        case '\\':
-          //skip the next char
-          //Since we only support '.*', throw error
-          ch = data[++i];
-          if ((ch != '.') || (ch != '\\'))
-            throw new ParseException("Unexpected character. Expecting '.' or '\\' ", i);
-          ch = data[++i];
-          break;
-        case '.':
-          if (start != i)
-          {
-            curr.next.text = new String(data, start, i - start);
-            curr = curr.next;
-            curr.next = new NameEntry();
-          }
-
-          //We only support '.*'
-          ch = data[++i];
-          if (ch != '*')
-            throw new ParseException("Unexpected character. Expecting '*'", i);
-
-          curr.next.text = _WILD_CHAR_STRING;
-          curr = curr.next;
-          curr.next = new NameEntry();
-          ch = data[++i];
-          start = i;
-          break;
-        case '/':
-          if (start != i)
-          {
-            curr.next.text = new String(data, start, i - start);
-            curr = curr.next;
-            curr.next = new NameEntry();
-          }
-
-          ch = data[++i];
-          start = i;
-          if (inQuote)
-          {
-            while ((ch != '\'') && (ch != (char) 0x1000000))
-              ch = data[++i];
-          }
-          else
-          {
-            while (!Character.isSpace(ch) && (ch != (char) 0x1000000))
-              ch = data[++i];
-          }
-
-          if (i - start <= 0)
-            throw new ParseException("Expecting char", i);
-
-          vEntry = _parseVersion(new String(data, start, i - start), i);
-          start = i;
-          break;
-        case ((char) 0x1000000):
-          if (inQuote)
-            throw new ParseException("Unterminated quote.", i);
-
-          if (start != i)
-          {
-            curr.next.text = new String(data, start, i - start);
-            curr = curr.next;
-            curr.next = new NameEntry();
-          }
-
-          if (head.text != null)
-          {
-            NameEntry temp = curr.next;
-            curr.next = null;
-            Object[] obj = new Object[]{head, vEntry};
-            curr = head = temp;
-            curr.next = curr;
-            entries.add(obj);
-            vEntry = null;
-          }
-          i++;
-          break;
-        default:
-          if ((!inQuote) && (Character.isSpace(ch)))
-          {
-            if (start != i)
-            {
-              curr.next.text = new String(data, start, i - start);
-              curr = curr.next;
-              curr.next = new NameEntry();
-            }
-
-            if (head.text != null)
-            {
-              NameEntry temp = curr.next;
-              curr.next = null;
-              Object[] obj = new Object[]{head, vEntry};
-              curr = head = temp;
-              curr.next = curr;
-              entries.add(obj);
-              vEntry = null;
-            }
-            //Skip space
-            ch = data[++i];
-            while (Character.isSpace(ch))
-              ch = data[++i];
-            start = i;
-          }
-
-          ch = data[++i];
-          break;
-      }
-    }
-
-    return entries.toArray(new Object[entries.size()]);
-  }
-
-  /**
-   * @param value
-   * @return parse and return Entry for Name. '.' is delimiter for version numbers.
-   *         '+' or '*' are treated as special chars and are allowed only at the end
-   *         of the version string
-   */
-  private VersionEntry _parseVersion(String value,
-                                     int offset) throws ParseException
-  {
-
-    int length = value.length();
-    char[] data = new char[length + 1];
-    int i = 0;
-
-    value.getChars(0, length, data, 0);
-    data[length] = (char) 0x1000000; //untype-able ascii char;
-
-    char ch = data[i];
-    VersionEntry vEntry = new VersionEntry();
-    while (i < length + 1)
-    {
-      switch (ch)
-      {
-        case ((char) 0x1000000):
-          String version = value.substring(0, i);
-          //if the version string was simpley "*" or "+"
-          if (version.length() == 0)
-            return null;
-          vEntry._versionId = new VersionId(version);
-          vEntry._type = VersionEntry.EXACT_TYPE;
-          i++;
-          break;
-        case '*':
-        case '+':
-          //After '*' anything other than space is invalid
-          //After '+' anything other than space is invalid
-          version = value.substring(0, i);
-          for (++i; i < length; i++)
-          {
-            if (!Character.isSpace(ch))
-              throw new ParseException("Unexpected char.", offset + i);
-          }
-          //if the version string was simpley "*" or "+"
-          if (version.length() == 0)
-            return null;
-          vEntry._versionId = new VersionId(version);
-          if (ch == '*')
-            vEntry._type = VersionEntry.STAR_TYPE;
-          else
-            vEntry._type = VersionEntry.PLUS_TYPE;
-
-          ///exit the for loop, last char is 0x1000000
-          i++;
-          break;
-        default:
-          ch = data[++i];
-
-      }
-    }
-
-    return vEntry;
-  }
-
-
-  /**
-   * Match and score the name with the NameEntry in this condition
-   *
-   * @param entry
-   * @param matchValue
-   * @return
-   */
-  private double _matchName(NameEntry entry,
-                            String matchValue)
-  {
-    if (matchValue == null)
-      return NO_MATCH;
-
-    int strLen = matchValue.length();
-
-    int len = 0;
-    if (entry.text != _WILD_CHAR_STRING)
-    {
-      if (matchValue.indexOf(entry.text, len) == 0)
-      {
-        len = entry.text.length();
-        if ((entry = entry.next) == null)
-          return NAME_EXACT_MATCH;
-      }
-      else
-        return NO_MATCH;
-    }
-
-    while (entry.next != null)
-    {
-      if (entry.text != _WILD_CHAR_STRING)
-      {
-        int index = matchValue.indexOf(entry.text, len);
-        if (index == -1)
-          return NO_MATCH;
-        len = index + entry.text.length();
-      }
-      entry = entry.next;
-    }
-
-    if (entry.text != _WILD_CHAR_STRING)
-    {
-      if (!matchValue.endsWith(entry.text))
-        return NO_MATCH;
-    }
-
-    return (NAME_STAR_MATCH * (((double) len) / ((double) strLen)));
-  }
-
-
-  /**
-   * Match and score the name with the VersionEntry in this condition
-   *
-   * @param entry
-   * @param version
-   * @return
-   */
-  private double _matchVersion(VersionEntry entry,
-                               VersionId version)
-  {
-    if (version == null)
-      return NO_MATCH; //request has no version info, but entry has version requirement. Hence no match
-
-    if (entry._type == VersionEntry.STAR_TYPE)
-    {
-      Iterator vIterator1 = version.iterator();
-      Iterator vIterator2 = entry._versionId.iterator();
-
-      //Check upto where both have values
-      int matchedParts = 0;
-      while ((vIterator1.hasNext()) && (vIterator2.hasNext()))
-      {
-        String part1 = (String) vIterator1.next();
-        String part2 = (String) vIterator2.next();
-        if (!part1.equals(part2))
-          return NO_MATCH;
-        matchedParts++;
-      }
-
-      //So far they match. Now if version condition has more
-      //parts (sub versions), then it must be .0's
-      while (vIterator2.hasNext())
-      {
-        if (!"0".equals((String) vIterator2.next()))
-          return NO_MATCH;
-      }
-
-      //now check how many parts the VersionId has
-      int totNoOfParts = matchedParts;
-      while (vIterator1.hasNext())
-      {
-        totNoOfParts++;
-        vIterator1.next();
-      }
-
-
-      return (VERSION_STAR_MATCH * matchedParts / totNoOfParts);
-    }
-    else if (entry._type == VersionEntry.PLUS_TYPE)
-    {
-      Iterator vIterator1 = version.iterator();
-      Iterator vIterator2 = entry._versionId.iterator();
-
-      //Check upto where both have values
-      while ((vIterator1.hasNext()) && (vIterator2.hasNext()))
-      {
-        try
-        {
-          int v1 = Integer.parseInt((String) vIterator1.next());
-          int v2 = Integer.parseInt((String) vIterator2.next());
-          if (v1 > v2)
-            return (VERSION_GE_MATCH * (entry._versionId.getVersion() / version.getVersion()));
-          else if (v1 < v2)
-            return NO_MATCH;
-        }
-        catch (NumberFormatException npe)
-        {
-          return NO_MATCH;
-        }
-      }
-
-      //if we reach here they two number are equal so far
-      //Check if remaining are .0's
-      while (vIterator2.hasNext())
-      {
-        try
-        {
-          if (Integer.parseInt((String) vIterator2.next()) != 0)
-            return NO_MATCH;
-        }
-        catch (NumberFormatException npe)
-        {
-          return NO_MATCH;
-        }
-      }
-
-      return (VERSION_GE_MATCH * (entry._versionId.getVersion() / version.getVersion()));
-    }
-    else
-    {
-      //exact match
-      Iterator vIterator1 = version.iterator();
-      Iterator vIterator2 = entry._versionId.iterator();
-
-      //Check upto where both have values
-      while ((vIterator1.hasNext()) && (vIterator2.hasNext()))
-      {
-        String part1 = (String) vIterator1.next();
-        String part2 = (String) vIterator2.next();
-        if (!part1.equals(part2))
-          return NO_MATCH;
-      }
-
-      while (vIterator1.hasNext())
-      {
-        if (!"0".equals((String) vIterator1.next()))
-          return NO_MATCH;
-      }
-
-      while (vIterator2.hasNext())
-      {
-        if (!"0".equals((String) vIterator2.next()))
-          return NO_MATCH;
-      }
-
-      return VERSION_EXACT_MATCH;
-    }
-  }
-
-
-  //structure to store the parsed parts of a name
-  private class NameEntry
-  {
-    String text;
-    NameEntry next;
-  }
-
-  private class VersionEntry
-  {
-    static final int EXACT_TYPE = 0;
-    static final int PLUS_TYPE = 1;
-    static final int STAR_TYPE = 2;
-
-    /* type EXACT_TYPE, PLUS_TYPE, STAR_TYPE*/
-    int _type;
-    VersionId _versionId;
-  }
-
-  private Object[] _entries;
-
-  private final static char _WILD_CHAR = 0x00002A;
-  private final static String _WILD_CHAR_STRING = String.valueOf(_WILD_CHAR);
-
-
-  /**
-   * Name match has a much higher weightage.
-   * Any string/version with wild char __matches gets a slightly lower score
-   * so an input string "xxx" __matches "xxx" and "xxx.*", but a "xxx" match
-   * gets an higher score
-   */
-  private final static double NAME_EXACT_MATCH = 1000;
-  private final static double NAME_STAR_MATCH = NAME_EXACT_MATCH - 1;
-
-  private final static double VERSION_EXACT_MATCH = 10;
-  private final static double VERSION_GE_MATCH = 1;
-  private final static double VERSION_STAR_MATCH = VERSION_EXACT_MATCH - 1;
-
-  public final static double NO_MATCH = 0x0000;
-
+package org.apache.myfaces.adfinternal.agent.parse;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.text.ParseException;
+
+/**
+ * An implementation that encapsulates "Name/Version Name/version ..." string and
+ * supports a match method for matching other names and versions
+ * <p/>
+ * Name String can contain .*'s wild char
+ * //TODO: Check if Name String *really* needs to support wild char
+ * <p/>
+ * Version string can contain +'s or *'s at the end
+ * "*" at the end of version implies an 5xx.xx.xx version
+ * "+" at the end implies greater than version 5
+ * E.g "ie/5* ie/5.5+"
+ * <p/>
+ * <p/>
+ * the name can have wild char charactes (at the end)
+ * the version string may contain wild char or "+" (at the end)
+ *
+ */
+class NameVersion
+{
+
+  NameVersion(String value) throws ParseException
+  {
+    _entries = _parseEntries(value);
+  }
+
+  public double match(String name, VersionId version)
+  {
+    if (_entries == null)
+      return 0;
+
+    if (name == null)
+      return 0;
+
+    double score = 0;
+    for (int i = 0; i < _entries.length; i++)
+    {
+      Object[] entry = (Object[]) _entries[i];
+      if (entry[0] != null)
+      {
+        double score1 = _matchName((NameEntry) entry[0], name);
+        if (score1 > 0)
+        {
+          if ((entry[1] == null) & (score1 >= score))
+          {
+            score = score1;
+          }
+          else
+          {
+            double score2 = _matchVersion((VersionEntry) entry[1], version);
+            //a match only if the score is > 0
+            if ((score2 > 0) && (score1 + score2 >= score))
+              score = score1 + score2;
+          }
+        }
+      }
+    }
+
+    return score;
+  }
+
+
+  /**
+   * Parse the condtions into an an array of [name, version] pairs
+   * Right now the parse routine is very forgiving.
+   * It will parse strings like "name/version/something", "name///version"
+   *
+   * @param value
+   * @return
+   */
+  private Object[] _parseEntries(String value)
+          throws ParseException
+  {
+
+    if (value == null)
+      return null;
+
+    int length = value.length();
+    char[] data = new char[length + 1];
+
+
+    value.getChars(0, length, data, 0);
+    data[length] = (char) 0x1000000; //untype-able ascii char;
+
+    boolean inQuote = false;
+    int start = 0;
+    int i = 0;
+    char ch = data[i];
+
+    ArrayList entries = new ArrayList(5);
+    VersionEntry vEntry = null;
+    NameEntry head, curr;
+    head = curr = new NameEntry();
+    curr.next = curr;
+
+    while (i < length + 1)
+    {
+      switch (ch)
+      {
+        case '\'':
+          if (!inQuote)
+            inQuote = true;
+          else
+          {
+            inQuote = false;
+            if (start != i)
+              throw new ParseException("Unexpected '\\'.", i);
+          }
+
+          ch = data[++i];
+          break;
+        case '\\':
+          //skip the next char
+          //Since we only support '.*', throw error
+          ch = data[++i];
+          if ((ch != '.') || (ch != '\\'))
+            throw new ParseException("Unexpected character. Expecting '.' or '\\' ", i);
+          ch = data[++i];
+          break;
+        case '.':
+          if (start != i)
+          {
+            curr.next.text = new String(data, start, i - start);
+            curr = curr.next;
+            curr.next = new NameEntry();
+          }
+
+          //We only support '.*'
+          ch = data[++i];
+          if (ch != '*')
+            throw new ParseException("Unexpected character. Expecting '*'", i);
+
+          curr.next.text = _WILD_CHAR_STRING;
+          curr = curr.next;
+          curr.next = new NameEntry();
+          ch = data[++i];
+          start = i;
+          break;
+        case '/':
+          if (start != i)
+          {
+            curr.next.text = new String(data, start, i - start);
+            curr = curr.next;
+            curr.next = new NameEntry();
+          }
+
+          ch = data[++i];
+          start = i;
+          if (inQuote)
+          {
+            while ((ch != '\'') && (ch != (char) 0x1000000))
+              ch = data[++i];
+          }
+          else
+          {
+            while (!Character.isSpace(ch) && (ch != (char) 0x1000000))
+              ch = data[++i];
+          }
+
+          if (i - start <= 0)
+            throw new ParseException("Expecting char", i);
+
+          vEntry = _parseVersion(new String(data, start, i - start), i);
+          start = i;
+          break;
+        case ((char) 0x1000000):
+          if (inQuote)
+            throw new ParseException("Unterminated quote.", i);
+
+          if (start != i)
+          {
+            curr.next.text = new String(data, start, i - start);
+            curr = curr.next;
+            curr.next = new NameEntry();
+          }
+
+          if (head.text != null)
+          {
+            NameEntry temp = curr.next;
+            curr.next = null;
+            Object[] obj = new Object[]{head, vEntry};
+            curr = head = temp;
+            curr.next = curr;
+            entries.add(obj);
+            vEntry = null;
+          }
+          i++;
+          break;
+        default:
+          if ((!inQuote) && (Character.isSpace(ch)))
+          {
+            if (start != i)
+            {
+              curr.next.text = new String(data, start, i - start);
+              curr = curr.next;
+              curr.next = new NameEntry();
+            }
+
+            if (head.text != null)
+            {
+              NameEntry temp = curr.next;
+              curr.next = null;
+              Object[] obj = new Object[]{head, vEntry};
+              curr = head = temp;
+              curr.next = curr;
+              entries.add(obj);
+              vEntry = null;
+            }
+            //Skip space
+            ch = data[++i];
+            while (Character.isSpace(ch))
+              ch = data[++i];
+            start = i;
+          }
+
+          ch = data[++i];
+          break;
+      }
+    }
+
+    return entries.toArray(new Object[entries.size()]);
+  }
+
+  /**
+   * @param value
+   * @return parse and return Entry for Name. '.' is delimiter for version numbers.
+   *         '+' or '*' are treated as special chars and are allowed only at the end
+   *         of the version string
+   */
+  private VersionEntry _parseVersion(String value,
+                                     int offset) throws ParseException
+  {
+
+    int length = value.length();
+    char[] data = new char[length + 1];
+    int i = 0;
+
+    value.getChars(0, length, data, 0);
+    data[length] = (char) 0x1000000; //untype-able ascii char;
+
+    char ch = data[i];
+    VersionEntry vEntry = new VersionEntry();
+    while (i < length + 1)
+    {
+      switch (ch)
+      {
+        case ((char) 0x1000000):
+          String version = value.substring(0, i);
+          //if the version string was simpley "*" or "+"
+          if (version.length() == 0)
+            return null;
+          vEntry._versionId = new VersionId(version);
+          vEntry._type = VersionEntry.EXACT_TYPE;
+          i++;
+          break;
+        case '*':
+        case '+':
+          //After '*' anything other than space is invalid
+          //After '+' anything other than space is invalid
+          version = value.substring(0, i);
+          for (++i; i < length; i++)
+          {
+            if (!Character.isSpace(ch))
+              throw new ParseException("Unexpected char.", offset + i);
+          }
+          //if the version string was simpley "*" or "+"
+          if (version.length() == 0)
+            return null;
+          vEntry._versionId = new VersionId(version);
+          if (ch == '*')
+            vEntry._type = VersionEntry.STAR_TYPE;
+          else
+            vEntry._type = VersionEntry.PLUS_TYPE;
+
+          ///exit the for loop, last char is 0x1000000
+          i++;
+          break;
+        default:
+          ch = data[++i];
+
+      }
+    }
+
+    return vEntry;
+  }
+
+
+  /**
+   * Match and score the name with the NameEntry in this condition
+   *
+   * @param entry
+   * @param matchValue
+   * @return
+   */
+  private double _matchName(NameEntry entry,
+                            String matchValue)
+  {
+    if (matchValue == null)
+      return NO_MATCH;
+
+    int strLen = matchValue.length();
+
+    int len = 0;
+    if (entry.text != _WILD_CHAR_STRING)
+    {
+      if (matchValue.indexOf(entry.text, len) == 0)
+      {
+        len = entry.text.length();
+        if ((entry = entry.next) == null)
+          return NAME_EXACT_MATCH;
+      }
+      else
+        return NO_MATCH;
+    }
+
+    while (entry.next != null)
+    {
+      if (entry.text != _WILD_CHAR_STRING)
+      {
+        int index = matchValue.indexOf(entry.text, len);
+        if (index == -1)
+          return NO_MATCH;
+        len = index + entry.text.length();
+      }
+      entry = entry.next;
+    }
+
+    if (entry.text != _WILD_CHAR_STRING)
+    {
+      if (!matchValue.endsWith(entry.text))
+        return NO_MATCH;
+    }
+
+    return (NAME_STAR_MATCH * (((double) len) / ((double) strLen)));
+  }
+
+
+  /**
+   * Match and score the name with the VersionEntry in this condition
+   *
+   * @param entry
+   * @param version
+   * @return
+   */
+  private double _matchVersion(VersionEntry entry,
+                               VersionId version)
+  {
+    if (version == null)
+      return NO_MATCH; //request has no version info, but entry has version requirement. Hence no match
+
+    if (entry._type == VersionEntry.STAR_TYPE)
+    {
+      Iterator vIterator1 = version.iterator();
+      Iterator vIterator2 = entry._versionId.iterator();
+
+      //Check upto where both have values
+      int matchedParts = 0;
+      while ((vIterator1.hasNext()) && (vIterator2.hasNext()))
+      {
+        String part1 = (String) vIterator1.next();
+        String part2 = (String) vIterator2.next();
+        if (!part1.equals(part2))
+          return NO_MATCH;
+        matchedParts++;
+      }
+
+      //So far they match. Now if version condition has more
+      //parts (sub versions), then it must be .0's
+      while (vIterator2.hasNext())
+      {
+        if (!"0".equals((String) vIterator2.next()))
+          return NO_MATCH;
+      }
+
+      //now check how many parts the VersionId has
+      int totNoOfParts = matchedParts;
+      while (vIterator1.hasNext())
+      {
+        totNoOfParts++;
+        vIterator1.next();
+      }
+
+
+      return (VERSION_STAR_MATCH * matchedParts / totNoOfParts);
+    }
+    else if (entry._type == VersionEntry.PLUS_TYPE)
+    {
+      Iterator vIterator1 = version.iterator();
+      Iterator vIterator2 = entry._versionId.iterator();
+
+      //Check upto where both have values
+      while ((vIterator1.hasNext()) && (vIterator2.hasNext()))
+      {
+        try
+        {
+          int v1 = Integer.parseInt((String) vIterator1.next());
+          int v2 = Integer.parseInt((String) vIterator2.next());
+          if (v1 > v2)
+            return (VERSION_GE_MATCH * (entry._versionId.getVersion() / version.getVersion()));
+          else if (v1 < v2)
+            return NO_MATCH;
+        }
+        catch (NumberFormatException npe)
+        {
+          return NO_MATCH;
+        }
+      }
+
+      //if we reach here they two number are equal so far
+      //Check if remaining are .0's
+      while (vIterator2.hasNext())
+      {
+        try
+        {
+          if (Integer.parseInt((String) vIterator2.next()) != 0)
+            return NO_MATCH;
+        }
+        catch (NumberFormatException npe)
+        {
+          return NO_MATCH;
+        }
+      }
+
+      return (VERSION_GE_MATCH * (entry._versionId.getVersion() / version.getVersion()));
+    }
+    else
+    {
+      //exact match
+      Iterator vIterator1 = version.iterator();
+      Iterator vIterator2 = entry._versionId.iterator();
+
+      //Check upto where both have values
+      while ((vIterator1.hasNext()) && (vIterator2.hasNext()))
+      {
+        String part1 = (String) vIterator1.next();
+        String part2 = (String) vIterator2.next();
+        if (!part1.equals(part2))
+          return NO_MATCH;
+      }
+
+      while (vIterator1.hasNext())
+      {
+        if (!"0".equals((String) vIterator1.next()))
+          return NO_MATCH;
+      }
+
+      while (vIterator2.hasNext())
+      {
+        if (!"0".equals((String) vIterator2.next()))
+          return NO_MATCH;
+      }
+
+      return VERSION_EXACT_MATCH;
+    }
+  }
+
+
+  //structure to store the parsed parts of a name
+  private class NameEntry
+  {
+    String text;
+    NameEntry next;
+  }
+
+  private class VersionEntry
+  {
+    static final int EXACT_TYPE = 0;
+    static final int PLUS_TYPE = 1;
+    static final int STAR_TYPE = 2;
+
+    /* type EXACT_TYPE, PLUS_TYPE, STAR_TYPE*/
+    int _type;
+    VersionId _versionId;
+  }
+
+  private Object[] _entries;
+
+  private final static char _WILD_CHAR = 0x00002A;
+  private final static String _WILD_CHAR_STRING = String.valueOf(_WILD_CHAR);
+
+
+  /**
+   * Name match has a much higher weightage.
+   * Any string/version with wild char __matches gets a slightly lower score
+   * so an input string "xxx" __matches "xxx" and "xxx.*", but a "xxx" match
+   * gets an higher score
+   */
+  private final static double NAME_EXACT_MATCH = 1000;
+  private final static double NAME_STAR_MATCH = NAME_EXACT_MATCH - 1;
+
+  private final static double VERSION_EXACT_MATCH = 10;
+  private final static double VERSION_GE_MATCH = 1;
+  private final static double VERSION_STAR_MATCH = VERSION_EXACT_MATCH - 1;
+
+  public final static double NO_MATCH = 0x0000;
+
 }

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/NameVersion.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/VersionId.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/VersionId.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/VersionId.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/VersionId.java Mon Jul 24 21:42:41 2006
@@ -13,172 +13,172 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package org.apache.myfaces.adfinternal.agent.parse;
-
-import java.util.Iterator;
-
-
-/**
- * A parsed version string
- */
-public class VersionId
-{
-
-  public VersionId(String version)
-  {
-    if (version == null)
-      return;
-    _versionString = version;
-    _version = _parseVersion(version);
-  }
-
-  public String toString()
-  {
-    return _versionString;
-  }
-
-  public double getVersion()
-  {
-    double version = 0;
-    if (_versionString != null)
-    {
-      boolean hasDecimal = false;
-      double divisor = 10.0;
-
-      int sourceLength = _versionString.length();
-      int currIndex = 0;
-
-      while (currIndex < sourceLength)
-      {
-        char currChar = _versionString.charAt(currIndex);
-        if ((currChar >= '0') && (currChar <= '9'))
-        {
-          double addValue = (double) (currChar - '0');
-          if (hasDecimal)
-          {
-            // handle digits to right of decimal
-            addValue /= divisor;
-            divisor = divisor * 10.0;
-          }
-          else
-          {
-            // handle digits to left of decimal
-            version *= 10.0;
-          }
-          version += addValue;
-        }
-        else
-        {
-
-          if (currChar == '.')
-          {
-            // found decimal place
-            hasDecimal = true;
-          }
-          else
-          {
-            break;
-          }
-        }
-        // read next char
-        currIndex++;
-      }
-    }
-    return version;
-  }
-
-
-  public Iterator iterator()
-  {
-    return new VIterator();
-  }
-
-  private Entry _parseVersion(String value)
-  {
-
-    int start = 0;
-    int length = value.length();
-    char[] data = new char[length + 1];
-    int i = 0;
-
-    value.getChars(0, length, data, 0);
-    data[length] = (char) 0x1000000; //untype-able ascii char;
-    char ch = data[i];
-
-    Entry head, curr;
-    head = curr = new Entry();
-    curr.next = curr;
-
-    while (i < length + 1)
-    {
-      //Ignore spaces. TODO: This should happen only for start and end (trim).
-      while (Character.isSpace(ch))
-        ch = data[++i];
-
-      switch (ch)
-      {
-        case '.':
-          if (start != i)
-          {
-            curr.next.text = new String(data, start, i - start);
-            curr = curr.next;
-            curr.next = new Entry();
-          }
-          ch = data[++i];
-          start = i;
-          break;
-        case ((char) 0x1000000):
-          if (start != i)
-          {
-            curr.next.text = new String(data, start, i - start);
-            curr = curr.next;
-            curr.next = new Entry();
-          }
-          i++;
-          break;
-        default:
-          ch = data[++i];
-      }
-    }
-
-    curr.next = null;
-    return head;
-  }
-
-  private class Entry
-  {
-    String text;
-    Entry next;
-  }
-
-  private class VIterator implements Iterator
-  {
-    public VIterator()
-    {
-      _current = _version;
-    }
-
-    public void remove()
-    {
-      throw new UnsupportedOperationException();
-    }
-
-    public boolean hasNext()
-    {
-      return (null != _current);
-    }
-
-    public Object next()
-    {
-      String part = _current.text;
-      _current = _current.next;
-      return part;
-    }
-
-    private Entry _current;
-  }
-
-  private String _versionString;
-  private Entry _version;
-}
-
+package org.apache.myfaces.adfinternal.agent.parse;
+
+import java.util.Iterator;
+
+
+/**
+ * A parsed version string
+ */
+public class VersionId
+{
+
+  public VersionId(String version)
+  {
+    if (version == null)
+      return;
+    _versionString = version;
+    _version = _parseVersion(version);
+  }
+
+  public String toString()
+  {
+    return _versionString;
+  }
+
+  public double getVersion()
+  {
+    double version = 0;
+    if (_versionString != null)
+    {
+      boolean hasDecimal = false;
+      double divisor = 10.0;
+
+      int sourceLength = _versionString.length();
+      int currIndex = 0;
+
+      while (currIndex < sourceLength)
+      {
+        char currChar = _versionString.charAt(currIndex);
+        if ((currChar >= '0') && (currChar <= '9'))
+        {
+          double addValue = (double) (currChar - '0');
+          if (hasDecimal)
+          {
+            // handle digits to right of decimal
+            addValue /= divisor;
+            divisor = divisor * 10.0;
+          }
+          else
+          {
+            // handle digits to left of decimal
+            version *= 10.0;
+          }
+          version += addValue;
+        }
+        else
+        {
+
+          if (currChar == '.')
+          {
+            // found decimal place
+            hasDecimal = true;
+          }
+          else
+          {
+            break;
+          }
+        }
+        // read next char
+        currIndex++;
+      }
+    }
+    return version;
+  }
+
+
+  public Iterator iterator()
+  {
+    return new VIterator();
+  }
+
+  private Entry _parseVersion(String value)
+  {
+
+    int start = 0;
+    int length = value.length();
+    char[] data = new char[length + 1];
+    int i = 0;
+
+    value.getChars(0, length, data, 0);
+    data[length] = (char) 0x1000000; //untype-able ascii char;
+    char ch = data[i];
+
+    Entry head, curr;
+    head = curr = new Entry();
+    curr.next = curr;
+
+    while (i < length + 1)
+    {
+      //Ignore spaces. TODO: This should happen only for start and end (trim).
+      while (Character.isSpace(ch))
+        ch = data[++i];
+
+      switch (ch)
+      {
+        case '.':
+          if (start != i)
+          {
+            curr.next.text = new String(data, start, i - start);
+            curr = curr.next;
+            curr.next = new Entry();
+          }
+          ch = data[++i];
+          start = i;
+          break;
+        case ((char) 0x1000000):
+          if (start != i)
+          {
+            curr.next.text = new String(data, start, i - start);
+            curr = curr.next;
+            curr.next = new Entry();
+          }
+          i++;
+          break;
+        default:
+          ch = data[++i];
+      }
+    }
+
+    curr.next = null;
+    return head;
+  }
+
+  private class Entry
+  {
+    String text;
+    Entry next;
+  }
+
+  private class VIterator implements Iterator
+  {
+    public VIterator()
+    {
+      _current = _version;
+    }
+
+    public void remove()
+    {
+      throw new UnsupportedOperationException();
+    }
+
+    public boolean hasNext()
+    {
+      return (null != _current);
+    }
+
+    public Object next()
+    {
+      String part = _current.text;
+      _current = _current.next;
+      return part;
+    }
+
+    private Entry _current;
+  }
+
+  private String _versionString;
+  private Entry _version;
+}
+

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/VersionId.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/XMLConstants.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/XMLConstants.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/XMLConstants.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/XMLConstants.java Mon Jul 24 21:42:41 2006
@@ -13,34 +13,34 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-package org.apache.myfaces.adfinternal.agent.parse;
-
-/**
- * XML Names used in the capabilties file
- */
-interface XMLConstants
-{
-  public static final String NS_URI = "http://myfaces.apache.org/adf/view/faces/agent/capabilities";
-  public static final String ELEMENT_ROOT = "capabilitiesDocument";
-  public static final String ELEMENT_AGENT_CAPABILITIES = "agentCapabilities";
-  public static final String ELEMENT_CAPABILITIES = "capabilities";
-  public static final String ELEMENT_INCLUDE = "include";
-  public static final String ELEMENT_DEVICES = "devices";
-  public static final String ELEMENT_DEVICE = "device";
-  public static final String ELEMENT_COMPONENT = "component";
-  public static final String ATTRIBUTE_ID = "id";
-  public static final String ATTRIBUTE_REFID = "refid";
-  public static final String ATTRIBUTE_SRC = "src";
-  public static final String ATTRIBUTE_AGENTS = "agents";
-  public static final String ATTRIBUTE_PLATFORMS = "platforms";
-  public static final String ATTRIBUTE_DEFAULT = "default";
-  public static final String ATTRIBUTE_MODEL = "model";
-  public static final String ATTRIBUTE_EXTENDS = "extends";
-  public static final String ATTRIBUTE_TYPE = "type";
-
-  public static final String ELEMENT_CAPABILITY_DATA = "capabilityData";
-  public static final String ELEMENT_CAPABILITY = "capability";
-  public static final String ATTRIBUTE_NAME = "name";
-  public static final String ATTRIBUTE_VALUE = "value";
-
-}
+package org.apache.myfaces.adfinternal.agent.parse;
+
+/**
+ * XML Names used in the capabilties file
+ */
+interface XMLConstants
+{
+  public static final String NS_URI = "http://myfaces.apache.org/adf/view/faces/agent/capabilities";
+  public static final String ELEMENT_ROOT = "capabilitiesDocument";
+  public static final String ELEMENT_AGENT_CAPABILITIES = "agentCapabilities";
+  public static final String ELEMENT_CAPABILITIES = "capabilities";
+  public static final String ELEMENT_INCLUDE = "include";
+  public static final String ELEMENT_DEVICES = "devices";
+  public static final String ELEMENT_DEVICE = "device";
+  public static final String ELEMENT_COMPONENT = "component";
+  public static final String ATTRIBUTE_ID = "id";
+  public static final String ATTRIBUTE_REFID = "refid";
+  public static final String ATTRIBUTE_SRC = "src";
+  public static final String ATTRIBUTE_AGENTS = "agents";
+  public static final String ATTRIBUTE_PLATFORMS = "platforms";
+  public static final String ATTRIBUTE_DEFAULT = "default";
+  public static final String ATTRIBUTE_MODEL = "model";
+  public static final String ATTRIBUTE_EXTENDS = "extends";
+  public static final String ATTRIBUTE_TYPE = "type";
+
+  public static final String ELEMENT_CAPABILITY_DATA = "capabilityData";
+  public static final String ELEMENT_CAPABILITY = "capability";
+  public static final String ATTRIBUTE_NAME = "name";
+  public static final String ATTRIBUTE_VALUE = "value";
+
+}

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/agent/parse/XMLConstants.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/bean/UIXEditableFacesBeanImpl.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/bean/UIXEditableFacesBeanImpl.java?rev=425276&r1=425275&r2=425276&view=diff
==============================================================================
--- incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/bean/UIXEditableFacesBeanImpl.java (original)
+++ incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/bean/UIXEditableFacesBeanImpl.java Mon Jul 24 21:42:41 2006
@@ -1,33 +1,33 @@
-/*
- * Copyright  2005,2006 The Apache Software Foundation.
- * 
- * 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.myfaces.adfinternal.bean;
-
-import org.apache.myfaces.adf.bean.PropertyKey;
-import org.apache.myfaces.adf.component.UIXEditableValue;
-
-public class UIXEditableFacesBeanImpl extends UIXFacesBeanImpl
-{
-  public UIXEditableFacesBeanImpl()
-  {
-  }
-
-  public void setProperty(PropertyKey key, Object value)
-  {
-    super.setProperty(key, value);
-    if (key == UIXEditableValue.VALUE_KEY)
-      setProperty(UIXEditableValue.LOCAL_VALUE_SET_KEY, Boolean.TRUE);
-  }
+/*
+ * Copyright  2005,2006 The Apache Software Foundation.
+ * 
+ * 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.myfaces.adfinternal.bean;
+
+import org.apache.myfaces.adf.bean.PropertyKey;
+import org.apache.myfaces.adf.component.UIXEditableValue;
+
+public class UIXEditableFacesBeanImpl extends UIXFacesBeanImpl
+{
+  public UIXEditableFacesBeanImpl()
+  {
+  }
+
+  public void setProperty(PropertyKey key, Object value)
+  {
+    super.setProperty(key, value);
+    if (key == UIXEditableValue.VALUE_KEY)
+      setProperty(UIXEditableValue.LOCAL_VALUE_SET_KEY, Boolean.TRUE);
+  }
 }

Propchange: incubator/adffaces/branches/matzew-repackaging-trinidad/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/adfinternal/bean/UIXEditableFacesBeanImpl.java
------------------------------------------------------------------------------
    svn:eol-style = native