Author: rhauch
Date: 2009-03-12 16:40:20 -0400 (Thu, 12 Mar 2009)
New Revision: 775
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/property/basic/NameValueFactory.java
Log:
DNA-194 Implement update JCR capability
Small optimization in the NameValueFactory that maintains a single static/shared instance
for Name objects that have no namespace URI and a local name of "*". These are
use pretty prevelently in the JCR type manager to represent residual child and property
definitions.
Modified:
trunk/dna-graph/src/main/java/org/jboss/dna/graph/property/basic/NameValueFactory.java
===================================================================
---
trunk/dna-graph/src/main/java/org/jboss/dna/graph/property/basic/NameValueFactory.java 2009-03-12
20:14:20 UTC (rev 774)
+++
trunk/dna-graph/src/main/java/org/jboss/dna/graph/property/basic/NameValueFactory.java 2009-03-12
20:40:20 UTC (rev 775)
@@ -66,6 +66,9 @@
private static final String PREFIXED_NAME_PATTERN_STRING =
"(([^:/]*):)?(.*)";
private static final Pattern PREFIXED_NAME_PATTERN =
Pattern.compile(PREFIXED_NAME_PATTERN_STRING);
+ private static Name BLANK_NAME;
+ private static Name ANY_NAME;
+
private final NamespaceRegistry namespaceRegistry;
public NameValueFactory( NamespaceRegistry namespaceRegistry,
@@ -92,9 +95,15 @@
if (decoder == null) decoder = getDecoder();
try {
if (value.length() == 0) {
- return new BasicName("", "");
+ if (BLANK_NAME == null) BLANK_NAME = new BasicName("",
"");
+ return BLANK_NAME;
}
- if (value.charAt(0) != '{') {
+ char firstChar = value.charAt(0);
+ if (value.length() == 1 && firstChar == '*') {
+ if (ANY_NAME == null) ANY_NAME = new BasicName("",
"*");
+ return ANY_NAME;
+ }
+ if (firstChar != '{') {
// First, see whether the value fits the prefixed name pattern ...
Matcher matcher = PREFIXED_NAME_PATTERN.matcher(value);
if (matcher.matches()) {
Show replies by date