You are viewing a plain text version of this content. The canonical link for it is here.
Posted to pubscribe-dev@ws.apache.org by ip...@apache.org on 2005/05/05 01:17:40 UTC

svn commit: r168209 - /incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/AbstractTopicExpressionEvaluator.java

Author: ips
Date: Wed May  4 16:17:39 2005
New Revision: 168209

URL: http://svn.apache.org/viewcvs?rev=168209&view=rev
Log:
better parsing/validation of topicPaths in toQName()

Modified:
    incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/AbstractTopicExpressionEvaluator.java

Modified: incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/AbstractTopicExpressionEvaluator.java
URL: http://svn.apache.org/viewcvs/incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/AbstractTopicExpressionEvaluator.java?rev=168209&r1=168208&r2=168209&view=diff
==============================================================================
--- incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/AbstractTopicExpressionEvaluator.java (original)
+++ incubator/hermes/trunk/src/java/org/apache/ws/notification/topics/impl/AbstractTopicExpressionEvaluator.java Wed May  4 16:17:39 2005
@@ -15,18 +15,17 @@
  *=============================================================================*/
 package org.apache.ws.notification.topics.impl;
 
-import org.apache.ws.util.xml.NamespaceContext;
-import org.apache.ws.notification.topics.topicexpression.impl.InvalidTopicExpressionException;
-import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionException;
-import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionResolutionException;
+import org.apache.commons.lang.StringUtils;
 import org.apache.ws.notification.topics.TopicExpression;
+import org.apache.ws.notification.topics.TopicExpressionEvaluator;
 import org.apache.ws.notification.topics.TopicSpace;
 import org.apache.ws.notification.topics.TopicSpaceSet;
-import org.apache.ws.notification.topics.TopicExpressionEvaluator;
-import org.apache.commons.lang.StringUtils;
+import org.apache.ws.notification.topics.topicexpression.impl.InvalidTopicExpressionException;
+import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionException;
+import org.apache.ws.notification.topics.topicexpression.impl.TopicExpressionResolutionException;
+import org.apache.ws.util.xml.NamespaceContext;
 
 import javax.xml.namespace.QName;
-import java.util.StringTokenizer;
 
 /**
  * An abstract class that provides functionality that is shared by the
@@ -81,25 +80,29 @@
     protected QName toQName( String topicPath, NamespaceContext nsContext )
             throws InvalidTopicExpressionException
     {
-        StringTokenizer topicPathTokenizer = new StringTokenizer( topicPath, ":" );
-        if ( topicPathTokenizer.countTokens() == 0 )
+        String prefix, localPart;
+        int i = topicPath.indexOf( ':' );
+        if ( i == -1 )  // no prefix
         {
-            throw new InvalidTopicExpressionException( "Topic path '" + topicPath + "' contains no local part." );
+            prefix = "";
+            localPart = topicPath;
         }
-        if ( topicPathTokenizer.countTokens() > 2 )
+        else if ( i == 0 )
         {
-            throw new InvalidTopicExpressionException( "Topic path '" + topicPath + "' contains more than one colon." );
+            throw new InvalidTopicExpressionException( "Topic path '" + topicPath + "' starts with a colon." );
         }
-        String prefix, localPart;
-        if ( topicPathTokenizer.countTokens() == 1 )
+        else if ( i == topicPath.length() - 1 )
         {
-            prefix = "";
-            localPart = topicPathTokenizer.nextToken();
+            throw new InvalidTopicExpressionException( "Topic path '" + topicPath + "' ends with a colon." );
         }
         else
         {
-            prefix = topicPathTokenizer.nextToken();
-            localPart = topicPathTokenizer.nextToken();
+            prefix = topicPath.substring( 0, i );
+            localPart = topicPath.substring( i + 1 );
+            if ( localPart.indexOf( ':' ) != -1 )
+            {
+                throw new InvalidTopicExpressionException( "Local part of topic path '" + topicPath + "' contains a colon." );
+            }
         }
         String nsURI = nsContext.getNamespaceURI( prefix );
         return new QName( nsURI, localPart, prefix );



---------------------------------------------------------------------
To unsubscribe, e-mail: hermes-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: hermes-dev-help@ws.apache.org