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 [13/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/nodetype/NodeTypeRegistryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java Wed Oct 21 11:38:31 2009
@@ -16,40 +16,41 @@
  */
 package org.apache.jackrabbit.jcr2spi.nodetype;
 
-import EDU.oswego.cs.dl.util.concurrent.ConcurrentReaderHashMap;
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.concurrent.ConcurrentHashMap;
+
+import javax.jcr.NamespaceRegistry;
+import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.InvalidNodeTypeDefinitionException;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.nodetype.NodeTypeExistsException;
+import javax.jcr.version.OnParentVersionAction;
+
 import org.apache.commons.collections.map.ReferenceMap;
 import org.apache.jackrabbit.jcr2spi.util.Dumpable;
 import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.QItemDefinition;
 import org.apache.jackrabbit.spi.QNodeDefinition;
 import org.apache.jackrabbit.spi.QNodeTypeDefinition;
 import org.apache.jackrabbit.spi.QPropertyDefinition;
 import org.apache.jackrabbit.spi.QValue;
-import org.apache.jackrabbit.spi.QItemDefinition;
 import org.apache.jackrabbit.spi.QValueConstraint;
 import org.apache.jackrabbit.spi.commons.nodetype.NodeTypeStorage;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import javax.jcr.NamespaceRegistry;
-import javax.jcr.PropertyType;
-import javax.jcr.RepositoryException;
-import javax.jcr.nodetype.NoSuchNodeTypeException;
-import javax.jcr.nodetype.ConstraintViolationException;
-import javax.jcr.nodetype.InvalidNodeTypeDefinitionException;
-import javax.jcr.nodetype.NodeTypeExistsException;
-import javax.jcr.version.OnParentVersionAction;
-import java.io.PrintStream;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.TreeSet;
-import java.util.HashMap;
-
 /**
  * A <code>NodeTypeRegistry</code> ...
  */
@@ -65,9 +66,9 @@
     private final NodeTypeDefinitionMap registeredNTDefs;
 
     // set of property definitions
-    private final Set propDefs;
+    private final Set<QPropertyDefinition> propDefs;
     // set of node definitions
-    private final Set nodeDefs;
+    private final Set<QNodeDefinition> nodeDefs;
 
     /**
      * Object used to persist new nodetypes and modified nodetype definitions.
@@ -82,7 +83,8 @@
     /**
      * Listeners (soft references)
      */
-    private final Map listeners = Collections.synchronizedMap(new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.WEAK));
+    @SuppressWarnings("unchecked")
+    private final Map<NodeTypeRegistryListener, NodeTypeRegistryListener> listeners = Collections.synchronizedMap(new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.WEAK));
 
     /**
      * Create a new <code>NodeTypeRegistry</codes>
@@ -121,8 +123,8 @@
         //registeredNTDefs = new ConcurrentReaderHashMap();
         registeredNTDefs = new NodeTypeDefinitionMap();
 
-        propDefs = new HashSet();
-        nodeDefs = new HashSet();
+        propDefs = new HashSet<QPropertyDefinition>();
+        nodeDefs = new HashSet<QNodeDefinition>();
     }
 
     //---------------------------------------------------< NodeTypeRegistry >---
@@ -146,8 +148,8 @@
      * @see NodeTypeRegistry#getRegisteredNodeTypes()
      */
     public Name[] getRegisteredNodeTypes() throws RepositoryException {
-        Set qNames = registeredNTDefs.keySet();
-        return (Name[]) qNames.toArray(new Name[registeredNTDefs.size()]);
+        Set<Name> qNames = registeredNTDefs.keySet();
+        return qNames.toArray(new Name[registeredNTDefs.size()]);
     }
 
 
@@ -174,7 +176,7 @@
         }
 
         // validate new nodetype definitions
-        Map defMap = validator.validateNodeTypeDefs(ntDefs, registeredNTDefs);
+        Map<QNodeTypeDefinition, EffectiveNodeType> defMap = validator.validateNodeTypeDefs(ntDefs, registeredNTDefs);
         storage.registerNodeTypes(ntDefs.toArray(new QNodeTypeDefinition[ntDefs.size()]), allowUpdate);
 
         // update internal cache:
@@ -201,13 +203,13 @@
         for (Name ntName : nodeTypeNames) {
             // Best effort check for node types other than those to be
             // unregistered that depend on the given node types
-            Set dependents = registeredNTDefs.getDependentNodeTypes(ntName);
+            Set<Name> dependents = registeredNTDefs.getDependentNodeTypes(ntName);
             dependents.removeAll(nodeTypeNames);
             if (dependents.size() > 0) {
                 StringBuffer msg = new StringBuffer();
                 msg.append(ntName).append(" can not be removed because the following node types depend on it: ");
-                for (Iterator depIter = dependents.iterator(); depIter.hasNext();) {
-                    msg.append(depIter.next());
+                for (Name name : dependents) {
+                    msg.append(name);
                     msg.append(" ");
                 }
                 throw new RepositoryException(msg.toString());
@@ -223,8 +225,7 @@
         internalUnregister(nodeTypeNames);
 
         // notify listeners
-        for (Iterator iter = nodeTypeNames.iterator(); iter.hasNext();) {
-            Name ntName = (Name) iter.next();
+        for (Name ntName : nodeTypeNames) {
             notifyUnregistered(ntName);
         }
     }
@@ -234,7 +235,7 @@
      */
     public QNodeTypeDefinition getNodeTypeDefinition(Name nodeTypeName)
         throws NoSuchNodeTypeException {
-        QNodeTypeDefinition def = (QNodeTypeDefinition) registeredNTDefs.get(nodeTypeName);
+        QNodeTypeDefinition def = registeredNTDefs.get(nodeTypeName);
         if (def == null) {
             throw new NoSuchNodeTypeException("Nodetype " + nodeTypeName + " doesn't exist");
         }
@@ -258,24 +259,24 @@
     }
 
     /**
-     * @see EffectiveNodeTypeProvider#getEffectiveNodeType(Name[], Map)
+     * @see EffectiveNodeTypeProvider#getEffectiveNodeType(Name[], Map<Name, QNodeTypeDefinition>)
      */
-    public EffectiveNodeType getEffectiveNodeType(Name[] ntNames, Map ntdMap)
+    public EffectiveNodeType getEffectiveNodeType(Name[] ntNames, Map<Name, QNodeTypeDefinition> ntdMap)
         throws ConstraintViolationException, NoSuchNodeTypeException {
         return getEffectiveNodeType(ntNames, entCache, ntdMap);
     }
 
     /**
-     * @see EffectiveNodeTypeProvider#getEffectiveNodeType(QNodeTypeDefinition, Map)
+     * @see EffectiveNodeTypeProvider#getEffectiveNodeType(QNodeTypeDefinition, Map<Name, QNodeTypeDefinition>)
      */
-    public EffectiveNodeType getEffectiveNodeType(QNodeTypeDefinition ntd, Map ntdMap)
+    public EffectiveNodeType getEffectiveNodeType(QNodeTypeDefinition ntd, Map<Name, QNodeTypeDefinition> ntdMap)
             throws ConstraintViolationException, NoSuchNodeTypeException {
-        TreeSet mergedNodeTypes = new TreeSet();
-        TreeSet inheritedNodeTypes = new TreeSet();
-        TreeSet allNodeTypes = new TreeSet();
-        Map namedItemDefs = new HashMap();
-        List unnamedItemDefs = new ArrayList();
-        Set supportedMixins = null;
+        TreeSet<Name> mergedNodeTypes = new TreeSet<Name>();
+        TreeSet<Name> inheritedNodeTypes = new TreeSet<Name>();
+        TreeSet<Name> allNodeTypes = new TreeSet<Name>();
+        Map<Name, List<QItemDefinition>> namedItemDefs = new HashMap<Name, List<QItemDefinition>>();
+        List<QItemDefinition> unnamedItemDefs = new ArrayList<QItemDefinition>();
+        Set<Name> supportedMixins = null;
 
         Name ntName = ntd.getName();
         // prepare new instance
@@ -285,7 +286,7 @@
         Name[] smixins = ntd.getSupportedMixinTypes();
 
         if (smixins != null) {
-            supportedMixins = new HashSet();
+            supportedMixins = new HashSet<Name>();
             for (int i = 0; i < smixins.length; i++) {
                 supportedMixins.add(smixins[i]);
             }
@@ -294,7 +295,7 @@
         // map of all item definitions (maps id to definition)
         // used to effectively detect ambiguous child definitions where
         // ambiguity is defined in terms of definition identity
-        Set itemDefIds = new HashSet();
+        Set<QItemDefinition> itemDefIds = new HashSet<QItemDefinition>();
 
         QNodeDefinition[] cnda = ntd.getChildNodeDefs();
         for (int i = 0; i < cnda.length; i++) {
@@ -320,9 +321,9 @@
             } else {
                 // named node definition
                 Name name = cnda[i].getName();
-                List defs = (List) namedItemDefs.get(name);
+                List<QItemDefinition> defs = namedItemDefs.get(name);
                 if (defs == null) {
-                    defs = new ArrayList();
+                    defs = new ArrayList<QItemDefinition>();
                     namedItemDefs.put(name, defs);
                 }
                 if (defs.size() > 0) {
@@ -331,7 +332,7 @@
                      * name; make sure none of them is auto-create
                      */
                     for (int j = 0; j < defs.size(); j++) {
-                        QItemDefinition qDef = (QItemDefinition) defs.get(j);
+                        QItemDefinition qDef = defs.get(j);
                         if (cnda[i].isAutoCreated() || qDef.isAutoCreated()) {
                             // conflict
                             String msg = "There are more than one 'auto-create' item definitions for '"
@@ -368,9 +369,9 @@
             } else {
                 // named property definition
                 Name name = pda[i].getName();
-                List defs = (List) namedItemDefs.get(name);
+                List<QItemDefinition> defs = namedItemDefs.get(name);
                 if (defs == null) {
-                    defs = new ArrayList();
+                    defs = new ArrayList<QItemDefinition>();
                     namedItemDefs.put(name, defs);
                 }
                 if (defs.size() > 0) {
@@ -379,7 +380,7 @@
                      * name; make sure none of them is auto-create
                      */
                     for (int j = 0; j < defs.size(); j++) {
-                        QItemDefinition qDef = (QItemDefinition) defs.get(j);
+                        QItemDefinition qDef = defs.get(j);
                         if (pda[i].isAutoCreated() || qDef.isAutoCreated()) {
                             // conflict
                             String msg = "There are more than one 'auto-create' item definitions for '"
@@ -417,7 +418,7 @@
      */
     private EffectiveNodeType getEffectiveNodeType(Name ntName,
                                                    EffectiveNodeTypeCache entCache,
-                                                   Map ntdCache)
+                                                   Map<Name, QNodeTypeDefinition> ntdCache)
         throws NoSuchNodeTypeException {
         // 1. check if effective node type has already been built
         EffectiveNodeTypeCache.Key key = entCache.getKey(new Name[]{ntName});
@@ -427,7 +428,7 @@
         }
 
         // 2. make sure we've got the definition of the specified node type
-        QNodeTypeDefinition ntd = (QNodeTypeDefinition) ntdCache.get(ntName);
+        QNodeTypeDefinition ntd = ntdCache.get(ntName);
         if (ntd == null) {
             throw new NoSuchNodeTypeException(ntName.toString());
         }
@@ -458,7 +459,7 @@
      */
     private EffectiveNodeType getEffectiveNodeType(Name[] ntNames,
                                                    EffectiveNodeTypeCache entCache,
-                                                   Map ntdCache)
+                                                   Map<Name, QNodeTypeDefinition> ntdCache)
         throws ConstraintViolationException, NoSuchNodeTypeException {
 
         EffectiveNodeTypeCache.Key key = entCache.getKey(ntNames);
@@ -500,7 +501,7 @@
                      */
                     Name[] remainder = key.getNames();
                     for (int i = 0; i < remainder.length; i++) {
-                        QNodeTypeDefinition ntd = (QNodeTypeDefinition) ntdCache.get(remainder[i]);
+                        QNodeTypeDefinition ntd = ntdCache.get(remainder[i]);
                         EffectiveNodeType ent = getEffectiveNodeType(ntd, ntdCache);
                         // store new effective node type
                         entCache.put(ent);
@@ -533,10 +534,9 @@
         // copy listeners to array to avoid ConcurrentModificationException
         NodeTypeRegistryListener[] la =
                 new NodeTypeRegistryListener[listeners.size()];
-        Iterator iter = listeners.values().iterator();
         int cnt = 0;
-        while (iter.hasNext()) {
-            la[cnt++] = (NodeTypeRegistryListener) iter.next();
+        for (NodeTypeRegistryListener ntrl : listeners.values()) {
+            la[cnt++] = ntrl;
         }
         for (int i = 0; i < la.length; i++) {
             if (la[i] != null) {
@@ -551,10 +551,9 @@
     private void notifyReRegistered(Name ntName) {
         // copy listeners to array to avoid ConcurrentModificationException
         NodeTypeRegistryListener[] la = new NodeTypeRegistryListener[listeners.size()];
-        Iterator iter = listeners.values().iterator();
         int cnt = 0;
-        while (iter.hasNext()) {
-            la[cnt++] = (NodeTypeRegistryListener) iter.next();
+        for (NodeTypeRegistryListener ntrl : listeners.values()) {
+            la[cnt++] = ntrl;
         }
         for (int i = 0; i < la.length; i++) {
             if (la[i] != null) {
@@ -569,10 +568,9 @@
     private void notifyUnregistered(Name ntName) {
         // copy listeners to array to avoid ConcurrentModificationException
         NodeTypeRegistryListener[] la = new NodeTypeRegistryListener[listeners.size()];
-        Iterator iter = listeners.values().iterator();
         int cnt = 0;
-        while (iter.hasNext()) {
-            la[cnt++] = (NodeTypeRegistryListener) iter.next();
+        for (NodeTypeRegistryListener ntrl : listeners.values()) {
+            la[cnt++] = ntrl;
         }
         for (int i = 0; i < la.length; i++) {
             if (la[i] != null) {
@@ -581,11 +579,10 @@
         }
     }
 
-    private void internalRegister(Map defMap) {
-        for (Iterator it = defMap.entrySet().iterator(); it.hasNext(); ) {
-            Map.Entry entry = (Map.Entry)it.next();
-            QNodeTypeDefinition ntd = (QNodeTypeDefinition)entry.getKey();
-            internalRegister(ntd, (EffectiveNodeTypeImpl)entry.getValue());
+    private void internalRegister(Map<QNodeTypeDefinition, EffectiveNodeType> defMap) {
+        for (Map.Entry<QNodeTypeDefinition, EffectiveNodeType> entry : defMap.entrySet()) {
+            QNodeTypeDefinition ntd = entry.getKey();
+            internalRegister(ntd, entry.getValue());
         }
     }
 
@@ -616,7 +613,7 @@
     }
 
     private void internalUnregister(Name name) {
-        QNodeTypeDefinition ntd = (QNodeTypeDefinition) registeredNTDefs.remove(name);
+        QNodeTypeDefinition ntd = registeredNTDefs.remove(name);
         entCache.invalidate(name);
 
         if (ntd != null) {
@@ -662,10 +659,19 @@
      * Inner class representing the map of <code>QNodeTypeDefinition</code>s
      * that have been loaded yet.
      */
-    private class NodeTypeDefinitionMap implements Map, Dumpable {
+    private class NodeTypeDefinitionMap implements Map<Name, QNodeTypeDefinition>, Dumpable {
 
         // map of node type names and node type definitions
-        private final ConcurrentReaderHashMap nodetypeDefinitions = new ConcurrentReaderHashMap();
+        private final ConcurrentHashMap<Name, QNodeTypeDefinition> nodetypeDefinitions =
+            new ConcurrentHashMap<Name, QNodeTypeDefinition>();
+
+        private Collection<QNodeTypeDefinition> getValues() {
+            return nodetypeDefinitions.values();
+        }
+
+        private Set<Name> getKeySet() {
+            return nodetypeDefinitions.keySet();
+        }
 
         /**
          * Returns the names of those registered node types that have
@@ -678,16 +684,14 @@
          * @return a set of node type <code>Name</code>s
          * @throws NoSuchNodeTypeException
          */
-        private Set getDependentNodeTypes(Name nodeTypeName) throws NoSuchNodeTypeException {
+        private Set<Name> getDependentNodeTypes(Name nodeTypeName) throws NoSuchNodeTypeException {
             if (!nodetypeDefinitions.containsKey(nodeTypeName)) {
                 throw new NoSuchNodeTypeException(nodeTypeName.toString());
             }
             // get names of those node types that have dependencies on the
             // node type with the given nodeTypeName.
-            HashSet names = new HashSet();
-            Iterator iter = nodetypeDefinitions.values().iterator();
-            while (iter.hasNext()) {
-                QNodeTypeDefinition ntd = (QNodeTypeDefinition) iter.next();
+            HashSet<Name> names = new HashSet<Name>();
+            for (QNodeTypeDefinition ntd : getValues()) {
                 if (ntd.getDependencies().contains(nodeTypeName)) {
                     names.add(ntd.getName());
                 }
@@ -695,12 +699,12 @@
             return names;
         }
 
-        private void updateInternalMap(Iterator definitions) {
-            // since definition were retrieved from the storage, valiation
+        private void updateInternalMap(Iterator<QNodeTypeDefinition> definitions) {
+            // since definition were retrieved from the storage, validation
             // can be omitted -> register without building effective-nodetype.
             // TODO: check if correct
             while (definitions.hasNext()) {
-                internalRegister((QNodeTypeDefinition) definitions.next(), null);
+                internalRegister(definitions.next(), null);
             }
         }
 
@@ -731,67 +735,65 @@
             return get(((QNodeTypeDefinition)value).getName()) != null;
         }
 
-        public Set keySet() {
+        public Set<Name> keySet() {
             // to be aware of all (recently) registered nodetypes retrieve
             // complete set from the storage again and add missing / replace
             // existing definitions.
             try {
-                Iterator it = storage.getAllDefinitions();
+                Iterator<QNodeTypeDefinition> it = storage.getAllDefinitions();
                 updateInternalMap(it);
             } catch (RepositoryException e) {
                 log.error(e.getMessage());
             }
-            return nodetypeDefinitions.keySet();
+            return getKeySet();
         }
 
-        public Collection values() {
+        public Collection<QNodeTypeDefinition> values() {
             // make sure all node type definitions have been loaded.
             keySet();
             // and retrieve the collection containing all definitions.
-            return nodetypeDefinitions.values();
+            return getValues();
         }
 
-        public Object put(Object key, Object value) {
+        public QNodeTypeDefinition put(Name key, QNodeTypeDefinition value) {
             return nodetypeDefinitions.put(key, value);
         }
 
-        public void putAll(Map t) {
+        public void putAll(Map<? extends Name, ? extends QNodeTypeDefinition> t) {
             throw new UnsupportedOperationException("Implementation missing");
         }
 
-        public Set entrySet() {
+        public Set<Map.Entry<Name, QNodeTypeDefinition>> entrySet() {
             // make sure all node type definitions have been loaded.
             keySet();
             return nodetypeDefinitions.entrySet();
         }
 
-        public Object get(Object key) {
+        public QNodeTypeDefinition get(Object key) {
             if (!(key instanceof Name)) {
                 throw new IllegalArgumentException();
             }
-            QNodeTypeDefinition def = (QNodeTypeDefinition) nodetypeDefinitions.get(key);
+            QNodeTypeDefinition def = nodetypeDefinitions.get(key);
             if (def == null) {
                 try {
                     // node type does either not exist or hasn't been loaded yet
-                    Iterator it = storage.getDefinitions(new Name[] {(Name) key});
+                    Iterator<QNodeTypeDefinition> it = storage.getDefinitions(new Name[] {(Name) key});
                     updateInternalMap(it);
                 } catch (RepositoryException e) {
                     log.debug(e.getMessage());
                 }
             }
-            def = (QNodeTypeDefinition) nodetypeDefinitions.get(key);
+            def = nodetypeDefinitions.get(key);
             return def;
         }
 
-        public Object remove(Object key) {
-            return (QNodeTypeDefinition) nodetypeDefinitions.remove(key);
+        public QNodeTypeDefinition remove(Object key) {
+            return nodetypeDefinitions.remove(key);
         }
 
         //-------------------------------------------------------< Dumpable >---
         public void dump(PrintStream ps) {
-            Iterator iter = nodetypeDefinitions.values().iterator();
-            while (iter.hasNext()) {
-                QNodeTypeDefinition ntd = (QNodeTypeDefinition) iter.next();
+            for (QNodeTypeDefinition ntd : getValues()) {
                 ps.println(ntd.getName());
                 Name[] supertypes = ntd.getSupertypes();
                 ps.println("\tSupertypes");

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/observation/EventImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/observation/EventImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/observation/EventImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/observation/EventImpl.java Wed Oct 21 11:38:31 2009
@@ -18,7 +18,6 @@
 
 import java.util.Map;
 import java.util.HashMap;
-import java.util.Iterator;
 
 import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
 import org.apache.jackrabbit.spi.commons.value.ValueFormat;
@@ -118,12 +117,11 @@
     /**
      * @see javax.jcr.observation.Event#getInfo()
      */
-    public Map getInfo() throws RepositoryException {
-        Map<String, String> jcrInfo = new HashMap();
-        Map<Name, QValue> infos = event.getInfo();
-        for (Iterator<Name> it = event.getInfo().keySet().iterator(); it.hasNext(); ) {
-            Name key = it.next();
-            QValue value = infos.get(key);
+    public Map<String, String> getInfo() throws RepositoryException {
+        Map<String, String> jcrInfo = new HashMap<String, String>();
+        for (Map.Entry<Name, QValue> entry : event.getInfo().entrySet()) {
+            Name key = entry.getKey();
+            QValue value = entry.getValue();
             String strValue = null;
             if (value != null) {
                 strValue = ValueFormat.getJCRString(value, resolver);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/observation/ObservationManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/observation/ObservationManagerImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/observation/ObservationManagerImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/observation/ObservationManagerImpl.java Wed Oct 21 11:38:31 2009
@@ -136,7 +136,7 @@
      * @inheritDoc
      */
     public EventListenerIterator getRegisteredEventListeners() throws RepositoryException {
-        Map activeListeners;
+        Map<EventListener, EventFilter> activeListeners;
         synchronized (subscriptions) {
             ensureReadOnlyMap();
             activeListeners = readOnlySubscriptions;

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/AbstractOperation.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/AbstractOperation.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/AbstractOperation.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/AbstractOperation.java Wed Oct 21 11:38:31 2009
@@ -33,9 +33,9 @@
 public abstract class AbstractOperation implements Operation {
 
     /**
-     * The collection of affected ItemIds.
+     * The collection of affected ItemStates.
      */
-    private final Collection affectedStates = new ArrayList();
+    private final Collection<ItemState> affectedStates = new ArrayList<ItemState>();
     protected int status;
 
     /**
@@ -51,8 +51,13 @@
     /**
      * @inheritDoc
      */
-    public Collection getAffectedItemStates() {
-        return (affectedStates.isEmpty()) ? Collections.EMPTY_LIST : Collections.unmodifiableCollection(affectedStates);
+    public Collection<ItemState> getAffectedItemStates() {
+    	if (affectedStates.isEmpty()) {
+    		return Collections.emptySet();
+    	}
+    	else {
+    		return Collections.unmodifiableCollection(affectedStates);
+    	}
     }
 
     /**

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/AddNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/AddNode.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/AddNode.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/AddNode.java Wed Oct 21 11:38:31 2009
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.jcr2spi.operation;
 
+import org.apache.jackrabbit.jcr2spi.state.ItemState;
 import org.apache.jackrabbit.jcr2spi.state.NodeState;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.NodeId;
@@ -46,7 +47,7 @@
     private final Name nodeTypeName;
     private final String uuid;
 
-    private List addedStates = new ArrayList();
+    private List<ItemState> addedStates = new ArrayList<ItemState>();
 
     private AddNode(NodeState parentState, Name nodeName, Name nodeTypeName, String uuid)
             throws RepositoryException {
@@ -110,11 +111,11 @@
         return uuid;
     }
 
-    public void addedState(List newStates) {
+    public void addedState(List<ItemState> newStates) {
         addedStates.addAll(newStates);
     }
 
-    public List getAddedStates() {
+    public List<ItemState> getAddedStates() {
         return addedStates;
     }
 

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkin.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkin.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkin.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkin.java Wed Oct 21 11:38:31 2009
@@ -77,9 +77,9 @@
         } catch (RepositoryException e) {
             log.debug("Failed to access Version history entry -> skip invalidation.", e);
         }
-        Iterator entries = ((NodeEntry) nodeState.getHierarchyEntry()).getPropertyEntries();
+        Iterator<PropertyEntry> entries = ((NodeEntry) nodeState.getHierarchyEntry()).getPropertyEntries();
         while (entries.hasNext()) {
-            PropertyEntry pe = (PropertyEntry) entries.next();
+            PropertyEntry pe = entries.next();
             pe.invalidate(false);
         }
         nodeState.getHierarchyEntry().invalidate(false);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkout.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkout.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkout.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkout.java Wed Oct 21 11:38:31 2009
@@ -85,9 +85,9 @@
         }
         // non-recursive invalidation (but including all properties)
         NodeEntry nodeEntry = (NodeEntry) nodeState.getHierarchyEntry();
-        Iterator entries = nodeEntry.getPropertyEntries();
+        Iterator<PropertyEntry> entries = nodeEntry.getPropertyEntries();
         while (entries.hasNext()) {
-            PropertyEntry pe = (PropertyEntry) entries.next();
+            PropertyEntry pe = entries.next();
             pe.invalidate(false);
         }
         nodeEntry.invalidate(false);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkpoint.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkpoint.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkpoint.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Checkpoint.java Wed Oct 21 11:38:31 2009
@@ -75,9 +75,9 @@
         }
         // non-recursive invalidation (but including all properties)
         NodeEntry nodeEntry = (NodeEntry) nodeState.getHierarchyEntry();
-        Iterator entries = nodeEntry.getPropertyEntries();
+        Iterator<PropertyEntry> entries = nodeEntry.getPropertyEntries();
         while (entries.hasNext()) {
-            PropertyEntry pe = (PropertyEntry) entries.next();
+            PropertyEntry pe = entries.next();
             pe.invalidate(false);
         }
         nodeEntry.invalidate(false);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/LockRelease.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/LockRelease.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/LockRelease.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/LockRelease.java Wed Oct 21 11:38:31 2009
@@ -63,9 +63,9 @@
         status = STATUS_PERSISTED;
         // non-recursive invalidation but including all properties
         NodeEntry nodeEntry = nodeState.getNodeEntry();
-        Iterator entries = nodeEntry.getPropertyEntries();
+        Iterator<PropertyEntry> entries = nodeEntry.getPropertyEntries();
         while (entries.hasNext()) {
-            PropertyEntry pe = (PropertyEntry) entries.next();
+            PropertyEntry pe = entries.next();
             pe.invalidate(false);
         }
         nodeEntry.invalidate(false);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Merge.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Merge.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Merge.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Merge.java Wed Oct 21 11:38:31 2009
@@ -20,6 +20,7 @@
 import org.apache.jackrabbit.jcr2spi.version.VersionManager;
 import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
 import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntry;
+import org.apache.jackrabbit.spi.ItemId;
 import org.apache.jackrabbit.spi.NodeId;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,7 +47,7 @@
     private final boolean isShallow;
     private final VersionManager mgr;
 
-    private Iterator failedIds = null;
+    private Iterator<? extends ItemId> failedIds = null;
 
     private Merge(NodeState nodeState, String srcWorkspaceName, boolean bestEffort, boolean isShallow, VersionManager mgr) {
         this.nodeState = nodeState;
@@ -117,7 +118,7 @@
         return srcWorkspaceName == null;
     }
 
-    public void setFailedIds(Iterator failedIds) {
+    public void setFailedIds(Iterator<? extends ItemId> failedIds) {
         if (failedIds == null) {
             throw new IllegalArgumentException("IdIterator must not be null.");
         }
@@ -127,7 +128,7 @@
         this.failedIds = failedIds;
     }
 
-    public Iterator getFailedIds() {
+    public Iterator<? extends ItemId> getFailedIds() {
         if (failedIds == null) {
             throw new IllegalStateException("Merge operation has not been executed yet.");
         }

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Operation.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Operation.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Operation.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/Operation.java Wed Oct 21 11:38:31 2009
@@ -56,7 +56,7 @@
      *
      * @return collection of affected <code>ItemState</code>s.
      */
-    public Collection getAffectedItemStates();
+    public Collection<ItemState> getAffectedItemStates();
 
     /**
      * Informs this Operation that it has been successfully executed.

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/RemoveVersion.java Wed Oct 21 11:38:31 2009
@@ -61,18 +61,18 @@
 
     /**
      * Invalidates the <code>NodeState</code> that has been updated and all
-     * its decendants. Second, the parent state gets invalidated.
+     * its descendants. Second, the parent state gets invalidated.
      *
      * @see Operation#persisted()
      */
     public void persisted() {
         assert status == STATUS_PENDING;
         status = STATUS_PERSISTED;
-        // invaliate the versionable node as well (version related properties)
+        // Invalidate the versionable node as well (version related properties)
         if (versionableEntry != null) {
-            Iterator propEntries = versionableEntry.getPropertyEntries();
+            Iterator<PropertyEntry> propEntries = versionableEntry.getPropertyEntries();
             while (propEntries.hasNext()) {
-                PropertyEntry pe = (PropertyEntry) propEntries.next();
+                PropertyEntry pe = propEntries.next();
                 pe.invalidate(false);
             }
             versionableEntry.invalidate(false);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/ResolveMergeConflict.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/ResolveMergeConflict.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/ResolveMergeConflict.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/ResolveMergeConflict.java Wed Oct 21 11:38:31 2009
@@ -69,9 +69,9 @@
         assert status == STATUS_PENDING;
         status = STATUS_PERSISTED;
         // non-recursive invalidation BUT including all properties
-        Iterator propEntries = ((NodeEntry) nodeState.getHierarchyEntry()).getPropertyEntries();
+        Iterator<PropertyEntry> propEntries = ((NodeEntry) nodeState.getHierarchyEntry()).getPropertyEntries();
         while (propEntries.hasNext()) {
-            PropertyEntry pe = (PropertyEntry) propEntries.next();
+            PropertyEntry pe = propEntries.next();
             pe.invalidate(false);
         }
         nodeState.getHierarchyEntry().invalidate(false);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/SetPropertyValue.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/SetPropertyValue.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/SetPropertyValue.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/operation/SetPropertyValue.java Wed Oct 21 11:38:31 2009
@@ -106,13 +106,13 @@
     public static Operation create(PropertyState propState, QValue[] qValues,
                                    int valueType) throws RepositoryException {
         // compact array (purge null entries)
-        List list = new ArrayList();
+        List<QValue> list = new ArrayList<QValue>();
         for (int i = 0; i < qValues.length; i++) {
             if (qValues[i] != null) {
                 list.add(qValues[i]);
             }
         }
-        QValue[] cleanValues = (QValue[]) list.toArray(new QValue[list.size()]);
+        QValue[] cleanValues = list.toArray(new QValue[list.size()]);
         SetPropertyValue sv = new SetPropertyValue(propState, valueType, cleanValues);
         return sv;
     }

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryManagerImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryManagerImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryManagerImpl.java Wed Oct 21 11:38:31 2009
@@ -16,16 +16,6 @@
  */
 package org.apache.jackrabbit.jcr2spi.query;
 
-import org.apache.jackrabbit.jcr2spi.ItemManager;
-import org.apache.jackrabbit.jcr2spi.WorkspaceManager;
-import org.apache.jackrabbit.jcr2spi.ManagerProvider;
-import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelFactoryImpl;
-import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelTree;
-import org.apache.jackrabbit.spi.commons.query.QueryObjectModelBuilderRegistry;
-import org.apache.jackrabbit.spi.commons.query.QueryObjectModelBuilder;
-import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
-import org.apache.jackrabbit.spi.commons.name.NameConstants;
-
 import javax.jcr.Node;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -33,8 +23,18 @@
 import javax.jcr.query.InvalidQueryException;
 import javax.jcr.query.Query;
 import javax.jcr.query.QueryManager;
-import javax.jcr.query.qom.QueryObjectModelFactory;
 import javax.jcr.query.qom.QueryObjectModel;
+import javax.jcr.query.qom.QueryObjectModelFactory;
+
+import org.apache.jackrabbit.commons.query.QueryObjectModelBuilder;
+import org.apache.jackrabbit.commons.query.QueryObjectModelBuilderRegistry;
+import org.apache.jackrabbit.jcr2spi.ItemManager;
+import org.apache.jackrabbit.jcr2spi.ManagerProvider;
+import org.apache.jackrabbit.jcr2spi.WorkspaceManager;
+import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
+import org.apache.jackrabbit.spi.commons.name.NameConstants;
+import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelFactoryImpl;
+import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelTree;
 
 /**
  * This class implements the {@link QueryManager} interface.

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryObjectModelImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryObjectModelImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryObjectModelImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/QueryObjectModelImpl.java Wed Oct 21 11:38:31 2009
@@ -16,31 +16,31 @@
  */
 package org.apache.jackrabbit.jcr2spi.query;
 
-import javax.jcr.query.qom.QueryObjectModel;
-import javax.jcr.query.qom.Source;
-import javax.jcr.query.qom.Constraint;
-import javax.jcr.query.qom.Ordering;
-import javax.jcr.query.qom.Column;
-import javax.jcr.query.InvalidQueryException;
-import javax.jcr.query.Query;
-import javax.jcr.query.QueryResult;
-import javax.jcr.Session;
-import javax.jcr.RepositoryException;
-import javax.jcr.Node;
-import javax.jcr.ItemNotFoundException;
 import javax.jcr.ItemExistsException;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.Node;
 import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.Value;
 import javax.jcr.lock.LockException;
 import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.query.InvalidQueryException;
+import javax.jcr.query.Query;
+import javax.jcr.query.QueryResult;
+import javax.jcr.query.qom.Column;
+import javax.jcr.query.qom.Constraint;
+import javax.jcr.query.qom.Ordering;
+import javax.jcr.query.qom.QueryObjectModel;
+import javax.jcr.query.qom.Source;
 import javax.jcr.version.VersionException;
 
-import org.apache.jackrabbit.jcr2spi.ManagerProvider;
+import org.apache.jackrabbit.commons.query.QueryObjectModelBuilderRegistry;
 import org.apache.jackrabbit.jcr2spi.ItemManager;
+import org.apache.jackrabbit.jcr2spi.ManagerProvider;
 import org.apache.jackrabbit.jcr2spi.WorkspaceManager;
 import org.apache.jackrabbit.spi.commons.query.qom.QueryObjectModelTree;
-import org.apache.jackrabbit.spi.commons.query.QueryObjectModelBuilderRegistry;
 
 /**
  * <code>QueryObjectModelImpl</code> implements the jcr2spi query object model.

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/AbstractItemStateFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/AbstractItemStateFactory.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/AbstractItemStateFactory.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/AbstractItemStateFactory.java Wed Oct 21 11:38:31 2009
@@ -29,7 +29,7 @@
 
     private static Logger log = LoggerFactory.getLogger(AbstractItemStateFactory.class);
 
-    private final Set creationListeners = new HashSet();
+    private final Set<ItemStateCreationListener> creationListeners = new HashSet<ItemStateCreationListener>();
 
     //---------------------------------------------------< ItemStateFactory >---
     /**
@@ -59,7 +59,7 @@
      */
     private ItemStateCreationListener[] getListeners() {
         synchronized (creationListeners) {
-            return (ItemStateCreationListener[]) creationListeners.toArray(new ItemStateCreationListener[creationListeners.size()]);
+            return creationListeners.toArray(new ItemStateCreationListener[creationListeners.size()]);
         }
     }
 

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java Wed Oct 21 11:38:31 2009
@@ -26,7 +26,6 @@
 import javax.jcr.InvalidItemStateException;
 import javax.jcr.RepositoryException;
 import javax.jcr.nodetype.ConstraintViolationException;
-import java.util.Iterator;
 import java.util.Set;
 import java.util.List;
 import java.util.ArrayList;
@@ -51,9 +50,9 @@
     /**
      * Set of operations
      */
-    private final Set operations;
+    private final Set<Operation> operations;
 
-    private final Set affectedStates;
+    private final Set<ItemState> affectedStates;
 
     /**
      * Create a new change log and populates it with operations and states
@@ -65,7 +64,7 @@
      * @throws InvalidItemStateException
      * @throws ConstraintViolationException
      */
-    ChangeLog(ItemState target, Set operations, Set affectedStates)
+    ChangeLog(ItemState target, Set<Operation> operations, Set<ItemState> affectedStates)
             throws InvalidItemStateException, ConstraintViolationException {
         this.target = target;
         this.operations = operations;
@@ -74,7 +73,7 @@
 
     //-----------------------------------------------< Inform the ChangeLog >---
     /**
-     * Call this method when this change log has been sucessfully persisted.
+     * Call this method when this change log has been successfully persisted.
      * This implementation will call {@link Operation#persisted() on the
      * individual operations followed by setting all remaining modified
      * states to EXISTING.
@@ -83,7 +82,7 @@
         List<NodeState> changedMixins = new ArrayList<NodeState>();
         List<NodeState> changedPrimaryTypes = new ArrayList<NodeState>();
 
-        Operation[] ops = (Operation[]) operations.toArray(new Operation[operations.size()]);
+        Operation[] ops = operations.toArray(new Operation[operations.size()]);
         for (int i = 0; i < ops.length; i++) {
             ops[i].persisted();
             if (ops[i] instanceof SetMixin) {
@@ -94,8 +93,7 @@
         }
         // process all remaining states that were not covered by the
         // operation persistence.
-        for (Iterator it = affectedStates.iterator(); it.hasNext();) {
-            ItemState state = (ItemState) it.next();
+        for (ItemState state : affectedStates) {
             HierarchyEntry he = state.getHierarchyEntry();
 
             switch (state.getStatus()) {
@@ -148,15 +146,14 @@
      * Revert the changes listed within this changelog
      */
     public void undo() throws RepositoryException {
-        Operation[] ops = (Operation[]) operations.toArray(new Operation[operations.size()]);
+        Operation[] ops = operations.toArray(new Operation[operations.size()]);
         for (int i = ops.length - 1; i >= 0; i--) {
             ops[i].undo();
         }
 
         // process all remaining states that were not covered by the
         // operation undo.
-        for (Iterator it = affectedStates.iterator(); it.hasNext();) {
-            ItemState state = (ItemState) it.next();
+        for (ItemState state : affectedStates) {
             switch (state.getStatus()) {
                 case Status.EXISTING_MODIFIED:
                 case Status.EXISTING_REMOVED:
@@ -200,14 +197,14 @@
     /**
      * @return set of operations.
      */
-    public Set getOperations() {
+    public Set<Operation> getOperations() {
         return operations;
     }
 
     /**
      * @return set of the affected states.
      */
-    public Set getAffectedStates() {
+    public Set<ItemState> getAffectedStates() {
         return affectedStates;
     }
 

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java Wed Oct 21 11:38:31 2009
@@ -57,7 +57,7 @@
     /**
      * Listeners (weak references)
      */
-    private final transient Collection listeners = new WeakIdentityCollection(5);
+    private final transient Collection<ItemStateLifeCycleListener> listeners = new WeakIdentityCollection(5);
 
     /**
      * The <code>ItemStateFactory</code> which is used to create new
@@ -240,11 +240,11 @@
         } else {
             throw new IllegalArgumentException("Invalid new status " + Status.getName(newStatus) + " for state with status " + Status.getName(oldStatus));
         }
-        // notifiy listeners about status change
+        // Notify listeners about status change
         // copy listeners to array to avoid ConcurrentModificationException
         ItemStateLifeCycleListener[] la;
         synchronized (listeners) {
-            la = (ItemStateLifeCycleListener[]) listeners.toArray(new ItemStateLifeCycleListener[listeners.size()]);
+            la = listeners.toArray(new ItemStateLifeCycleListener[listeners.size()]);
         }
         for (int i = 0; i < la.length; i++) {
             if (la[i] != null) {
@@ -307,7 +307,7 @@
      *
      * @return iterator over <code>ItemStateLifeCycleListener</code>s.
      */
-    public Iterator getListeners() {
+    public Iterator<ItemStateLifeCycleListener> getListeners() {
         return Collections.unmodifiableCollection(listeners).iterator();
     }
 

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateFactory.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateFactory.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemStateFactory.java Wed Oct 21 11:38:31 2009
@@ -16,6 +16,7 @@
  */
 package org.apache.jackrabbit.jcr2spi.state;
 
+import org.apache.jackrabbit.spi.ChildInfo;
 import org.apache.jackrabbit.spi.NodeId;
 import org.apache.jackrabbit.spi.PropertyId;
 import org.apache.jackrabbit.spi.Name;
@@ -107,7 +108,7 @@
      * @throws ItemNotFoundException
      * @throws RepositoryException
      */
-    public Iterator getChildNodeInfos(NodeId nodeId) throws ItemNotFoundException, RepositoryException;
+    public Iterator<ChildInfo> getChildNodeInfos(NodeId nodeId) throws ItemNotFoundException, RepositoryException;
 
     /**
      * Returns the identifiers of all reference properties that  point to

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java Wed Oct 21 11:38:31 2009
@@ -145,7 +145,7 @@
 
                 // since 'mixinTypeNames' are modified upon save only, no special
                 // merging is required here. just reset the mixinTypeNames.
-                List mixN = Arrays.asList(nState.mixinTypeNames);
+                List<Name> mixN = Arrays.asList(nState.mixinTypeNames);
                 if (mixN.size() != mixinTypeNames.length || !mixN.containsAll(Arrays.asList(mixinTypeNames))) {
                     setMixinTypeNames(nState.mixinTypeNames);
                     modified = true;

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java Wed Oct 21 11:38:31 2009
@@ -178,9 +178,9 @@
      * @throws RepositoryException
      */
     public void adjustReferences(ReferenceChangeTracker refTracker) throws ConstraintViolationException, RepositoryException {
-        Iterator it = refTracker.getReferences();
+        Iterator<PropertyState> it = refTracker.getReferences();
         while (it.hasNext()) {
-            PropertyState propState = (PropertyState) it.next();
+            PropertyState propState = it.next();
             boolean modified = false;
             QValue[] values = propState.getValues();
             QValue[] newVals = new QValue[values.length];
@@ -246,7 +246,7 @@
         NodeState parent = operation.getParentState();
         ItemDefinitionProvider defProvider = mgrProvider.getItemDefinitionProvider();
         QNodeDefinition def = defProvider.getQNodeDefinition(parent.getAllNodeTypeNames(), operation.getNodeName(), operation.getNodeTypeName());
-        List newStates = addNodeState(parent, operation.getNodeName(), operation.getNodeTypeName(), operation.getUuid(), def, options);
+        List<ItemState> newStates = addNodeState(parent, operation.getNodeName(), operation.getNodeTypeName(), operation.getUuid(), def, options);
         operation.addedState(newStates);
 
         transientStateMgr.addOperation(operation);
@@ -454,7 +454,7 @@
         return transientStateMgr.createNewPropertyState(propertyName, parent, pDef, values, propertyType);
     }
 
-    private List addNodeState(NodeState parent, Name nodeName, Name nodeTypeName,
+    private List<ItemState> addNodeState(NodeState parent, Name nodeName, Name nodeTypeName,
                               String uuid, QNodeDefinition definition, int options)
             throws RepositoryException, ConstraintViolationException, AccessDeniedException,
             UnsupportedRepositoryOperationException, NoSuchNodeTypeException,
@@ -478,7 +478,7 @@
             }
         }
 
-        List addedStates = new ArrayList();
+        List<ItemState> addedStates = new ArrayList<ItemState>();
 
         // create new nodeState. NOTE, that the uniqueID is not added to the
         // state for consistency between 'addNode' and importXML

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientISFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientISFactory.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientISFactory.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientISFactory.java Wed Oct 21 11:38:31 2009
@@ -18,6 +18,7 @@
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.apache.jackrabbit.spi.ChildInfo;
 import org.apache.jackrabbit.spi.QNodeDefinition;
 import org.apache.jackrabbit.spi.NodeId;
 import org.apache.jackrabbit.spi.PropertyId;
@@ -33,6 +34,7 @@
 
 import java.util.Iterator;
 import java.util.Collections;
+import java.util.Set;
 
 /**
  * <code>TransientISFactory</code>...
@@ -134,7 +136,7 @@
      * @inheritDoc
      * @see ItemStateFactory#getChildNodeInfos(NodeId)
      */
-    public Iterator getChildNodeInfos(NodeId nodeId) throws ItemNotFoundException, RepositoryException {
+    public Iterator<ChildInfo> getChildNodeInfos(NodeId nodeId) throws ItemNotFoundException, RepositoryException {
         return workspaceStateFactory.getChildNodeInfos(nodeId);
     }
 
@@ -144,7 +146,8 @@
      */
     public Iterator<PropertyId> getNodeReferences(NodeState nodeState, Name propertyName, boolean weak) {
         if (nodeState.getStatus() == Status.NEW) {
-            return Collections.EMPTY_SET.iterator();
+            Set<PropertyId> t = Collections.emptySet();
+            return t.iterator();
         }
         return workspaceStateFactory.getNodeReferences(nodeState, propertyName, weak);
     }

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java Wed Oct 21 11:38:31 2009
@@ -56,26 +56,26 @@
     /**
      * Added states
      */
-    private final Set addedStates = new LinkedHashSet();
+    private final Set<ItemState> addedStates = new LinkedHashSet<ItemState>();
 
     /**
      * Modified states
      */
-    private final Set modifiedStates = new LinkedHashSet();
+    private final Set<ItemState> modifiedStates = new LinkedHashSet<ItemState>();
 
     /**
      * Removed states
      */
-    private final Set removedStates = new LinkedHashSet();
+    private final Set<ItemState> removedStates = new LinkedHashSet<ItemState>();
     /**
      * Stale states
      */
-    private final Set staleStates = new LinkedHashSet();
+    private final Set<ItemState> staleStates = new LinkedHashSet<ItemState>();
 
     /**
      * Set of operations
      */
-    private Set operations = new LinkedHashSet();
+    private Set<Operation> operations = new LinkedHashSet<Operation>();
 
     /**
      *
@@ -86,7 +86,7 @@
     /**
      * @return the operations that have been recorded until now.
      */
-    Iterator getOperations() {
+    Iterator<Operation> getOperations() {
         return operations.iterator();
     }
 
@@ -110,14 +110,14 @@
     /**
      * Create the change log for the tree starting at <code>target</code>. This
      * includes a  check if the ChangeLog to be created is totally 'self-contained'
-     * and independant; items within the scope of this update operation (i.e.
+     * and independent; items within the scope of this update operation (i.e.
      * below the target) must not have dependencies outside of this tree (e.g.
      * moving a node requires that the target node including both old and new
      * parents are saved).
      *
      * @param target
      * @param throwOnStale Throws InvalidItemStateException if either the given
-     * <code>ItemState</code> or any of its decendants is stale and the flag is true.
+     * <code>ItemState</code> or any of its descendants is stale and the flag is true.
      * @return
      * @throws InvalidItemStateException if a stale <code>ItemState</code> is
      * encountered while traversing the state hierarchy. The <code>changeLog</code>
@@ -138,8 +138,8 @@
             throw new InvalidItemStateException(msg);
         }
 
-        Set ops = new LinkedHashSet();
-        Set affectedStates = new LinkedHashSet();
+        Set<Operation> ops = new LinkedHashSet<Operation>();
+        Set<ItemState> affectedStates = new LinkedHashSet<ItemState>();
 
         HierarchyEntry he = target.getHierarchyEntry();
         if (he.getParent() == null) {
@@ -160,8 +160,7 @@
             // not root entry:
             // - check if there is a stale state in the scope (save only)
             if (throwOnStale) {
-                for (Iterator it = staleStates.iterator(); it.hasNext();) {
-                    ItemState state = (ItemState) it.next();
+                for (ItemState state : staleStates) {
                     if (containedInTree(target, state)) {
                         String msg = "Cannot save changes: States has been modified externally.";
                         log.debug(msg);
@@ -189,11 +188,9 @@
             //   check if the affected states listed by the operations are all
             //   listed in the modified,removed or added states collected by this
             //   changelog.
-            for (Iterator it = operations.iterator(); it.hasNext();) {
-                Operation op = (Operation) it.next();
-                Collection opStates = op.getAffectedItemStates();
-                for (Iterator osIt = opStates.iterator(); osIt.hasNext();) {
-                    ItemState state = (ItemState) osIt.next();
+            for (Operation op : operations) {
+                Collection<ItemState> opStates = op.getAffectedItemStates();
+                for (ItemState state : opStates) {
                     if (affectedStates.contains(state)) {
                         // operation needs to be included
                         if (!affectedStates.containsAll(opStates)) {
@@ -289,7 +286,7 @@
      * @param subChangeLog
      */
     void dispose(ChangeLog subChangeLog) {
-        Set affectedStates = subChangeLog.getAffectedStates();
+        Set<ItemState> affectedStates = subChangeLog.getAffectedStates();
         addedStates.removeAll(affectedStates);
         modifiedStates.removeAll(affectedStates);
         removedStates.removeAll(affectedStates);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java Wed Oct 21 11:38:31 2009
@@ -23,6 +23,7 @@
 import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Collections;
+import java.util.Set;
 
 import javax.jcr.ItemExistsException;
 import javax.jcr.ItemNotFoundException;
@@ -33,6 +34,7 @@
 import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
 import org.apache.jackrabbit.jcr2spi.hierarchy.PropertyEntry;
 import org.apache.jackrabbit.jcr2spi.nodetype.ItemDefinitionProvider;
+import org.apache.jackrabbit.spi.ChildInfo;
 import org.apache.jackrabbit.spi.IdFactory;
 import org.apache.jackrabbit.spi.ItemInfo;
 import org.apache.jackrabbit.spi.Name;
@@ -88,7 +90,7 @@
             throws ItemNotFoundException, RepositoryException {
         // build new node state from server information
         try {
-            Iterator infos = service.getItemInfos(sessionInfo, nodeId);
+            Iterator<? extends ItemInfo> infos = service.getItemInfos(sessionInfo, nodeId);
             NodeState nodeState = createItemStates(nodeId, infos, entry, false);
 
             if (nodeState == null) {
@@ -106,7 +108,7 @@
      */
     public NodeState createDeepNodeState(NodeId nodeId, NodeEntry anyParent) throws ItemNotFoundException, RepositoryException {
         try {
-            Iterator infos = service.getItemInfos(sessionInfo, nodeId);
+            Iterator<? extends ItemInfo> infos = service.getItemInfos(sessionInfo, nodeId);
             return createItemStates(nodeId, infos, anyParent, true);
         } catch (PathNotFoundException e) {
             throw new ItemNotFoundException(e.getMessage());
@@ -152,7 +154,7 @@
      * @see ItemStateFactory#getChildNodeInfos(NodeId)
      * @param nodeId
      */
-    public Iterator getChildNodeInfos(NodeId nodeId)
+    public Iterator<ChildInfo> getChildNodeInfos(NodeId nodeId)
             throws ItemNotFoundException, RepositoryException {
         return service.getChildInfos(sessionInfo, nodeId);
     }
@@ -167,7 +169,8 @@
         if (entry.getUniqueID() == null
                 || !entry.hasPropertyEntry(NameConstants.JCR_UUID)) {
             // for sure not referenceable
-            return Collections.EMPTY_SET.iterator();
+            Set<PropertyId> t = Collections.emptySet();
+            return t.iterator();
         }
 
         // nodestate has a unique ID and is potentially mix:referenceable
@@ -176,7 +179,8 @@
             return service.getReferences(sessionInfo, entry.getWorkspaceId(), propertyName, weak);
         } catch (RepositoryException e) {
             log.debug("Unable to determine references to {}", nodeState);
-            return Collections.EMPTY_SET.iterator();
+            Set<PropertyId> t = Collections.emptySet();
+            return t.iterator();
         }
     }
 
@@ -191,7 +195,7 @@
      * @throws ItemNotFoundException
      * @throws RepositoryException
      */
-    private synchronized NodeState createItemStates(NodeId nodeId, Iterator itemInfos,
+    private synchronized NodeState createItemStates(NodeId nodeId, Iterator<? extends ItemInfo> itemInfos,
                                                     NodeEntry entry, boolean isDeep)
             throws ItemNotFoundException, RepositoryException {
         NodeState nodeState;
@@ -222,7 +226,7 @@
         // optimization results in about 25% speed up.
         NodeEntry approxParentEntry = nodeState.getNodeEntry();
         while (infos.hasNext()) {
-            ItemInfo info = (ItemInfo) infos.next();
+            ItemInfo info = infos.next();
             if (info.denotesNode()) {
                 approxParentEntry = createDeepNodeState((NodeInfo) info, approxParentEntry, infos).getNodeEntry();
             } else {
@@ -263,9 +267,9 @@
         }
 
         // update NodeEntry from the information present in the NodeInfo (prop entries)
-        List propNames = new ArrayList();
-        for (Iterator it = info.getPropertyIds(); it.hasNext(); ) {
-            PropertyId pId = (PropertyId) it.next();
+        List<Name> propNames = new ArrayList<Name>();
+        for (Iterator<PropertyId> it = info.getPropertyIds(); it.hasNext(); ) {
+            PropertyId pId = it.next();
             Name propertyName = pId.getName();
             propNames.add(propertyName);
         }
@@ -278,7 +282,7 @@
 
         // unless the child-info are omitted by the SPI impl -> make sure
         // the childentries the nodeentry are initialized or updated.
-        Iterator childInfos = info.getChildInfos();
+        Iterator<ChildInfo> childInfos = info.getChildInfos();
         if (childInfos != null) {
             entry.setNodeEntries(childInfos);
         }
@@ -448,7 +452,7 @@
                                                          Name name, int index,
                                                          ItemInfos infos) throws RepositoryException {
         if (infos != null) {
-            Iterator childInfos = infos.getChildInfos(parentEntry.getWorkspaceId());
+            Iterator<ChildInfo> childInfos = infos.getChildInfos(parentEntry.getWorkspaceId());
             if (childInfos != null) {
                 parentEntry.setNodeEntries(childInfos);
             }
@@ -531,13 +535,13 @@
     /**
      * Iterator
      */
-    private class ItemInfos implements Iterator {
+    private class ItemInfos implements Iterator<ItemInfo> {
 
-        private final List prefetchQueue = new ArrayList();
-        private final Map nodeInfos = new HashMap();
-        private final Iterator infos;
+        private final List<ItemInfo> prefetchQueue = new ArrayList<ItemInfo>();
+        private final Map<NodeId, NodeInfo> nodeInfos = new HashMap<NodeId, NodeInfo>();
+        private final Iterator<? extends ItemInfo> infos;
 
-        private ItemInfos(Iterator infos) {
+        private ItemInfos(Iterator<? extends ItemInfo> infos) {
             super();
             this.infos = infos;
         }
@@ -557,11 +561,11 @@
         /**
          * @see Iterator#next()
          */
-        public Object next() {
+        public ItemInfo next() {
             if (prefetchQueue.isEmpty()) {
                 throw new NoSuchElementException();
             } else {
-                Object next = prefetchQueue.remove(0);
+                ItemInfo next = prefetchQueue.remove(0);
                 if (next instanceof NodeInfo) {
                     nodeInfos.remove(((NodeInfo) next).getId());
                 }
@@ -584,10 +588,10 @@
          * has not been read yet, has already been processed (childInfo is up
          * to date) or does not provide child infos.
          */
-        private Iterator getChildInfos(NodeId parentId) {
-            NodeInfo nodeInfo = (NodeInfo) nodeInfos.get(parentId);
+        private Iterator<ChildInfo> getChildInfos(NodeId parentId) {
+            NodeInfo nodeInfo = nodeInfos.get(parentId);
             while (nodeInfo == null && prefetch()) {
-                nodeInfo = (NodeInfo) nodeInfos.get(parentId);
+                nodeInfo = nodeInfos.get(parentId);
             }
             return nodeInfo == null? null : nodeInfo.getChildInfos();
         }
@@ -597,7 +601,7 @@
          */
         private boolean prefetch() {
             if (infos.hasNext()) {
-                ItemInfo info = (ItemInfo) infos.next();
+                ItemInfo info = infos.next();
                 prefetchQueue.add(info);
                 if (info.denotesNode()) {
                     NodeInfo nodeInfo = (NodeInfo) info;

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/ReferenceChangeTracker.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/ReferenceChangeTracker.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/ReferenceChangeTracker.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/util/ReferenceChangeTracker.java Wed Oct 21 11:38:31 2009
@@ -27,6 +27,8 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Simple helper class that can be used to keep track of uuid mappings
@@ -41,11 +43,11 @@
     /**
      * mapping <original uuid> to <new uuid> of mix:referenceable nodes
      */
-    private final HashMap uuidMap = new HashMap();
+    private final Map<String, String> uuidMap = new HashMap<String, String>();
     /**
      * list of processed reference properties that might need correction
      */
-    private final ArrayList references = new ArrayList();
+    private final List<PropertyState> references = new ArrayList<PropertyState>();
 
     /**
      * Creates a new instance.
@@ -91,7 +93,7 @@
             try {
                 String oldValue = oldReference.getString();
                 if (uuidMap.containsKey(oldValue)) {
-                    String newValue = uuidMap.get(oldValue).toString();
+                    String newValue = uuidMap.get(oldValue);
                     remapped = factory.create(newValue, PropertyType.REFERENCE);
                 }
             } catch (RepositoryException e) {
@@ -113,7 +115,7 @@
         }
     }
 
-    public Iterator getReferences() {
+    public Iterator<PropertyState> getReferences() {
         return references.iterator();
     }
 }

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java Wed Oct 21 11:38:31 2009
@@ -103,11 +103,11 @@
     public VersionIterator getAllVersions() throws RepositoryException {
         checkStatus();
         refreshEntry(vhEntry);
-        Iterator childIter = vhEntry.getNodeEntries();
-        List versionEntries = new ArrayList();
+        Iterator<NodeEntry> childIter = vhEntry.getNodeEntries();
+        List<NodeEntry> versionEntries = new ArrayList<NodeEntry>();
         // all child-nodes except from jcr:versionLabels point to Versions.
         while (childIter.hasNext()) {
-            NodeEntry entry = (NodeEntry) childIter.next();
+            NodeEntry entry = childIter.next();
             if (!NameConstants.JCR_VERSIONLABELS.equals(entry.getName())) {
                 versionEntries.add(entry);
             }
@@ -124,7 +124,7 @@
         // TODO: improve and use lazy loading of versions as needed.
         // TODO: change session.getNodeByUUID to Session.getNodeByIdentifier as soon as implemented
 
-        List versions = new ArrayList();
+        List<Version> versions = new ArrayList<Version>();
         Version rootV = getRootVersion();
         Node vn = session.getNodeByUUID(getVersionableUUID());
         Version v = vn.getBaseVersion();
@@ -247,7 +247,7 @@
         checkValidVersion(version);
         String vUUID = version.getUUID();
 
-        List vlabels = new ArrayList();
+        List<String> vlabels = new ArrayList<String>();
         Name[] qLabels = getQLabels();
         for (int i = 0; i < qLabels.length; i++) {
             String uuid = getVersionByLabel(qLabels[i]).getUUID();
@@ -255,7 +255,7 @@
                 vlabels.add(session.getNameResolver().getJCRName(qLabels[i]));
             }
         }
-        return (String[]) vlabels.toArray(new String[vlabels.size()]);
+        return vlabels.toArray(new String[vlabels.size()]);
     }
 
     /**
@@ -324,15 +324,15 @@
      */
     private Name[] getQLabels() throws RepositoryException {
         refreshEntry(labelNodeEntry);
-        List labelNames = new ArrayList();
-        for (Iterator it = labelNodeEntry.getPropertyEntries(); it.hasNext(); ) {
-            PropertyEntry pe = (PropertyEntry) it.next();
+        List<Name> labelNames = new ArrayList<Name>();
+        for (Iterator<PropertyEntry> it = labelNodeEntry.getPropertyEntries(); it.hasNext(); ) {
+            PropertyEntry pe = it.next();
             if (! NameConstants.JCR_PRIMARYTYPE.equals(pe.getName()) &&
                 ! NameConstants.JCR_MIXINTYPES.equals(pe.getName())) {
                 labelNames.add(pe.getName());
             }
         }
-        return (Name[]) labelNames.toArray(new Name[labelNames.size()]);
+        return labelNames.toArray(new Name[labelNames.size()]);
     }
 
     /**

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManager.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManager.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionManager.java Wed Oct 21 11:38:31 2009
@@ -172,7 +172,7 @@
      * @see #resolveMergeConflict(NodeState,NodeState,boolean)
      * @see javax.jcr.Node#merge(String, boolean)
      */
-    public Iterator merge(NodeState nodeState, String workspaceName, boolean bestEffort) throws NoSuchWorkspaceException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException;
+    public Iterator<NodeId> merge(NodeState nodeState, String workspaceName, boolean bestEffort) throws NoSuchWorkspaceException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException;
 
     /**
      * @param nodeState
@@ -190,7 +190,7 @@
      * @see #resolveMergeConflict(NodeState,NodeState,boolean)
      * @see javax.jcr.Node#merge(String, boolean)
      */
-    public Iterator merge(NodeState nodeState, String workspaceName, boolean bestEffort, boolean isShallow) throws NoSuchWorkspaceException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException;
+    public Iterator<NodeId> merge(NodeState nodeState, String workspaceName, boolean bestEffort, boolean isShallow) throws NoSuchWorkspaceException, AccessDeniedException, MergeException, LockException, InvalidItemStateException, RepositoryException;
 
 
     /**
@@ -239,7 +239,7 @@
      * @throws UnsupportedRepositoryOperationException
      * @throws RepositoryException
      */
-    public Iterator mergeActivity(NodeState activityState) throws UnsupportedRepositoryOperationException, RepositoryException;
+    public Iterator<NodeId> mergeActivity(NodeState activityState) throws UnsupportedRepositoryOperationException, RepositoryException;
 
     /**
      *

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/DocViewImportHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/DocViewImportHandler.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/DocViewImportHandler.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/DocViewImportHandler.java Wed Oct 21 11:38:31 2009
@@ -33,6 +33,7 @@
 import java.io.IOException;
 import java.io.Reader;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Stack;
 
 /**
@@ -49,7 +50,7 @@
      * in the startElement method and is popped from the stack in the
      * endElement method.
      */
-    private final Stack stack = new Stack();
+    private final Stack<Importer.NodeInfo> stack = new Stack<Importer.NodeInfo>();
     // buffer used to merge adjacent character data
     private BufferedStringValue textHandler = new BufferedStringValue();
 
@@ -133,7 +134,7 @@
                         new Importer.NodeInfo(NameConstants.JCR_XMLTEXT, null, null, null);
                 Importer.TextValue[] values =
                         new Importer.TextValue[]{textHandler};
-                ArrayList props = new ArrayList();
+                List<Importer.PropInfo> props = new ArrayList<Importer.PropInfo>();
                 Importer.PropInfo prop =
                         new Importer.PropInfo(NameConstants.JCR_XMLCHARACTERS, PropertyType.STRING, values);
                 props.add(prop);
@@ -177,7 +178,7 @@
             Name nodeTypeName = null;
             Name[] mixinTypes = null;
 
-            ArrayList props = new ArrayList(atts.getLength());
+            List<Importer.PropInfo> props = new ArrayList<Importer.PropInfo>(atts.getLength());
             for (int i = 0; i < atts.getLength(); i++) {
                 if (atts.getURI(i).equals(Name.NS_XMLNS_URI)) {
                     // skip namespace declarations reported as attributes
@@ -287,7 +288,7 @@
         // process buffered character data
         processCharacters();
 
-        Importer.NodeInfo node = (Importer.NodeInfo) stack.peek();
+        Importer.NodeInfo node = stack.peek();
         try {
             // call Importer
             importer.endNode(node);

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/Importer.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/Importer.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/Importer.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/Importer.java Wed Oct 21 11:38:31 2009
@@ -41,7 +41,7 @@
      * context.
      * @throws RepositoryException
      */
-    void startNode(NodeInfo nodeInfo, List propInfos, NamePathResolver resolver)
+    void startNode(NodeInfo nodeInfo, List<PropInfo> propInfos, NamePathResolver resolver)
             throws RepositoryException;
 
     /**

Modified: jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/SessionImporter.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/SessionImporter.java?rev=827966&r1=827965&r2=827966&view=diff
==============================================================================
--- jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/SessionImporter.java (original)
+++ jackrabbit/sandbox/JCR-1456/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/xml/SessionImporter.java Wed Oct 21 11:38:31 2009
@@ -68,7 +68,6 @@
 import java.io.Reader;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Stack;
 import java.util.UUID;
@@ -86,7 +85,7 @@
     private final SessionImpl session;
     private final SessionItemStateManager stateMgr;
 
-    private final Stack parents;
+    private final Stack<NodeState> parents;
 
     private boolean importerClosed;
     private boolean sessionClosed;
@@ -131,7 +130,7 @@
             session.getValidator().checkIsWritable(importTarget, options);
 
             refTracker = new ReferenceChangeTracker();
-            parents = new Stack();
+            parents = new Stack<NodeState>();
             parents.push(importTarget);
         } catch (ItemNotFoundException e) {
             throw new PathNotFoundException(LogUtil.safeGetJCRPath(parentPath, session.getPathResolver()));
@@ -143,21 +142,21 @@
      * {@inheritDoc}
      */
     public void start() throws RepositoryException {
-        // explicitely set status of importer and start listening on session
+        // explicitly set status of importer and start listening on session
         setClosed(false);
     }
 
    /**
      * {@inheritDoc}
      */
-    public void startNode(NodeInfo nodeInfo, List propInfos, NamePathResolver resolver)
+    public void startNode(NodeInfo nodeInfo, List<PropInfo> propInfos, NamePathResolver resolver)
             throws RepositoryException {
        if (isClosed()) {
            // workspace-importer only: ignore if import has been aborted before.
            return;
        }
        checkSession();
-       NodeState parent = (NodeState) parents.peek();
+       NodeState parent = parents.peek();
        if (parent == null) {
            // parent node was skipped, skip this child node also
            parents.push(null); // push null onto stack for skipped node
@@ -226,9 +225,7 @@
        // node state may be 'null' if applicable def is protected
        if (nodeState != null) {
            // process properties
-           Iterator iter = propInfos.iterator();
-           while (iter.hasNext()) {
-               PropInfo pi = (PropInfo) iter.next();
+    	   for (PropInfo pi : propInfos) {
                importProperty(pi, nodeState, resolver);
            }
        }
@@ -632,7 +629,7 @@
      * @throws RepositoryException
      */
     private void checkIncludesMixReferenceable(Importer.NodeInfo nodeInfo) throws RepositoryException {
-        List l = new ArrayList();
+        List<Name> l = new ArrayList<Name>();
         l.add(nodeInfo.getNodeTypeName());
         Name[] mixinNames = nodeInfo.getMixinNames();
         if (mixinNames != null && mixinNames.length > 0) {
@@ -642,7 +639,7 @@
             // shortcut
             return;
         }
-        Name[] ntNames = (Name[]) l.toArray(new Name[l.size()]);
+        Name[] ntNames = l.toArray(new Name[l.size()]);
         EffectiveNodeType ent = session.getEffectiveNodeTypeProvider().getEffectiveNodeType(ntNames);
         if (!ent.includesNodeType(NameConstants.MIX_REFERENCEABLE)) {
             throw new ConstraintViolationException("XML defines jcr:uuid without defining import node to be referenceable.");