You are viewing a plain text version of this content. The canonical link for it is here.
Posted to graffito-commits@incubator.apache.org by cl...@apache.org on 2006/05/17 19:51:31 UTC

svn commit: r407358 - in /incubator/graffito/trunk/jcr/jcr-mapping/src: dtd/ java/org/apache/portals/graffito/jcr/mapper/ java/org/apache/portals/graffito/jcr/mapper/impl/ java/org/apache/portals/graffito/jcr/mapper/model/

Author: clombart
Date: Wed May 17 12:51:29 2006
New Revision: 407358

URL: http://svn.apache.org/viewvc?rev=407358&view=rev
Log:
* Add ParentFolderBeanConverter
* Review inheritance, interface support, ...
* Add new method on the persistence manager : getObject (without class ref). 

Modified:
    incubator/graffito/trunk/jcr/jcr-mapping/src/dtd/graffito-jcr-mapping.dtd
    incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/Mapper.java
    incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/impl/DigesterMapperImpl.java
    incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/BeanDescriptor.java
    incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/MappingDescriptor.java

Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/dtd/graffito-jcr-mapping.dtd
URL: http://svn.apache.org/viewvc/incubator/graffito/trunk/jcr/jcr-mapping/src/dtd/graffito-jcr-mapping.dtd?rev=407358&r1=407357&r2=407358&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/dtd/graffito-jcr-mapping.dtd (original)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/dtd/graffito-jcr-mapping.dtd Wed May 17 12:51:29 2006
@@ -44,6 +44,10 @@
 	discriminator (true|false) "true"
 >
 
+<!--
+   Implement descriptor - This descriptor matches to one java  interface implemented by the class descriptor
+   interfaceName : the full interface name
+-->
 <!ELEMENT implement-descriptor EMPTY>
 
 <!ATTLIST implement-descriptor

Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/Mapper.java
URL: http://svn.apache.org/viewvc/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/Mapper.java?rev=407358&r1=407357&r2=407358&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/Mapper.java (original)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/Mapper.java Wed May 17 12:51:29 2006
@@ -30,5 +30,12 @@
      * @param clazz The java bean class
      * @return The mapping class found for the desired java bean class 
      */
-    public abstract ClassDescriptor getClassDescriptor(Class clazz);
+    public abstract ClassDescriptor getClassDescriptorByClass(Class clazz);
+    
+    /**
+     * Get the mapping defition to be used for a specific JCR node type
+     * @param jcrNodeType the jcr node type
+     * @return The mapping class found for the desired java bean class 
+     */
+    public abstract ClassDescriptor getClassDescriptorByNodeType(String jcrNodeType);    
 }

Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/impl/DigesterMapperImpl.java
URL: http://svn.apache.org/viewvc/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/impl/DigesterMapperImpl.java?rev=407358&r1=407357&r2=407358&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/impl/DigesterMapperImpl.java (original)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/impl/DigesterMapperImpl.java Wed May 17 12:51:29 2006
@@ -134,7 +134,9 @@
             for (int i = 1; i < this.mappingFiles.length; i++) {
                 log.info("Read the xml mapping file : " +  this.mappingFiles[i]);
                 MappingDescriptor anotherMappingDescriptor = this.descriptorReader.loadClassDescriptors(this.mappingFiles[i]);
-                this.mappingDescriptor.getClassDescriptors().putAll(anotherMappingDescriptor.getClassDescriptors());
+                this.mappingDescriptor.getClassDescriptorsByClassName().putAll(anotherMappingDescriptor.getClassDescriptorsByClassName());
+                this.mappingDescriptor.getClassDescriptorsByNodeType().putAll(anotherMappingDescriptor.getClassDescriptorsByNodeType());
+                
             }
         }
         else if (this.mappingStreams != null && this.mappingStreams.length > 0) {
@@ -145,7 +147,8 @@
             for (int i = 1; i < this.mappingStreams.length; i++) {
                 log.info("Read the stream mapping file : " +  this.mappingStreams[i].toString());
                 MappingDescriptor anotherMappingDescriptor = this.descriptorReader.loadClassDescriptors(this.mappingStreams[i]);
-                this.mappingDescriptor.getClassDescriptors().putAll(anotherMappingDescriptor.getClassDescriptors());
+                this.mappingDescriptor.getClassDescriptorsByClassName().putAll(anotherMappingDescriptor.getClassDescriptorsByClassName());
+                this.mappingDescriptor.getClassDescriptorsByNodeType().putAll(anotherMappingDescriptor.getClassDescriptorsByNodeType());
             }
         }
         if (null != this.mappingDescriptor) {
@@ -166,13 +169,13 @@
     }
 
     private List solveReferences(List errors) {
-        for(Iterator it = this.mappingDescriptor.getClassDescriptors().entrySet().iterator(); it.hasNext(); ) {
+        for(Iterator it = this.mappingDescriptor.getClassDescriptorsByClassName().entrySet().iterator(); it.hasNext(); ) {
             Map.Entry entry = (Map.Entry) it.next();
             ClassDescriptor cd = (ClassDescriptor) entry.getValue();
 
             if (null != cd.getExtend() && !"".equals(cd.getExtend())) 
             {
-                ClassDescriptor superClassDescriptor = this.mappingDescriptor.getClassDescriptor(cd.getExtend());
+                ClassDescriptor superClassDescriptor = this.mappingDescriptor.getClassDescriptorByName(cd.getExtend());
 
                 if (null == superClassDescriptor) 
                 {
@@ -198,7 +201,7 @@
             	      for (Iterator iterator = interfaces.iterator(); iterator.hasNext();)
             	      {
             	    	          String interfaceName= (String) iterator.next();
-                          ClassDescriptor interfaceClassDescriptor = this.mappingDescriptor.getClassDescriptor(interfaceName);
+                          ClassDescriptor interfaceClassDescriptor = this.mappingDescriptor.getClassDescriptorByName(interfaceName);
 
                           if (null == interfaceClassDescriptor) 
                           {
@@ -259,9 +262,17 @@
     
     /**
     *
-    * @see org.apache.portals.graffito.jcr.mapper.Mapper#getClassDescriptor(java.lang.Class)
+    * @see org.apache.portals.graffito.jcr.mapper.Mapper#getClassDescriptorByClass(java.lang.Class)
     */
-   public ClassDescriptor getClassDescriptor(Class clazz) {
-       return mappingDescriptor.getClassDescriptor(clazz.getName());
-   }      
+   public ClassDescriptor getClassDescriptorByClass(Class clazz) {
+       return mappingDescriptor.getClassDescriptorByName(clazz.getName());
+   }
+   
+   /**
+   * @see org.apache.portals.graffito.jcr.mapper.Mapper#getClassDescriptorByNodeType(String)
+   */
+  public ClassDescriptor getClassDescriptorByNodeType(String jcrNodeType) {
+      return mappingDescriptor.getClassDescriptorByNodeType(jcrNodeType);
+  }
+   
 }

Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/BeanDescriptor.java
URL: http://svn.apache.org/viewvc/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/BeanDescriptor.java?rev=407358&r1=407357&r2=407358&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/BeanDescriptor.java (original)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/BeanDescriptor.java Wed May 17 12:51:29 2006
@@ -122,13 +122,6 @@
         this.converter = converterClass;
     }
 
-    public BeanConverter getBeanConverter() {
-        if(null == this.beanConverter && null != this.converter) {
-            this.beanConverter = (BeanConverter) ReflectionUtils.newInstance(this.converter);
-        }
-        
-        return this.beanConverter;
-    }
     
     /** Getter for property jcrNodeType.
      *

Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/MappingDescriptor.java
URL: http://svn.apache.org/viewvc/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/MappingDescriptor.java?rev=407358&r1=407357&r2=407358&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/MappingDescriptor.java (original)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/MappingDescriptor.java Wed May 17 12:51:29 2006
@@ -23,6 +23,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.portals.graffito.jcr.mapper.Mapper;
 import org.apache.portals.graffito.jcr.mapper.impl.DigesterMapperImpl;
+import org.apache.portals.graffito.jcr.persistence.PersistenceConstant;
 
 /**
  * This class match to the complete xml mapping files.
@@ -34,7 +35,8 @@
 public class MappingDescriptor {
 	
 	private static final Log log = LogFactory.getLog(MappingDescriptor.class);
-    private HashMap classDescriptors = new HashMap();
+    private HashMap classDescriptorsByClassName = new HashMap();
+    private HashMap classDescriptorsByNodeType = new HashMap();
 
     private Mapper mapper;
 
@@ -60,7 +62,13 @@
             }
         }
 
-        classDescriptors.put(classDescriptor.getClassName(), classDescriptor);
+        classDescriptorsByClassName.put(classDescriptor.getClassName(), classDescriptor);
+        
+        if (null != classDescriptor.getJcrNodeType() && !  "".equals(classDescriptor.getJcrNodeType()) && 
+        		 ! PersistenceConstant.NT_UNSTRUCTURED.equals(classDescriptor.getJcrNodeType()))
+        	 {
+             classDescriptorsByNodeType.put(classDescriptor.getJcrNodeType(), classDescriptor);	
+        	 }
         classDescriptor.setMappingDescriptor(this);
     }
 
@@ -69,18 +77,29 @@
      * @param className the class name
      * @return the class descriptor found or null
      */
-    public ClassDescriptor getClassDescriptor(String className) {
-        return (ClassDescriptor) classDescriptors.get(className);
+    public ClassDescriptor getClassDescriptorByName(String className) {
+        return (ClassDescriptor) classDescriptorsByClassName.get(className);
+    }
+    
+    public ClassDescriptor getClassDescriptorByNodeType(String nodeType)
+    {
+        return (ClassDescriptor) classDescriptorsByNodeType.get(nodeType);	
     }
 
     /**
-     * Get all class descriptors
+     * Get all class descriptors by class name
      * @return all class descriptors found
      */
-    public Map getClassDescriptors() {
-        return classDescriptors;
+    public Map getClassDescriptorsByClassName() {
+        return classDescriptorsByClassName;
+    }
+    /**
+     * Get all class descriptors by class name
+     * @return all class descriptors found
+     */
+    public Map getClassDescriptorsByNodeType() {
+        return classDescriptorsByNodeType;
     }
-
     public Mapper getMapper() {
         return this.mapper;
     }