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