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 ap...@apache.org on 2006/02/06 21:34:48 UTC

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

Author: apopescu
Date: Mon Feb  6 13:34:45 2006
New Revision: 375382

URL: http://svn.apache.org/viewcvs?rev=375382&view=rev
Log:
DTD updated:
- class-descriptor: added jcrMixinTypes attribute
- bean-descriptor: added inline, converter attributes

Added:
    incubator/graffito/trunk/jcr/jcr-mapping/src/test-config/jcrmapping-testmappings.xml
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/impl/DigesterDescriptorReader.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/ClassDescriptor.java
    incubator/graffito/trunk/jcr/jcr-mapping/src/test/org/apache/portals/graffito/jcr/mapper/DigesterMapperImplTest.java

Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/dtd/graffito-jcr-mapping.dtd
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr/jcr-mapping/src/dtd/graffito-jcr-mapping.dtd?rev=375382&r1=375381&r2=375382&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 Mon Feb  6 13:34:45 2006
@@ -23,13 +23,15 @@
     * className : the className
     * jcrNodeType : the primary jcr node type, it can be nt:unstructured
     * jcrSuperTypes : the jcr super types, optional
+    * jcrMixinTypes: the jcr mixin types (comma separated list) (optional)
 -->
 <!ELEMENT class-descriptor (field-descriptor*, bean-descriptor*, collection-descriptor*)>
 
 <!ATTLIST class-descriptor
 	className CDATA #REQUIRED
 	jcrNodeType CDATA #IMPLIED
-        jcrSuperTypes CDATA #IMPLIED>
+    jcrSuperTypes CDATA #IMPLIED
+    jcrMixinTypes CDATA #IMPLIED>
 
 <!--
     Field descriptor - A field descriptor maps one atomic object attribute (primitive types, String, Long, ...)  into a JCR property
@@ -53,12 +55,12 @@
 	jcrName CDATA #IMPLIED 
 	id (true | false) "false"
 	path (true | false) "false"
-        jcrType (String | Date | Long | Double | Boolean | Binary) #IMPLIED
-        jcrAutoCreated (true | false) "false"
-        jcrMandatory (true | false) "false"
-        jcrOnParentVersion (COPY | VERSION | INITIALIZE | COMPUTE | IGNORE | ABORT) "COPY"
-        jcrProtected (true | false) "false"
-        jcrMultiple (true | false) "false"
+    jcrType (String | Date | Long | Double | Boolean | Binary) #IMPLIED
+    jcrAutoCreated (true | false) "false"
+    jcrMandatory (true | false) "false"
+    jcrOnParentVersion (COPY | VERSION | INITIALIZE | COMPUTE | IGNORE | ABORT) "COPY"
+    jcrProtected (true | false) "false"
+    jcrMultiple (true | false) "false"
 >
 
 <!--
@@ -66,6 +68,8 @@
     * fieldName : the field/attribute name
     * jcrName : the jcr node name (optional). If it is not defined, fieldname is used to specify the jcr node name
     * proxy : Use lazy loading or not. if true, this attributes is not loaded when the main object is retrieved. it will be loaded when the get method is called.
+    * inline: persist/retrieve bean properties from the current node (if true).
+    * converter: fully qualified name of the converter class to be used (default is ObjectConverterImpl)
     * jcrNodeType: defines the child node type, optional
     * jcrAutoCreated (boolean) default is "false"
     * jcrMandatory (boolean) default is "false"
@@ -78,12 +82,14 @@
 	fieldName CDATA #REQUIRED
 	jcrName CDATA #IMPLIED 
 	proxy (true | false) "false" 
+	inline (true | false) "false"
+	converter CDATA #IMPLIED
 	jcrNodeType CDATA #IMPLIED
-        jcrAutoCreated (true | false) "false"   
-        jcrMandatory (true | false) "false"
-        jcrOnParentVersion (COPY | VERSION | INITIALIZE | COMPUTE | IGNORE | ABORT) "COPY"
-        jcrProtected (true | false) "false"
-        jcrSameNameSiblings (true | false) "false"         
+    jcrAutoCreated (true | false) "false"   
+    jcrMandatory (true | false) "false"
+    jcrOnParentVersion (COPY | VERSION | INITIALIZE | COMPUTE | IGNORE | ABORT) "COPY"
+    jcrProtected (true | false) "false"
+    jcrSameNameSiblings (true | false) "false"         
 >
 
 <!--

Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/impl/DigesterDescriptorReader.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/impl/DigesterDescriptorReader.java?rev=375382&r1=375381&r2=375382&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/impl/DigesterDescriptorReader.java (original)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/impl/DigesterDescriptorReader.java Mon Feb  6 13:34:45 2006
@@ -59,6 +59,7 @@
 			digester.addSetProperties("graffito-jcr/class-descriptor", "className", "className");
 			digester.addSetProperties("graffito-jcr/class-descriptor", "jcrNodeType", "jcrNodeType");
             digester.addSetProperties("graffito-jcr/class-descriptor", "jcrSuperTypes", "jcrSuperTypes");
+            digester.addSetProperties("graffito-jcr/class-descriptor", "jcrMixinTypes", "jcrMixinTypesList");
 
 			digester.addSetNext("graffito-jcr/class-descriptor", "addClassDescriptor");
 
@@ -88,6 +89,8 @@
 			digester.addSetProperties("graffito-jcr/class-descriptor/bean-descriptor", "fieldName", "fieldName");
 			digester.addSetProperties("graffito-jcr/class-descriptor/bean-descriptor", "jcrName", "jcrName");
 			digester.addSetProperties("graffito-jcr/class-descriptor/bean-descriptor", "proxy", "proxy");
+            digester.addSetProperties("graffito-jcr/class-descriptor/bean-descriptor", "inline", "inline");
+            digester.addSetProperties("graffito-jcr/class-descriptor/bean-descriptor", "converter", "converter");
             digester.addSetProperties("graffito-jcr/class-descriptor/bean-descriptor", "jcrNodeType", "jcrNodeType");
             digester.addSetProperties("graffito-jcr/class-descriptor/bean-descriptor", "jcrAutoCreated", "jcrAutoCreated");
             digester.addSetProperties("graffito-jcr/class-descriptor/bean-descriptor", "jcrMandatory", "jcrMandatory");

Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/BeanDescriptor.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/BeanDescriptor.java?rev=375382&r1=375381&r2=375382&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 Mon Feb  6 13:34:45 2006
@@ -1,12 +1,12 @@
 /*
  * Copyright 2000-2005 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,175 +15,181 @@
  */
 package org.apache.portals.graffito.jcr.mapper.model;
 
+
+import org.apache.portals.graffito.jcr.persistence.objectconverter.impl.ObjectConverterImpl;
+
 /**
  * BeanDescriptor is used by the mapper to read general information on a bean field
- * 
+ *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Lombart Christophe </a>
- * 
+ * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
  */
-public class BeanDescriptor
-{
+public class BeanDescriptor {
+    private static final String DEFAULT_CONVERTER = ObjectConverterImpl.class.getName();
 
-     private String fieldName;
-     private String jcrName;
-     private boolean proxy; 
-     private String jcrNodeType;
-     private boolean jcrAutoCreated;
-     private boolean jcrMandatory;
-     private String jcrOnParentVersion;
-     private boolean jcrProtected;
-     private boolean jcrSameNameSiblings;
+    private String fieldName;
+    private String jcrName;
+    private boolean proxy;
+    private boolean inline;
+    private String converter = DEFAULT_CONVERTER;
+    private String jcrNodeType;
+    private boolean jcrAutoCreated;
+    private boolean jcrMandatory;
+    private String jcrOnParentVersion;
+    private boolean jcrProtected;
+    private boolean jcrSameNameSiblings;
 
     /**
      * @return Returns the fieldName.
      */
-    public String getFieldName()
-    {
+    public String getFieldName() {
         return fieldName;
     }
+
     /**
      * @param fieldName The fieldName to set.
      */
-    public void setFieldName(String fieldName)
-    {
+    public void setFieldName(String fieldName) {
         this.fieldName = fieldName;
     }
+
     /**
      * @return Returns the jcrName.
      */
-    public String getJcrName()
-    {
+    public String getJcrName() {
         return jcrName;
     }
+
     /**
      * @param jcrName The jcrName to set.
      */
-    public void setJcrName(String jcrName)
-    {
+    public void setJcrName(String jcrName) {
         this.jcrName = jcrName;
     }
-    
-    
+
     /**
      * @return Returns the proxy.
      */
-    public boolean isProxy()
-    {
+    public boolean isProxy() {
         return proxy;
     }
+
     /**
      * @param proxy The proxy to set.
      */
-    public void setProxy(boolean proxy)
-    {
+    public void setProxy(boolean proxy) {
         this.proxy = proxy;
     }
 
+    public boolean isInline() {
+        return this.inline;
+    }
+
+    public void setInline(boolean flag) {
+        this.inline = flag;
+    }
+
+    public String getConverter() {
+        return this.converter;
+    }
+
+    public void setConverter(String converterClass) {
+        this.converter = converterClass;
+    }
+
     /** Getter for property jcrNodeType.
-     * 
+     *
      * @return jcrNodeType
      */
-    public String getJcrNodeType()
-    {
+    public String getJcrNodeType() {
         return jcrNodeType;
     }
 
     /** Setter for property jcrNodeType.
-     * 
+     *
      * @param value jcrNodeType
      */
-    public void setJcrNodeType(String value)
-    {
+    public void setJcrNodeType(String value) {
         this.jcrNodeType = value;
     }
 
     /** Getter for property jcrAutoCreated.
-     * 
+     *
      * @return jcrAutoCreated
      */
-    public boolean isJcrAutoCreated()
-    {
+    public boolean isJcrAutoCreated() {
         return jcrAutoCreated;
     }
 
     /** Setter for property jcrAutoCreated.
-     * 
+     *
      * @param value jcrAutoCreated
      */
-    public void setJcrAutoCreated(boolean value)
-    {
+    public void setJcrAutoCreated(boolean value) {
         this.jcrAutoCreated = value;
     }
 
     /** Getter for property jcrMandatory.
-     * 
+     *
      * @return jcrMandatory
      */
-    public boolean isJcrMandatory()
-    {
+    public boolean isJcrMandatory() {
         return jcrMandatory;
     }
 
     /** Setter for property jcrMandatory.
-     * 
+     *
      * @param value jcrMandatory
      */
-    public void setJcrMandatory(boolean value)
-    {
+    public void setJcrMandatory(boolean value) {
         this.jcrMandatory = value;
     }
 
     /** Getter for property jcrOnParentVersion.
-     * 
+     *
      * @return jcrOnParentVersion
      */
-    public String getJcrOnParentVersion()
-    {
+    public String getJcrOnParentVersion() {
         return jcrOnParentVersion;
     }
 
     /** Setter for property jcrOnParentVersion.
-     * 
+     *
      * @param value jcrOnParentVersion
      */
-    public void setJcrOnParentVersion(String value)
-    {
+    public void setJcrOnParentVersion(String value) {
         this.jcrOnParentVersion = value;
     }
 
     /** Getter for property jcrProtected.
-     * 
+     *
      * @return jcrProtected
      */
-    public boolean isJcrProtected()
-    {
+    public boolean isJcrProtected() {
         return jcrProtected;
     }
 
     /** Setter for property jcrProtected.
-     * 
+     *
      * @param value jcrProtected
      */
-    public void setJcrProtected(boolean value)
-    {
+    public void setJcrProtected(boolean value) {
         this.jcrProtected = value;
     }
 
     /** Getter for property jcrSameNameSiblings.
-     * 
+     *
      * @return jcrSameNameSiblings
      */
-    public boolean isJcrSameNameSiblings()
-    {
+    public boolean isJcrSameNameSiblings() {
         return jcrSameNameSiblings;
     }
 
     /** Setter for property jcrSameNameSiblings.
-     * 
+     *
      * @param value jcrSameNameSiblings
      */
-    public void setJcrSameNameSiblings(boolean value)
-    {
+    public void setJcrSameNameSiblings(boolean value) {
         this.jcrSameNameSiblings = value;
     }
 }

Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/ClassDescriptor.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/ClassDescriptor.java?rev=375382&r1=375381&r2=375382&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/ClassDescriptor.java (original)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/mapper/model/ClassDescriptor.java Mon Feb  6 13:34:45 2006
@@ -1,12 +1,12 @@
 /*
  * Copyright 2000-2005 The Apache Software Foundation.
- * 
+ *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,110 +15,100 @@
  */
 package org.apache.portals.graffito.jcr.mapper.model;
 
+
 import java.util.Collection;
 import java.util.HashMap;
 
 /**
- * 
+ *
  * ClassDescriptor is used by the mapper to read general information on a class
- * 
+ *
  * @author <a href="mailto:christophe.lombart@sword-technologies.com">Lombart Christophe </a>
- * 
+ * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
  */
-public class ClassDescriptor
-{
+public class ClassDescriptor {
+    private String className;
+    private String jcrNodeType;
+    private String jcrSuperTypes;
+    private String[] jcrMixinTypes = new String[0];
+    private FieldDescriptor idFieldDescriptor;
+    private FieldDescriptor pathFieldDescriptor;
+
+    private HashMap fieldDescriptors = new HashMap();
+    private HashMap beanDescriptors = new HashMap();
+    private HashMap collectionDescriptors = new HashMap();
+    private HashMap fieldNames = new HashMap();
 
-     private String className;
-     private String jcrNodeType;
-     private String jcrSuperTypes;
-     private FieldDescriptor idFieldDescriptor;
-     private FieldDescriptor pathFieldDescriptor;
-     
-     private HashMap fieldDescriptors = new HashMap();
-     private HashMap beanDescriptors = new HashMap();
-     private HashMap collectionDescriptors = new HashMap();
-     private HashMap fieldNames = new HashMap();
-    
-    
     /**
      * @return Returns the className.
      */
-    public String getClassName()
-    {
+    public String getClassName() {
         return className;
     }
+
     /**
      * @param className The className to set.
      */
-    public void setClassName(String className)
-    {
+    public void setClassName(String className) {
         this.className = className;
     }
-    
-    
+
     /**
      * @return Returns the jcrNodeType.
      */
-    public String getJcrNodeType()
-    {
+    public String getJcrNodeType() {
         return jcrNodeType;
     }
+
     /**
      * @param jcrNodeType The jcrNodeType to set.
      */
-    public void setJcrNodeType(String jcrNodeType)
-    {
+    public void setJcrNodeType(String jcrNodeType) {
         this.jcrNodeType = jcrNodeType;
     }
-    
+
     /**
      * Add a new FielDescriptor
      * @param fieldDescriptor the new field descriptor to add
      */
-    public void addFieldDescriptor(FieldDescriptor fieldDescriptor )
-    {
+    public void addFieldDescriptor(FieldDescriptor fieldDescriptor) {
         fieldDescriptor.setClassDescriptor(this);
-        if (fieldDescriptor.isId())
-        {
-           this.idFieldDescriptor = fieldDescriptor;
+        if (fieldDescriptor.isId()) {
+            this.idFieldDescriptor = fieldDescriptor;
         }
-        
-        if (fieldDescriptor.isPath())
-        {
-        	this.pathFieldDescriptor = fieldDescriptor;
+
+        if (fieldDescriptor.isPath()) {
+            this.pathFieldDescriptor = fieldDescriptor;
         }
-        
+
         fieldDescriptors.put(fieldDescriptor.getFieldName(), fieldDescriptor);
         fieldNames.put(fieldDescriptor.getFieldName(), fieldDescriptor.getJcrName());
     }
-    
+
     /**
      * Get the FieldDescriptor to used for a specific java bean attribute
      * @param fieldName The java bean attribute name
-     * 
+     *
      * @return the {@link FieldDescriptor} found or null
      */
-    public FieldDescriptor getFieldDescriptor(String fieldName)
-    {
+    public FieldDescriptor getFieldDescriptor(String fieldName) {
         return (FieldDescriptor) fieldDescriptors.get(fieldName);
     }
-    
+
     /**
-     * 
+     *
      * @return all {@link FieldDescriptor} defined in this ClassDescriptor
      */
-    public Collection getFieldDescriptors()
-    {
-        return fieldDescriptors.values();   
+    public Collection getFieldDescriptors() {
+        return fieldDescriptors.values();
     }
-    
+
     /**
      * Add a new BeanDescriptor
      * @param beanDescriptor the new bean descriptor to add
      */
-                  
-    public void addBeanDescriptor(BeanDescriptor beanDescriptor )
-    {
+
+    public void addBeanDescriptor(BeanDescriptor beanDescriptor) {
         beanDescriptors.put(beanDescriptor.getFieldName(), beanDescriptor);
         fieldNames.put(beanDescriptor.getFieldName(), beanDescriptor.getJcrName());
     }
@@ -126,31 +116,26 @@
     /**
      * Get the BeanDescriptor to used for a specific java bean attribute
      * @param fieldName The java bean attribute name
-     * 
+     *
      * @return the {@link BeanDescriptor} found or null
      */
-    public BeanDescriptor getBeanDescriptor(String fieldName)
-    {
+    public BeanDescriptor getBeanDescriptor(String fieldName) {
         return (BeanDescriptor) beanDescriptors.get(fieldName);
     }
-    
-    
-    /**     
+
+    /**
      * @return all {@link BeanDescriptor} defined in this ClassDescriptor
      */
-    public Collection getBeanDescriptors()
-    {
-        return beanDescriptors.values();   
+    public Collection getBeanDescriptors() {
+        return beanDescriptors.values();
     }
 
-    
     /**
      * Add a new CollectionDescriptor
      * @param collectionDescriptor the new collection descriptor to add
      */
-                  
-    public void addCollectionDescriptor(CollectionDescriptor collectionDescriptor )
-    {
+
+    public void addCollectionDescriptor(CollectionDescriptor collectionDescriptor) {
         collectionDescriptor.setClassDescriptor(this);
         collectionDescriptors.put(collectionDescriptor.getFieldName(), collectionDescriptor);
         fieldNames.put(collectionDescriptor.getFieldName(), collectionDescriptor.getJcrName());
@@ -159,72 +144,88 @@
     /**
      * Get the CollectionDescriptor to used for a specific java bean attribute
      * @param fieldName The java bean attribute name
-     * 
+     *
      * @return the {@link CollectionDescriptor} found or null
      */
-    public CollectionDescriptor getCollectionDescriptor(String fieldName)
-    {
+    public CollectionDescriptor getCollectionDescriptor(String fieldName) {
         return (CollectionDescriptor) collectionDescriptors.get(fieldName);
     }
-        
+
     /**
      * @return all {@link BeanDescriptor} defined in this ClassDescriptor
      */
-    public Collection getCollectionDescriptors()
-    {
-        return collectionDescriptors.values();   
+    public Collection getCollectionDescriptors() {
+        return collectionDescriptors.values();
     }
-    
+
     /**
-     * @return the fieldDescriptor ID  
+     * @return the fieldDescriptor ID
      */
-    public FieldDescriptor getIdFieldDescriptor()
-    {
+    public FieldDescriptor getIdFieldDescriptor() {
         return idFieldDescriptor;
     }
-    
+
     /**
-     * @return the fieldDescriptor path  
+     * @return the fieldDescriptor path
      */
-    public FieldDescriptor getPathFieldDescriptor()
-    {
+    public FieldDescriptor getPathFieldDescriptor() {
         return pathFieldDescriptor;
     }
-    
+
     /**
-     * Check if this class has an ID 
+     * Check if this class has an ID
      * @return true if the class has an ID
      */
-    public boolean hasIdField()
-    {
+    public boolean hasIdField() {
         return this.idFieldDescriptor != null;
     }
-    
+
     /**
      * Get the JCR name used for one of the object attributes
      * @param fieldName the object attribute name (can be an atomic field, bean field or a collection field)
-     * @return the JCR name found 
+     * @return the JCR name found
      */
-    public String getJcrName(String fieldName)
-    {
-    	return (String) this.fieldNames.get(fieldName);
+    public String getJcrName(String fieldName) {
+        return (String) this.fieldNames.get(fieldName);
     }
 
     /** Get the JCR node super types.
-     * 
+     *
      * @return jcrSuperTypes
      */
-    public String getJcrSuperTypes()
-    {
+    public String getJcrSuperTypes() {
         return jcrSuperTypes;
     }
 
     /** Setter for JCR super types.
-     * 
+     *
      * @param superTypes Comma separated list of JCR node super types
      */
-    public void setJcrSuperTypes(String superTypes)
-    {
+    public void setJcrSuperTypes(String superTypes) {
         this.jcrSuperTypes = superTypes;
+    }
+
+    /**
+     * Retrieve the mixin types.
+     * 
+     * @return array of mixin types
+     */
+    public String[] getJcrMixinTypes() {
+        return this.jcrMixinTypes;
+    }
+
+    /**
+     * Sets a comma separated list of mixin types.
+     *
+     * @param mixinTypes command separated list of mixins
+     */
+    public void setJcrMixinTypesList(String mixinTypes) {
+        if(null != mixinTypes) {
+            setJcrMixinTypes(mixinTypes.split(","));
+        }
+    }
+
+    public void setJcrMixinTypes(String[] mixinTypes) {
+        jcrMixinTypes = mixinTypes;
     }
 }

Added: incubator/graffito/trunk/jcr/jcr-mapping/src/test-config/jcrmapping-testmappings.xml
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr/jcr-mapping/src/test-config/jcrmapping-testmappings.xml?rev=375382&view=auto
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/test-config/jcrmapping-testmappings.xml (added)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/test-config/jcrmapping-testmappings.xml Mon Feb  6 13:34:45 2006
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE graffito-jcr PUBLIC "-//The Apache Software Foundation//DTD Repository//EN" "./src/dtd/graffito-jcr-mapping.dtd">
+<graffito-jcr>
+    
+  
+	<class-descriptor className="org.apache.portals.graffito.jcr.testmodel.Folder" jcrNodeType="nt:unstructured">
+		<!-- Field-descriptor is used to map simple attributes to jcr property -->
+		<field-descriptor fieldName="path" path="true" />
+		<field-descriptor fieldName="name" jcrName="name" />
+		<field-descriptor fieldName="description" jcrName="description" />
+		<field-descriptor fieldName="title" jcrName="title" />
+		<field-descriptor fieldName="creationDate" jcrName="creationDate" />
+		<field-descriptor fieldName="lastModified" jcrName="lastModified" />
+
+	</class-descriptor>
+
+	<!--
+		The following classes are used to test object associations
+		A has an assocition (1..1) with B (field b) => B is mapped as subnode in A
+		A has a collection of C (field "collection" ) => there are n subnodes used to map the "C" collection 
+		
+	-->
+	<class-descriptor
+		className="org.apache.portals.graffito.jcr.testmodel.A"
+		jcrNodeType="nt:unstructured"
+		jcrMixinTypes="mixin:a,mixin:b">
+		<!-- Field-descriptor is used to map simple attributes to jcr property -->
+		<field-descriptor fieldName="path" path="true" />
+		<field-descriptor fieldName="a1" jcrName="a1" />
+		<field-descriptor fieldName="a2" jcrName="a2" />
+
+		<!-- bean-descriptor is used to map a bean into subnode
+			* The definition of the associated class has to be defined in this mapping file 
+			* proxy="true" => use lazy laoding for this attribute b when retrieving A
+		-->
+		<bean-descriptor fieldName="b" 
+						 jcrName="b" 
+						 proxy="false" 
+						 inline="true"
+						 jcrNodeType="nt:unstructured"
+        				 jcrAutoCreated="false" 
+        				 jcrMandatory="false" 
+        				 jcrOnParentVersion="IGNORE"
+        				 jcrProtected="false" 
+        				 jcrSameNameSiblings="false" />
+
+		<!-- 
+			Use the default collection mapping stategy and the default collection type (can be a Vector, an ArrayList, a Collection or a List) 
+			The default collection mapping strategy map a collection under an extra JCR node (specify by the jcrName).
+			
+		-->
+		<collection-descriptor fieldName="collection" jcrName="collection" proxy="false"
+        elementClassName="org.apache.portals.graffito.jcr.testmodel.C" jcrNodeType="graffito:C"
+        jcrAutoCreated="false" jcrMandatory="false" jcrOnParentVersion="IGNORE"
+        jcrProtected="false" jcrSameNameSiblings="false"/>
+        
+		<collection-descriptor fieldName="emptyCollection" jcrName="emptyCollection" proxy="false"
+        elementClassName="org.apache.portals.graffito.jcr.testmodel.C" />
+		
+	</class-descriptor>
+
+	<class-descriptor className="org.apache.portals.graffito.jcr.testmodel.B"  jcrNodeType="nt:unstructured" jcrSuperTypes="nt:base">
+		<!-- Field-descriptor is used to map simple attributes to jcr property -->
+
+		<field-descriptor fieldName="b1" jcrName="b1" jcrType="String" jcrAutoCreated="false" jcrMandatory="false"
+        jcrOnParentVersion="IGNORE" jcrProtected="false" jcrMultiple="false" />
+		
+        <field-descriptor fieldName="b2" jcrName="b2" jcrType="String" jcrAutoCreated="true" jcrMandatory="true"
+        jcrOnParentVersion="COPY" jcrProtected="true" jcrMultiple="true" />
+
+	</class-descriptor>
+
+	<class-descriptor className="org.apache.portals.graffito.jcr.testmodel.C" jcrNodeType="graffito:C">
+		<!-- Field-descriptor is used to map simple attributes to jcr property -->
+		<field-descriptor fieldName="id" jcrName="graffito:id" 	id="true" />
+		<field-descriptor fieldName="name" jcrName="graffito:name" />
+	</class-descriptor>
+
+
+	<class-descriptor className="org.apache.portals.graffito.jcr.testmodel.Page" jcrNodeType="graffito:page">
+		<field-descriptor fieldName="path" path="true" />
+		<field-descriptor fieldName="title" jcrName="graffito:title" />
+		<collection-descriptor fieldName="paragraphs" proxy="false" 
+		                       elementClassName="org.apache.portals.graffito.jcr.testmodel.Paragraph" 
+		                       collectionConverter="org.apache.portals.graffito.jcr.persistence.collectionconverter.impl.NTCollectionConverterImpl" />
+	</class-descriptor>
+
+	<class-descriptor className="org.apache.portals.graffito.jcr.testmodel.Paragraph" jcrNodeType="graffito:paragraph">
+		<field-descriptor fieldName="path" path="true" />
+		<field-descriptor fieldName="text" jcrName="graffito:text"/>
+	</class-descriptor>
+
+
+	<class-descriptor className="org.apache.portals.graffito.jcr.testmodel.hashmap.Main" jcrNodeType="nt:unstructured">
+		<field-descriptor fieldName="path" path="true" />
+		<field-descriptor fieldName="text" jcrName="text" />
+		<collection-descriptor fieldName="elements" proxy="false" 
+		                       elementClassName="org.apache.portals.graffito.jcr.testmodel.hashmap.Element" 
+		                       collectionConverter="org.apache.portals.graffito.jcr.persistence.collectionconverter.impl.NTCollectionConverterImpl" 
+		                       collectionClassName="org.apache.portals.graffito.jcr.testmodel.hashmap.HashMapElement" />
+		                       
+	</class-descriptor>
+
+	<class-descriptor className="org.apache.portals.graffito.jcr.testmodel.hashmap.Element" jcrNodeType="graffito:element">
+		<field-descriptor fieldName="id" jcrName="graffito:id"  />
+		<field-descriptor fieldName="text" jcrName="graffito:text" />
+	</class-descriptor>
+</graffito-jcr>
+ 
\ No newline at end of file

Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/test/org/apache/portals/graffito/jcr/mapper/DigesterMapperImplTest.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr/jcr-mapping/src/test/org/apache/portals/graffito/jcr/mapper/DigesterMapperImplTest.java?rev=375382&r1=375381&r2=375382&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/test/org/apache/portals/graffito/jcr/mapper/DigesterMapperImplTest.java (original)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/test/org/apache/portals/graffito/jcr/mapper/DigesterMapperImplTest.java Mon Feb  6 13:34:45 2006
@@ -26,6 +26,7 @@
 import org.apache.portals.graffito.jcr.mapper.model.ClassDescriptor;
 import org.apache.portals.graffito.jcr.mapper.model.CollectionDescriptor;
 import org.apache.portals.graffito.jcr.mapper.model.FieldDescriptor;
+import org.apache.portals.graffito.jcr.persistence.objectconverter.impl.ObjectConverterImpl;
 import org.apache.portals.graffito.jcr.testmodel.A;
 import org.apache.portals.graffito.jcr.testmodel.B;
 
@@ -36,8 +37,6 @@
  */
 public class DigesterMapperImplTest extends TestCase
 {
-
-    
     /**
      * <p>Defines the test case name for junit.</p>
      * @param testName The test case name.
@@ -77,13 +76,14 @@
     {
         try
         {
-            DigesterMapperImpl mapper = new DigesterMapperImpl("./src/test-config/jcrmapping.xml");
+            DigesterMapperImpl mapper = new DigesterMapperImpl("./src/test-config/jcrmapping-testmappings.xml");
             assertNotNull("Mapper is null", mapper);
             
             ClassDescriptor classDescriptor = mapper.getClassDescriptor(A.class);
             assertNotNull("ClassDescriptor is null", classDescriptor);
             assertTrue("Invalid classname", classDescriptor.getClassName().equals(A.class.getName()));
             assertTrue("Invalid path field", classDescriptor.getPathFieldDescriptor().getFieldName().equals("path"));
+            assertEquals("Invalid mixins", "mixin:a", classDescriptor.getJcrMixinTypes()[0] );
             
             FieldDescriptor fieldDescriptor = classDescriptor.getFieldDescriptor("a1");
             assertNotNull("FieldDescriptor is null", fieldDescriptor);
@@ -92,6 +92,10 @@
             BeanDescriptor beanDescriptor = classDescriptor.getBeanDescriptor("b");
             assertNotNull("BeanDescriptor is null", beanDescriptor);
             assertTrue("Invalid jcrName for field b", beanDescriptor.getJcrName().equals("b"));
+            assertEquals("Invalid bean-descriptor inline", true, beanDescriptor.isInline());
+            assertEquals("Invalid bean default descriptor", 
+                         ObjectConverterImpl.class.getName(),
+                         beanDescriptor.getConverter());
             
             CollectionDescriptor collectionDescriptor = classDescriptor.getCollectionDescriptor("collection");
             assertNotNull("CollectionDescriptor is null", collectionDescriptor);