You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ju...@apache.org on 2012/04/26 15:17:46 UTC
svn commit: r1330836 - in
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype:
NodeTypeImpl.java NodeTypeManagerImpl.java
Author: jukka
Date: Thu Apr 26 13:17:46 2012
New Revision: 1330836
URL: http://svn.apache.org/viewvc?rev=1330836&view=rev
Log:
OAK-66: JCR Node Type Management
Fix CND regexps
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeImpl.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeImpl.java?rev=1330836&r1=1330835&r2=1330836&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeImpl.java Thu Apr 26 13:17:46 2012
@@ -61,7 +61,7 @@ class NodeTypeImpl implements NodeType {
private boolean isAbstract;
- private final boolean isMixin;
+ private final boolean mixin;
private final boolean hasOrderableChildNodes;
@@ -83,40 +83,52 @@ class NodeTypeImpl implements NodeType {
Matcher matcher = CND_PATTERN.matcher(cnd.replace("\r\n", "\n"));
matcher.matches();
- this.declaredSuperTypeNames = matcher.group(2).split(", ");
this.isAbstract = matcher.group(5) != null;
- this.isMixin = matcher.group(4) != null;
+ this.mixin = matcher.group(4) != null;
this.hasOrderableChildNodes = matcher.group(7) != null;
this.primaryItemName = matcher.group(8);
- for (String line : matcher.group(9).split("\n")) {
- matcher = DEF_PATTERN.matcher(line);
- matcher.matches();
-
- String defName = matcher.group(2);
- String defType = matcher.group(3);
-
- boolean mandatory = matcher.group(6).contains(" mandatory");
- boolean autoCreated = matcher.group(6).contains(" autocreated");
- boolean isProtected = matcher.group(6).contains(" protected");
- boolean multiple = matcher.group(6).contains(" multiple");
-
- int onParentVersionAction = OnParentVersionAction.COPY;
- if (matcher.group(9) != null) {
- onParentVersionAction =
- OnParentVersionAction.valueFromName(matcher.group(9));
- }
+ String supertypes = matcher.group(2);
+ if (supertypes != null) {
+ this.declaredSuperTypeNames = supertypes.split(", ");
+ } else if (mixin) {
+ this.declaredSuperTypeNames = new String[0];
+ } else {
+ this.declaredSuperTypeNames = new String[] { "nt:base" };
+ }
- if ("+".equals(matcher.group(1))) {
- declaredChildNodeDefinitions.add(new NodeDefinitionImpl(
- this, mapper, defName, autoCreated, mandatory,
- onParentVersionAction, isProtected, manager,
- defType.split(", "), matcher.group(5), false));
- } else {
- declaredPropertyDefinitions.add(new PropertyDefinitionImpl(
- this, mapper, defName, autoCreated, mandatory,
- onParentVersionAction, isProtected,
- PropertyType.valueFromName(defType), multiple));
+ String defs = matcher.group(9);
+ if (defs != null) {
+ defs = defs.trim();
+ for (String line : defs.split("\n")) {
+ matcher = DEF_PATTERN.matcher(line);
+ matcher.matches();
+
+ String defName = matcher.group(2);
+ String defType = matcher.group(3);
+
+ boolean mandatory = matcher.group(6).contains(" mandatory");
+ boolean autoCreated = matcher.group(6).contains(" autocreated");
+ boolean isProtected = matcher.group(6).contains(" protected");
+ boolean multiple = matcher.group(6).contains(" multiple");
+
+ int onParentVersionAction = OnParentVersionAction.COPY;
+ if (matcher.group(9) != null) {
+ onParentVersionAction =
+ OnParentVersionAction.valueFromName(matcher.group(9));
+ }
+
+ if ("+".equals(matcher.group(1))) {
+ declaredChildNodeDefinitions.add(new NodeDefinitionImpl(
+ this, mapper, defName, autoCreated, mandatory,
+ onParentVersionAction, isProtected, manager,
+ defType.split(", "), matcher.group(5), false));
+ } else {
+ declaredPropertyDefinitions.add(new PropertyDefinitionImpl(
+ this, mapper, defName, autoCreated, mandatory,
+ onParentVersionAction, isProtected,
+ PropertyType.valueFromName(defType), multiple));
+ }
}
}
}
@@ -142,7 +154,7 @@ class NodeTypeImpl implements NodeType {
@Override
public boolean isMixin() {
- return isMixin;
+ return mixin;
}
@Override
Modified: jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java?rev=1330836&r1=1330835&r2=1330836&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java (original)
+++ jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeManagerImpl.java Thu Apr 26 13:17:46 2012
@@ -45,7 +45,7 @@ import org.apache.jackrabbit.oak.namepat
public class NodeTypeManagerImpl implements NodeTypeManager {
private static final Pattern CND_PATTERN =
- Pattern.compile("\\[(.*)?\\](.*?\n)\n");
+ Pattern.compile("\\[(\\S*)?\\]([.\n]*?)\n\n");
private final NameMapper mapper;
@@ -62,7 +62,8 @@ public class NodeTypeManagerImpl impleme
Matcher matcher = CND_PATTERN.matcher(cnd);
while (matcher.find()) {
String name = matcher.group(1);
- types.put(name, new NodeTypeImpl(this, mapper, name, matcher.group(2)));
+ types.put(name, new NodeTypeImpl(
+ this, mapper, name, matcher.group(2)));
}
} finally {
stream.close();