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.javaAdded: openjpa/trunk/openjpa-xmlmapping-5/pom.xmlURL: 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 fileAdded: 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!
smime.p7s
Description: S/MIME cryptographic signature
