You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2007/01/24 16:50:48 UTC
svn commit: r499448 - in
/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util:
URISupport.cpp URISupport.h
Author: tabish
Date: Wed Jan 24 07:50:47 2007
New Revision: 499448
URL: http://svn.apache.org/viewvc?view=rev&rev=499448
Log:
http://issues.apache.org/activemq/browse/AMQCPP-30
Added:
incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp (with props)
incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h (with props)
Added: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp?view=auto&rev=499448
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp (added)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp Wed Jan 24 07:50:47 2007
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "URISupport.h"
+#include "StringTokenizer.h"
+
+#include <activemq/exceptions/IllegalArgumentException.h>
+
+using namespace activemq;
+using namespace activemq::util;
+using namespace activemq::exceptions;
+
+////////////////////////////////////////////////////////////////////////////////
+SimpleProperties URISupport::parseQuery( std::string query )
+ throw ( IllegalArgumentException )
+{
+ try {
+
+ SimpleProperties map;
+
+ // strip the initial "?"
+ size_t pos = query.find_first_of( "?" );
+ if( pos != std::string::npos ) {
+ query = query.substr(pos+1);
+ }
+
+ // split the query into parameters
+ StringTokenizer tokenizer( query, "&" );
+ std::vector<std::string> options;
+ tokenizer.toArray( options );
+
+ std::vector<std::string>::const_iterator iter = options.begin();
+
+ for( ; iter != options.end(); ++iter ) {
+
+ tokenizer.reset( *iter, "=" );
+
+ std::string key = "";
+ std::string value = "";
+
+ if( tokenizer.countTokens() != 2 ) {
+ throw IllegalArgumentException(
+ __FILE__,
+ __LINE__,
+ "URISupport::parseQuery - Invalid URI Option." );
+ }
+
+ // Get the Key
+ if( tokenizer.hasMoreTokens() != false ) {
+ key = tokenizer.nextToken();
+ }
+
+ // Get the Value
+ if( tokenizer.hasMoreTokens() != false ) {
+ value = tokenizer.nextToken();
+ }
+
+ // Store them.
+ map.setProperty( key, value );
+ }
+
+ return map;
+ }
+ AMQ_CATCH_RETHROW( IllegalArgumentException )
+ AMQ_CATCH_EXCEPTION_CONVERT( NoSuchElementException, IllegalArgumentException )
+ AMQ_CATCHALL_THROW( IllegalArgumentException )
+}
+
Propchange: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.cpp
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h
URL: http://svn.apache.org/viewvc/incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h?view=auto&rev=499448
==============================================================================
--- incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h (added)
+++ incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h Wed Jan 24 07:50:47 2007
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef _ACTIVEMQ_UTIL_URISUPPORT_H_
+#define _ACTIVEMQ_UTIL_URISUPPORT_H_
+
+#include <activemq/util/SimpleProperties.h>
+#include <activemq/exceptions/IllegalArgumentException.h>
+
+namespace activemq{
+namespace util{
+
+ class URISupport
+ {
+ public:
+
+ virtual ~URISupport();
+
+ /**
+ * Parse the Query portion of a URI String and return a Simple
+ * Properties object containing the parameter names as keys, and
+ * the parameter values and values of the Properties.
+ * @param query. the query string to parse.
+ * @returns SimpleProperties object with the parsed output.
+ */
+ static SimpleProperties parseQuery( std::string query )
+ throw ( exceptions::IllegalArgumentException );
+
+ };
+
+}}
+
+#endif /*_ACTIVEMQ_UTIL_URISUPPORT_H_*/
Propchange: incubator/activemq/activemq-cpp/trunk/activemq-cpp/src/main/activemq/util/URISupport.h
------------------------------------------------------------------------------
svn:eol-style = native