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 14:42:29 UTC
svn commit: r1330814 -
/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeImpl.java
Author: jukka
Date: Thu Apr 26 12:42:29 2012
New Revision: 1330814
URL: http://svn.apache.org/viewvc?rev=1330814&view=rev
Log:
OAK-66: JCR Node Type Management
Implement getSupertypes and getDeclaredSupertypes
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/nodetype/NodeTypeImpl.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=1330814&r1=1330813&r2=1330814&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 12:42:29 2012
@@ -19,7 +19,11 @@ package org.apache.jackrabbit.oak.jcr.no
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Queue;
+import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -174,12 +178,39 @@ class NodeTypeImpl implements NodeType {
@Override
public NodeType[] getSupertypes() {
- return null;
+ try {
+ Collection<NodeType> types = new ArrayList<NodeType>();
+ Set<String> added = new HashSet<String>();
+ Queue<String> queue = new LinkedList<String>(
+ Arrays.asList(getDeclaredSupertypeNames()));
+ while (!queue.isEmpty()) {
+ String name = mapper.getJcrName(queue.remove());
+ if (added.add(name)) {
+ NodeType type = manager.getNodeType(name);
+ types.add(type);
+ queue.addAll(Arrays.asList(type.getDeclaredSupertypeNames()));
+ }
+ }
+ return types.toArray(new NodeType[types.size()]);
+ } catch (RepositoryException e) {
+ throw new IllegalStateException(
+ "Inconsistent node type: " + this, e);
+ }
}
@Override
public NodeType[] getDeclaredSupertypes() {
- return null;
+ try {
+ String[] names = getDeclaredSupertypeNames();
+ NodeType[] types = new NodeType[names.length];
+ for (int i = 0; i < types.length; i++) {
+ types[i] = manager.getNodeType(names[i]);
+ }
+ return types;
+ } catch (RepositoryException e) {
+ throw new IllegalStateException(
+ "Inconsistent node type: " + this, e);
+ }
}
@Override