You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2009/09/18 15:29:06 UTC

svn commit: r816627 - /jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java

Author: reschke
Date: Fri Sep 18 13:29:05 2009
New Revision: 816627

URL: http://svn.apache.org/viewvc?rev=816627&view=rev
Log:
JCR-2087: parametrize generic types

Modified:
    jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java

Modified: jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java?rev=816627&r1=816626&r2=816627&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/nodetype/NodeTypeRegistryImpl.java Fri Sep 18 13:29:05 2009
@@ -234,7 +234,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");
         }
@@ -616,7 +616,7 @@
     }
 
     private void internalUnregister(Name name) {
-        QNodeTypeDefinition ntd = (QNodeTypeDefinition) registeredNTDefs.remove(name);
+        QNodeTypeDefinition ntd = registeredNTDefs.remove(name);
         entCache.invalidate(name);
 
         if (ntd != null) {
@@ -662,11 +662,21 @@
      * 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();
 
+        @SuppressWarnings("unchecked")
+        private Collection<QNodeTypeDefinition> getValues() {
+            return nodetypeDefinitions.values();
+        }
+
+        @SuppressWarnings("unchecked")
+        private Set<Name> getKeySet() {
+            return nodetypeDefinitions.keySet();
+        }
+
         /**
          * Returns the names of those registered node types that have
          * dependencies on the given node type.<p/>
@@ -678,16 +688,16 @@
          * @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();
+            HashSet<Name> names = new HashSet<Name>();
+            Iterator<QNodeTypeDefinition> iter = getValues().iterator();
             while (iter.hasNext()) {
-                QNodeTypeDefinition ntd = (QNodeTypeDefinition) iter.next();
+                QNodeTypeDefinition ntd = iter.next();
                 if (ntd.getDependencies().contains(nodeTypeName)) {
                     names.add(ntd.getName());
                 }
@@ -695,12 +705,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,41 +741,42 @@
             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) {
-            return nodetypeDefinitions.put(key, value);
+        public QNodeTypeDefinition put(Name key, QNodeTypeDefinition value) {
+            return (QNodeTypeDefinition) 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() {
+        @SuppressWarnings("unchecked")
+        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();
             }
@@ -773,7 +784,7 @@
             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());
@@ -783,15 +794,15 @@
             return def;
         }
 
-        public Object remove(Object key) {
+        public QNodeTypeDefinition remove(Object key) {
             return (QNodeTypeDefinition) nodetypeDefinitions.remove(key);
         }
 
         //-------------------------------------------------------< Dumpable >---
         public void dump(PrintStream ps) {
-            Iterator iter = nodetypeDefinitions.values().iterator();
+            Iterator<QNodeTypeDefinition> iter = getValues().iterator();
             while (iter.hasNext()) {
-                QNodeTypeDefinition ntd = (QNodeTypeDefinition) iter.next();
+                QNodeTypeDefinition ntd = iter.next();
                 ps.println(ntd.getName());
                 Name[] supertypes = ntd.getSupertypes();
                 ps.println("\tSupertypes");