Hi Dave,

Cool feature.

The standard for .xml and .java files in OpenJPA is to mark them in svn as eolstyle:native.

Can you update your environment so future new files are automatically marked, and fix these recent files?

Thanks,

Craig

On Jun 15, 2007, at 4:41 PM, [EMAIL PROTECTED] wrote:

Author: wisneskid
Date: Fri Jun 15 16:41:50 2007
New Revision: 547827

URL: http://svn.apache.org/viewvc?view=rev&rev=547827
Log:
OPENJPA-240 Feature:Persistent field mapping support for XML column type.

Added:
    openjpa/trunk/openjpa-xmlmapping-5/
    openjpa/trunk/openjpa-xmlmapping-5/pom.xml
    openjpa/trunk/openjpa-xmlmapping-5/src/
    openjpa/trunk/openjpa-xmlmapping-5/src/main/
    openjpa/trunk/openjpa-xmlmapping-5/src/main/java/
    openjpa/trunk/openjpa-xmlmapping-5/src/main/java/org/
    openjpa/trunk/openjpa-xmlmapping-5/src/main/java/org/apache/
openjpa/trunk/openjpa-xmlmapping-5/src/main/java/org/apache/ openjpa/ openjpa/trunk/openjpa-xmlmapping-5/src/main/java/org/apache/ openjpa/xmlmapping/ openjpa/trunk/openjpa-xmlmapping-5/src/main/java/org/apache/ openjpa/xmlmapping/XmlValueHandler.java

Added: openjpa/trunk/openjpa-xmlmapping-5/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa- xmlmapping-5/pom.xml?view=auto&rev=547827 ====================================================================== ========
--- openjpa/trunk/openjpa-xmlmapping-5/pom.xml (added)
+++ openjpa/trunk/openjpa-xmlmapping-5/pom.xml Fri Jun 15 16:41:50 2007
@@ -0,0 +1,64 @@
+<?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>
+    <groupId>org.apache.openjpa</groupId>
+    <artifactId>openjpa-xmlmapping-5</artifactId>
+    <packaging>jar</packaging>
+    <name>OpenJPA Xmlmapping 1.5</name>
+    <description>OpenJPA Xmlmapping 1.5</description>
+    <url>http://incubator.apache.org/projects/openjpa</url>
+    <parent>
+        <groupId>org.apache.openjpa</groupId>
+        <artifactId>openjpa-parent</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+    </parent>
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.openjpa</groupId>
+            <artifactId>openjpa-kernel</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.openjpa</groupId>
+            <artifactId>openjpa-jdbc</artifactId>
+            <version>${pom.version}</version>
+        </dependency>    
+           <dependency>
+                   <groupId>javax.xml.bind</groupId>
+                   <artifactId>jaxb-api</artifactId>
+                   <version>2.1</version>
+           </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <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>
\ No newline at end of file

Added: openjpa/trunk/openjpa-xmlmapping-5/src/main/java/org/apache/ openjpa/xmlmapping/XmlValueHandler.java URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa- xmlmapping-5/src/main/java/org/apache/openjpa/xmlmapping/ XmlValueHandler.java?view=auto&rev=547827 ====================================================================== ======== --- openjpa/trunk/openjpa-xmlmapping-5/src/main/java/org/apache/ openjpa/xmlmapping/XmlValueHandler.java (added) +++ openjpa/trunk/openjpa-xmlmapping-5/src/main/java/org/apache/ openjpa/xmlmapping/XmlValueHandler.java Fri Jun 15 16:41:50 2007
@@ -0,0 +1,97 @@
+/*
+ * 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.openjpa.xmlmapping;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.io.Writer;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.openjpa.jdbc.kernel.JDBCStore;
+import org.apache.openjpa.jdbc.meta.ValueMapping;
+import org.apache.openjpa.jdbc.meta.strats.AbstractValueHandler;
+import org.apache.openjpa.jdbc.schema.Column;
+import org.apache.openjpa.jdbc.schema.ColumnIO;
+import org.apache.openjpa.meta.JavaTypes;
+import org.apache.openjpa.util.InternalException;
+
+/**
+ * Base class for xml value handlers.
+ *
+ * @author Catalina Wei
+ * @since 1.0
+ */
+public class XmlValueHandler
+    extends AbstractValueHandler {
+    private static final String PROXY_SUFFIX = "$proxy";
+
+    public Column[] map(ValueMapping vm, String name, ColumnIO io,
+        boolean adapt) {
+        Column col = new Column();
+        col.setName(name);
+        col.setJavaType(JavaTypes.STRING);
+        col.setSize(-1);
+        col.setTypeName(vm.getMappingRepository().getDBDictionary()
+            .xmlTypeName);
+        return new Column[]{ col };
+    }
+
+    public Object toDataStoreValue(ValueMapping vm, Object val,
+        JDBCStore store) {
+        // check for null value.
+        if (val == null)
+            return null;
+        try {
+            JAXBContext jc = JAXBContext.newInstance(
+ // on update val is a proxy, that can not be marshalled.
+                // so we get original type if val is a proxy.
+                (val.getClass().getName().endsWith(PROXY_SUFFIX))
+                     ? val.getClass().getSuperclass()
+                     : val.getClass());
+            Marshaller m = jc.createMarshaller();
+            Writer result = new StringWriter();
+            m.marshal( val, result );
+            return result.toString();
+        }
+        catch(JAXBException je) {
+            throw new InternalException(je);
+        }
+    }
+
+    public Object toObjectValue(ValueMapping vm, Object val) {
+        // check for null value.
+        if (val == null)
+            return null;
+        try {
+ String packageName = vm.getDeclaredType().getPackage ().getName();
+            JAXBContext jc = JAXBContext.newInstance(packageName);
+            Unmarshaller u = jc.createUnmarshaller();
+            return u.unmarshal(new StreamSource(new StringReader
+                    (val.toString())));
+        }
+        catch(JAXBException je) {
+            throw new InternalException(je);
+        }
+    }
+}



Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:[EMAIL PROTECTED]
P.S. A good JDO? O, Gasp!

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to