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/08 10:04:43 UTC
svn commit: r375909 - in /incubator/graffito/trunk/jcr/jcr-mapping/src:
java/org/apache/portals/graffito/jcr/mapper/model/
java/org/apache/portals/graffito/jcr/persistence/atomictypeconverter/impl/
java/org/apache/portals/graffito/jcr/persistence/objec...
Author: apopescu
Date: Wed Feb 8 02:04:41 2006
New Revision: 375909
URL: http://svn.apache.org/viewcvs?rev=375909&view=rev
Log:
bean-descriptor:
- inline (done)
- converter (skeleton)
Added:
incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/atomictypeconverter/impl/NullTypeConverterImpl.java
incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/objectconverter/BeanConverter.java
Modified:
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/persistence/objectconverter/impl/ObjectConverterImpl.java
incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/reflection/ReflectionUtils.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/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=375909&r1=375908&r2=375909&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 Feb 8 02:04:41 2006
@@ -16,7 +16,9 @@
package org.apache.portals.graffito.jcr.mapper.model;
+import org.apache.portals.graffito.jcr.persistence.objectconverter.BeanConverter;
import org.apache.portals.graffito.jcr.persistence.objectconverter.impl.ObjectConverterImpl;
+import org.apache.portals.graffito.jcr.reflection.ReflectionUtils;
/**
* BeanDescriptor is used by the mapper to read general information on a bean field
@@ -25,13 +27,12 @@
* @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
*/
public class BeanDescriptor {
- private static final String DEFAULT_CONVERTER = ObjectConverterImpl.class.getName();
-
private String fieldName;
private String jcrName;
private boolean proxy;
private boolean inline;
- private String converter = DEFAULT_CONVERTER;
+ private String converter;
+ private BeanConverter beanConverter;
private String jcrNodeType;
private boolean jcrAutoCreated;
private boolean jcrMandatory;
@@ -81,22 +82,52 @@
this.proxy = proxy;
}
+ /**
+ * Are the current bean properties inlined in the parent
+ *
+ * @return <tt>true</tt> if bean's properties are inlined in the parent node
+ */
public boolean isInline() {
return this.inline;
}
+ /**
+ * Sets if the bean's properties should be inlined in the parent
+ * instead of being persisted on a subnode
+ *
+ * @param flag <tt>true</tt> if the bean properties should be inlined
+ */
public void setInline(boolean flag) {
this.inline = flag;
}
+ /**
+ * Get the <code>BeanConverter</code> fully qualified name or <tt>null</tt>
+ * if none specified by the bean descriptor.
+ *
+ * @return fully qualified class name or <tt>null</tt>
+ */
public String getConverter() {
return this.converter;
}
+ /**
+ * Sets the fully qualified name of a <code>BeanConverter</code> to be used.
+ *
+ * @param converterClass a fully qualified class name
+ */
public void setConverter(String converterClass) {
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.
*
* @return jcrNodeType
Added: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/atomictypeconverter/impl/NullTypeConverterImpl.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/atomictypeconverter/impl/NullTypeConverterImpl.java?rev=375909&view=auto
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/atomictypeconverter/impl/NullTypeConverterImpl.java (added)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/atomictypeconverter/impl/NullTypeConverterImpl.java Wed Feb 8 02:04:41 2006
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2004-2005 The Apache Software Foundation or its licensors,
+ * as applicable.
+ *
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.portals.graffito.jcr.persistence.atomictypeconverter.impl;
+
+
+import javax.jcr.Value;
+import javax.jcr.ValueFactory;
+
+import org.apache.portals.graffito.jcr.persistence.atomictypeconverter.AtomicTypeConverter;
+
+/**
+ * Double Type Converter
+ *
+ * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
+ */
+public class NullTypeConverterImpl implements AtomicTypeConverter {
+
+ /**
+ *
+ * @see org.apache.portals.graffito.jcr.persistence.atomictypeconverter.AtomicTypeConverter#getValue(java.lang.Object)
+ */
+ public Value getValue(ValueFactory valueFactory, Object propValue) {
+ return null;
+ }
+
+ /**
+ *
+ * @see org.apache.portals.graffito.jcr.persistence.atomictypeconverter.AtomicTypeConverter#getObject(javax.jcr.Value)
+ */
+ public Object getObject(Value value) {
+ return null;
+ }
+
+ /**
+ *
+ * @see org.apache.portals.graffito.jcr.persistence.atomictypeconverter.AtomicTypeConverter#getStringValue(java.lang.Object)
+ */
+ public String getStringValue(Object object) {
+ return null;
+ }
+}
Added: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/objectconverter/BeanConverter.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/objectconverter/BeanConverter.java?rev=375909&view=auto
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/objectconverter/BeanConverter.java (added)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/objectconverter/BeanConverter.java Wed Feb 8 02:04:41 2006
@@ -0,0 +1,82 @@
+/*
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.portals.graffito.jcr.persistence.objectconverter;
+
+
+import javax.jcr.Node;
+import javax.jcr.Session;
+
+import org.apache.portals.graffito.jcr.exception.PersistenceException;
+import org.apache.portals.graffito.jcr.mapper.Mapper;
+
+/**
+ * Convert any kind of beans into JCR nodes & properties
+ *
+ * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
+ */
+public interface BeanConverter {
+ /**
+ * Insert the object
+ *
+ * @param session the JCR session
+ * @param parentNode The parent node used to store the new JCR element (object)
+ * @param nodeName The node name used to store the object
+ * @param object the object to insert
+ * @throws PersistenceException when it is not possible to insert the object
+ */
+ public void insert(Session session,
+ Node parentNode,
+ Mapper mapper,
+ String beanName,
+ Object object)
+ throws PersistenceException;
+
+ /**
+ * Update the object
+ *
+ * @param session the JCR session
+ * @param parentNode The parent node used to store the new JCR element (object)
+ * @param nodeName The node name used to store the object
+ * @param object the object to update
+ * @throws PersistenceException when it is not possible to update the object
+ */
+ public void update(Session session,
+ Node parentNode,
+ Mapper mapper,
+ String beanName,
+ Object object)
+ throws PersistenceException;
+
+ /**
+ * ???
+ */
+ public Object getObject(Session session,
+ Node parentNode,
+ Mapper mapper,
+ String beanName,
+ Class beanClass)
+ throws PersistenceException;
+
+
+ /**
+ * ???
+ */
+ void remove(Session session,
+ Node parentNode,
+ Mapper mapper,
+ String beanName)
+ throws PersistenceException;
+}
Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/objectconverter/impl/ObjectConverterImpl.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/objectconverter/impl/ObjectConverterImpl.java?rev=375909&r1=375908&r2=375909&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/objectconverter/impl/ObjectConverterImpl.java (original)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/persistence/objectconverter/impl/ObjectConverterImpl.java Wed Feb 8 02:04:41 2006
@@ -16,7 +16,6 @@
package org.apache.portals.graffito.jcr.persistence.objectconverter.impl;
-import java.lang.reflect.InvocationTargetException;
import java.util.Iterator;
import java.util.Map;
@@ -26,15 +25,12 @@
import javax.jcr.Session;
import javax.jcr.Value;
import javax.jcr.ValueFactory;
-import javax.jcr.ValueFormatException;
import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NoSuchNodeTypeException;
import javax.jcr.nodetype.PropertyDefinition;
import javax.jcr.version.VersionException;
-import org.apache.commons.beanutils.ConstructorUtils;
-import org.apache.commons.beanutils.PropertyUtils;
import org.apache.portals.graffito.jcr.exception.JcrMappingException;
import org.apache.portals.graffito.jcr.exception.PersistenceException;
import org.apache.portals.graffito.jcr.mapper.Mapper;
@@ -44,6 +40,7 @@
import org.apache.portals.graffito.jcr.mapper.model.FieldDescriptor;
import org.apache.portals.graffito.jcr.persistence.atomictypeconverter.AtomicTypeConverter;
import org.apache.portals.graffito.jcr.persistence.atomictypeconverter.AtomicTypeConverterProvider;
+import org.apache.portals.graffito.jcr.persistence.atomictypeconverter.impl.NullTypeConverterImpl;
import org.apache.portals.graffito.jcr.persistence.collectionconverter.CollectionConverter;
import org.apache.portals.graffito.jcr.persistence.collectionconverter.ManageableCollection;
import org.apache.portals.graffito.jcr.persistence.collectionconverter.ManageableCollectionUtil;
@@ -59,6 +56,8 @@
* @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru Popescu</a>
*/
public class ObjectConverterImpl implements ObjectConverter {
+ private static final AtomicTypeConverter NULL_CONVERTER = new NullTypeConverterImpl();
+
private Mapper mapper;
private AtomicTypeConverterProvider atomicTypeConverterProvider;
@@ -124,12 +123,8 @@
* @see org.apache.portals.graffito.jcr.persistence.objectconverter.ObjectConverter#insert(javax.jcr.Session, javax.jcr.Node, java.lang.String, java.lang.Object)
*/
public void insert(Session session, Node parentNode, String nodeName, Object object) {
- ClassDescriptor classDescriptor = mapper.getClassDescriptor(object.getClass());
- if (classDescriptor == null) {
- throw new JcrMappingException("Class of type: " + object.getClass().getName()
- + " is not JCR persistable. Maybe element 'class-descriptor' for this type in mapping file is missing");
- }
-
+ ClassDescriptor classDescriptor = getClassDescriptor(object.getClass());
+
String jcrNodeType = classDescriptor.getJcrNodeType();
if ((jcrNodeType == null) || jcrNodeType.equals("")) {
throw new JcrMappingException("Undefined node type for " + parentNode);
@@ -197,13 +192,7 @@
*/
public void update(Session session, Node parentNode, String nodeName, Object object) {
try {
- ClassDescriptor classDescriptor = mapper.getClassDescriptor(object.getClass());
- if (classDescriptor == null) {
- throw new JcrMappingException("Class of type: "
- + object.getClass().getName()
- + " is not JCR persistable. Maybe element 'class-descriptor' for this type in mapping file is missing");
- }
-
+ ClassDescriptor classDescriptor = getClassDescriptor(object.getClass());
Node objectNode = parentNode.getNode(nodeName);
storeSimpleFields(session, object, classDescriptor, objectNode);
@@ -231,21 +220,15 @@
return null;
}
- ClassDescriptor classDescriptor = mapper.getClassDescriptor(clazz);
- if (classDescriptor == null) {
- throw new JcrMappingException("Class of type: " + clazz.getName()
- + " is not JCR persistable. Maybe element 'class-descriptor' for this type in mapping file is missing");
- }
-
+ ClassDescriptor classDescriptor = getClassDescriptor(clazz);
Node node = (Node) session.getItem(path);
Object object = ReflectionUtils.newInstance(clazz);
retrieveSimpleFields(session, classDescriptor, node, object);
- retrieveBeanFields(session, path, classDescriptor, object);
+ retrieveBeanFields(session, classDescriptor, node, path, object);
retrieveCollectionFields(session, classDescriptor, node, object);
return object;
-
}
catch(PathNotFoundException pnfe) {
// HINT should never get here
@@ -262,12 +245,7 @@
* @throws JcrMappingException
*/
public String getPath(Session session, Object object) {
- ClassDescriptor classDescriptor = mapper.getClassDescriptor(object.getClass());
- if (classDescriptor == null) {
- throw new JcrMappingException("Class of type: "
- + object.getClass().getName()
- + " is not JCR persistable. Maybe element 'class-descriptor' for this type in mapping file is missing"
- ); }
+ ClassDescriptor classDescriptor = getClassDescriptor(object.getClass());
final FieldDescriptor pathFieldDescriptor = classDescriptor.getPathFieldDescriptor();
if (pathFieldDescriptor == null) {
@@ -287,10 +265,11 @@
* @throws JcrMappingException
* @throws org.apache.portals.graffito.jcr.exception.RepositoryException
*/
- private void retrieveSimpleFields(Session session,
- ClassDescriptor classDescriptor,
- Node node,
- Object object) {
+ private Object retrieveSimpleFields(Session session,
+ ClassDescriptor classDescriptor,
+ Node node,
+ Object object) {
+ Object initializedBean = object;
try {
Iterator fieldDescriptorIterator = classDescriptor.getFieldDescriptors().iterator();
@@ -301,15 +280,24 @@
String propertyName = fieldDescriptor.getJcrName();
if (fieldDescriptor.isPath()) {
- ReflectionUtils.setNestedProperty(object, fieldName, node.getPath());
+ if (null == initializedBean) { // HINT: lazy initialize target bean
+ initializedBean = ReflectionUtils.newInstance(classDescriptor.getClassName());
+ }
+
+ ReflectionUtils.setNestedProperty(initializedBean, fieldName, node.getPath());
} else {
- AtomicTypeConverter converter= getAtomicTypeConverter(fieldDescriptor,
- object,
- fieldName);
if (node.hasProperty(propertyName)) {
- Object fieldValue = converter.getObject(
- node.getProperty(propertyName).getValue());
- ReflectionUtils.setNestedProperty(object, fieldName, fieldValue);
+ Value propValue = node.getProperty(propertyName).getValue();
+ if (null != propValue && null == initializedBean) { // HINT: lazy initialize target bean
+ initializedBean = ReflectionUtils.newInstance(classDescriptor.getClassName());
+ }
+
+ AtomicTypeConverter converter= getAtomicTypeConverter(fieldDescriptor,
+ initializedBean,
+ fieldName);
+
+ Object fieldValue = converter.getObject(propValue);
+ ReflectionUtils.setNestedProperty(initializedBean, fieldName, fieldValue);
}
}
}
@@ -322,23 +310,39 @@
+ node,
re);
}
+
+ return initializedBean;
}
-
+
/**
* Retrieve bean fields
*/
private void retrieveBeanFields(Session session,
- String path,
ClassDescriptor classDescriptor,
+ Node node,
+ String path,
Object object) {
Iterator beanDescriptorIterator = classDescriptor.getBeanDescriptors().iterator();
while (beanDescriptorIterator.hasNext()) {
BeanDescriptor beanDescriptor = (BeanDescriptor) beanDescriptorIterator.next();
String beanName = beanDescriptor.getFieldName();
Class beanClass = ReflectionUtils.getPropertyType(object, beanName);
- Object bean = this.getObject(session,
- beanClass,
- path + "/" + beanDescriptor.getJcrName());
+ Object bean = null;
+ if (beanDescriptor.isInline()) {
+ bean = this.retrieveSimpleFields(session, getClassDescriptor(beanClass), node, null);
+ }
+ else if (null != beanDescriptor.getBeanConverter()) {
+ bean = beanDescriptor.getBeanConverter().getObject(session,
+ node,
+ this.mapper,
+ beanName,
+ beanClass);
+ }
+ else {
+ bean = this.getObject(session,
+ beanClass,
+ path + "/" + beanDescriptor.getJcrName());
+ }
ReflectionUtils.setNestedProperty(object, beanName, bean);
}
}
@@ -382,7 +386,19 @@
Object bean = ReflectionUtils.getNestedProperty(object,
beanDescriptor.getFieldName());
if (bean != null) {
- this.insert(session, objectNode, jcrName, bean);
+ if (beanDescriptor.isInline()) {
+ this.storeSimpleFields(session, bean, getClassDescriptor(bean.getClass()), objectNode);
+ }
+ else if (null != beanDescriptor.getBeanConverter()) {
+ beanDescriptor.getBeanConverter().insert(session,
+ objectNode,
+ this.mapper,
+ jcrName,
+ object);
+ }
+ else {
+ this.insert(session, objectNode, jcrName, bean);
+ }
}
}
}
@@ -405,13 +421,34 @@
// if the bean is null, remove existing node
if ((bean == null)) {
- if (objectNode.hasNode(jcrName)) {
- objectNode.getNode(jcrName).remove();
+ if (beanDescriptor.isInline()) {
+ Class beanClass = ReflectionUtils.getPropertyType(object, beanDescriptor.getFieldName());
+ this.storeSimpleFields(session, bean, getClassDescriptor(beanClass), objectNode);
+ }
+ else if (null != beanDescriptor.getBeanConverter()) {
+ beanDescriptor.getBeanConverter().remove(session, objectNode, this.mapper, jcrName);
+ }
+ else {
+ if (objectNode.hasNode(jcrName)) {
+ objectNode.getNode(jcrName).remove();
+ }
+ }
+ }
+ else {
+ if (beanDescriptor.isInline()) {
+ this.storeSimpleFields(session, bean, getClassDescriptor(bean.getClass()), objectNode);
+ }
+ else if (null != beanDescriptor.getBeanConverter()) {
+ beanDescriptor.getBeanConverter().update(session,
+ objectNode,
+ this.mapper,
+ jcrName,
+ bean);
+ }
+ else {
+ this.update(session, objectNode, jcrName, bean);
}
- } else {
- this.update(session, objectNode, jcrName, bean);
}
-
}
}
catch(VersionException ve) {
@@ -567,9 +604,29 @@
private AtomicTypeConverter getAtomicTypeConverter(FieldDescriptor fd,
Object object,
String fieldName) {
- Class fieldTypeClass= fd.getFieldTypeClass() != null
- ? fd.getFieldTypeClass() : ReflectionUtils.getPropertyType(object, fieldName);
-
- return this.atomicTypeConverterProvider.getAtomicTypeConverter(fieldTypeClass);
+ Class fieldTypeClass = null;
+ if (null != fd.getFieldTypeClass()) {
+ fieldTypeClass = fd.getFieldTypeClass();
+ }
+ else if (null != object) {
+ fieldTypeClass = ReflectionUtils.getPropertyType(object, fieldName);
+ }
+
+ if (null != fieldTypeClass) {
+ return this.atomicTypeConverterProvider.getAtomicTypeConverter(fieldTypeClass);
+ }
+ else {
+ return NULL_CONVERTER;
+ }
+ }
+
+ protected ClassDescriptor getClassDescriptor(Class beanClass) {
+ ClassDescriptor classDescriptor = mapper.getClassDescriptor(beanClass);
+ if(null == classDescriptor) {
+ throw new JcrMappingException("Class of type: " + beanClass.getName()
+ + " is not JCR persistable. Maybe element 'class-descriptor' for this type in mapping file is missing");
+ }
+
+ return classDescriptor;
}
}
Modified: incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/reflection/ReflectionUtils.java
URL: http://svn.apache.org/viewcvs/incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/reflection/ReflectionUtils.java?rev=375909&r1=375908&r2=375909&view=diff
==============================================================================
--- incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/reflection/ReflectionUtils.java (original)
+++ incubator/graffito/trunk/jcr/jcr-mapping/src/java/org/apache/portals/graffito/jcr/reflection/ReflectionUtils.java Wed Feb 8 02:04:41 2006
@@ -6,6 +6,7 @@
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.portals.graffito.jcr.exception.JcrMappingException;
import org.apache.portals.graffito.jcr.persistence.collectionconverter.CollectionConverter;
+import org.apache.portals.graffito.jcr.persistence.objectconverter.BeanConverter;
/**
@@ -13,6 +14,10 @@
*/
abstract public class ReflectionUtils {
public static Object getNestedProperty(Object object, String fieldName) {
+ if (null == object) {
+ return null;
+ }
+
try {
return PropertyUtils.getNestedProperty(object, fieldName);
}
@@ -85,6 +90,21 @@
}
catch(Exception ex) {
throw new JcrMappingException("Cannot set the field " + fieldName,
+ ex);
+ }
+ }
+
+ /**
+ * @param string
+ * @return
+ */
+ public static Object newInstance(String clazz) {
+ try {
+ return Class.forName(clazz).newInstance();
+ }
+ catch(Exception ex) {
+ throw new JcrMappingException("Cannot create instance for class "
+ + clazz,
ex);
}
}
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=375909&r1=375908&r2=375909&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 Wed Feb 8 02:04:41 2006
@@ -78,9 +78,9 @@
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());
+ assertNull("Invalid bean default converter", beanDescriptor.getConverter());
+ assertNull("Invalid bean converter", beanDescriptor.getBeanConverter());
+
CollectionDescriptor collectionDescriptor = classDescriptor.getCollectionDescriptor("collection");
assertNotNull("CollectionDescriptor is null", collectionDescriptor);