/*
* 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.jackrabbit.spi.commons.name;
import java.util.ArrayList;
/**
* <code>JcrName</code>...
*/
public final class JcrName {
public final String jcrName;
public final String prefix;
public final String name;
// create tests
private static ArrayList list = new ArrayList();
static {
// valid names
list.add(new JcrName("a", "", "a"));
list.add(new JcrName("name", "", "name"));
list.add(new JcrName("na me", "", "na me"));
list.add(new JcrName("prefix:name", "prefix", "name"));
list.add(new JcrName("prefix:na me", "prefix", "na me"));
list.add(new JcrName("...", "", "..."));
list.add(new JcrName(".a.", "", ".a."));
// valid names since jcr 2.0
list.add(new JcrName("a'", "", "a'")); // single quote
list.add(new JcrName("'a", "", "'a"));
list.add(new JcrName("ab'c", "", "ab'c"));
list.add(new JcrName("prefix:ab'c", "prefix", "ab'c"));
list.add(new JcrName("a\"", "", "a\"")); // double quote
list.add(new JcrName("\"a", "", "\"a"));
list.add(new JcrName("ab\"c", "", "ab\"c"));
list.add(new JcrName("prefix:ab\"c", "prefix", "ab\"c"));
// expanded names
list.add(new JcrName("{}a", "", "a"));
list.add(new JcrName("{}name", "", "name"));
list.add(new JcrName("{}na me", "", "na me"));
list.add(new JcrName("{uri:}name", "uri:", "name"));
list.add(new JcrName("{uri:}na me", "uri:", "na me"));
list.add(new JcrName("{nouri}name", "", "{nouri}name"));
list.add(new JcrName("{nouri}na me", "", "{nouri}na me"));
list.add(new JcrName("{}...", "", "..."));
list.add(new JcrName("{}.a.", "", ".a."));
// invalid names
list.add(new JcrName(":name"));
list.add(new JcrName("."));
list.add(new JcrName(".."));
list.add(new JcrName("pre:"));
list.add(new JcrName(""));
list.add(new JcrName(" name"));
list.add(new JcrName(" prefix: name"));
list.add(new JcrName("prefix: name"));
list.add(new JcrName("prefix:name "));
list.add(new JcrName("pre fix:name"));
list.add(new JcrName("prefix :name"));
list.add(new JcrName("name/name"));
list.add(new JcrName("name[name"));
list.add(new JcrName("name]name"));
list.add(new JcrName("name[]"));
list.add(new JcrName("name[123]"));
list.add(new JcrName("name*name"));
list.add(new JcrName("prefix:name:name"));
list.add(new JcrName("name|name"));
list.add(new JcrName("|name"));
list.add(new JcrName("name|"));
list.add(new JcrName("prefix:name|name"));
}
private static JcrName[] tests = (JcrName[]) list.toArray(new JcrName[list.size()]);
public static JcrName[] getTests() {
return tests;
}
public JcrName(String jcrName) {
this(jcrName, null, null);
}
public JcrName(String jcrName, String prefix, String name) {
this.jcrName = jcrName;
this.prefix = prefix;
this.name = name;
}
public boolean isValid() {
return name!=null;
}
public String toString() {
StringBuffer b = new StringBuffer(jcrName);
if (isValid()) {
b.append(",VAL");
}
return b.toString();
}
}