You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/10/21 13:38:44 UTC

svn commit: r827966 [12/15] - in /jackrabbit/sandbox/JCR-1456: ./ jackrabbit-api/src/main/java/org/apache/jackrabbit/api/ jackrabbit-api/src/main/java/org/apache/jackrabbit/api/management/ jackrabbit-api/src/main/java/org/apache/jackrabbit/api/security...

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntryImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntryImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/NodeEntryImpl.java Wed Oct 21 11:38:31 2009
@@ -101,7 +101,7 @@
      * Map of properties which are deleted and have been re-created as transient
      * property with the same name.
      */
-    private final Map propertiesInAttic;
+    private final Map<Name, PropertyEntry> propertiesInAttic;
 
     /**
      * Upon transient 'move' ('rename') or 'reorder' of SNSs this
@@ -137,7 +137,7 @@
         properties = new ChildPropertyEntriesImpl(this, factory);
         childNodeEntries = new ChildNodeEntriesImpl(this, factory, null);
 
-        propertiesInAttic = new HashMap();
+        propertiesInAttic = new HashMap<Name, PropertyEntry>();
         childNodeAttic = new ChildNodeAttic();
 
         factory.notifyEntryCreated(this);
@@ -195,8 +195,8 @@
         // did not cause this entry to be removed -> therefore check status.
         if (recursive && !Status.isTerminal(getStatus())) {
             // recursively reload all entries including props that are in the attic.
-            for (Iterator it = getAllChildEntries(true); it.hasNext();) {
-                HierarchyEntry ce = (HierarchyEntry) it.next();
+            for (Iterator<HierarchyEntry> it = getAllChildEntries(true); it.hasNext();) {
+                HierarchyEntry ce = it.next();
                 ce.reload(recursive);
             }
         }
@@ -228,8 +228,8 @@
      * @see HierarchyEntry#transientRemove()
      */
     public void transientRemove() throws RepositoryException {
-        for (Iterator it = getAllChildEntries(false); it.hasNext();) {
-            HierarchyEntry ce = (HierarchyEntry) it.next();
+        for (Iterator<HierarchyEntry> it = getAllChildEntries(false); it.hasNext();) {
+            HierarchyEntry ce = it.next();
             ce.transientRemove();
         }
 
@@ -251,7 +251,7 @@
         super.internalRemove(false);
         boolean staleParent = (getStatus() == Status.STALE_DESTROYED);
         // now remove all child-entries (or mark them accordingly)
-        for (Iterator it = getAllChildEntries(true); it.hasNext();) {
+        for (Iterator<HierarchyEntry> it = getAllChildEntries(true); it.hasNext();) {
             HierarchyEntryImpl ce = (HierarchyEntryImpl) it.next();
             ce.internalRemove(staleParent);
         }
@@ -263,7 +263,7 @@
         staleParent = (staleParent || (getStatus() == Status.STALE_DESTROYED));
 
         // now remove all child-entries (or mark them accordingly)
-        for (Iterator it = getAllChildEntries(true); it.hasNext();) {
+        for (Iterator<HierarchyEntry> it = getAllChildEntries(true); it.hasNext();) {
             HierarchyEntryImpl ce = (HierarchyEntryImpl) it.next();
             ce.internalRemove(staleParent);
         }
@@ -413,7 +413,7 @@
                 }
                 // -> check for moved child entry in node-attic
                 // -> check if child points to a removed/moved sns
-                List siblings = entry.childNodeEntries.get(name);
+                List<NodeEntry> siblings = entry.childNodeEntries.get(name);
                 if (entry.containsAtticChild(siblings, name, index)) {
                     throw new PathNotFoundException(factory.saveGetJCRPath(path));
                 }
@@ -487,7 +487,7 @@
                 }
                 // -> check for moved child entry in node-attic
                 // -> check if child points to a removed/moved sns
-                List siblings = entry.childNodeEntries.get(name);
+                List<NodeEntry> siblings = entry.childNodeEntries.get(name);
                 if (entry.containsAtticChild(siblings, name, index)) {
                     throw new PathNotFoundException(factory.saveGetJCRPath(path));
                 }
@@ -567,7 +567,7 @@
      * @see NodeEntry#hasNodeEntry(Name)
      */
     public synchronized boolean hasNodeEntry(Name nodeName) {
-        List namedEntries = childNodeEntries.get(nodeName);
+        List<NodeEntry> namedEntries = childNodeEntries.get(nodeName);
         if (namedEntries.isEmpty()) {
             return false;
         } else {
@@ -598,14 +598,14 @@
      * @see NodeEntry#getNodeEntry(Name, int, boolean)
      */
     public NodeEntry getNodeEntry(Name nodeName, int index, boolean loadIfNotFound) throws RepositoryException {
-        List entries = childNodeEntries.get(nodeName);
+        List<NodeEntry> entries = childNodeEntries.get(nodeName);
         NodeEntry cne = null;
         if (entries.size() >= index) {
             // position of entry might differ from index-1 if a SNS with lower
             // index has been transiently removed.
             int eIndex = 1;
             for (int i = 0; i < entries.size() && cne == null; i++) {
-                NodeEntry ne = (NodeEntry) entries.get(i);
+                NodeEntry ne = entries.get(i);
                 if (EntryValidation.isValidNodeEntry(ne)) {
                     if (eIndex == index) {
                         cne = ne;
@@ -629,10 +629,10 @@
     /**
      * @see NodeEntry#getNodeEntries()
      */
-    public synchronized Iterator getNodeEntries() throws RepositoryException {
-        Collection entries = new ArrayList();
-        for (Iterator it = getCompleteChildNodeEntries().iterator(); it.hasNext();) {
-            NodeEntry entry = (NodeEntry) it.next();
+    public synchronized Iterator<NodeEntry> getNodeEntries() throws RepositoryException {
+        Collection<NodeEntry> entries = new ArrayList<NodeEntry>();
+        for (Iterator<NodeEntry> it = getCompleteChildNodeEntries().iterator(); it.hasNext();) {
+            NodeEntry entry = it.next();
             if (EntryValidation.isValidNodeEntry(entry)) {
                 entries.add(entry);
             }
@@ -643,17 +643,17 @@
     /**
      * @see NodeEntry#getNodeEntries(Name)
      */
-    public synchronized List getNodeEntries(Name nodeName) throws RepositoryException {
-        List namedEntries = getCompleteChildNodeEntries().get(nodeName);
+    public synchronized List<NodeEntry> getNodeEntries(Name nodeName) throws RepositoryException {
+        List<NodeEntry> namedEntries = getCompleteChildNodeEntries().get(nodeName);
         if (namedEntries.isEmpty()) {
-            return Collections.EMPTY_LIST;
+            return Collections.emptyList();
         } else {
-            List entries = new ArrayList();
+            List<NodeEntry> entries = new ArrayList<NodeEntry>();
             // get array of the list, since during validation the childNodeEntries
             // may be modified if upon NodeEntry.getItemState the entry gets removed.
-            Object[] arr = namedEntries.toArray();
+            NodeEntry[] arr = namedEntries.toArray(new NodeEntry[namedEntries.size()]);
             for (int i = 0; i < arr.length; i++) {
-                NodeEntry cne = (NodeEntry) arr[i];
+                NodeEntry cne = arr[i];
                 if (EntryValidation.isValidNodeEntry(cne)) {
                     entries.add(cne);
                 }
@@ -665,14 +665,14 @@
     /**
      * @see NodeEntry#setNodeEntries(Iterator)
      */
-    public void setNodeEntries(Iterator childInfos) throws RepositoryException {
+    public void setNodeEntries(Iterator<ChildInfo> childInfos) throws RepositoryException {
         if (childNodeAttic.isEmpty()) {
             ((ChildNodeEntriesImpl) childNodeEntries).update(childInfos);
         } else {
             // filter those entries that have been moved to the attic.
-            List remaining = new ArrayList();
+            List<ChildInfo> remaining = new ArrayList<ChildInfo>();
             while (childInfos.hasNext()) {
-                ChildInfo ci = (ChildInfo) childInfos.next();
+                ChildInfo ci = childInfos.next();
                 if (!childNodeAttic.contains(ci.getName(), ci.getIndex(), ci.getUniqueID())) {
                     remaining.add(ci);
                 }
@@ -739,11 +739,11 @@
      * @inheritDoc
      * @see NodeEntry#getPropertyEntries()
      */
-    public synchronized Iterator getPropertyEntries() {
-        Collection props;
+    public synchronized Iterator<PropertyEntry> getPropertyEntries() {
+        Collection<PropertyEntry> props;
         if (getStatus() == Status.EXISTING_MODIFIED) {
             // filter out removed properties
-            props = new ArrayList();
+            props = new ArrayList<PropertyEntry>();
             // use array since upon validation the entry might be removed.
             Object[] arr = properties.getPropertyEntries().toArray();
             for (int i = 0; i < arr.length; i++) {
@@ -775,19 +775,19 @@
     /**
      * @see NodeEntry#setPropertyEntries(Collection)
      */
-    public void setPropertyEntries(Collection propNames) throws ItemExistsException, RepositoryException {
-        Set diff = new HashSet();
+    public void setPropertyEntries(Collection<Name> propNames) throws ItemExistsException, RepositoryException {
+        Set<Name> diff = new HashSet<Name>();
         diff.addAll(properties.getPropertyNames());
         boolean containsExtra = diff.removeAll(propNames);
 
         // add all entries that are missing
-        for (Iterator it = propNames.iterator(); it.hasNext();) {
-            Name propName = (Name) it.next();
+        for (Iterator<Name> it = propNames.iterator(); it.hasNext();) {
+            Name propName = it.next();
             if (!properties.contains(propName)) {
                 // TODO: check again.
                 // setPropertyEntries is used by WorkspaceItemStateFactory upon
                 // creating a NodeState, in which case the uuid/mixins are set
-                // anyway and not need exists to explicitely load the corresponding
+                // anyway and not need exists to explicitly load the corresponding
                 // property state in order to retrieve the values.
                 internalAddPropertyEntry(propName, false);
             }
@@ -798,8 +798,8 @@
         // collection of property names are removed from this NodeEntry.
         ItemState state = internalGetItemState();
         if (containsExtra && (state == null || state.getStatus() == Status.INVALIDATED)) {
-            for (Iterator it = diff.iterator(); it.hasNext();) {
-                Name propName = (Name) it.next();
+            for (Iterator<Name> it = diff.iterator(); it.hasNext();) {
+                Name propName = it.next();
                 PropertyEntry pEntry = properties.get(propName);
                 if (pEntry != null) {
                     pEntry.remove();
@@ -1089,7 +1089,7 @@
             }
         } else {
             Name propName = childEntry.getName();
-            PropertyEntry atticEntry = (PropertyEntry) propertiesInAttic.get(propName);
+            PropertyEntry atticEntry = propertiesInAttic.get(propName);
             if (atticEntry == null) {
                 properties.remove((PropertyEntry) childEntry);
             } else if (atticEntry == childEntry) {
@@ -1116,8 +1116,8 @@
         if (recursive) {
             // invalidate all child entries including properties present in the
             // attic (removed props shadowed by a new property with the same name).
-            for (Iterator it = getAllChildEntries(true); it.hasNext();) {
-                HierarchyEntry ce = (HierarchyEntry) it.next();
+            for (Iterator<HierarchyEntry> it = getAllChildEntries(true); it.hasNext();) {
+                HierarchyEntry ce = it.next();
                 ce.invalidate(true);
             }
         }
@@ -1251,7 +1251,7 @@
         // for external prop-removal the attic must be consulted first
         // in order not access a NEW prop shadowing a transiently removed
         // property with the same name.
-        PropertyEntry child = (PropertyEntry) propertiesInAttic.get(childName);
+        PropertyEntry child = propertiesInAttic.get(childName);
         if (child == null) {
             child = properties.get(childName);
         }
@@ -1326,16 +1326,16 @@
      * @return iterator over all children entries, that currently are loaded
      * with this NodeEntry
      */
-    private Iterator getAllChildEntries(boolean includeAttic) {
+    private Iterator<HierarchyEntry> getAllChildEntries(boolean includeAttic) {
         IteratorChain chain = new IteratorChain();
         // attic
         if (includeAttic) {
-            Collection attic = propertiesInAttic.values();
-            chain.addIterator(new ArrayList(attic).iterator());
+            Collection<PropertyEntry> attic = propertiesInAttic.values();
+            chain.addIterator(new ArrayList<PropertyEntry>(attic).iterator());
         }
         // add props
         synchronized (properties) {
-            Collection props = properties.getPropertyEntries();
+            Collection<PropertyEntry> props = properties.getPropertyEntries();
             chain.addIterator(props.iterator());
         }
         // add childNodeEntries
@@ -1355,12 +1355,12 @@
      * this <code>NodeEntry</code>.
      */
     private int getChildIndex(NodeEntry cne, boolean wspIndex) throws ItemNotFoundException, RepositoryException {
-        List sns = new ArrayList(childNodeEntries.get(cne.getName()));
+        List<NodeEntry> sns = new ArrayList<NodeEntry>(childNodeEntries.get(cne.getName()));
 
         if (wspIndex) {
-            List atticSiblings = childNodeAttic.get(cne.getName());
-            for (Iterator it = atticSiblings.iterator(); it.hasNext();) {
-                NodeEntryImpl sibl = (NodeEntryImpl) it.next();
+            List<NodeEntryImpl> atticSiblings = childNodeAttic.get(cne.getName());
+            for (Iterator<NodeEntryImpl> it = atticSiblings.iterator(); it.hasNext();) {
+                NodeEntryImpl sibl = it.next();
                 if (sibl.revertInfo != null) {
                     sns.add(sibl.revertInfo.oldIndex - 1, sibl);
                 } else {
@@ -1383,8 +1383,8 @@
         } else {
             // siblings exist.
             int index = Path.INDEX_DEFAULT;
-            for (Iterator it = sns.iterator(); it.hasNext(); ) {
-                NodeEntry entry = (NodeEntry) it.next();
+            for (Iterator<NodeEntry> it = sns.iterator(); it.hasNext(); ) {
+                NodeEntry entry = it.next();
                 if (entry == cne) { // TODO see below
                     return index;
                 }
@@ -1418,7 +1418,7 @@
      * matches the given name/index or if the siblings list contain a reordered
      * entry that matches.
      */
-    private boolean containsAtticChild(List siblings, Name childName, int childIndex) {
+    private boolean containsAtticChild(List<NodeEntry> siblings, Name childName, int childIndex) {
         // check if a matching entry exists in the attic
         if (childNodeAttic.contains(childName, childIndex)) {
             return true;
@@ -1426,15 +1426,15 @@
         // special treatment for potentially moved/reordered/removed sns
         // TODO: check again
         if (childIndex > Path.INDEX_DEFAULT) {
-            List siblingsInAttic = childNodeAttic.get(childName);
+            List<NodeEntryImpl> siblingsInAttic = childNodeAttic.get(childName);
             if (siblings.size() < childIndex && childIndex <= siblings.size() + siblingsInAttic.size()) {
                 return true;
             }
         }
         if (getStatus() == Status.EXISTING_MODIFIED) {
-            for (Iterator it = siblings.iterator(); it.hasNext();) {
-                NodeEntryImpl child = (NodeEntryImpl) it.next();
-                if (!EntryValidation.isValidNodeEntry(child) || (child.revertInfo != null && child.revertInfo.oldIndex == childIndex)) {
+            for (Iterator<NodeEntry> it = siblings.iterator(); it.hasNext();) {
+                NodeEntry child = it.next();
+                if (!EntryValidation.isValidNodeEntry(child) || ((NodeEntryImpl)child).revertInfo != null && ((NodeEntryImpl)child).revertInfo.oldIndex == childIndex) {
                     return true;
                 }
             }
@@ -1456,8 +1456,8 @@
             throw new IllegalArgumentException();
         }
 
-        for (Iterator it = operation.getAddedStates().iterator(); it.hasNext();) {
-            HierarchyEntry he = ((ItemState) it.next()).getHierarchyEntry();
+        for (Iterator<ItemState> it = operation.getAddedStates().iterator(); it.hasNext();) {
+            HierarchyEntry he = it.next().getHierarchyEntry();
             if (he.getStatus() == Status.NEW) {
                 switch (operation.getStatus()) {
                     case Operation.STATUS_PERSISTED:
@@ -1515,7 +1515,7 @@
                 if (!rmEntry.denotesNode()) {
                     Name propName = rmEntry.getName();
                     if (propertiesInAttic.containsKey(propName)) {
-                        properties.add((PropertyEntry) propertiesInAttic.remove(propName));
+                        properties.add(propertiesInAttic.remove(propName));
                     } // else: propEntry has never been moved to the attic (see 'addPropertyEntry')
                 }
                 rmEntry.revert();

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/UniqueIdResolver.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/UniqueIdResolver.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/UniqueIdResolver.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/UniqueIdResolver.java Wed Oct 21 11:38:31 2009
@@ -44,7 +44,7 @@
     /**
      * Maps a String uniqueID to a {@link NodeEntry}.
      */
-    private final Map lookUp;
+    private final Map<String, NodeEntry> lookUp;
 
     /**
      * Creates a new <code>UniqueIdResolver</code>.
@@ -64,7 +64,7 @@
         if (uniqueId == null) {
             throw new IllegalArgumentException();
         }
-        return (NodeEntry) lookUp.get(uniqueId);
+        return lookUp.get(uniqueId);
     }
 
     public NodeEntry resolve(NodeId nodeId, NodeEntry rootEntry) throws ItemNotFoundException, RepositoryException {
@@ -94,7 +94,7 @@
                     NodeEntry entry = (NodeEntry) state.getHierarchyEntry();
                     String uniqueID = entry.getUniqueID();
                     if (uniqueID != null) {
-                        NodeEntry mapEntry = (NodeEntry) lookUp.get(uniqueID);
+                        NodeEntry mapEntry = lookUp.get(uniqueID);
                         if (mapEntry == entry) {
                             lookUp.remove(uniqueID);
                         } // else: removed entry is not present in lookup but
@@ -167,7 +167,7 @@
             // some other entry existed before with the same uniqueID
             if (!sameEntry((NodeEntry) previous, entry)) {
                 // if the new entry represents the externally moved/renamed
-                // correspondance of the previous the latter needs to marked
+                // correspondence of the previous the latter needs to marked
                 // removed/stale-destroyed.
                 // otherwise (both represent the same entry) the creation
                 // of entry is the result of gc of the node or any of the

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java Wed Oct 21 11:38:31 2009
@@ -76,16 +76,16 @@
      * only if a lock ends his life by {@link Node#unlock()} or by implicit
      * unlock upon {@link Session#logout()}.
      */
-    private final Map lockMap;
+    private final Map<NodeState, LockImpl> lockMap;
 
     public LockManagerImpl(WorkspaceManager wspManager, ItemManager itemManager,
                            CacheBehaviour cacheBehaviour) {
         this.wspManager = wspManager;
         this.itemManager = itemManager;
         this.cacheBehaviour = cacheBehaviour;
-        // use hard references in order to make sure, that entries refering
+        // use hard references in order to make sure, that entries referring
         // to locks created by the current session are not removed.
-        lockMap = new HashMap();
+        lockMap = new HashMap<NodeState, LockImpl>();
     }
 
     //----------------< org.apache.jackrabbit.jcr2spi.lock.LockStateManager >---
@@ -129,11 +129,11 @@
         Operation op = LockRelease.create(nodeState);
         wspManager.execute(op);
 
-        // if unlock was successfull: clean up lock map and lock life cycle
+        // if unlock was successful: clean up lock map and lock life cycle
         // in case the corresponding Lock object exists (and thus has been
         // added to the map.
         if (lockMap.containsKey(nodeState)) {
-            LockImpl l = (LockImpl) lockMap.remove(nodeState);
+            LockImpl l = lockMap.remove(nodeState);
             l.lockState.unlocked();
         }
     }
@@ -220,14 +220,14 @@
      */
     public void removeLockToken(String lt) throws LockException, RepositoryException {
         // JSR170 v. 1.0.1 defines that the token of a session-scoped lock may
-        // not be moved over to another session. thus removal ist not possible
+        // not be moved over to another session. Thus removal is not possible
         // and the lock is always present in the lock map.
-        Iterator it = lockMap.values().iterator();
+        Iterator<LockImpl> it = lockMap.values().iterator();
         boolean found = false;
         // loop over cached locks to determine if the token belongs to a session
         // scoped lock, in which case the removal must fail immediately.
         while (it.hasNext() && !found) {
-            LockImpl l = (LockImpl) it.next();
+            LockImpl l = it.next();
             if (lt.equals(l.getLockToken())) {
                 // break as soon as the lock associated with the given token was found.
                 found = true;
@@ -250,10 +250,10 @@
      */
     public void loggingOut(Session session) {
         // remove any session scoped locks:
-        NodeState[] lhStates = (NodeState[]) lockMap.keySet().toArray(new NodeState[lockMap.size()]);
+        NodeState[] lhStates = lockMap.keySet().toArray(new NodeState[lockMap.size()]);
         for (int i = 0; i < lhStates.length; i++) {
             NodeState nState = lhStates[i];
-            LockImpl l = (LockImpl) lockMap.get(nState);
+            LockImpl l = lockMap.get(nState);
             if (l.isSessionScoped() && l.isLockOwningSession()) {
                 try {
                     unlock(nState);
@@ -271,7 +271,7 @@
      */
     public void loggedOut(Session session) {
         // release all remaining locks without modifying their lock status
-        LockImpl[] locks = (LockImpl[]) lockMap.values().toArray(new LockImpl[lockMap.size()]);
+        LockImpl[] locks = lockMap.values().toArray(new LockImpl[lockMap.size()]);
         for (int i = 0; i < locks.length; i++) {
             locks[i].lockState.release();
         }
@@ -285,7 +285,7 @@
      * Note, that this methods does NOT check if the given node state would
      * be affected by the lock present on an ancestor state.
      * Note, that in certain cases it might not be possible to detect a lock
-     * being present due to the fact that the hierarchy might be imcomplete or
+     * being present due to the fact that the hierarchy might be incomplete or
      * not even readable completely. For this reason it seem equally reasonable
      * to search for jcr:lockIsDeep property only and omitting all kind of
      * verification regarding nodetypes present.
@@ -419,7 +419,7 @@
 
     private LockImpl getLockFromMap(NodeState nodeState) {
         try {
-            LockImpl l = (LockImpl) lockMap.get(nodeState);
+            LockImpl l = lockMap.get(nodeState);
             if (l != null && l.isLive()) {
                 return l;
             }
@@ -439,7 +439,7 @@
      * @throws RepositoryException
      */
     private void notifyTokenAdded(String lt) throws RepositoryException {
-        LockTokenListener[] listeners = (LockTokenListener[]) lockMap.values().toArray(new LockTokenListener[lockMap.size()]);
+        LockTokenListener[] listeners = lockMap.values().toArray(new LockTokenListener[lockMap.size()]);
         for (int i = 0; i < listeners.length; i++) {
             listeners[i].lockTokenAdded(lt);
         }
@@ -453,7 +453,7 @@
      * @throws RepositoryException
      */
     private void notifyTokenRemoved(String lt) throws RepositoryException {
-        LockTokenListener[] listeners = (LockTokenListener[]) lockMap.values().toArray(new LockTokenListener[lockMap.size()]);
+        LockTokenListener[] listeners = lockMap.values().toArray(new LockTokenListener[lockMap.size()]);
         for (int i = 0; i < listeners.length; i++) {
             listeners[i].lockTokenRemoved(lt);
         }
@@ -798,7 +798,7 @@
                 // unless this lock is session-scoped (token is never transfered)
                 // and the session isn't the owner yet (token already present),
                 // it could be that this affects this lock and session became
-                // lock holder -> releoad info to assert.
+                // lock holder -> reload info to assert.
                 lockState.reloadLockInfo();
             }
         }

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/BitsetENTCacheImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/BitsetENTCacheImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/BitsetENTCacheImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/BitsetENTCacheImpl.java Wed Oct 21 11:38:31 2009
@@ -16,15 +16,13 @@
  */
 package org.apache.jackrabbit.jcr2spi.nodetype;
 
-import org.apache.jackrabbit.spi.Name;
-
-import java.util.TreeSet;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.ArrayList;
 import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.TreeSet;
+import java.util.concurrent.ConcurrentHashMap;
 
-import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
+import org.apache.jackrabbit.spi.Name;
 
 /**
  * Implements an effective node type cache that uses a bit set for storing the
@@ -50,12 +48,12 @@
     /**
      * An ordered set of the keys. This is used for {@link #findBest(Key)}.
      */
-    private final TreeSet sortedKeys;
+    private final TreeSet<Key> sortedKeys;
 
     /**
      * cache of pre-built aggregations of node types
      */
-    private final HashMap aggregates;
+    private final HashMap<Key, EffectiveNodeType> aggregates;
 
     /**
      * A lookup table for bit numbers for a given name.
@@ -64,7 +62,7 @@
      * be stored in the node type registry since only registered node type names
      * are allowed in the keys.
      */
-    private final ConcurrentReaderHashMap nameIndex = new ConcurrentReaderHashMap();
+    private final ConcurrentHashMap<Name, Integer> nameIndex = new ConcurrentHashMap<Name, Integer>();
 
     /**
      * The reverse lookup table for bit numbers to names
@@ -75,8 +73,8 @@
      * Creates a new bitset effective node type cache
      */
     BitsetENTCacheImpl() {
-        sortedKeys = new TreeSet();
-        aggregates = new HashMap();
+        sortedKeys = new TreeSet<Key>();
+        aggregates = new HashMap<Key, EffectiveNodeType>();
     }
 
     //---------------------------------------------< EffectiveNodeTypeCache >---
@@ -110,9 +108,7 @@
         if (contains(key)) {
             return key;
         }
-        Iterator iter = sortedKeys.iterator();
-        while (iter.hasNext()) {
-            Key k = (Key) iter.next();
+        for (Key k : sortedKeys) {
             if (key.contains(k)) {
                 return k;
             }
@@ -128,9 +124,8 @@
          * remove all affected effective node types from aggregates cache
          * (copy keys first to prevent ConcurrentModificationException)
          */
-        ArrayList keys = new ArrayList(aggregates.keySet());
-        for (Iterator keysIter = keys.iterator(); keysIter.hasNext();) {
-            Key k = (Key) keysIter.next();
+        ArrayList<Key> keys = new ArrayList<Key>(aggregates.keySet());
+        for (Key k : keys) {
             EffectiveNodeType ent = get(k);
             if (ent.includesNodeType(name)) {
                 remove(k);
@@ -149,7 +144,7 @@
      * @see EffectiveNodeTypeCache#get(Key)
      */
     public EffectiveNodeType get(Key key) {
-        return (EffectiveNodeType) aggregates.get(key);
+        return aggregates.get(key);
     }
 
     /**
@@ -170,13 +165,13 @@
      * @return the bit number for the given name
      */
     private int getBitNumber(Name name) {
-        Integer i = (Integer) nameIndex.get(name);
+        Integer i = nameIndex.get(name);
         if (i == null) {
             synchronized (nameIndex) {
-                i = (Integer) nameIndex.get(name);
+                i = nameIndex.get(name);
                 if (i == null) {
                     int idx = nameIndex.size();
-                    i = new Integer(idx);
+                    i = idx;
                     nameIndex.put(name, i);
                     if (idx >= names.length) {
                         Name[] newNames = new Name[names.length*2];
@@ -187,7 +182,7 @@
                 }
             }
         }
-        return i.intValue();
+        return i;
     }
 
     /**
@@ -207,7 +202,7 @@
      *         never cached.
      */
     private EffectiveNodeType remove(Key key) {
-        EffectiveNodeType removed = (EffectiveNodeType) aggregates.remove(key);
+        EffectiveNodeType removed = aggregates.remove(key);
         if (removed != null) {
             // other than the original implementation, the weights in the
             // treeset are now the same as in the given keys. so we can use
@@ -221,6 +216,7 @@
     /**
      * @see Cloneable#clone()
      */
+    @Override
     public Object clone() {
         BitsetENTCacheImpl clone = new BitsetENTCacheImpl();
         clone.sortedKeys.addAll(sortedKeys);
@@ -240,9 +236,7 @@
         ps.println();
         ps.println("EffectiveNodeTypes in cache:");
         ps.println();
-        Iterator iter = sortedKeys.iterator();
-        while (iter.hasNext()) {
-            Key k = (Key) iter.next();
+        for (Key k : sortedKeys) {
             //EffectiveNodeType ent = (EffectiveNodeType) aggregates.get(k);
             ps.println(k);
         }
@@ -291,7 +285,7 @@
         /**
          * Creates new bitset key.
          * @param bits the array if bits
-         * @param numBits the number of bits that are '1' in the given bis
+         * @param numBits the number of bits that are '1' in the given bits
          */
         private BitsetKey(long[] bits, int numBits) {
             this.bits = bits;
@@ -307,7 +301,7 @@
 
         /**
          * Returns the bit number of the next bit that is set, starting at
-         * <code>fromIndex</code> inclusieve.
+         * <code>fromIndex</code> inclusive.
          *
          * @param fromIndex the bit position to start the search
          * @return the bit position of the bit or -1 if none found.
@@ -426,12 +420,12 @@
         /**
          * {@inheritDoc}
          *
-         * This compares 1. the cardinailty (number of set bits) and 2. the
-         * nummeric value of the bitsets in descending order.
+         * This compares 1. the cardinality (number of set bits) and 2. the
+         * numeric value of the bitsets in descending order.
          *
          * @see Comparable#compareTo(Object)
          */
-        public int compareTo(Object other) {
+        public int compareTo(Key other) {
             BitsetKey o = (BitsetKey) other;
             int res = o.names.length - names.length;
             if (res == 0) {
@@ -459,6 +453,7 @@
         /**
          * @see Object#equals(Object)
          */
+        @Override
         public boolean equals(Object obj) {
             if (this == obj) {
                 return true;
@@ -485,6 +480,7 @@
         /**
          * @see Object#hashCode()
          */
+        @Override
         public int hashCode() {
             return hashCode;
         }
@@ -492,6 +488,7 @@
         /**
          * @see Object#toString()
          */
+        @Override
         public String toString() {
             StringBuffer buf = new StringBuffer("w=");
             buf.append(names.length);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/DefinitionValidator.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/DefinitionValidator.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/DefinitionValidator.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/DefinitionValidator.java Wed Oct 21 11:38:31 2009
@@ -35,6 +35,7 @@
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.nodetype.InvalidNodeTypeDefinitionException;
 
+import java.util.List;
 import java.util.Stack;
 import java.util.Map;
 import java.util.Collection;
@@ -67,18 +68,18 @@
      * @throws InvalidNodeTypeDefinitionException
      * @throws RepositoryException
      */
-    public Map validateNodeTypeDefs(Collection ntDefs, Map validatedDefs)
+    public Map<QNodeTypeDefinition, EffectiveNodeType> validateNodeTypeDefs(Collection<QNodeTypeDefinition> ntDefs,
+    															Map<Name, QNodeTypeDefinition> validatedDefs)
         throws InvalidNodeTypeDefinitionException, RepositoryException {
         // tmp. map containing names/defs of validated nodetypes
-        Map tmpMap = new HashMap(validatedDefs);
-        for (Iterator it = ntDefs.iterator(); it.hasNext();) {
-            QNodeTypeDefinition ntd = (QNodeTypeDefinition) it.next();
+        Map<Name, QNodeTypeDefinition> tmpMap = new HashMap<Name, QNodeTypeDefinition>(validatedDefs);
+        for (QNodeTypeDefinition ntd : ntDefs) {
             tmpMap.put(ntd.getName(), ntd);
         }
 
         // map of nodetype definitions and effective nodetypes to be registered
-        Map ntMap = new HashMap();
-        ArrayList list = new ArrayList(ntDefs);
+        Map<QNodeTypeDefinition, EffectiveNodeType> ntMap = new HashMap<QNodeTypeDefinition, EffectiveNodeType>();
+        List<QNodeTypeDefinition> list = new ArrayList<QNodeTypeDefinition>(ntDefs);
 
         // iterate over definitions until there are no more definitions with
         // unresolved (i.e. unregistered) dependencies or an error occurs;
@@ -86,12 +87,12 @@
         int count = -1;  // number of validated nt's per iteration
         while (list.size() > 0 && count != 0) {
             count = 0;
-            Iterator iterator = list.iterator();
+            Iterator<QNodeTypeDefinition> iterator = list.iterator();
             while (iterator.hasNext()) {
-                QNodeTypeDefinition ntd = (QNodeTypeDefinition) iterator.next();
+                QNodeTypeDefinition ntd = iterator.next();
                 // check if definition has unresolved dependencies
                 /* Note: don't compared to 'registered' nodetypes since registr. is performed later on */
-                Collection dependencies = ntd.getDependencies();
+                Collection<Name> dependencies = ntd.getDependencies();
                 if (tmpMap.keySet().containsAll(dependencies)) {
                     EffectiveNodeType ent = validateNodeTypeDef(ntd, tmpMap);
                     ntMap.put(ntd, ent);
@@ -105,9 +106,9 @@
         if (list.size() > 0) {
             StringBuffer msg = new StringBuffer();
             msg.append("the following node types could not be registered because of unresolvable dependencies: ");
-            Iterator iterator = list.iterator();
+            Iterator<QNodeTypeDefinition> iterator = list.iterator();
             while (iterator.hasNext()) {
-                msg.append(((QNodeTypeDefinition) iterator.next()).getName());
+                msg.append(iterator.next().getName());
                 msg.append(" ");
             }
             log.error(msg.toString());
@@ -126,7 +127,7 @@
      * @throws InvalidNodeTypeDefinitionException
      * @throws RepositoryException
      */
-    public EffectiveNodeType validateNodeTypeDef(QNodeTypeDefinition ntDef, Map validatedDefs)
+    public EffectiveNodeType validateNodeTypeDef(QNodeTypeDefinition ntDef, Map<Name, QNodeTypeDefinition> validatedDefs)
             throws InvalidNodeTypeDefinitionException, RepositoryException {
         /**
          * the effective (i.e. merged and resolved) node type resulting from
@@ -173,7 +174,7 @@
              * check for circularity in inheritance chain
              * ('a' extends 'b' extends 'a')
              */
-            Stack inheritanceChain = new Stack();
+            Stack<Name> inheritanceChain = new Stack<Name>();
             inheritanceChain.push(name);
             checkForCircularInheritance(supertypes, inheritanceChain, validatedDefs);
         }
@@ -353,7 +354,7 @@
                          * of auto-created child nodes (node type 'a' defines
                          * auto-created child node with default primary type 'a')
                          */
-                        Stack definingNTs = new Stack();
+                        Stack<Name> definingNTs = new Stack<Name>();
                         definingNTs.push(name);
                         checkForCircularNodeAutoCreation(defaultENT, definingNTs, validatedDefs);
                     }
@@ -466,7 +467,7 @@
      * @throws InvalidNodeTypeDefinitionException
      * @throws RepositoryException
      */
-    private void checkForCircularInheritance(Name[] supertypes, Stack inheritanceChain, Map ntdMap)
+    private void checkForCircularInheritance(Name[] supertypes, Stack<Name> inheritanceChain, Map<Name, QNodeTypeDefinition> ntdMap)
         throws InvalidNodeTypeDefinitionException, RepositoryException {
         for (int i = 0; i < supertypes.length; i++) {
             Name stName = supertypes[i];
@@ -486,7 +487,7 @@
             }
 
             if (ntdMap.containsKey(stName)) {
-                Name[] sta = ((QNodeTypeDefinition)ntdMap.get(stName)).getSupertypes();
+                Name[] sta = ntdMap.get(stName).getSupertypes();
                 if (sta.length > 0) {
                     // check recursively
                     inheritanceChain.push(stName);
@@ -507,7 +508,7 @@
      * @throws InvalidNodeTypeDefinitionException
      */
     private void checkForCircularNodeAutoCreation(EffectiveNodeType childNodeENT,
-                                                  Stack definingParentNTs, Map ntdMap)
+                                                  Stack<Name> definingParentNTs, Map<Name, QNodeTypeDefinition> ntdMap)
         throws InvalidNodeTypeDefinitionException {
         // check for circularity through default node types of auto-created child nodes
         // (node type 'a' defines auto-created child node with default node type 'a')
@@ -562,7 +563,7 @@
      * is registered; a <code>null</code> argument is silently ignored.
      * @param name name whose namespace is to be checked
      * @throws RepositoryException if the namespace of the given name is not
-     *                             registered or if an unspecified error occured
+     *                             registered or if an unspecified error occurred
      */
     private void checkNamespace(Name name) throws RepositoryException {
         if (name != null) {

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeCache.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeCache.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeCache.java Wed Oct 21 11:38:31 2009
@@ -90,7 +90,7 @@
     * An <code>ENTKey</code> uniquely identifies
     * a combination (i.e. an aggregation) of one or more node types.
     */
-    interface Key extends Comparable {
+    interface Key extends Comparable<Key> {
 
         /**
          * Returns the node type names of this key.

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeImpl.java Wed Oct 21 11:38:31 2009
@@ -27,7 +27,6 @@
 import javax.jcr.nodetype.ConstraintViolationException;
 import javax.jcr.nodetype.NoSuchNodeTypeException;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
 import java.util.TreeSet;
 import java.util.Arrays;
@@ -47,38 +46,35 @@
     private static Logger log = LoggerFactory.getLogger(EffectiveNodeTypeImpl.class);
 
     // list of explicitly aggregated {i.e. merged) node types
-    private final TreeSet mergedNodeTypes = new TreeSet();
+    private final TreeSet<Name> mergedNodeTypes = new TreeSet<Name>();
     // list of implicitly aggregated {through inheritance) node types
-    private final TreeSet inheritedNodeTypes = new TreeSet();
+    private final TreeSet<Name> inheritedNodeTypes = new TreeSet<Name>();
     // list of all either explicitly (through aggregation) or implicitly
     // (through inheritance) included node types.
-    private final TreeSet allNodeTypes = new TreeSet();
+    private final TreeSet<Name> allNodeTypes = new TreeSet<Name>();
     // map of named item definitions (maps name to list of definitions)
-    private final Map namedItemDefs = new HashMap();
+    private final Map<Name, List<QItemDefinition>> namedItemDefs = new HashMap<Name, List<QItemDefinition>>();
     // list of unnamed item definitions (i.e. residual definitions)
-    private final List unnamedItemDefs = new ArrayList();
+    private final List<QItemDefinition> unnamedItemDefs = new ArrayList<QItemDefinition>();
     // (optional) set of additional mixins supported on node type
-    private Set supportedMixins;
+    private Set<Name> supportedMixins;
 
     /**
      * constructor.
      */
-    EffectiveNodeTypeImpl(TreeSet mergedNodeTypes, TreeSet inheritedNodeTypes,
-                          TreeSet allNodeTypes, Map namedItemDefs,
-                          List unnamedItemDefs, Set supportedMixins) {
+    EffectiveNodeTypeImpl(TreeSet<Name> mergedNodeTypes, TreeSet<Name> inheritedNodeTypes,
+                          TreeSet<Name> allNodeTypes, Map<Name, List<QItemDefinition>> namedItemDefs,
+                          List<QItemDefinition> unnamedItemDefs, Set<Name> supportedMixins) {
         this.mergedNodeTypes.addAll(mergedNodeTypes);
         this.inheritedNodeTypes.addAll(inheritedNodeTypes);
         this.allNodeTypes.addAll(allNodeTypes);
-        Iterator iter = namedItemDefs.keySet().iterator();
-        while (iter.hasNext()) {
-            Object key = iter.next();
-            List list = (List) namedItemDefs.get(key);
-            this.namedItemDefs.put(key, new ArrayList(list));
+        for (Map.Entry<Name, List<QItemDefinition>> entry : namedItemDefs.entrySet()) {
+            this.namedItemDefs.put(entry.getKey(), new ArrayList<QItemDefinition>(entry.getValue()));
         }
         this.unnamedItemDefs.addAll(unnamedItemDefs);
 
         if (supportedMixins != null) {
-            this.supportedMixins = new HashSet();
+            this.supportedMixins = new HashSet<Name>();
             this.supportedMixins.addAll(supportedMixins);
         }
     }
@@ -88,21 +84,21 @@
      * @see EffectiveNodeType#getInheritedNodeTypes()
      */
     public Name[] getInheritedNodeTypes() {
-        return (Name[]) inheritedNodeTypes.toArray(new Name[inheritedNodeTypes.size()]);
+        return inheritedNodeTypes.toArray(new Name[inheritedNodeTypes.size()]);
     }
 
     /**
      * @see EffectiveNodeType#getAllNodeTypes()
      */
     public Name[] getAllNodeTypes() {
-        return (Name[]) allNodeTypes.toArray(new Name[allNodeTypes.size()]);
+        return allNodeTypes.toArray(new Name[allNodeTypes.size()]);
     }
 
     /**
      * @see EffectiveNodeType#getMergedNodeTypes()
      */
     public Name[] getMergedNodeTypes() {
-        return (Name[]) mergedNodeTypes.toArray(new Name[mergedNodeTypes.size()]);
+        return mergedNodeTypes.toArray(new Name[mergedNodeTypes.size()]);
     }
 
     /**
@@ -112,20 +108,15 @@
         if (namedItemDefs.size() == 0 && unnamedItemDefs.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(namedItemDefs.size() + unnamedItemDefs.size());
-        Iterator iter = unnamedItemDefs.iterator();
-        while (iter.hasNext()) {
-            QItemDefinition qDef = (QItemDefinition) iter.next();
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(namedItemDefs.size() + unnamedItemDefs.size());
+        for (QItemDefinition qDef : unnamedItemDefs) {
             if (qDef.definesNode()) {
                 defs.add(qDef);
             }
         }
-        iter = namedItemDefs.values().iterator();
-        while (iter.hasNext()) {
-            List list = (List) iter.next();
-            Iterator iter1 = list.iterator();
-            while (iter1.hasNext()) {
-                QItemDefinition qDef = (QItemDefinition) iter1.next();
+        
+        for (List<QItemDefinition> list : namedItemDefs.values()) {
+            for (QItemDefinition qDef : list) {
                 if (qDef.definesNode()) {
                     defs.add(qDef);
                 }
@@ -134,7 +125,7 @@
         if (defs.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        return (QNodeDefinition[]) defs.toArray(new QNodeDefinition[defs.size()]);
+        return defs.toArray(new QNodeDefinition[defs.size()]);
     }
 
     /**
@@ -144,20 +135,14 @@
         if (namedItemDefs.size() == 0 && unnamedItemDefs.size() == 0) {
             return QPropertyDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(namedItemDefs.size() + unnamedItemDefs.size());
-        Iterator iter = unnamedItemDefs.iterator();
-        while (iter.hasNext()) {
-            QItemDefinition qDef = (QItemDefinition) iter.next();
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(namedItemDefs.size() + unnamedItemDefs.size());
+        for (QItemDefinition qDef : unnamedItemDefs) {
             if (!qDef.definesNode()) {
                 defs.add(qDef);
             }
         }
-        iter = namedItemDefs.values().iterator();
-        while (iter.hasNext()) {
-            List list = (List) iter.next();
-            Iterator iter1 = list.iterator();
-            while (iter1.hasNext()) {
-                QItemDefinition qDef = (QItemDefinition) iter1.next();
+        for (List<QItemDefinition> list : namedItemDefs.values()) {
+            for (QItemDefinition qDef : list) {
                 if (!qDef.definesNode()) {
                     defs.add(qDef);
                 }
@@ -166,7 +151,7 @@
         if (defs.size() == 0) {
             return QPropertyDefinition.EMPTY_ARRAY;
         }
-        return (QPropertyDefinition[]) defs.toArray(new QPropertyDefinition[defs.size()]);
+        return defs.toArray(new QPropertyDefinition[defs.size()]);
     }
 
     /**
@@ -178,13 +163,9 @@
         if (namedItemDefs.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(namedItemDefs.size());
-        Iterator iter = namedItemDefs.values().iterator();
-        while (iter.hasNext()) {
-            List list = (List) iter.next();
-            Iterator iter1 = list.iterator();
-            while (iter1.hasNext()) {
-                QItemDefinition qDef = (QItemDefinition) iter1.next();
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(namedItemDefs.size());
+        for (List<QItemDefinition> list : namedItemDefs.values()) {
+            for (QItemDefinition qDef : list) {
                 if (qDef.definesNode() && qDef.isAutoCreated()) {
                     defs.add(qDef);
                 }
@@ -193,7 +174,7 @@
         if (defs.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        return (QNodeDefinition[]) defs.toArray(new QNodeDefinition[defs.size()]);
+        return defs.toArray(new QNodeDefinition[defs.size()]);
     }
 
     /**
@@ -205,13 +186,9 @@
         if (namedItemDefs.size() == 0) {
             return QPropertyDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(namedItemDefs.size());
-        Iterator iter = namedItemDefs.values().iterator();
-        while (iter.hasNext()) {
-            List list = (List) iter.next();
-            Iterator iter1 = list.iterator();
-            while (iter1.hasNext()) {
-                QItemDefinition qDef = (QItemDefinition) iter1.next();
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(namedItemDefs.size());
+        for (List<QItemDefinition> list : namedItemDefs.values()) {
+            for (QItemDefinition qDef : list) {
                 if (!qDef.definesNode() && qDef.isAutoCreated()) {
                     defs.add(qDef);
                 }
@@ -220,7 +197,7 @@
         if (defs.size() == 0) {
             return QPropertyDefinition.EMPTY_ARRAY;
         }
-        return (QPropertyDefinition[]) defs.toArray(new QPropertyDefinition[defs.size()]);
+        return defs.toArray(new QPropertyDefinition[defs.size()]);
     }
 
     /**
@@ -232,13 +209,9 @@
         if (namedItemDefs.size() == 0) {
             return QPropertyDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(namedItemDefs.size());
-        Iterator iter = namedItemDefs.values().iterator();
-        while (iter.hasNext()) {
-            List list = (List) iter.next();
-            Iterator iter1 = list.iterator();
-            while (iter1.hasNext()) {
-                QItemDefinition qDef = (QItemDefinition) iter1.next();
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(namedItemDefs.size());
+        for (List<QItemDefinition> list : namedItemDefs.values()) {
+            for (QItemDefinition qDef : list) {
                 if (!qDef.definesNode() && qDef.isMandatory()) {
                     defs.add(qDef);
                 }
@@ -247,7 +220,7 @@
         if (defs.size() == 0) {
             return QPropertyDefinition.EMPTY_ARRAY;
         }
-        return (QPropertyDefinition[]) defs.toArray(new QPropertyDefinition[defs.size()]);
+        return defs.toArray(new QPropertyDefinition[defs.size()]);
     }
 
     /**
@@ -259,13 +232,9 @@
         if (namedItemDefs.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(namedItemDefs.size());
-        Iterator iter = namedItemDefs.values().iterator();
-        while (iter.hasNext()) {
-            List list = (List) iter.next();
-            Iterator iter1 = list.iterator();
-            while (iter1.hasNext()) {
-                QItemDefinition qDef = (QItemDefinition) iter1.next();
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(namedItemDefs.size());
+        for (List<QItemDefinition> list : namedItemDefs.values()) {
+            for (QItemDefinition qDef : list) {
                 if (qDef.definesNode() && qDef.isMandatory()) {
                     defs.add(qDef);
                 }
@@ -274,21 +243,19 @@
         if (defs.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        return (QNodeDefinition[]) defs.toArray(new QNodeDefinition[defs.size()]);
+        return defs.toArray(new QNodeDefinition[defs.size()]);
     }
 
     /**
      * @see EffectiveNodeType#getNamedQNodeDefinitions(Name)
      */
     public QNodeDefinition[] getNamedQNodeDefinitions(Name name) {
-        List list = (List) namedItemDefs.get(name);
+        List<QItemDefinition> list = namedItemDefs.get(name);
         if (list == null || list.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(list.size());
-        Iterator iter = list.iterator();
-        while (iter.hasNext()) {
-            QItemDefinition qDef = (QItemDefinition) iter.next();
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(list.size());
+        for (QItemDefinition qDef : list) {
             if (qDef.definesNode()) {
                 defs.add(qDef);
             }
@@ -296,7 +263,7 @@
         if (defs.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        return (QNodeDefinition[]) defs.toArray(new QNodeDefinition[defs.size()]);
+        return defs.toArray(new QNodeDefinition[defs.size()]);
     }
 
     /**
@@ -306,10 +273,8 @@
         if (unnamedItemDefs.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(unnamedItemDefs.size());
-        Iterator iter = unnamedItemDefs.iterator();
-        while (iter.hasNext()) {
-            QItemDefinition qDef = (QItemDefinition) iter.next();
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(unnamedItemDefs.size());
+        for (QItemDefinition qDef : unnamedItemDefs) {
             if (qDef.definesNode()) {
                 defs.add(qDef);
             }
@@ -317,21 +282,19 @@
         if (defs.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        return (QNodeDefinition[]) defs.toArray(new QNodeDefinition[defs.size()]);
+        return defs.toArray(new QNodeDefinition[defs.size()]);
     }
 
     /**
      * @see EffectiveNodeType#getNamedQPropertyDefinitions(Name)
      */
     public QPropertyDefinition[] getNamedQPropertyDefinitions(Name name) {
-        List list = (List) namedItemDefs.get(name);
+        List<QItemDefinition> list = namedItemDefs.get(name);
         if (list == null || list.size() == 0) {
             return QPropertyDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(list.size());
-        Iterator iter = list.iterator();
-        while (iter.hasNext()) {
-            QItemDefinition qDef = (QItemDefinition) iter.next();
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(list.size());
+        for (QItemDefinition qDef : list) {
             if (!qDef.definesNode()) {
                 defs.add(qDef);
             }
@@ -339,7 +302,7 @@
         if (defs.size() == 0) {
             return QPropertyDefinition.EMPTY_ARRAY;
         }
-        return (QPropertyDefinition[]) defs.toArray(new QPropertyDefinition[defs.size()]);
+        return defs.toArray(new QPropertyDefinition[defs.size()]);
     }
 
     /**
@@ -349,10 +312,8 @@
         if (unnamedItemDefs.size() == 0) {
             return QPropertyDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(unnamedItemDefs.size());
-        Iterator iter = unnamedItemDefs.iterator();
-        while (iter.hasNext()) {
-            QItemDefinition qDef = (QItemDefinition) iter.next();
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(unnamedItemDefs.size());
+        for (QItemDefinition qDef : unnamedItemDefs) {
             if (!qDef.definesNode()) {
                 defs.add(qDef);
             }
@@ -360,7 +321,7 @@
         if (defs.size() == 0) {
             return QPropertyDefinition.EMPTY_ARRAY;
         }
-        return (QPropertyDefinition[]) defs.toArray(new QPropertyDefinition[defs.size()]);
+        return defs.toArray(new QPropertyDefinition[defs.size()]);
     }
 
     /**
@@ -490,30 +451,29 @@
         if (namedItemDefs.size() == 0) {
             return QItemDefinition.EMPTY_ARRAY;
         }
-        ArrayList defs = new ArrayList(namedItemDefs.size());
-        Iterator iter = namedItemDefs.values().iterator();
-        while (iter.hasNext()) {
-            defs.addAll((List) iter.next());
+        ArrayList<QItemDefinition> defs = new ArrayList<QItemDefinition>(namedItemDefs.size());
+        for (List<QItemDefinition> list : namedItemDefs.values()) {
+            defs.addAll(list);
         }
         if (defs.size() == 0) {
             return QItemDefinition.EMPTY_ARRAY;
         }
-        return (QItemDefinition[]) defs.toArray(new QItemDefinition[defs.size()]);
+        return defs.toArray(new QItemDefinition[defs.size()]);
     }
 
     private QItemDefinition[] getNamedItemDefs(Name name) {
-        List list = (List) namedItemDefs.get(name);
+        List<QItemDefinition> list = namedItemDefs.get(name);
         if (list == null || list.size() == 0) {
             return QNodeDefinition.EMPTY_ARRAY;
         }
-        return (QItemDefinition[]) list.toArray(new QItemDefinition[list.size()]);
+        return list.toArray(new QItemDefinition[list.size()]);
     }
 
     private QItemDefinition[] getUnnamedItemDefs() {
         if (unnamedItemDefs.size() == 0) {
             return QItemDefinition.EMPTY_ARRAY;
         }
-        return (QItemDefinition[]) unnamedItemDefs.toArray(new QItemDefinition[unnamedItemDefs.size()]);
+        return unnamedItemDefs.toArray(new QItemDefinition[unnamedItemDefs.size()]);
     }
 
     /**
@@ -527,7 +487,7 @@
     EffectiveNodeTypeImpl merge(EffectiveNodeTypeImpl other)
             throws ConstraintViolationException {
         // create a clone of this instance and perform the merge on
-        // the 'clone' to avoid a potentially inconsistant state
+        // the 'clone' to avoid a potentially inconsistent state
         // of this instance if an exception is thrown during
         // the merge.
         EffectiveNodeTypeImpl copy = (EffectiveNodeTypeImpl) clone();
@@ -573,12 +533,12 @@
                 continue;
             }
             Name name = qDef.getName();
-            List existingDefs = (List) namedItemDefs.get(name);
+            List<QItemDefinition> existingDefs = namedItemDefs.get(name);
             if (existingDefs != null) {
                 if (existingDefs.size() > 0) {
                     // there already exists at least one definition with that name
                     for (int j = 0; j < existingDefs.size(); j++) {
-                        QItemDefinition qItemDef = (QItemDefinition) existingDefs.get(j);
+                        QItemDefinition qItemDef = existingDefs.get(j);
                         // make sure none of them is auto-create
                         if (qDef.isAutoCreated() || qItemDef.isAutoCreated()) {
                             // conflict
@@ -628,7 +588,7 @@
                     }
                 }
             } else {
-                existingDefs = new ArrayList();
+                existingDefs = new ArrayList<QItemDefinition>();
                 namedItemDefs.put(name, existingDefs);
             }
             existingDefs.add(qDef);
@@ -642,9 +602,7 @@
                 // ignore redundant definitions
                 continue;
             }
-            Iterator iter = unnamedItemDefs.iterator();
-            while (iter.hasNext()) {
-                QItemDefinition existing = (QItemDefinition) iter.next();
+            for (QItemDefinition existing : unnamedItemDefs) {
                 // compare with existing definition
                 if (qDef.definesNode() == existing.definesNode()) {
                     if (!qDef.definesNode()) {

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeProvider.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeProvider.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/EffectiveNodeTypeProvider.java Wed Oct 21 11:38:31 2009
@@ -58,7 +58,7 @@
      * @throws ConstraintViolationException
      * @throws NoSuchNodeTypeException
      */
-    public EffectiveNodeType getEffectiveNodeType(Name[] ntNames, Map ntdMap)
+    public EffectiveNodeType getEffectiveNodeType(Name[] ntNames, Map<Name, QNodeTypeDefinition> ntdMap)
             throws ConstraintViolationException, NoSuchNodeTypeException;
 
     /**
@@ -74,6 +74,6 @@
      * @throws NoSuchNodeTypeException
      */
     public EffectiveNodeType getEffectiveNodeType(QNodeTypeDefinition ntd,
-                                                  Map ntdMap)
+                                                  Map<Name, QNodeTypeDefinition> ntdMap)
             throws ConstraintViolationException, NoSuchNodeTypeException;
 }

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeCache.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeCache.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeCache.java Wed Oct 21 11:38:31 2009
@@ -40,12 +40,12 @@
     /**
      * The caches per repository service instance
      */
-    private static final Map CACHES_PER_SERVICE = new WeakHashMap();
+    private static final Map<RepositoryService, Map<String, NodeTypeCache>> CACHES_PER_SERVICE = new WeakHashMap<RepositoryService, Map<String, NodeTypeCache>>();
 
     /**
      * Maps node type Names to QNodeTypeDefinition
      */
-    private final Map nodeTypes = new HashMap();
+    private final Map<Name, QNodeTypeDefinition> nodeTypes = new HashMap<Name, QNodeTypeDefinition>();
 
     /**
      * @param service the repository service.
@@ -59,9 +59,9 @@
         if (userId == null) {
             return new NodeTypeCache();
         }
-        Map caches;
+        Map<String, NodeTypeCache> caches;
         synchronized (CACHES_PER_SERVICE) {
-            caches = (Map) CACHES_PER_SERVICE.get(service);
+            caches = CACHES_PER_SERVICE.get(service);
             if (caches == null) {
                 // use soft references for the node type caches
                 caches = new ReferenceMap(ReferenceMap.HARD, ReferenceMap.SOFT);
@@ -69,7 +69,7 @@
             }
         }
         synchronized (caches) {
-            NodeTypeCache cache = (NodeTypeCache) caches.get(userId);
+            NodeTypeCache cache = caches.get(userId);
             if (cache == null) {
                 cache = new NodeTypeCache();
                 caches.put(userId, cache);
@@ -87,11 +87,11 @@
      * @return
      * @throws javax.jcr.RepositoryException
      */
-    public Iterator getAllDefinitions(NodeTypeStorage storage)
+    public Iterator<QNodeTypeDefinition> getAllDefinitions(NodeTypeStorage storage)
             throws RepositoryException {
-        Map allNts = new HashMap();
-        for (Iterator it = storage.getAllDefinitions(); it.hasNext(); ) {
-            QNodeTypeDefinition def = (QNodeTypeDefinition) it.next();
+        Map<Name, QNodeTypeDefinition> allNts = new HashMap<Name, QNodeTypeDefinition>();
+        for (Iterator<QNodeTypeDefinition> it = storage.getAllDefinitions(); it.hasNext(); ) {
+            QNodeTypeDefinition def = it.next();
             allNts.put(def.getName(), def);
         }
         // update the cache
@@ -112,16 +112,16 @@
      * @throws javax.jcr.nodetype.NoSuchNodeTypeException
      * @throws RepositoryException
      */
-    public Iterator getDefinitions(NodeTypeStorage storage, Name[] nodeTypeNames)
+    public Iterator<QNodeTypeDefinition> getDefinitions(NodeTypeStorage storage, Name[] nodeTypeNames)
             throws NoSuchNodeTypeException, RepositoryException {
-        List nts = new ArrayList();
-        List missing = null;
+        List<QNodeTypeDefinition> nts = new ArrayList<QNodeTypeDefinition>();
+        List<Name> missing = null;
         synchronized (nodeTypes) {
             for (int i = 0; i < nodeTypeNames.length; i++) {
-                QNodeTypeDefinition def = (QNodeTypeDefinition) nodeTypes.get(nodeTypeNames[i]);
+                QNodeTypeDefinition def = nodeTypes.get(nodeTypeNames[i]);
                 if (def == null) {
                     if (missing == null) {
-                        missing = new ArrayList();
+                        missing = new ArrayList<Name>();
                     }
                     missing.add(nodeTypeNames[i]);
                 } else {
@@ -130,11 +130,11 @@
             }
         }
         if (missing != null) {
-            Name[] ntNames = (Name[]) missing.toArray(new Name[missing.size()]);
-            Iterator it = storage.getDefinitions(ntNames);
+            Name[] ntNames = missing.toArray(new Name[missing.size()]);
+            Iterator<QNodeTypeDefinition> it = storage.getDefinitions(ntNames);
             synchronized (nodeTypes) {
                 while (it.hasNext()) {
-                    QNodeTypeDefinition def = (QNodeTypeDefinition) it.next();
+                    QNodeTypeDefinition def = it.next();
                     nts.add(def);
                     nodeTypes.put(def.getName(), def);
                 }
@@ -166,10 +166,10 @@
      */
     public NodeTypeStorage wrap(final NodeTypeStorage storage) {
         return new NodeTypeStorage() {
-            public Iterator getAllDefinitions() throws RepositoryException {
+            public Iterator<QNodeTypeDefinition> getAllDefinitions() throws RepositoryException {
                 return NodeTypeCache.this.getAllDefinitions(storage);
             }
-            public Iterator getDefinitions(Name[] nodeTypeNames)
+            public Iterator<QNodeTypeDefinition> getDefinitions(Name[] nodeTypeNames)
                     throws NoSuchNodeTypeException, RepositoryException {
                 return NodeTypeCache.this.getDefinitions(storage, nodeTypeNames);
             }

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeImpl.java Wed Oct 21 11:38:31 2009
@@ -24,7 +24,6 @@
 import org.apache.jackrabbit.spi.QValue;
 import org.apache.jackrabbit.spi.commons.conversion.NameException;
 import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
-import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
 import org.apache.jackrabbit.spi.commons.nodetype.constraint.ValueConstraint;
 import org.apache.jackrabbit.spi.commons.nodetype.AbstractNodeType;
 import org.apache.jackrabbit.spi.commons.value.ValueFormat;
@@ -32,7 +31,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.jcr.NamespaceException;
 import javax.jcr.PropertyType;
 import javax.jcr.RepositoryException;
 import javax.jcr.Value;
@@ -51,7 +49,6 @@
 
     private static Logger log = LoggerFactory.getLogger(NodeTypeImpl.class);
 
-    private final QNodeTypeDefinition ntd;
     private final EffectiveNodeType ent;
     private final NodeTypeManagerImpl ntMgr;
     private final ManagerProvider mgrProvider;
@@ -70,15 +67,10 @@
      */
     NodeTypeImpl(EffectiveNodeType ent, QNodeTypeDefinition ntd,
                  NodeTypeManagerImpl ntMgr, ManagerProvider mgrProvider) {
-        super(ntMgr);
+        super(ntd, ntMgr, mgrProvider.getNamePathResolver());
         this.ent = ent;
         this.ntMgr = ntMgr;
         this.mgrProvider = mgrProvider;
-        this.ntd = ntd;
-    }
-
-    private NamespaceResolver nsResolver() {
-        return mgrProvider.getNamespaceResolver();
     }
 
     private NamePathResolver resolver() {
@@ -106,30 +98,13 @@
     }
 
     /**
-     * Test if this nodetype equals or is directly or indirectly derived from
-     * the node type with the specified <code>nodeTypeName</code>, without
-     * checking of a node type of that name really exists.
-     *
-     * @param nodeTypeName A node type name.
-     * @return true if this node type represents the type with the given
-     * <code>nodeTypeName</code> or if it is directly or indirectly derived
-     * from it; otherwise <code>false</code>. If no node type exists with the
-     * specified name this method will also return <code>false</code>.
+     * {@inheritDoc}
      */
     public boolean isNodeType(Name nodeTypeName) {
         return ent.includesNodeType(nodeTypeName);
     }
 
     /**
-     * Returns the node type definition.
-     *
-     * @return the internal node type definition.
-     */
-    QNodeTypeDefinition getDefinition() {
-        return ntd;
-    }
-
-    /**
      * Tests if the value constraints defined in the property definition
      * <code>def</code> are satisfied by the the specified <code>values</code>.
      * <p/>
@@ -149,43 +124,6 @@
     }
     
     //-------------------------------------------------< NodeTypeDefinition >---
-    /**
-     * @see javax.jcr.nodetype.NodeTypeDefinition#getName()
-     */
-    public String getName() {
-        try {
-            return resolver().getJCRName(ntd.getName());
-        } catch (NamespaceException e) {
-            // should never get here
-            log.error("encountered unregistered namespace in node type name", e);
-            return ntd.getName().toString();
-        }
-    }
-
-    /**
-     * @see javax.jcr.nodetype.NodeTypeDefinition#getPrimaryItemName()
-     */
-    public String getPrimaryItemName() {
-        try {
-            Name piName = ntd.getPrimaryItemName();
-            if (piName != null) {
-                return resolver().getJCRName(piName);
-            } else {
-                return null;
-            }
-        } catch (NamespaceException e) {
-            // should never get here
-            log.error("encountered unregistered namespace in name of primary item", e);
-            return ntd.getName().toString();
-        }
-    }
-
-    /**
-     * @see javax.jcr.nodetype.NodeTypeDefinition#isMixin()
-     */
-    public boolean isMixin() {
-        return ntd.isMixin();
-    }
 
     /**
      * @see javax.jcr.nodetype.NodeTypeDefinition#hasOrderableChildNodes()
@@ -194,80 +132,7 @@
         return ntd.hasOrderableChildNodes();
     }
 
-    /**
-     * @see javax.jcr.nodetype.NodeTypeDefinition#isAbstract()
-     */
-    public boolean isAbstract() {
-        return ntd.isAbstract();
-    }
-
-    /**
-     * @see javax.jcr.nodetype.NodeTypeDefinition#isQueryable()
-     */
-    public boolean isQueryable() {
-        return ntd.isQueryable();
-    }
-
-    /**
-     * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredPropertyDefinitions()
-     */
-    public PropertyDefinition[] getDeclaredPropertyDefinitions() {
-        QPropertyDefinition[] pda = ntd.getPropertyDefs();
-        PropertyDefinition[] propDefs = new PropertyDefinition[pda.length];
-        for (int i = 0; i < pda.length; i++) {
-            propDefs[i] = ntMgr.getPropertyDefinition(pda[i]);
-        }
-        return propDefs;
-    }
-
-
-    /**
-     * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredChildNodeDefinitions()
-     */
-    public NodeDefinition[] getDeclaredChildNodeDefinitions() {
-        QNodeDefinition[] cnda = ntd.getChildNodeDefs();
-        NodeDefinition[] nodeDefs = new NodeDefinition[cnda.length];
-        for (int i = 0; i < cnda.length; i++) {
-            nodeDefs[i] = ntMgr.getNodeDefinition(cnda[i]);
-        }
-        return nodeDefs;
-    }
-
-    /**
-     * @see javax.jcr.nodetype.NodeTypeDefinition#getDeclaredSupertypeNames()
-     */
-    public String[] getDeclaredSupertypeNames() {
-        Name[] stNames = ntd.getSupertypes();
-        String[] dstn = new String[stNames.length];
-        for (int i = 0; i < stNames.length; i++) {
-            try {
-                dstn[i] = resolver().getJCRName(stNames[i]);
-            } catch (NamespaceException e) {
-                // should never get here
-                log.error("invalid node type name: " + stNames[i], e);
-                dstn[i] = stNames.toString();
-            }
-        }
-        return dstn;
-    }
-
     //-----------------------------------------------------------< NodeType >---
-    /**
-     * @see javax.jcr.nodetype.NodeType#isNodeType(String)
-     */
-    public boolean isNodeType(String nodeTypeName) {
-        Name ntName;
-        try {
-            ntName = resolver().getQName(nodeTypeName);
-        } catch (NamespaceException e) {
-            log.warn("invalid node type name: " + nodeTypeName, e);
-            return false;
-        } catch (NameException e) {
-            log.warn("invalid node type name: " + nodeTypeName, e);
-            return false;
-        }
-        return isNodeType(ntName);
-    }
 
     /**
      * @see javax.jcr.nodetype.NodeType#getSupertypes()
@@ -312,24 +177,6 @@
     }
 
     /**
-     * @see javax.jcr.nodetype.NodeType#getDeclaredSupertypes()
-     */
-    public NodeType[] getDeclaredSupertypes() {
-        Name[] ntNames = ntd.getSupertypes();
-        NodeType[] supertypes = new NodeType[ntNames.length];
-        for (int i = 0; i < ntNames.length; i++) {
-            try {
-                supertypes[i] = ntMgr.getNodeType(ntNames[i]);
-            } catch (NoSuchNodeTypeException e) {
-                // should never get here
-                log.error("undefined supertype", e);
-                return new NodeType[0];
-            }
-        }
-        return supertypes;
-    }
-
-    /**
      * @see javax.jcr.nodetype.NodeType#canSetProperty(String, Value)
      */
     public boolean canSetProperty(String propertyName, Value value) {
@@ -424,7 +271,7 @@
                 targetType = type;
             }
 
-            ArrayList list = new ArrayList();
+            ArrayList<QValue> list = new ArrayList<QValue>();
             // convert values and compact array (purge null entries)
             for (int i = 0; i < values.length; i++) {
                 if (values[i] != null) {
@@ -435,7 +282,7 @@
                     list.add(qValue);
                 }
             }
-            QValue[] internalValues = (QValue[]) list.toArray(new QValue[list.size()]);
+            QValue[] internalValues = list.toArray(new QValue[list.size()]);
             checkSetPropertyValueConstraints(def, internalValues);
             return true;
         } catch (NameException be) {

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeManagerImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeManagerImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeManagerImpl.java Wed Oct 21 11:38:31 2009
@@ -86,19 +86,19 @@
      * A cache for <code>NodeType</code> instances created by this
      * <code>NodeTypeManager</code>
      */
-    private final Map ntCache;
+    private final Map<Name, NodeTypeImpl> ntCache;
 
     /**
      * A cache for <code>PropertyDefinition</code> instances created by this
      * <code>NodeTypeManager</code>
      */
-    private final Map pdCache;
+    private final Map<QPropertyDefinition, PropertyDefinition> pdCache;
 
     /**
      * A cache for <code>NodeDefinition</code> instances created by this
      * <code>NodeTypeManager</code>
      */
-    private final Map ndCache;
+    private final Map<QNodeDefinition, NodeDefinition> ndCache;
 
     /**
      * Creates a new <code>NodeTypeManagerImpl</code> instance.
@@ -134,7 +134,7 @@
      */
     public NodeTypeImpl getNodeType(Name name) throws NoSuchNodeTypeException {
         synchronized (ntCache) {
-            NodeTypeImpl nt = (NodeTypeImpl) ntCache.get(name);
+            NodeTypeImpl nt = ntCache.get(name);
             if (nt == null) {
                 EffectiveNodeType ent = entProvider().getEffectiveNodeType(name);
                 QNodeTypeDefinition def = ntReg.getNodeTypeDefinition(name);
@@ -174,7 +174,7 @@
      */
     public NodeDefinition getNodeDefinition(QNodeDefinition def) {
         synchronized (ndCache) {
-            NodeDefinition ndi = (NodeDefinition) ndCache.get(def);
+            NodeDefinition ndi = ndCache.get(def);
             if (ndi == null) {
                 ndi = new NodeDefinitionImpl(def, this, getNamePathResolver());
                 ndCache.put(def, ndi);
@@ -192,7 +192,7 @@
      */
     public PropertyDefinition getPropertyDefinition(QPropertyDefinition def) {
         synchronized (pdCache) {
-            PropertyDefinition pdi = (PropertyDefinition) pdCache.get(def);
+            PropertyDefinition pdi = pdCache.get(def);
             if (pdi == null) {
                 pdi = new PropertyDefinitionImpl(def, this, getNamePathResolver(), valueFactory);
                 pdCache.put(def, pdi);
@@ -234,18 +234,18 @@
         try {
             String name = getNamePathResolver().getJCRName(ntName);
             synchronized (pdCache) {
-                Iterator iter = pdCache.values().iterator();
+                Iterator<PropertyDefinition> iter = pdCache.values().iterator();
                 while (iter.hasNext()) {
-                    PropertyDefinition pd = (PropertyDefinition) iter.next();
+                    PropertyDefinition pd = iter.next();
                     if (name.equals(pd.getDeclaringNodeType().getName())) {
                         iter.remove();
                     }
                 }
             }
             synchronized (ndCache) {
-                Iterator iter = ndCache.values().iterator();
+                Iterator<NodeDefinition> iter = ndCache.values().iterator();
                 while (iter.hasNext()) {
-                    NodeDefinition nd = (NodeDefinition) iter.next();
+                    NodeDefinition nd = iter.next();
                     if (name.equals(nd.getDeclaringNodeType().getName())) {
                         iter.remove();
                     }
@@ -271,18 +271,18 @@
         try {
             String name = getNamePathResolver().getJCRName(ntName);
             synchronized (pdCache) {
-                Iterator iter = pdCache.values().iterator();
+                Iterator<PropertyDefinition> iter = pdCache.values().iterator();
                 while (iter.hasNext()) {
-                    PropertyDefinition pd = (PropertyDefinition) iter.next();
+                    PropertyDefinition pd = iter.next();
                     if (name.equals(pd.getDeclaringNodeType().getName())) {
                         iter.remove();
                     }
                 }
             }
             synchronized (ndCache) {
-                Iterator iter = ndCache.values().iterator();
+                Iterator<NodeDefinition> iter = ndCache.values().iterator();
                 while (iter.hasNext()) {
-                    NodeDefinition nd = (NodeDefinition) iter.next();
+                    NodeDefinition nd = iter.next();
                     if (name.equals(nd.getDeclaringNodeType().getName())) {
                         iter.remove();
                     }
@@ -305,7 +305,7 @@
      */
     public NodeTypeIterator getAllNodeTypes() throws RepositoryException {
         Name[] ntNames = ntReg.getRegisteredNodeTypes();
-        ArrayList list = new ArrayList(ntNames.length);
+        ArrayList<NodeType> list = new ArrayList<NodeType>(ntNames.length);
         for (int i = 0; i < ntNames.length; i++) {
             list.add(getNodeType(ntNames[i]));
         }
@@ -317,7 +317,7 @@
      */
     public NodeTypeIterator getPrimaryNodeTypes() throws RepositoryException {
         Name[] ntNames = ntReg.getRegisteredNodeTypes();
-        ArrayList list = new ArrayList(ntNames.length);
+        ArrayList<NodeType> list = new ArrayList<NodeType>(ntNames.length);
         for (int i = 0; i < ntNames.length; i++) {
             NodeType nt = getNodeType(ntNames[i]);
             if (!nt.isMixin()) {
@@ -332,7 +332,7 @@
      */
     public NodeTypeIterator getMixinNodeTypes() throws RepositoryException {
         Name[] ntNames = ntReg.getRegisteredNodeTypes();
-        ArrayList list = new ArrayList(ntNames.length);
+        ArrayList<NodeType> list = new ArrayList<NodeType>(ntNames.length);
         for (int i = 0; i < ntNames.length; i++) {
             NodeType nt = getNodeType(ntNames[i]);
             if (nt.isMixin()) {
@@ -399,7 +399,7 @@
      * @see NodeTypeManager#unregisterNodeTypes(String[])
      */
     public void unregisterNodeTypes(String[] names) throws RepositoryException {
-        HashSet ntNames = new HashSet();
+        HashSet<Name> ntNames = new HashSet<Name>();
         for (String name : names) {
             ntNames.add(getNamePathResolver().getQName(name));
         }