stefan      2004/07/07 09:06:40

  Modified:    proposals/jcrri/src/org/apache/slide/jcr/core/nodetype
                        NodeTypeDef.java NodeTypeManagerImpl.java
                        NodeTypeRegistry.java
  Log:
  jcrri
  
  Revision  Changes    Path
  1.6       +3 -3      
jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/nodetype/NodeTypeDef.java
  
  Index: NodeTypeDef.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/nodetype/NodeTypeDef.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- NodeTypeDef.java  30 Jun 2004 14:39:37 -0000      1.5
  +++ NodeTypeDef.java  7 Jul 2004 16:06:40 -0000       1.6
  @@ -30,7 +30,7 @@
   import java.util.Set;
   
   /**
  - * A <code>NodeTypeDef</code> holds the definition of a nodetype.
  + * A <code>NodeTypeDef</code> holds the definition of a node type.
    *
    * @author Stefan Guggisberg
    * @version $Revision$, $Date$
  
  
  
  1.5       +26 -2     
jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/nodetype/NodeTypeManagerImpl.java
  
  Index: NodeTypeManagerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/nodetype/NodeTypeManagerImpl.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- NodeTypeManagerImpl.java  29 Jun 2004 17:11:47 -0000      1.4
  +++ NodeTypeManagerImpl.java  7 Jul 2004 16:06:40 -0000       1.5
  @@ -82,6 +82,30 @@
       }
   
       /**
  +     * @param id
  +     * @return
  +     */
  +    public NodeDef getNodeDef(NodeDefId id) {
  +     ChildNodeDef cnd = ntReg.getNodeDef(id);
  +     if (cnd == null) {
  +         return null;
  +     }
  +     return new NodeDefImpl(cnd, this, nsResolver);
  +    }
  +
  +    /**
  +     * @param id
  +     * @return
  +     */
  +    public PropertyDef getPropDef(PropDefId id) {
  +     PropDef pd = ntReg.getPropDef(id);
  +     if (pd == null) {
  +         return null;
  +     }
  +     return new PropertyDefImpl(pd, this, nsResolver);
  +    }
  +
  +    /**
        * @param name
        * @return
        * @throws NoSuchNodeTypeException
  
  
  
  1.6       +85 -5     
jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/nodetype/NodeTypeRegistry.java
  
  Index: NodeTypeRegistry.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-slide/proposals/jcrri/src/org/apache/slide/jcr/core/nodetype/NodeTypeRegistry.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- NodeTypeRegistry.java     30 Jun 2004 14:39:37 -0000      1.5
  +++ NodeTypeRegistry.java     7 Jul 2004 16:06:40 -0000       1.6
  @@ -88,6 +88,11 @@
       // map of node type names and node type definitions
       private final HashMap registeredNTDefs;
   
  +    // map of id's and property definitions
  +    private final HashMap propDefs;
  +    // map of id's and node definitions
  +    private final HashMap nodeDefs;
  +
       // namespace registry for resolving prefixes and namespace URI's;
       // used for (de)serializing node type definitions
       private final NamespaceRegistryImpl nsReg;
  @@ -136,6 +141,8 @@
   
        entCache = new EffectiveNodeTypeCache();
        registeredNTDefs = new HashMap();
  +     propDefs = new HashMap();
  +     nodeDefs = new HashMap();
   
        // load and register pre-defined (i.e. built-in) node types
        builtInNTDefs = new NodeTypeDefStore();
  @@ -272,6 +279,20 @@
        }
        registeredNTDefs.put(name, ntd);
   
  +     // store poperty & child node definitions of new node type by id
  +     PropDef[] pda = ntd.getPropertyDefs();
  +     for (int i = 0; i < pda.length; i++) {
  +         PropDef def = pda[i];
  +         PropDefId id = new PropDefId(def);
  +         propDefs.put(id, def);
  +     }
  +     ChildNodeDef[] nda = ntd.getChildNodeDefs();
  +     for (int i = 0; i < nda.length; i++) {
  +         ChildNodeDef def = nda[i];
  +         NodeDefId id = new NodeDefId(def);
  +         nodeDefs.put(id, def);
  +     }
  +
        return ent;
       }
   
  @@ -843,10 +864,23 @@
            throw new RepositoryException("not yet implemented");
        }
   
  +     NodeTypeDef ntd = (NodeTypeDef) registeredNTDefs.get(name);
        registeredNTDefs.remove(name);
        // remove effective node type from aggregates cache
        entCache.remove(new QName[]{name});
   
  +     // remove poperty & child node definitions
  +     PropDef[] pda = ntd.getPropertyDefs();
  +     for (int i = 0; i < pda.length; i++) {
  +         PropDefId id = new PropDefId(pda[i]);
  +         propDefs.remove(id);
  +     }
  +     ChildNodeDef[] nda = ntd.getChildNodeDefs();
  +     for (int i = 0; i < nda.length; i++) {
  +         NodeDefId id = new NodeDefId(nda[i]);
  +         nodeDefs.remove(id);
  +     }
  +
        // persist removal of node type definition
        customNTDefs.remove(name);
        try {
  @@ -911,7 +945,15 @@
        if (!registeredNTDefs.containsKey(nodeTypeName)) {
            throw new NoSuchNodeTypeException(nodeTypeName.toString());
        }
  -     return (NodeTypeDef) registeredNTDefs.get(nodeTypeName);
  +     NodeTypeDef def = (NodeTypeDef) registeredNTDefs.get(nodeTypeName);
  +     // return clone to make sure nobody messes around with the 'real' definition
  +     try {
  +         return (NodeTypeDef) def.clone();
  +     } catch (CloneNotSupportedException e) {
  +         // should never get here
  +         log.fatal("internal error", e);
  +         throw new InternalError(e.getMessage());
  +     }
       }
   
       /**
  @@ -922,6 +964,44 @@
        return registeredNTDefs.containsKey(nodeTypeName);
       }
   
  +    /**
  +     * @param id
  +     * @return
  +     */
  +    public ChildNodeDef getNodeDef(NodeDefId id) {
  +     ChildNodeDef def = (ChildNodeDef) nodeDefs.get(id);
  +     if (def == null) {
  +         return null;
  +     }
  +     // return clone to make sure nobody messes around with the 'real' definition
  +     try {
  +         return (ChildNodeDef) def.clone();
  +     } catch (CloneNotSupportedException e) {
  +         // should never get here
  +         log.fatal("internal error", e);
  +         throw new InternalError(e.getMessage());
  +     }
  +    }
  +
  +    /**
  +     * @param id
  +     * @return
  +     */
  +    public PropDef getPropDef(PropDefId id) {
  +     PropDef def = (PropDef) propDefs.get(id);
  +     if (def == null) {
  +         return null;
  +     }
  +     // return clone to make sure nobody messes around with the 'real' definition
  +     try {
  +         return (PropDef) def.clone();
  +     } catch (CloneNotSupportedException e) {
  +         // should never get here
  +         log.fatal("internal error", e);
  +         throw new InternalError(e.getMessage());
  +     }
  +    }
  +
       //----------------------------------------------------------< diagnostics >
       /**
        * Dumps the state of this <code>NodeTypeManager</code> instance.
  @@ -948,7 +1028,7 @@
            PropDef pd[] = ntd.getPropertyDefs();
            for (int i = 0; i < pd.length; i++) {
                ps.print("\tPropertyDef");
  -             ps.println(" (declared in " + pd[i].getDeclaringNodeType() + ")");
  +             ps.println(" (declared in " + pd[i].getDeclaringNodeType() + ") id=" + 
new PropDefId(pd[i]));
                ps.println("\t\tName\t\t" + pd[i].getName());
                String type = pd[i].getRequiredType() == 0 ? "null" : 
PropertyType.nameFromValue(pd[i].getRequiredType());
                ps.println("\t\tRequiredType\t\t" + type);
  @@ -970,7 +1050,7 @@
            ChildNodeDef nd[] = ntd.getChildNodeDefs();
            for (int i = 0; i < nd.length; i++) {
                ps.print("\tNodeDef");
  -             ps.println(" (declared in " + nd[i].getDeclaringNodeType() + ")");
  +             ps.println(" (declared in " + nd[i].getDeclaringNodeType() + ") id=" + 
new NodeDefId(nd[i]));
                ps.println("\t\tName\t" + nd[i].getName());
                QName[] reqPrimaryTypes = nd[i].getRequiredPrimaryTypes();
                if (reqPrimaryTypes != null && reqPrimaryTypes.length > 0) {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to