jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From clomb...@apache.org
Subject svn commit: r555087 - in /jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/jackrabbit/ src/main/java/org/apache/jackrabbit/ocm/ src/main/j...
Date Tue, 10 Jul 2007 21:35:59 GMT
Author: clombart
Date: Tue Jul 10 14:35:56 2007
New Revision: 555087

URL: http://svn.apache.org/viewvc?view=rev&rev=555087
Log:
patch for issue JCR-998 provided by Carlos Sanchez ( annotation support - still in progress)

Added:
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/pom.xml   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Collection.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Field.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Node.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/SuperType.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/manager/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/manager/AnnotatedObjectContentManagerImpl.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotatedObjectMapper.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotationHelper.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/apache/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/apache/jackrabbit/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/apache/jackrabbit/ocm/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/apache/jackrabbit/ocm/annotation/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/apache/jackrabbit/ocm/annotation/ocm_nodetypes.xml   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/BasicObjectTest.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/TestBase.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Address.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Person.java   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/custom_nodetypes.xml
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/repository.xml   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/log4j.properties   (with props)
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/target/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/target/classes/
    jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/target/test-classes/

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/pom.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/pom.xml?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/pom.xml (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/pom.xml Tue Jul 10 14:35:56 2007
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+	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.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
+                             http://maven.apache.org/maven-v4_0_0.xsd ">
+	<modelVersion>4.0.0</modelVersion>
+
+	<!-- ====================================================================== -->
+	<!-- P R O J E C T  D E S C R I P T I O N                                   -->
+	<!-- ====================================================================== -->
+	<parent>
+		<groupId>org.apache.jackrabbit</groupId>
+		<artifactId>jackrabbit</artifactId>
+		<version>1.4-SNAPSHOT</version>
+	</parent>
+	<artifactId>jackrabbit-ocm-annotation</artifactId>
+	<packaging>jar</packaging>
+	<name>Jackrabbit OCM Annotation</name>
+	<description>
+		This subproject contains the JCR Nodetype Management tools. This
+		tools convert a OCM class descriptor into JCR node types.
+	</description>
+	<inceptionYear>2007</inceptionYear>
+
+	<!-- ====================================================================== -->
+	<!-- D E P E N D E N C I E S                                                -->
+	<!-- ====================================================================== -->
+	<dependencies>
+		<dependency>
+			<groupId>javax.jcr</groupId>
+			<artifactId>jcr</artifactId>
+			<version>1.0</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.jackrabbit</groupId>
+			<artifactId>jackrabbit-ocm-nodemanagement</artifactId>
+			<version>1.4-SNAPSHOT</version>
+		</dependency>
+
+		<!-- Test -->
+		<dependency>
+			<groupId>xerces</groupId>
+			<artifactId>xercesImpl</artifactId>
+			<version>2.6.2</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>xerces</groupId>
+			<artifactId>xmlParserAPIs</artifactId>
+			<version>2.0.2</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.derby</groupId>
+			<artifactId>derby</artifactId>
+			<version>10.1.1.0</version>
+			<scope>test</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.1</version>
+			<scope>test</scope>
+		</dependency>
+	</dependencies>
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-surefire-plugin</artifactId>
+				<configuration>
+					<excludes>
+						<exclude>**/TestBase.java</exclude>
+					</excludes>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<configuration>
+					<source>1.5</source>
+					<target>1.5</target>
+				</configuration>
+			</plugin>
+		</plugins>
+	</build>
+</project>

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/pom.xml
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Collection.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Collection.java?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Collection.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Collection.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,59 @@
+/*
+ * 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.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import org.apache.jackrabbit.ocm.manager.collectionconverter.impl.DefaultCollectionConverterImpl;
+
+/**
+ * Allows the annotation of getting methods to show that they reflect a child node in JCR
+ * 
+ * @author Philip Dodds
+ * 
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Collection {
+
+    String name() default "*";
+
+    boolean sameNameSiblings() default false;
+
+    boolean autoCreate() default false;
+
+    boolean protect() default false;
+
+    String onParentVersion() default "COPY";
+
+    boolean mandatory() default false;
+
+    boolean autoInsert() default true;
+
+    boolean autoRetrieve() default false;
+
+    boolean autoUpdate() default true;
+
+    Class type();
+
+    Class converter() default DefaultCollectionConverterImpl.class;
+    
+    boolean proxy() default false;
+    
+    
+
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Collection.java
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Field.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Field.java?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Field.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Field.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,49 @@
+/*
+ * 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.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Allows the annotation of a getter method to show that it will be mapped to a JCR property
+ * 
+ * @author Philip Dodds
+ * 
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Field {
+
+    boolean id() default false;
+
+    String jcrName() default ""; 
+    
+    boolean mandatory() default false;
+
+    boolean path() default false;
+
+    String onParentVersion() default "COPY";
+
+    boolean autoCreated() default false;
+
+    boolean protect() default false;
+
+    boolean mutiple() default false;
+
+    Class requiredType() default String.class;
+
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Field.java
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Node.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Node.java?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Node.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Node.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,45 @@
+/*
+ * 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.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Allows for the annotation of a Java class so mapping through OCM to a JCR node
+ * 
+ * @author Philip Dodds
+ * 
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Node {
+
+    String requiredPrimaryTypes() default "{http://www.jcp.org/jcr/nt/1.0}base";
+
+    String declaringNodeType() default "";
+
+    String namespace() default "http://jackrabbit.apache.org/ocm";
+
+    String prefix() default "ocm";
+
+    boolean allowSameNameSiblings() default false;
+
+    String name() default "";
+
+    boolean mixin() default false;
+
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/Node.java
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/SuperType.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/SuperType.java?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/SuperType.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/SuperType.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,33 @@
+/*
+ * 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.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Used when you wish to specify JCR super types for a class
+ * 
+ * @author Philip Dodds
+ * 
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface SuperType {
+
+    String name() default "nt:base";
+
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/SuperType.java
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/manager/AnnotatedObjectContentManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/manager/AnnotatedObjectContentManagerImpl.java?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/manager/AnnotatedObjectContentManagerImpl.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/manager/AnnotatedObjectContentManagerImpl.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,66 @@
+/*
+ * 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.manager;
+
+import java.util.Map;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.UnsupportedRepositoryOperationException;
+
+import org.apache.jackrabbit.ocm.annotation.mapper.AnnotatedObjectMapper;
+import org.apache.jackrabbit.ocm.manager.atomictypeconverter.impl.DefaultAtomicTypeConverterProvider;
+import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl;
+import org.apache.jackrabbit.ocm.query.QueryManager;
+import org.apache.jackrabbit.ocm.query.impl.QueryManagerImpl;
+
+/**
+ * A ObjectContentManager implementation that uses the annotation mapper to map Java classes to JCR nodes
+ * 
+ * @author Philip Dodds
+ */
+public class AnnotatedObjectContentManagerImpl extends ObjectContentManagerImpl {
+
+    private AnnotatedObjectMapper annotatedObjectMapper;
+
+    public AnnotatedObjectContentManagerImpl(Session session, AnnotatedObjectMapper annotatedObjectMapper) {
+        super(annotatedObjectMapper, getQueryManager(session, annotatedObjectMapper), session);
+        this.annotatedObjectMapper = annotatedObjectMapper;
+    }
+
+    public AnnotatedObjectMapper getAnnotatedObjectMapper() {
+        return this.annotatedObjectMapper;
+    }
+
+    public static QueryManager getQueryManager(Session session, AnnotatedObjectMapper annotatedObjectMapper) {
+        DefaultAtomicTypeConverterProvider converterProvider = new DefaultAtomicTypeConverterProvider();
+        Map atomicTypeConverters = converterProvider.getAtomicTypeConverters();
+        QueryManagerImpl queryManager;
+
+        try {
+            queryManager = new QueryManagerImpl(annotatedObjectMapper, atomicTypeConverters, session.getValueFactory());
+        } catch (UnsupportedRepositoryOperationException e) {
+            throw new RuntimeException("Unable to get query manager for " + AnnotatedObjectContentManagerImpl.class
+                    + " , opperation is not supported", e);
+        } catch (RepositoryException e) {
+            throw new RuntimeException("Unable to get query manager for " + AnnotatedObjectContentManagerImpl.class, e);
+        }
+
+        return queryManager;
+    }
+
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/manager/AnnotatedObjectContentManagerImpl.java
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotatedObjectMapper.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotatedObjectMapper.java?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotatedObjectMapper.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotatedObjectMapper.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,330 @@
+/*
+ * 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.mapper;
+
+import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.NamespaceException;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.Workspace;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+
+import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.jackrabbit.core.nodetype.InvalidNodeTypeDefException;
+import org.apache.jackrabbit.core.nodetype.NodeTypeDef;
+import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
+import org.apache.jackrabbit.core.nodetype.xml.NodeTypeReader;
+import org.apache.jackrabbit.ocm.annotation.Collection;
+import org.apache.jackrabbit.ocm.annotation.Field;
+import org.apache.jackrabbit.ocm.mapper.Mapper;
+import org.apache.jackrabbit.ocm.mapper.model.ClassDescriptor;
+import org.apache.jackrabbit.ocm.mapper.model.CollectionDescriptor;
+import org.apache.jackrabbit.ocm.mapper.model.FieldDescriptor;
+import org.apache.jackrabbit.ocm.nodemanagement.NodeTypeManager;
+import org.apache.jackrabbit.ocm.nodemanagement.impl.jackrabbit.NodeTypeManagerImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * An implementation of the OCM mapper that builds class descriptors based on
+ * the use of annotations on the underlying classes
+ * 
+ * @author Philip Dodds
+ * 
+ */
+public class AnnotatedObjectMapper implements Mapper {
+
+	/** namespace prefix constant */
+	public static final String OCM_NAMESPACE_PREFIX = "ocm";
+
+	/** namespace constant */
+	public static final String OCM_NAMESPACE = "http://jackrabbit.apache.org/ocm";
+	
+	private static final String OCM_NAMESPACE_XML = "/org/apache/jackrabbit/ocm/annotation/ocm_nodetypes.xml";
+
+	private static Logger log = LoggerFactory
+			.getLogger(AnnotatedObjectMapper.class);
+
+	private List<String> annotatedClassNames = new ArrayList<String>();
+
+	private Map<Class, ClassDescriptor> descriptorMap = new HashMap<Class, ClassDescriptor>();
+
+	private Map<String, ClassDescriptor> nodeTypeMap = new HashMap<String, ClassDescriptor>();
+
+	public AnnotatedObjectMapper(Session session,
+			List<String> annotatedClassNames) throws ClassNotFoundException {
+		this.annotatedClassNames = annotatedClassNames;
+		try {
+			List<ClassDescriptor> classDescriptorsRequiringRegistration = buildClassDescriptors(session);
+			registerNamespaces(session);
+			registerNodeTypes(session);
+
+			NodeTypeManager nodeTypeManager = new NodeTypeManagerImpl();
+
+			if (!classDescriptorsRequiringRegistration.isEmpty()) {
+				log.info("Registering "
+						+ classDescriptorsRequiringRegistration.size()
+						+ " missing node types");
+				nodeTypeManager
+						.createNodeTypes(
+								session,
+								(ClassDescriptor[]) classDescriptorsRequiringRegistration
+										.toArray(new ClassDescriptor[0]));
+			}
+			else
+			{
+				log.warn("No class descriptor to register in the JCR repository");
+			}
+		} catch (Exception e) {
+			throw new RuntimeException("Unable to register node types", e);
+		}
+	}
+
+	private void registerNamespaces(Session session) throws RepositoryException {
+
+		String[] jcrNamespaces = session.getWorkspace().getNamespaceRegistry()
+				.getPrefixes();
+		boolean createNamespace = true;
+		for (int i = 0; i < jcrNamespaces.length; i++) {
+			if (jcrNamespaces[i].equals(OCM_NAMESPACE_PREFIX)) {
+				createNamespace = false;
+				log.debug("Jackrabbit OCM namespace exists.");
+			}
+		}
+
+		if (createNamespace) {
+			session.getWorkspace().getNamespaceRegistry().registerNamespace(
+					OCM_NAMESPACE_PREFIX, OCM_NAMESPACE);
+			log.info("Successfully created Jackrabbit OCM namespace.");
+		}
+
+		for (ClassDescriptor descriptor : descriptorMap.values()) {
+			Class<?> clazz;
+			try {
+				clazz = Class.forName(descriptor.getClassName());
+				log.info("Registering Namespace "
+						+ AnnotationHelper.getJcrNode(clazz).namespace()
+						+ " with prefix "
+						+ AnnotationHelper.getJcrNode(clazz).prefix());
+				session.getWorkspace().getNamespaceRegistry()
+						.registerNamespace(
+								AnnotationHelper.getJcrNode(clazz).prefix(),
+								AnnotationHelper.getJcrNode(clazz).namespace());
+			} catch (NamespaceException e) {
+				log.info("Unable to register namespace, " + e.getMessage());
+			} catch (Exception e2) {
+				throw new RuntimeException(e2);
+			}
+		}
+
+	}
+
+	private void registerNodeTypes(Session session)
+	    throws InvalidNodeTypeDefException, javax.jcr.RepositoryException,
+	    IOException {
+	    	InputStream xml = getClass().getResourceAsStream(OCM_NAMESPACE_XML);
+	    	
+	    	if (xml == null) {
+	    	    throw new FileNotFoundException(OCM_NAMESPACE_XML + " was not found in the classpath"); 
+	    	}
+        
+        	// HINT: throws InvalidNodeTypeDefException, IOException
+        	NodeTypeDef[] types = NodeTypeReader.read(xml);
+        
+        	Workspace workspace = session.getWorkspace();
+        	javax.jcr.nodetype.NodeTypeManager ntMgr = workspace.getNodeTypeManager();
+        	NodeTypeRegistry ntReg = ((org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl) ntMgr).getNodeTypeRegistry();
+        
+        	for (int j = 0; j < types.length; j++) {
+        	    NodeTypeDef def = types[j];
+        
+        	    try {
+        		ntReg.getNodeTypeDef(def.getName());
+        	    } catch (NoSuchNodeTypeException nsne) {
+        		// HINT: if not already registered than register custom node
+        		// type
+        		ntReg.registerNodeType(def);
+        	    }
+        
+        	}
+        }
+
+	private List<ClassDescriptor> buildClassDescriptors(Session session)
+			throws ClassNotFoundException {
+		List<ClassDescriptor> classDescriptorsToRegister = new ArrayList<ClassDescriptor>();
+		for (String className : getAnnotatedClassNames()) {
+			Class clazz = Class.forName(className);
+			ClassDescriptor classDescriptor = buildClassDescriptor(clazz);
+			try {
+				session.getWorkspace().getNodeTypeManager().getNodeType(
+						classDescriptor.getJcrNodeType());
+				log.info("Class " + className + " already registered");
+			} catch (NoSuchNodeTypeException e) {
+				log.info("Class " + className + " will be registered");
+				classDescriptorsToRegister.add(classDescriptor);
+			} catch (RepositoryException e) {
+				throw new RuntimeException(e);
+			}
+
+			descriptorMap.put(clazz, classDescriptor);
+			nodeTypeMap.put(classDescriptor.getJcrNodeType(), classDescriptor);
+		}
+
+		return classDescriptorsToRegister;
+	}
+
+	private ClassDescriptor buildClassDescriptor(Class clazz)
+			throws ClassNotFoundException {
+		ClassDescriptor descriptor = new ClassDescriptor();
+		descriptor.setClassName(clazz.getName());
+		descriptor.setJcrNodeType(AnnotationHelper.getJcrNodeType(clazz));
+		descriptor.setJcrSuperTypes("nt:base");
+		descriptor.setInterface(clazz.isInterface());
+
+		// TODO add mixin support
+		// descriptor.setMixin(AnnotationHelper.getJcrNode(clazz).mixin());
+
+		addFieldDescriptors(descriptor, clazz);
+		addCollectionDescriptors(descriptor, clazz);
+		return descriptor;
+	}
+
+	private void addCollectionDescriptors(ClassDescriptor descriptor,
+			Class clazz) {
+		BeanInfo beanInfo;
+		try {
+			beanInfo = Introspector.getBeanInfo(clazz);
+		} catch (IntrospectionException e) {
+			throw new RuntimeException(e);
+		}
+		PropertyDescriptor[] propertyDescriptors = beanInfo
+				.getPropertyDescriptors();
+		for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
+			Collection jcrChildNode = propertyDescriptor.getReadMethod()
+					.getAnnotation(Collection.class);
+			if (jcrChildNode != null) {
+				Class targetClass = jcrChildNode.type();
+				CollectionDescriptor collectionDescriptor = new CollectionDescriptor();
+				ClassDescriptor classDescriptor = descriptorMap
+						.get(targetClass);
+
+				if (classDescriptor == null)
+					throw new RuntimeException(
+							"Unable to reference class "
+									+ targetClass.getName()
+									+ " as a child node since it has not been registered, ordering perhaps?");
+
+				collectionDescriptor.setJcrName(AnnotationHelper
+						.getJcrNodeType(targetClass));
+				collectionDescriptor.setDefaultPrimaryType(AnnotationHelper
+						.getJcrNodeType(targetClass));
+				collectionDescriptor.setJcrSameNameSiblings(jcrChildNode
+						.sameNameSiblings());
+				collectionDescriptor.setJcrAutoCreated(jcrChildNode
+						.autoCreate());
+				collectionDescriptor.setJcrProtected(jcrChildNode.protect());
+				collectionDescriptor.setJcrOnParentVersion(jcrChildNode
+						.onParentVersion());
+				collectionDescriptor.setJcrMandatory(jcrChildNode.mandatory());
+				collectionDescriptor.setAutoInsert(jcrChildNode.autoInsert());
+				collectionDescriptor.setAutoRetrieve(jcrChildNode
+						.autoRetrieve());
+				collectionDescriptor.setAutoUpdate(jcrChildNode.autoUpdate());
+				collectionDescriptor.setCollectionClassName(propertyDescriptor
+						.getReadMethod().getReturnType().getName());
+				collectionDescriptor.setElementClassName(targetClass.getName());
+				collectionDescriptor.setCollectionConverter(jcrChildNode.converter().getName());
+				collectionDescriptor.setFieldName(propertyDescriptor.getName());
+
+				collectionDescriptor.setJcrNodeType(AnnotationHelper
+						.getJcrNodeType(targetClass));
+				collectionDescriptor.setJcrSameNameSiblings(jcrChildNode
+						.sameNameSiblings());
+				collectionDescriptor.setProxy(jcrChildNode.proxy());
+
+				descriptor.addCollectionDescriptor(collectionDescriptor);
+			}
+		}
+
+	}
+
+	private void addFieldDescriptors(ClassDescriptor descriptor, Class clazz) {
+		BeanInfo beanInfo;
+		try {
+			beanInfo = Introspector.getBeanInfo(clazz);
+		} catch (IntrospectionException e) {
+			throw new RuntimeException(e);
+		}
+
+		PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
+		for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
+			Field jcrProperty = propertyDescriptor.getReadMethod().getAnnotation(Field.class);
+			if (jcrProperty != null) {
+				FieldDescriptor fieldDescriptor = new FieldDescriptor();
+				PropertyUtils.getPropertyDescriptors(clazz);
+				fieldDescriptor.setFieldName(propertyDescriptor.getName());
+				fieldDescriptor.setPath(jcrProperty.path());
+				fieldDescriptor.setId(jcrProperty.id());
+				fieldDescriptor.setFieldType(propertyDescriptor.getReadMethod().getReturnType().getName());
+				if ((jcrProperty.jcrName() != null) && (!jcrProperty.jcrName().equals("")))
+				{
+					fieldDescriptor.setJcrName(jcrProperty.jcrName());	
+				}
+				else
+				{
+					fieldDescriptor.setJcrName(propertyDescriptor.getName());	
+				}
+				
+				fieldDescriptor.setJcrMandatory(jcrProperty.mandatory());
+				fieldDescriptor.setJcrAutoCreated(jcrProperty.autoCreated());
+				fieldDescriptor.setJcrMultiple(jcrProperty.mutiple());
+				//fieldDescriptor.setJcrType(value)
+				descriptor.addFieldDescriptor(fieldDescriptor);
+			}
+		}
+
+	}
+
+	public ClassDescriptor getClassDescriptorByClass(Class arg0) {
+		return descriptorMap.get(arg0);
+	}
+
+	public ClassDescriptor getClassDescriptorByNodeType(String arg0) {
+		return nodeTypeMap.get(arg0);
+	}
+
+	public List<String> getAnnotatedClassNames() {
+		return annotatedClassNames;
+	}
+
+	public void setAnnotatedClassNames(List<String> annotatedClassNames) {
+		this.annotatedClassNames = annotatedClassNames;
+	}
+
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotatedObjectMapper.java
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotationHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotationHelper.java?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotationHelper.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotationHelper.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,52 @@
+/*
+ * 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.mapper;
+
+import org.apache.jackrabbit.name.QName;
+import org.apache.jackrabbit.ocm.annotation.Node;
+
+/**
+ * A helper to simplify handling the common annotations
+ * 
+ * @author Philip Dodds
+ * 
+ */
+public class AnnotationHelper {
+
+	public static String getJcrNodeName(Class clazz) {
+		String name = getJcrNode(clazz).name();
+		if ("".equals(name))
+			return clazz.getSimpleName();
+		else
+			return name;
+	}
+
+	public static Node getJcrNode(Class annotatedClass) {
+		return (Node) annotatedClass.getAnnotation(Node.class);
+	}
+
+	public static String getJcrNodeType(Class annotatedClass) {
+		return getJcrNode(annotatedClass).prefix() + ":"
+				+ (getJcrNodeName(annotatedClass));
+	}
+
+	public static QName getNodeType(Class annotatedClass) {
+		return new QName(getJcrNode(annotatedClass).namespace(),
+				getJcrNodeName(annotatedClass));
+	}
+
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/java/org/apache/jackrabbit/ocm/annotation/mapper/AnnotationHelper.java
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/apache/jackrabbit/ocm/annotation/ocm_nodetypes.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/apache/jackrabbit/ocm/annotation/ocm_nodetypes.xml?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/apache/jackrabbit/ocm/annotation/ocm_nodetypes.xml (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/apache/jackrabbit/ocm/annotation/ocm_nodetypes.xml Tue Jul 10 14:35:56 2007
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<nodeTypes xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+	xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
+	xmlns:sv="http://www.jcp.org/jcr/sv/1.0"
+	xmlns:test="http://www.apache.org/jackrabbit/test"
+	xmlns:mix="http://www.jcp.org/jcr/mix/1.0"
+	xmlns:ocm="http://jackrabbit.apache.org/ocm">
+
+   <nodeType name="ocm:discriminator" isMixin="true">
+    <supertypes>
+      <supertype>nt:base</supertype>
+    </supertypes>
+    <propertyDefinition name="ocm:classname" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="false" multiple="false" />    
+  </nodeType>
+
+</nodeTypes>
+

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/main/resources/org/apache/jackrabbit/ocm/annotation/ocm_nodetypes.xml
------------------------------------------------------------------------------
    svn:executable = *

Added: 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/BasicObjectTest.java?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/BasicObjectTest.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/BasicObjectTest.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,84 @@
+/*
+ * 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.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;
+
+/**
+ * 
+ * Simple test of the ability to store annotated objects
+ * 
+ * @author Philip Dodds
+ * 
+ */
+public class BasicObjectTest extends TestBase {
+
+//	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();
+//	}
+	
+	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));
+
+		Address address = new Address();
+		address.setPath("/test");
+		address.setType("work");
+		address.setCity("Los Angeles");
+		address.setState("CA");
+
+		objectContentManager.insert(address);
+		session.save();
+		
+		address = (Address)objectContentManager.getObject("/test");
+		assertNotNull(address);
+		assertTrue("Invalid address",address.getState().equals("CA"));
+		
+		objectContentManager.remove("/test");
+		objectContentManager.save();
+		
+	}
+	
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/BasicObjectTest.java
------------------------------------------------------------------------------
    svn:executable = *

Added: 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=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/TestBase.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/TestBase.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,94 @@
+/*
+ * 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.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.jcr.Session;
+import javax.jcr.Workspace;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.nodetype.NodeTypeManager;
+import javax.jcr.nodetype.PropertyDefinition;
+
+import junit.framework.TestCase;
+
+import org.apache.jackrabbit.core.nodetype.InvalidNodeTypeDefException;
+import org.apache.jackrabbit.core.nodetype.NodeTypeDef;
+import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
+import org.apache.jackrabbit.core.nodetype.NodeTypeRegistry;
+import org.apache.jackrabbit.core.nodetype.xml.NodeTypeReader;
+import org.apache.jackrabbit.ocm.nodemanagement.impl.RepositoryConfiguration;
+import org.apache.jackrabbit.ocm.nodemanagement.impl.RepositorySessionFactory;
+
+/**
+ * Base class of JUnit test cases.
+ * 
+ * @author Oliver Kiessler
+ */
+public class TestBase extends TestCase {
+    protected static Session session;
+    protected boolean isInit = false;
+
+    /**
+     * Setting up the testcase.
+     * 
+     * @see junit.framework.TestCase#setUp()
+     */
+    protected void setUp() throws Exception {
+    	
+        
+        if (session == null) {
+            RepositoryConfiguration configuration = new RepositoryConfiguration();
+            configuration.setConfigurationFile("./src/test/resources/jackrabbit/repository.xml");
+            configuration.setRepositoryName("repositoryTest");
+            configuration.setRepositoryPath("./target/repository");
+            session = RepositorySessionFactory.getSession(RepositorySessionFactory.JACKRABBIT, "superuser",
+                    "superuser", configuration);
+            
+        }
+    }
+
+    /**
+     * @see junit.framework.TestCase#tearDown()
+     */
+    public void tearDown() throws Exception {
+    }
+
+    /**
+     * Returns true if a property was found in an array of property defintions.
+     * 
+     * @param definitions PropertyDefinition[]
+     * @param propertyName Name of property to find
+     * @return true/false
+     */
+    public boolean containsPropertyDefintion(PropertyDefinition[] definitions, String propertyName) {
+        boolean found = false;
+
+        if (definitions != null && definitions.length > 0) {
+            for (int i = 0; i < definitions.length; i++) {
+                if (definitions[i].getName().equals(propertyName)) {
+                    found = true;
+                }
+            }
+        }
+
+        return found;
+    }
+    
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/TestBase.java
------------------------------------------------------------------------------
    svn:executable = *

Added: 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=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Address.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Address.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,69 @@
+package org.apache.jackrabbit.ocm.annotation.model;
+
+import org.apache.jackrabbit.ocm.annotation.Field;
+import org.apache.jackrabbit.ocm.annotation.Node;
+
+/**
+ * A simple model to test the annotation mapping
+ * 
+ * @author Philip Dodds
+ */
+@Node
+public class Address {
+
+    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(jcrName="ocm:street")
+    public String getStreet() {
+        return street;
+    }
+
+    public void setStreet(String street) {
+        this.street = street;
+    }
+
+    @Field(jcrName="ocm:city")
+    public String getCity() {
+        return city;
+    }
+
+    @Field(jcrName="ocm:type")
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public void setCity(String city) {
+        this.city = city;
+    }
+
+    @Field(jcrName="ocm:state")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Address.java
------------------------------------------------------------------------------
    svn:executable = *

Added: 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=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Person.java (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Person.java Tue Jul 10 14:35:56 2007
@@ -0,0 +1,62 @@
+/*
+ * 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;
+
+import java.util.ArrayList;
+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.manager.collectionconverter.impl.NTCollectionConverterImpl;
+
+/**
+ * A simple model to test the annotation mapping
+ * 
+ * @author Philip Dodds
+ */
+@Node
+public class Person {
+
+
+    private String path;
+
+    private List<Address> addresses = new ArrayList<Address>();
+
+    @Collection(type = Address.class, converter= NTCollectionConverterImpl.class)
+    public List<Address> getAddresses() {
+        return addresses;
+    }
+
+    public void setAddresses(List<Address> addresses) {
+        this.addresses = addresses;
+    }
+
+    @Field(path = true)
+    public String getPath() {
+        return path;
+    }
+
+    public void setPath(String path) {
+        this.path = path;
+    }
+
+    public void addAddress(Address address) {
+        addresses.add(address);
+    }
+
+}

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/java/org/apache/jackrabbit/ocm/annotation/model/Person.java
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/custom_nodetypes.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/custom_nodetypes.xml?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/custom_nodetypes.xml (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/custom_nodetypes.xml Tue Jul 10 14:35:56 2007
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  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.
+-->
+<nodeTypes xmlns:nt="http://www.jcp.org/jcr/nt/1.0"
+	xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
+	xmlns:sv="http://www.jcp.org/jcr/sv/1.0"
+	xmlns:test="http://www.apache.org/jackrabbit/test"
+	xmlns:mix="http://www.jcp.org/jcr/mix/1.0"
+	xmlns:ocm="http://jackrabbit.apache.org/ocm">
+	
+
+  <nodeType name="annotedObject:Address" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
+    <supertypes>
+      <supertype>nt:base</supertype>
+    </supertypes>
+    <propertyDefinition name="*" requiredType="undefined" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" multiple="false" />
+    <propertyDefinition name="street" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="false" multiple="false" />
+    <propertyDefinition name="state" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="false" multiple="false" />
+    <propertyDefinition name="city" requiredType="String" autoCreated="false" mandatory="true" onParentVersion="COPY" protected="false" multiple="false" />    
+  </nodeType>
+  
+  <nodeType name="annotedObject:Person" isMixin="false" hasOrderableChildNodes="false" primaryItemName="">
+    <supertypes>
+      <supertype>nt:base</supertype>
+    </supertypes>
+    <childNodeDefinition name="*" defaultPrimaryType="annotedObject:Address" autoCreated="false" mandatory="false" onParentVersion="COPY" protected="false" sameNameSiblings="true">
+      <requiredPrimaryTypes>
+        <requiredPrimaryType>annotedObject:Address</requiredPrimaryType>
+      </requiredPrimaryTypes>
+    </childNodeDefinition>    
+  </nodeType>
+  
+</nodeTypes>
+

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/repository.xml
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/repository.xml?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/repository.xml (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/repository.xml Tue Jul 10 14:35:56 2007
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE Repository [
+    <!--
+        the Repository element configures a repository instance;
+        individual workspaces of the repository are configured through
+        separate configuration files called workspace.xml which are
+        located in a subfolder of the workspaces root directory
+        (see Workspaces element).
+
+        it consists of
+
+            a FileSystem element (the virtual file system
+            used by the repository to persist global state such as
+            registered namespaces, custom node types, etc..
+
+            a Security element that specifies the name of the app-entry
+            in the JAAS config and the access manager
+
+            a Workspaces element that specifies to the location of
+            workspaces root directory and the name of default workspace
+
+            a Workspace element that is used as a workspace configuration
+            template; it is used to create the initial workspace if there's
+            no workspace yet and for creating additional workspaces through
+            the api
+
+            a SearchIndex element that is used for configuring per workspace
+            Indexing-related settings
+
+            a Versioning element that is used for configuring
+            versioning-related settings
+    -->
+    <!ELEMENT Repository (FileSystem,Security,Workspaces,Workspace,Versioning)>
+
+    <!--
+        a virtual file system
+    -->
+    <!ELEMENT FileSystem (param*)>
+    <!ATTLIST FileSystem
+      class CDATA #REQUIRED>
+
+    <!--
+        the Security element specifies the name (appName attribute)
+        of the JAAS configuration app-entry for this repository. 
+
+        it also specifies the access manager to be used (AccessManager element).
+    -->
+    <!ELEMENT Security (AccessManager, LoginModule?)>
+    <!ATTLIST Security
+      appName CDATA #REQUIRED>
+
+    <!--
+        the AccessManager element configures the access manager to be used by
+        this repository instance; the class attribute specifies the FQN of the
+        class implementing the AccessManager interface
+    -->
+    <!ELEMENT AccessManager (param*)>
+    <!ATTLIST AccessManager
+      class CDATA #REQUIRED>
+
+    <!--
+        generic parameter (name/value pair)
+    -->
+    <!ELEMENT param EMPTY>
+    <!ATTLIST param
+      name CDATA #REQUIRED
+      value CDATA #REQUIRED>
+
+     <!--
+        the LoginModule element optionally specifies a JAAS login module to
+        authenticate users. This feature allows the use of Jackrabbit in a
+        non-JAAS environment.
+    -->
+    <!ELEMENT LoginModule (param*)>
+    <!ATTLIST LoginModule
+      class CDATA #REQUIRED>
+
+    <!--
+        the Workspaces element specifies the workspaces root directory
+        (rootPath attribute) and the name of the default workspace
+        (defaultWorkspace attribute).
+
+        individual workspaces are configured through individual workspace.xml
+        files located in a subfolder each of the workspaces root directory.
+    -->
+    <!ELEMENT Workspaces EMPTY>
+    <!ATTLIST Workspaces
+      rootPath CDATA #REQUIRED
+      defaultWorkspace CDATA #REQUIRED>
+
+    <!--
+        the Workspace element serves as a workspace configuration template;
+        it is used to create the initial workspace if there's no workspace yet
+        and for creating additional workspaces through the api
+    -->
+    <!ELEMENT Workspace (FileSystem,PersistenceManager,SearchIndex?)>
+    <!ATTLIST Workspace
+      name CDATA #REQUIRED>
+
+    <!--
+        the PersistenceManager element configures the persistence manager
+        to be used for the workspace; the class attribute specifies the
+        FQN of the class implementing the PersistenceManager interface
+    -->
+    <!ELEMENT PersistenceManager (param*)>
+    <!ATTLIST PersistenceManager
+      class CDATA #REQUIRED>
+
+    <!--
+        the SearchIndex element specifies the locaction of the search index
+        (used by the QueryHandler); the class attribute specifies the
+        FQN of the class implementing the QueryHandler interface.
+    -->
+    <!ELEMENT SearchIndex (param*,FileSystem)>
+    <!ATTLIST SearchIndex
+      class CDATA #REQUIRED>
+
+    <!--
+        the Versioning element configures the persistence manager
+        to be used for persisting version state
+    -->
+    <!ELEMENT Versioning (FileSystem, PersistenceManager)>
+    <!ATTLIST Versioning
+      rootPath CDATA #REQUIRED
+    >
+]>
+<!-- Example Repository Configuration File -->
+<Repository>
+    <!--
+        virtual file system where the repository stores global state
+        (e.g. registered namespaces, custom node types, etc.)
+    -->
+    <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
+        <param name="path" value="${rep.home}/repository"/>
+    </FileSystem>
+
+    <!--
+        security configuration
+    -->
+    <Security appName="Jackrabbit">
+        <!--
+            access manager:
+            class: FQN of class implementing the AccessManager interface
+        -->
+        <AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager">
+            <!-- <param name="config" value="${rep.home}/access.xml"/> -->
+        </AccessManager>
+
+        <LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
+           <!-- anonymous user name ('anonymous' is the default value) -->
+           <param name="anonymousId" value="anonymous"/>
+        </LoginModule>
+    </Security>
+
+    <!--
+        location of workspaces root directory and name of default workspace
+    -->
+    <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
+    <!--
+        workspace configuration template:
+        used to create the initial workspace if there's no workspace yet
+    -->
+    <Workspace name="${wsp.name}">
+        <!--
+            virtual file system of the workspace:
+            class: FQN of class implementing the FileSystem interface
+        
+        <FileSystem class="com.day.jackrabbit.fs.cq.CQFileSystem">
+            <param name="path" value="${wsp.home}/wspStore.dat"/>
+            <param name="autoRepair" value="false"/>
+            <param name="blockSize" value="128"/>
+            <param name="autoSync" value="false"/>
+        </FileSystem>
+        -->
+
+        <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
+            <param name="path" value="${wsp.home}"/>
+        </FileSystem>
+        
+        <!--
+            persistence manager of the workspace:
+            class: FQN of class implementing the PersistenceManager interface
+        -->
+       
+        <PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager"/>
+        
+        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
+            <param name="useCompoundFile" value="true"/>
+            <param name="minMergeDocs" value="1000"/>
+            <param name="maxMergeDocs" value="100000"/>
+            <param name="mergeFactor" value="10"/>
+            <param name="bufferSize" value="10"/>
+            <param name="path" value="${wsp.home}/index"/>
+        </SearchIndex>
+    </Workspace>
+
+    <!--
+        Configures the versioning
+    -->
+    <Versioning rootPath="${rep.home}/version">
+        <!--
+            Configures the filesystem to use for versioning for the respective
+            persistence manager
+        
+        <FileSystem class="com.day.jackrabbit.fs.cq.CQFileSystem">
+            <param name="path" value="${rep.home}/version/version.dat"/>
+            <param name="autoRepair" value="false"/>
+            <param name="blockSize" value="128"/>
+            <param name="autoSync" value="false"/>
+        </FileSystem>
+         -->
+        
+            <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
+                <param name="path" value="${rep.home}/version"/>
+            </FileSystem>
+        
+        <!--
+            Configures the perisistence manager to be used for persisting version state.
+            Please note that the current versioning implementation is based on
+            a 'normal' persistence manager, but this could change in future
+            implementations.
+        -->
+        <PersistenceManager class="org.apache.jackrabbit.core.state.obj.ObjectPersistenceManager"/>
+
+    </Versioning>
+</Repository>

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/jackrabbit/repository.xml
------------------------------------------------------------------------------
    svn:executable = *

Added: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/log4j.properties?view=auto&rev=555087
==============================================================================
--- jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/log4j.properties (added)
+++ jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/log4j.properties Tue Jul 10 14:35:56 2007
@@ -0,0 +1,6 @@
+log4j.logger.org.springframework=INFO, CONSOLE
+log4j.logger.org.apache.jackrabbit=INFO, CONSOLE
+log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CONSOLE.Threshold=DEBUG
+log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
+log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n
\ No newline at end of file

Propchange: jackrabbit/trunk/contrib/jackrabbit-jcr-mapping/annotation/src/test/resources/log4j.properties
------------------------------------------------------------------------------
    svn:executable = *



Mime
View raw message