Updated Branches: refs/heads/master b23289746 -> f3ec15032
WICKET-4679 XmlPullParser doesn't parse correctly attributes with complex namespace Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/f3ec1503 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/f3ec1503 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/f3ec1503 Branch: refs/heads/master Commit: f3ec1503219bd01f3ba4d7ca7b52186f33d2cabf Parents: b232897 Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Authored: Fri Jul 27 11:29:31 2012 +0300 Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org> Committed: Fri Jul 27 11:29:31 2012 +0300 ---------------------------------------------------------------------- .../parsers/VariableAssignmentParser.java | 6 +- .../parsers/VariableAssignmentParserTest.java | 55 +++++++++++++++ 2 files changed, 58 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/f3ec1503/wicket-util/src/main/java/org/apache/wicket/util/parse/metapattern/parsers/VariableAssignmentParser.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/main/java/org/apache/wicket/util/parse/metapattern/parsers/VariableAssignmentParser.java b/wicket-util/src/main/java/org/apache/wicket/util/parse/metapattern/parsers/VariableAssignmentParser.java index dc49c17..ee4f443 100644 --- a/wicket-util/src/main/java/org/apache/wicket/util/parse/metapattern/parsers/VariableAssignmentParser.java +++ b/wicket-util/src/main/java/org/apache/wicket/util/parse/metapattern/parsers/VariableAssignmentParser.java @@ -29,11 +29,11 @@ import org.apache.wicket.util.parse.metapattern.OptionalMetaPattern; */ public final class VariableAssignmentParser extends MetaPatternParser { - /** The optional namespace like "namespace:*" */ + /** The optional namespace like "namespace:*[:*]" */ private static final MetaPattern namespace = new OptionalMetaPattern(new MetaPattern[] { - MetaPattern.VARIABLE_NAME, MetaPattern.COLON }); + MetaPattern.VARIABLE_NAME, MetaPattern.COLON, new OptionalMetaPattern(new MetaPattern[] {MetaPattern.VARIABLE_NAME, MetaPattern.COLON })}); - /** The key (lvalue) like "name" or "namespace:name" */ + /** The key (lvalue) like "name" or "namespace:name" or "namespace:name:subname" */ private final Group key = new Group(new MetaPattern(namespace, MetaPattern.XML_ATTRIBUTE_NAME)); /** The rvalue of the assignment */ http://git-wip-us.apache.org/repos/asf/wicket/blob/f3ec1503/wicket-util/src/test/java/org/apache/wicket/util/parse/metapattern/parsers/VariableAssignmentParserTest.java ---------------------------------------------------------------------- diff --git a/wicket-util/src/test/java/org/apache/wicket/util/parse/metapattern/parsers/VariableAssignmentParserTest.java b/wicket-util/src/test/java/org/apache/wicket/util/parse/metapattern/parsers/VariableAssignmentParserTest.java new file mode 100644 index 0000000..9ff73b9 --- /dev/null +++ b/wicket-util/src/test/java/org/apache/wicket/util/parse/metapattern/parsers/VariableAssignmentParserTest.java @@ -0,0 +1,55 @@ +/* + * 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. + */ +package org.apache.wicket.util.parse.metapattern.parsers; + +import org.junit.Assert; +import org.junit.Test; + +/** + * @since 1.5.8 + */ +public class VariableAssignmentParserTest extends Assert +{ + /** + * Tests parsing of attribute names with and without namespaces + * + * https://issues.apache.org/jira/browse/WICKET-4679 + */ + @Test + public void parseAttributeName() + { + String tagName = "tagName"; + + VariableAssignmentParser parser = new VariableAssignmentParser(tagName + " name='value'"); + + parser.matcher().find(tagName.length()); + assertEquals("name", parser.getKey()); + assertEquals("'value'", parser.getValue()); + + parser = new VariableAssignmentParser(tagName + " namespace:name='value'"); + + parser.matcher().find(tagName.length()); + assertEquals("namespace:name", parser.getKey()); + assertEquals("'value'", parser.getValue()); + + parser = new VariableAssignmentParser(tagName + " namespace:name:subname='value'"); + + parser.matcher().find(tagName.length()); + assertEquals("namespace:name:subname", parser.getKey()); + assertEquals("'value'", parser.getValue()); + } +}