You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by cl...@apache.org on 2007/08/06 22:38:06 UTC
svn commit: r563261 - in
/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation:
./ atomic/ basic/ model/ model/unstructured/
Author: clombart
Date: Mon Aug 6 13:38:04 2007
New Revision: 563261
URL: http://svn.apache.org/viewvc?view=rev&rev=563261
Log:
Add more unit tests for mapping objects into nt:unstructured.
Plan to add other unit tests to check mapping on specific node types.
Added:
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/CollectionTest.java
- copied, changed from r555087, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/BasicObjectTest.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/UnstructuredMappingTest.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/AtomicTest.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/Int2BooleanTypeConverterImpl.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/basic/
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/basic/ObjectContentManagerTest.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/A.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/Atomic.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/B.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/C.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/UnstructuredAddress.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/UnstructuredPerson.java
Removed:
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/BasicObjectTest.java
Modified:
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/TestBase.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Address.java
jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Person.java
Copied: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/CollectionTest.java (from r555087, jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/BasicObjectTest.java)
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/CollectionTest.java?view=diff&rev=563261&p1=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/BasicObjectTest.java&r1=555087&p2=jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/CollectionTest.java&r2=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/BasicObjectTest.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/CollectionTest.java Mon Aug 6 13:38:04 2007
@@ -16,14 +16,6 @@
*/
package org.apache.jackrabbit.ocm.annotation;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.jackrabbit.ocm.annotation.manager.AnnotatedObjectContentManagerImpl;
-import org.apache.jackrabbit.ocm.annotation.mapper.AnnotatedObjectMapper;
-import org.apache.jackrabbit.ocm.annotation.model.Address;
-import org.apache.jackrabbit.ocm.annotation.model.Person;
-import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
/**
*
@@ -32,36 +24,54 @@
* @author Philip Dodds
*
*/
-public class BasicObjectTest extends TestBase {
+public class CollectionTest extends TestBase {
+
+ public void tearDown() throws Exception {
+
+ //cleanUpRepisotory();
+ super.tearDown();
+
+ }
+ public void testBasicCollectionInsert() throws Exception {
+ /*
+ List<String> classNames = new ArrayList<String>();
+
+ classNames.add(Address.class.getName());
+ classNames.add(Person.class.getName());
+
+ ObjectContentManager objectContentManager = new AnnotatedObjectContentManagerImpl(
+ session, new AnnotatedObjectMapper(session, classNames, new NodeTypeManagerImpl()));
+
+ Person philip = new Person();
+ philip.setPath("/philip");
+ Address address = new Address();
+ address.setType("work");
+ address.setCity("Los Angeles");
+ address.setState("CA");
+ philip.addAddress(address);
-// public void testBasicCollectionInsert() throws Exception {
-// List<String> classNames = new ArrayList<String>();
-//
-// classNames.add(Address.class.getName());
-// classNames.add(Person.class.getName());
-//
-// ObjectContentManager objectContentManager = new AnnotatedObjectContentManagerImpl(
-// session, new AnnotatedObjectMapper(session, classNames));
-//
-// Person philip = new Person();
-// philip.setPath("/philip");
-// Address address = new Address();
-// address.setType("work");
-// address.setCity("Los Angeles");
-// address.setState("CA");
-// philip.addAddress(address);
-//
-// objectContentManager.insert(philip);
-// session.save();
-// }
+ address = new Address();
+ address.setType("home");
+ address.setCity("Santa Monica");
+ address.setState("CA");
+ philip.addAddress(address);
+
+ objectContentManager.insert(philip);
+ session.save();
+
+ objectContentManager.remove("/philip");
+ objectContentManager.save();
+ */
+ }
public void testBasicInsert() throws Exception {
+ /*
List<String> classNames = new ArrayList<String>();
classNames.add(Address.class.getName());
ObjectContentManager objectContentManager = new AnnotatedObjectContentManagerImpl(
- session, new AnnotatedObjectMapper(session, classNames));
+ session, new AnnotatedObjectMapper(session, classNames, new NodeTypeManagerImpl()));
Address address = new Address();
address.setPath("/test");
@@ -78,7 +88,7 @@
objectContentManager.remove("/test");
objectContentManager.save();
-
+ */
}
}
Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/TestBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/TestBase.java?view=diff&rev=563261&r1=563260&r2=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/TestBase.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/TestBase.java Mon Aug 6 13:38:04 2007
@@ -20,6 +20,8 @@
import java.io.IOException;
import java.io.InputStream;
+import javax.jcr.Node;
+import javax.jcr.NodeIterator;
import javax.jcr.Session;
import javax.jcr.Workspace;
import javax.jcr.nodetype.NoSuchNodeTypeException;
@@ -90,5 +92,28 @@
return found;
}
+
+ protected void cleanUpRepisotory() {
+ try
+ {
+
+ NodeIterator nodeIterator = session.getRootNode().getNodes();
+
+ while (nodeIterator.hasNext())
+ {
+ Node node = nodeIterator.nextNode();
+ if (! node.getName().startsWith("jcr:"))
+ {
+
+ node.remove();
+ }
+ }
+ session.save();
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
}
Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/UnstructuredMappingTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/UnstructuredMappingTest.java?view=auto&rev=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/UnstructuredMappingTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/UnstructuredMappingTest.java Mon Aug 6 13:38:04 2007
@@ -0,0 +1,177 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jackrabbit.ocm.annotation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.jackrabbit.ocm.annotation.mapper.AnnotatedObjectMapper;
+import org.apache.jackrabbit.ocm.annotation.model.unstructured.UnstructuredAddress;
+import org.apache.jackrabbit.ocm.annotation.model.unstructured.UnstructuredPerson;
+import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
+import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
+import org.apache.jackrabbit.ocm.mapper.Mapper;
+import org.apache.jackrabbit.ocm.nodemanagement.impl.jackrabbit.NodeTypeManagerImpl;
+
+/**
+ *
+ *
+ * Unit test for object mapping into a nt:unstructured jcr node type
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
+ *
+ */
+public class UnstructuredMappingTest extends TestBase {
+
+ public void tearDown() throws Exception {
+
+ cleanUpRepisotory();
+ super.tearDown();
+
+ }
+
+ public void testBasic() throws Exception {
+ List<String> classNames = new ArrayList<String>();
+
+ classNames.add(UnstructuredAddress.class.getName());
+
+ ObjectContentManager objectContentManager = new ObjectContentManagerImpl(
+ session, (Mapper) new AnnotatedObjectMapper(session, classNames, new NodeTypeManagerImpl()));
+
+ // -----------------------------------------------------------------------------
+ // Insert
+ // -----------------------------------------------------------------------------
+ UnstructuredAddress address = new UnstructuredAddress();
+ address.setPath("/test");
+ address.setType("work");
+ address.setCity("Los Angeles");
+ address.setState("CA");
+
+ objectContentManager.insert(address);
+ session.save();
+
+ // -----------------------------------------------------------------------------
+ // Retrieve
+ // -----------------------------------------------------------------------------
+ address = (UnstructuredAddress)objectContentManager.getObject("/test");
+ assertNotNull(address);
+ assertTrue("Invalid address",address.getType().equals("work"));
+
+ // -----------------------------------------------------------------------------
+ // Update
+ // -----------------------------------------------------------------------------
+ address.setType("home");
+ objectContentManager.update(address);
+ session.save();
+
+ // -----------------------------------------------------------------------------
+ // Retrieve
+ // -----------------------------------------------------------------------------
+ address = (UnstructuredAddress)objectContentManager.getObject("/test");
+ assertNotNull(address);
+ assertTrue("Invalid address",address.getType().equals("home"));
+
+ // -----------------------------------------------------------------------------
+ // Remove
+ // -----------------------------------------------------------------------------
+ objectContentManager.remove("/test");
+ objectContentManager.save();
+
+ }
+
+ public void testCollection() throws Exception
+ {
+
+ List<String> classNames = new ArrayList<String>();
+
+ classNames.add(UnstructuredAddress.class.getName());
+ classNames.add(UnstructuredPerson.class.getName());
+
+ ObjectContentManager ocm = new ObjectContentManagerImpl(
+ session, (Mapper) new AnnotatedObjectMapper(session, classNames, new NodeTypeManagerImpl()));
+
+
+ // -----------------------------------------------------------------------------
+ // Insert
+ // -----------------------------------------------------------------------------
+ UnstructuredPerson philip = new UnstructuredPerson();
+ philip.setPath("/test");
+ UnstructuredAddress address = new UnstructuredAddress();
+ address.setType("work");
+ address.setCity("Los Angeles");
+ address.setState("CA");
+ philip.addAddress(address);
+
+ address = new UnstructuredAddress();
+ address.setType("home");
+ address.setCity("Santa Monica");
+ address.setState("CA");
+ philip.addAddress(address);
+
+
+
+ ocm.insert(philip);
+ session.save();
+
+
+ // -----------------------------------------------------------------------------
+ // Retrieve
+ // -----------------------------------------------------------------------------
+ UnstructuredPerson person = (UnstructuredPerson) ocm.getObject("/test");
+ assertNotNull(person);
+ assertTrue("Invalid person", person.getPath().equals("/test"));
+ assertEquals("Invalid number of adress", person.getAddresses().size(), 2);
+ assertTrue("Invalid adress", person.getAddresses().get(0).getType().equals("work"));
+
+ // -----------------------------------------------------------------------------
+ // Update
+ // -----------------------------------------------------------------------------
+ address = new UnstructuredAddress();
+ address.setType("vacation");
+ address.setCity("AA");
+ address.setState("BB");
+ person.addAddress(address);
+
+ address = new UnstructuredAddress();
+ address.setType("anotheradress");
+ address.setCity("acity");
+ address.setState("state");
+ person.setAnotherAdress(address);
+
+ ocm.update(person);
+ session.save();
+
+ // -----------------------------------------------------------------------------
+ // Retrieve
+ // -----------------------------------------------------------------------------
+ person = (UnstructuredPerson) ocm.getObject("/test");
+ assertNotNull(person);
+ assertNotNull(person.getAnotherAdress());
+ assertTrue("Invalid person", person.getPath().equals("/test"));
+ assertEquals("Invalid number of adress", person.getAddresses().size(), 3);
+ assertTrue("Invalid adress", person.getAddresses().get(2).getType().equals("vacation"));
+
+ // -----------------------------------------------------------------------------
+ // Remove
+ // -----------------------------------------------------------------------------
+ ocm.remove("/test");
+ ocm.save();
+
+
+
+ }
+}
Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/AtomicTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/AtomicTest.java?view=auto&rev=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/AtomicTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/AtomicTest.java Mon Aug 6 13:38:04 2007
@@ -0,0 +1,197 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jackrabbit.ocm.annotation.atomic;
+
+import java.io.ByteArrayInputStream;
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jackrabbit.ocm.annotation.TestBase;
+import org.apache.jackrabbit.ocm.annotation.mapper.AnnotatedObjectMapper;
+import org.apache.jackrabbit.ocm.annotation.model.unstructured.Atomic;
+import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
+import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
+import org.apache.jackrabbit.ocm.mapper.Mapper;
+import org.apache.jackrabbit.ocm.nodemanagement.impl.jackrabbit.NodeTypeManagerImpl;
+
+/**
+ * Test Atomic perisstence fields
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class AtomicTest extends TestBase
+{
+ private final static Log log = LogFactory.getLog(AtomicTest.class);
+
+
+
+ public void tearDown() throws Exception {
+
+ cleanUpRepisotory();
+ super.tearDown();
+
+ }
+
+ public void testAtomicFields()
+ {
+ try
+ {
+
+ List<String> classNames = new ArrayList<String>();
+
+ classNames.add(Atomic.class.getName());
+
+ ObjectContentManager ocm = new ObjectContentManagerImpl(
+ session, (Mapper) new AnnotatedObjectMapper(session, classNames, new NodeTypeManagerImpl()));
+
+
+ Date date = new Date();
+ Calendar calendar = Calendar.getInstance();
+ // --------------------------------------------------------------------------------
+ // Create and store an object graph in the repository
+ // --------------------------------------------------------------------------------
+ Atomic a = new Atomic();
+ a.setPath("/test");
+ a.setBooleanObject(new Boolean(true));
+ a.setBooleanPrimitive(true);
+ a.setIntegerObject(new Integer(100));
+ a.setIntPrimitive(200);
+ a.setString("Test String");
+ a.setDate(date);
+ a.setInt2boolean(true);
+
+ byte[] content = "Test Byte".getBytes();
+ a.setByteArray(content);
+ a.setCalendar(calendar);
+ a.setDoubleObject(new Double(2.12));
+ a.setDoublePrimitive(1.23);
+ long now = System.currentTimeMillis();
+ a.setTimestamp(new Timestamp(now));
+
+ ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream("Test Stream".getBytes());
+ a.setInputStream(byteArrayInputStream);
+ a.setNamedProperty("ocm:test");
+ a.setPathProperty("/node1/node2");
+ a.setUndefinedProperty("aStringData");
+
+ ocm.insert(a);
+ ocm.save();
+
+
+ // --------------------------------------------------------------------------------
+ // Get the object
+ // --------------------------------------------------------------------------------
+ a = null;
+ a = (Atomic) ocm.getObject( "/test");
+ assertNotNull("a is null", a);
+ assertNotNull("Boolean object is null", a.getBooleanObject());
+ assertTrue("Incorrect boolean object", a.getBooleanObject().booleanValue());
+ assertTrue("Incorrect boolean primitive", a.isBooleanPrimitive());
+ assertNotNull("Integer Object is null", a.getIntegerObject());
+ assertTrue("Incorrect Integer object", a.getIntegerObject().intValue() == 100);
+ assertTrue("Incorrect int primitive", a.getIntPrimitive() == 200);
+ assertNotNull("String object is null", a.getString());
+ assertTrue("Incorrect boolean object", a.getString().equals("Test String"));
+ assertNotNull("Byte array object is null", a.getByteArray());
+ assertTrue("Incorrect byte object", new String(a.getByteArray()).equals("Test Byte"));
+
+ assertNotNull("date object is null", a.getDate());
+ assertTrue("Invalid date", a.getDate().equals(date));
+ assertNotNull("calendar object is null", a.getCalendar());
+
+ log.debug("Calendar : " + a.getCalendar().get(Calendar.YEAR) + "-" + a.getCalendar().get(Calendar.MONTH) + "-" + a.getCalendar().get(Calendar.DAY_OF_MONTH));
+ assertTrue("Invalid calendar object", a.getCalendar().equals(calendar));
+
+ assertNotNull("Double object is null", a.getDoubleObject());
+ assertTrue("Incorrect double object", a.getDoubleObject().doubleValue() == 2.12);
+ assertTrue("Incorrect double primitive", a.getDoublePrimitive() == 1.23);
+
+ assertNotNull("Incorrect input stream primitive", a.getInputStream());
+ assertNotNull("Incorrect timestamp", a.getTimestamp());
+ assertTrue("Invalid timestamp value ", a.getTimestamp().getTime() == now);
+ assertTrue("Invalid int2boolean value ", a.isInt2boolean());
+
+ assertTrue("Invalid namedProperty value ", a.getNamedProperty().equals("ocm:test"));
+ assertTrue("Invalid pathProperty value ", a.getPathProperty().equals("/node1/node2"));
+ assertTrue("Invalid undefinedProperty value ", ((String) a.getUndefinedProperty()).equals("aStringData"));
+ // --------------------------------------------------------------------------------
+ // Update the property "namedProperty" with an invalid value
+ // --------------------------------------------------------------------------------
+ try
+ {
+ // update with an incorrect namespace - Should throws an exception
+ a.setNamedProperty("unknown:test");
+ ocm.update(a);
+ fail("Exception was not triggered with an invalid namespace");
+ ocm.save();
+ }
+ catch (Exception e)
+ {
+
+
+ }
+
+ // --------------------------------------------------------------------------------
+ // Update the property "pathProperty" with an invalid value
+ // --------------------------------------------------------------------------------
+ try
+ {
+ // update with an incorrect namespace - Should throws an exception
+ a.setPathProperty("//node1");
+ ocm.update(a);
+ fail("Exception was not triggered with an invalid path");
+ ocm.save();
+ }
+ catch (Exception e)
+ {
+
+
+ }
+
+ // --------------------------------------------------------------------------------
+ // Update the property "undefinedProperty" with an invalid value
+ // --------------------------------------------------------------------------------
+ a = null;
+ a = (Atomic) ocm.getObject( "/test");
+
+ a.setUndefinedProperty(new Double(1.2));
+ ocm.update(a);
+ ocm.save();
+
+ // --------------------------------------------------------------------------------
+ // Get the object
+ // --------------------------------------------------------------------------------
+ a = null;
+ a = (Atomic) ocm.getObject( "/test");
+ assertNotNull("a is null", a);
+ assertTrue("Invalid undefinedProperty value ", ((Double) a.getUndefinedProperty()).doubleValue() == 1.2);
+
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ fail("Exception occurs during the unit test : " + e);
+ }
+
+ }
+
+}
\ No newline at end of file
Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/Int2BooleanTypeConverterImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/Int2BooleanTypeConverterImpl.java?view=auto&rev=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/Int2BooleanTypeConverterImpl.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/atomic/Int2BooleanTypeConverterImpl.java Mon Aug 6 13:38:04 2007
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jackrabbit.ocm.annotation.atomic;
+
+import javax.jcr.Value;
+import javax.jcr.ValueFactory;
+
+import org.apache.jackrabbit.ocm.exception.IncorrectAtomicTypeException;
+import org.apache.jackrabbit.ocm.manager.atomictypeconverter.AtomicTypeConverter;
+
+/**
+ * This is a simple converter which convert a boolean field value into a jcr long property (int type is not defined in the jcr spec).
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Christophe Lombart</a>
+ *
+ */
+public class Int2BooleanTypeConverterImpl implements AtomicTypeConverter
+{
+ /**
+ *
+ * @see org.apache.jackrabbit.ocm.manager.atomictypeconverter.AtomicTypeConverter#getValue(java.lang.Object)
+ */
+ public Value getValue(ValueFactory valueFactory, Object propValue)
+ {
+ if (propValue == null)
+ {
+ return null;
+ }
+ boolean value = ((Boolean) propValue).booleanValue();
+ int jcrValue = 0;
+
+ if (value)
+ {
+ jcrValue = 1;
+ }
+ return valueFactory.createValue(jcrValue);
+ }
+
+
+ /**
+ *
+ * @see org.apache.jackrabbit.ocm.manager.atomictypeconverter.AtomicTypeConverter#getObject(javax.jcr.Value)
+ */
+ public Object getObject(Value value)
+ {
+ try
+ {
+ long jcrValue = value.getLong();
+ if (jcrValue == 1)
+ {
+ return new Boolean(true);
+ }
+ else
+ {
+ return new Boolean(false);
+ }
+ }
+ catch (Exception e)
+ {
+ throw new IncorrectAtomicTypeException("Impossible to convert the value : " + value.toString() , e);
+ }
+ }
+
+ /**
+ *
+ * @see org.apache.jackrabbit.ocm.manager.atomictypeconverter.AtomicTypeConverter#getStringValue(java.lang.Object)
+ */
+ public String getXPathQueryValue(ValueFactory valueFactory, Object object)
+ {
+
+ return ((Boolean) object).booleanValue() ? "1" : "0";
+ }
+
+}
Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/basic/ObjectContentManagerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/basic/ObjectContentManagerTest.java?view=auto&rev=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/basic/ObjectContentManagerTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/basic/ObjectContentManagerTest.java Mon Aug 6 13:38:04 2007
@@ -0,0 +1,154 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jackrabbit.ocm.annotation.basic;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.jackrabbit.ocm.annotation.TestBase;
+import org.apache.jackrabbit.ocm.annotation.mapper.AnnotatedObjectMapper;
+import org.apache.jackrabbit.ocm.annotation.model.unstructured.A;
+import org.apache.jackrabbit.ocm.annotation.model.unstructured.Atomic;
+import org.apache.jackrabbit.ocm.annotation.model.unstructured.B;
+import org.apache.jackrabbit.ocm.annotation.model.unstructured.C;
+import org.apache.jackrabbit.ocm.manager.ObjectContentManager;
+import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
+import org.apache.jackrabbit.ocm.mapper.Mapper;
+import org.apache.jackrabbit.ocm.nodemanagement.impl.jackrabbit.NodeTypeManagerImpl;
+
+/**
+ * Test JcrSession
+ *
+ * @author <a href="mailto:christophe.lombart@sword-technologies.com">Christophe Lombart</a>
+ */
+public class ObjectContentManagerTest extends TestBase {
+ private final static Log log = LogFactory.getLog(ObjectContentManagerTest.class);
+
+ public void tearDown() throws Exception {
+
+ cleanUpRepisotory();
+ super.tearDown();
+
+ }
+
+ public void testClassA() {
+ try {
+
+ List<String> classNames = new ArrayList<String>();
+
+ classNames.add(B.class.getName());
+ classNames.add(C.class.getName());
+ classNames.add(A.class.getName());
+
+ ObjectContentManager ocm = new ObjectContentManagerImpl(
+ session, (Mapper) new AnnotatedObjectMapper(session, classNames, new NodeTypeManagerImpl()));
+
+
+ // --------------------------------------------------------------------------------
+ // Create and store an object graph in the repository
+ // --------------------------------------------------------------------------------
+ A a = new A();
+ a.setPath("/test");
+ a.setA1("a1");
+ a.setA2("a2");
+ B b = new B();
+ b.setB1("b1");
+ b.setB2("b2");
+ a.setB(b);
+
+ C c1 = new C();
+ c1.setId("first");
+ c1.setName("First Element");
+ C c2 = new C();
+ c2.setId("second");
+ c2.setName("Second Element");
+
+ C c3 = new C();
+ c3.setId("third");
+ c3.setName("Third Element");
+
+ Collection collection = new ArrayList();
+ collection.add(c1);
+ collection.add(c2);
+ collection.add(c3);
+
+ a.setCollection(collection);
+
+ ocm.insert(a);
+ ocm.save();
+
+ // --------------------------------------------------------------------------------
+ // Get the object
+ // --------------------------------------------------------------------------------
+ a = (A) ocm.getObject("/test");
+ assertNotNull("a is null", a);
+ assertTrue("Incorrect a1", a.getA1().equals("a1"));
+ assertNotNull("a.b is null", a.getB());
+ assertTrue("Incorrect a.b.b1", a.getB().getB1().equals("b1"));
+ assertNotNull("a.collection is null", a.getCollection());
+ assertTrue("Incorrect a.collection", ((C) a.getCollection().iterator().next()).getId().equals("first"));
+
+ // --------------------------------------------------------------------------------
+ // Update the object
+ // --------------------------------------------------------------------------------
+ a.setA1("new value");
+ B newB = new B();
+ newB.setB1("new B1");
+ newB.setB2("new B2");
+ a.setB(newB);
+
+ ocm.update(a);
+ ocm.save();
+
+ // --------------------------------------------------------------------------------
+ // Get the object
+ // --------------------------------------------------------------------------------
+ a = (A) ocm.getObject("/test");
+ assertNotNull("a is null", a);
+ assertTrue("Incorrect a1", a.getA1().equals("new value"));
+ assertNotNull("a.b is null", a.getB());
+ assertTrue("Incorrect a.b.b1", a.getB().getB1().equals("new B1"));
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("Exception occurs during the unit test : " + e);
+ }
+
+ }
+
+ public void testIsPersistent() {
+ try {
+ List<String> classNames = new ArrayList<String>();
+
+ classNames.add(Atomic.class.getName());
+
+ ObjectContentManager ocm = new ObjectContentManagerImpl(
+ session, (Mapper) new AnnotatedObjectMapper(session, classNames, new NodeTypeManagerImpl()));
+
+
+ assertTrue("Class A is not persistent ", ocm.isPersistent(Atomic.class));
+ assertFalse("Class String is persistent - hum ? ", ocm.isPersistent(String.class));
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("Exception occurs during the unit test : " + e);
+ }
+ }
+
+}
\ No newline at end of file
Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Address.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Address.java?view=diff&rev=563261&r1=563260&r2=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Address.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Address.java Mon Aug 6 13:38:04 2007
@@ -8,7 +8,7 @@
*
* @author Philip Dodds
*/
-@Node
+@Node(jcrNodeType="ocm:Adress")
public class Address {
private String path;
@@ -31,7 +31,7 @@
this.path = path;
}
- @Field(jcrName="ocm:street")
+ @Field
public String getStreet() {
return street;
}
@@ -40,12 +40,12 @@
this.street = street;
}
- @Field(jcrName="ocm:city")
+ @Field
public String getCity() {
return city;
}
- @Field(jcrName="ocm:type")
+ @Field(id=true)
public String getType() {
return type;
}
@@ -58,7 +58,7 @@
this.city = city;
}
- @Field(jcrName="ocm:state")
+ @Field
public String getState() {
return state;
}
Modified: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Person.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Person.java?view=diff&rev=563261&r1=563260&r2=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Person.java (original)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Person.java Mon Aug 6 13:38:04 2007
@@ -20,8 +20,8 @@
import java.util.List;
import org.apache.jackrabbit.ocm.annotation.Collection;
-import org.apache.jackrabbit.ocm.annotation.Node;
import org.apache.jackrabbit.ocm.annotation.Field;
+import org.apache.jackrabbit.ocm.annotation.Node;
import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.NTCollectionConverterImpl;
/**
@@ -37,7 +37,7 @@
private List<Address> addresses = new ArrayList<Address>();
- @Collection(type = Address.class, converter= NTCollectionConverterImpl.class)
+ @Collection(type = Address.class, converter = NTCollectionConverterImpl.class )
public List<Address> getAddresses() {
return addresses;
}
Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/A.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/A.java?view=auto&rev=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/A.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/A.java Mon Aug 6 13:38:04 2007
@@ -0,0 +1,129 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jackrabbit.ocm.annotation.model.unstructured;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.apache.jackrabbit.ocm.annotation.Bean;
+import org.apache.jackrabbit.ocm.annotation.Field;
+import org.apache.jackrabbit.ocm.annotation.Node;
+
+/**
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
+ *
+ */
+@Node
+public class A
+{
+
+ private String path;
+ private String a1;
+ private String a2;
+ private B b;
+ private B emptyB;
+ private Collection collection;
+ private Collection emptyCollection;
+
+
+ @Field(path=true)
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ @Field
+ public String getA1()
+ {
+ return a1;
+ }
+
+
+ public void setA1(String a1)
+ {
+ this.a1 = a1;
+ }
+
+ @Field
+ public String getA2()
+ {
+ return a2;
+ }
+
+ public void setA2(String a2)
+ {
+ this.a2 = a2;
+ }
+
+ @Bean
+ public B getB()
+ {
+ return b;
+ }
+
+ public void setB(B b)
+ {
+ this.b = b;
+ }
+
+
+ @org.apache.jackrabbit.ocm.annotation.Collection(type=C.class)
+ public Collection getCollection()
+ {
+ return collection;
+ }
+
+ /**
+ * @param collection The collection to set.
+ */
+ public void setCollection(Collection collection)
+ {
+ this.collection = collection;
+ }
+
+ public void addC(C c)
+ {
+ if (collection == null )
+ {
+ collection = new ArrayList();
+ }
+
+ collection.add(c);
+ }
+ public Collection getEmptyCollection()
+ {
+ return emptyCollection;
+ }
+ public void setEmptyCollection(Collection emptyCollection)
+ {
+ this.emptyCollection = emptyCollection;
+ }
+ public B getEmptyB()
+ {
+ return emptyB;
+ }
+ public void setEmptyB(B emptyB)
+ {
+ this.emptyB = emptyB;
+ }
+
+
+}
Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/Atomic.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/Atomic.java?view=auto&rev=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/Atomic.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/Atomic.java Mon Aug 6 13:38:04 2007
@@ -0,0 +1,259 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jackrabbit.ocm.annotation.model.unstructured;
+
+import java.io.InputStream;
+import java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.Date;
+
+import org.apache.jackrabbit.ocm.annotation.Field;
+import org.apache.jackrabbit.ocm.annotation.Node;
+import org.apache.jackrabbit.ocm.annotation.atomic.Int2BooleanTypeConverterImpl;
+import org.apache.jackrabbit.ocm.manager.atomictypeconverter.impl.NameTypeConverterImpl;
+import org.apache.jackrabbit.ocm.manager.atomictypeconverter.impl.PathTypeConverterImpl;
+import org.apache.jackrabbit.ocm.manager.atomictypeconverter.impl.UndefinedTypeConverterImpl;
+
+/**
+ *
+ * Simple object used to test atomic type
+ * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
+ *
+ */
+@Node
+public class Atomic
+{
+ private String path;
+ private String string;
+ private Boolean booleanObject;
+ private boolean booleanPrimitive;
+ private Integer integerObject;
+ private int intPrimitive;
+ private byte[] byteArray;
+ private Calendar calendar;
+ private Date date;
+ private Double doubleObject;
+ private double doublePrimitive;
+ private InputStream inputStream;
+ private Timestamp timestamp;
+ private boolean int2boolean;
+// private Collection multiValue;
+
+ private String namedProperty;
+ private String pathProperty; // used to refer another node
+ private Object undefinedProperty;
+
+ @Field(path=true)
+ public String getPath() {
+ return path;
+ }
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ @Field
+ public Boolean getBooleanObject()
+ {
+ return booleanObject;
+ }
+
+ public void setBooleanObject(Boolean booleanObject)
+ {
+ this.booleanObject = booleanObject;
+ }
+
+ @Field
+ public boolean isBooleanPrimitive()
+ {
+ return booleanPrimitive;
+ }
+
+
+ public void setBooleanPrimitive(boolean booleanPrimitive)
+ {
+ this.booleanPrimitive = booleanPrimitive;
+ }
+
+ @Field
+ public Integer getIntegerObject()
+ {
+ return integerObject;
+ }
+
+
+ public void setIntegerObject(Integer integerObject)
+ {
+ this.integerObject = integerObject;
+ }
+
+ @Field
+ public int getIntPrimitive()
+ {
+ return intPrimitive;
+ }
+
+ public void setIntPrimitive(int intPrimitive)
+ {
+ this.intPrimitive = intPrimitive;
+ }
+
+ @Field
+ public String getString()
+ {
+ return string;
+ }
+
+ public void setString(String string)
+ {
+ this.string = string;
+ }
+
+ @Field
+ public byte[] getByteArray()
+ {
+ return byteArray;
+ }
+
+
+ public void setByteArray(byte[] byteArray)
+ {
+ this.byteArray = byteArray;
+ }
+
+ @Field
+ public Calendar getCalendar()
+ {
+ return calendar;
+ }
+
+ public void setCalendar(Calendar calandar)
+ {
+ this.calendar = calandar;
+ }
+
+ @Field
+ public Date getDate()
+ {
+ return date;
+ }
+
+ public void setDate(Date date)
+ {
+ this.date = date;
+ }
+
+ @Field
+ public Double getDoubleObject()
+ {
+ return doubleObject;
+ }
+
+ public void setDoubleObject(Double doubleObject)
+ {
+ this.doubleObject = doubleObject;
+ }
+
+ @Field
+ public double getDoublePrimitive()
+ {
+ return doublePrimitive;
+ }
+
+ public void setDoublePrimitive(double doublePrimitive)
+ {
+ this.doublePrimitive = doublePrimitive;
+ }
+
+ @Field
+ public InputStream getInputStream()
+ {
+ return inputStream;
+ }
+
+ public void setInputStream(InputStream inputStream)
+ {
+ this.inputStream = inputStream;
+ }
+
+ @Field
+ public Timestamp getTimestamp()
+ {
+ return timestamp;
+ }
+
+ public void setTimestamp(Timestamp timestamp)
+ {
+ this.timestamp = timestamp;
+ }
+
+ @Field(converter=Int2BooleanTypeConverterImpl.class)
+ public boolean isInt2boolean()
+ {
+ return int2boolean;
+ }
+
+ public void setInt2boolean(boolean int2boolean)
+ {
+ this.int2boolean = int2boolean;
+ }
+
+// @Field
+// public Collection getMultiValue()
+// {
+// return multiValue;
+// }
+//
+// public void setMultiValue(Collection multiValue)
+// {
+// this.multiValue = multiValue;
+// }
+
+ @Field(converter=NameTypeConverterImpl.class)
+ public String getNamedProperty() {
+ return namedProperty;
+ }
+
+ public void setNamedProperty(String namedProperty)
+ {
+ this.namedProperty = namedProperty;
+ }
+
+ @Field(converter=PathTypeConverterImpl.class)
+ public String getPathProperty()
+ {
+ return pathProperty;
+ }
+
+
+ public void setPathProperty(String pathProperty)
+ {
+ this.pathProperty = pathProperty;
+ }
+
+ @Field(converter=UndefinedTypeConverterImpl.class)
+ public Object getUndefinedProperty()
+ {
+ return undefinedProperty;
+ }
+
+ public void setUndefinedProperty(Object undefinedProperty)
+ {
+ this.undefinedProperty = undefinedProperty;
+ }
+
+
+}
Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/B.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/B.java?view=auto&rev=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/B.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/B.java Mon Aug 6 13:38:04 2007
@@ -0,0 +1,57 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jackrabbit.ocm.annotation.model.unstructured;
+
+import org.apache.jackrabbit.ocm.annotation.Field;
+import org.apache.jackrabbit.ocm.annotation.Node;
+
+/**
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
+ *
+ */
+
+@Node
+public class B
+{
+ private String b1;
+ private String b2;
+
+ @Field
+ public String getB1()
+ {
+ return b1;
+ }
+
+ public void setB1(String b1)
+ {
+ this.b1 = b1;
+ }
+
+ @Field
+ public String getB2()
+ {
+ return b2;
+ }
+
+ public void setB2(String b2)
+ {
+ this.b2 = b2;
+ }
+
+
+}
Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/C.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/C.java?view=auto&rev=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/C.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/C.java Mon Aug 6 13:38:04 2007
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jackrabbit.ocm.annotation.model.unstructured;
+
+import org.apache.jackrabbit.ocm.annotation.Field;
+import org.apache.jackrabbit.ocm.annotation.Node;
+
+/**
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
+ *
+ */
+@Node
+public class C
+{
+ private String id;
+ private String name;
+
+ /**
+ * @return Returns the id.
+ */
+ @Field
+ public String getId()
+ {
+ return id;
+ }
+ /**
+ * @param id The id to set.
+ */
+ public void setId(String id)
+ {
+ this.id = id;
+ }
+ /**
+ * @return Returns the name.
+ */
+ @Field
+ public String getName()
+ {
+ return name;
+ }
+ /**
+ * @param name The name to set.
+ */
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+}
Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/UnstructuredAddress.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/UnstructuredAddress.java?view=auto&rev=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/UnstructuredAddress.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/UnstructuredAddress.java Mon Aug 6 13:38:04 2007
@@ -0,0 +1,69 @@
+package org.apache.jackrabbit.ocm.annotation.model.unstructured;
+
+import org.apache.jackrabbit.ocm.annotation.Field;
+import org.apache.jackrabbit.ocm.annotation.Node;
+
+/**
+ * This class is mapped into a unstructured jcr node type
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
+ */
+
+@Node
+public class UnstructuredAddress {
+
+ private String path;
+
+ private String type;
+
+ private String street;
+
+ private String city;
+
+ private String state;
+
+
+ @Field(path = true)
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ @Field
+ public String getStreet() {
+ return street;
+ }
+
+ public void setStreet(String street) {
+ this.street = street;
+ }
+
+ @Field
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ @Field(id=true)
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+}
Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/UnstructuredPerson.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/UnstructuredPerson.java?view=auto&rev=563261
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/UnstructuredPerson.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/unstructured/UnstructuredPerson.java Mon Aug 6 13:38:04 2007
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.jackrabbit.ocm.annotation.model.unstructured;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.jackrabbit.ocm.annotation.Bean;
+import org.apache.jackrabbit.ocm.annotation.Collection;
+import org.apache.jackrabbit.ocm.annotation.Field;
+import org.apache.jackrabbit.ocm.annotation.Node;
+
+
+/**
+ *
+ *
+ * @author <a href="mailto:christophe.lombart@gmail.com">Lombart Christophe </a>
+ */
+@Node
+public class UnstructuredPerson {
+
+
+ private String path;
+
+ private List<UnstructuredAddress> addresses = new ArrayList<UnstructuredAddress>();
+
+ private UnstructuredAddress anotherAdress; // Add here to test the Bean mapping
+
+ @Collection(type = UnstructuredAddress.class)
+ public List<UnstructuredAddress> getAddresses() {
+ return addresses;
+ }
+
+ public void setAddresses(List<UnstructuredAddress> addresses) {
+ this.addresses = addresses;
+ }
+
+ @Field(path = true)
+ public String getPath() {
+ return path;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public void addAddress(UnstructuredAddress address) {
+ addresses.add(address);
+ }
+
+ @Bean
+ public UnstructuredAddress getAnotherAdress() {
+ return anotherAdress;
+ }
+
+ public void setAnotherAdress(UnstructuredAddress anotherAdress) {
+ this.anotherAdress = anotherAdress;
+ }
+
+
+
+}