Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 30419 invoked from network); 19 Jun 2007 01:37:01 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 19 Jun 2007 01:37:01 -0000 Received: (qmail 56895 invoked by uid 500); 19 Jun 2007 01:37:04 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 56853 invoked by uid 500); 19 Jun 2007 01:37:03 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 56844 invoked by uid 99); 19 Jun 2007 01:37:03 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Jun 2007 18:37:03 -0700 X-ASF-Spam-Status: No, hits=2.0 required=10.0 tests=HTML_MESSAGE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: domain of catalina.wei@gmail.com designates 66.249.82.237 as permitted sender) Received: from [66.249.82.237] (HELO wx-out-0506.google.com) (66.249.82.237) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Jun 2007 18:36:59 -0700 Received: by wx-out-0506.google.com with SMTP id h26so1829707wxd for ; Mon, 18 Jun 2007 18:36:38 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=LdzAQT/6Cvf8Y+9ZwxAn+RQ+gO2ngyYWaaJyky2c5SMipxQB2T3S6KUHBznfMCUdXhGkLzFNzAMPRixilvEQM1KojPct61eW2XFgoZ0nwJZL22MNoI/gVfMaeLAgFLHQTpfBnCooX0sx60RhLRi+BXWnAwFqf9velJmCjlX+l8A= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:references; b=hHspwbKXr4lVspOUHgfymOp0SUxyC3glu6XnvM9xduXP9uGImDsHoChsrHsBEZ+aOsWT85IjUM3lPZ9+hA8IL6gb0oZ/JT+310T6tiUYlnVjMnHXny47ynGYuqo3mNubjl8jXOC132/b+69mJjjbwjJirSBhctS61fXVGQYgCpc= Received: by 10.70.47.19 with SMTP id u19mr10714120wxu.1182216998019; Mon, 18 Jun 2007 18:36:38 -0700 (PDT) Received: by 10.70.42.12 with HTTP; Mon, 18 Jun 2007 18:36:37 -0700 (PDT) Message-ID: Date: Mon, 18 Jun 2007 18:36:37 -0700 From: "catalina wei" To: dev@openjpa.apache.org Subject: Re: svn commit: r547827 - in /openjpa/trunk/openjpa-xmlmapping-5: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/openjpa/ src/main/java/org/apache/openjpa/xmlmapping/ In-Reply-To: <72c1350f0706181433u238c02f9h1834039639ce9185@mail.gmail.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_64765_12040760.1182216997966" References: <20070615234151.D09DA1A981C@eris.apache.org> <7262f25e0706152034v1d428520n928e252260e71592@mail.gmail.com> <72c1350f0706181433u238c02f9h1834039639ce9185@mail.gmail.com> X-Virus-Checked: Checked by ClamAV on apache.org ------=_Part_64765_12040760.1182216997966 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Mike, I am proposing the name change from "openjpa-xmlmapping-5" to "openjpa-xmlmapping-jdbc". This naming shall indicate that the package is for JDBC. Catalina On 6/18/07, Michael Dick wrote: > > On 6/18/07, catalina wei wrote: > > > > Patrick, > > This is Catalina Wei working for David Wisneski on the XMLMapping > feature > > work. > > see my comments below. > > > > > > On 6/15/07, Patrick Linskey wrote: > > > > > > > Cool feature. > > > > > > +1 > > > > > > However, some comments: > > > > > > 1. I don't think that we need a new top-level module for this. This > > > seems to be only useful in the context of the JDBC back-end; IOW, > > > this seems to be an extension of the JDBC back-end to support XML data > > > types. So, IMO, it should just be part of the openjpa-jdbc-5 package. > > > > > > 2. If we did need a new module, I think that it is safe to leave off > > > the '-5' suffix. Currently, we only use the '-5' suffix for cases > > > where the module is duplicating another module that already exists but > > > only requires JDK1.4. For example, we don't have > > > 'openjpa-persistence-5', since there is no 1.4 support for the JPA > > > spec. > > > > > > I will drop the '-5' suffix. > > > Are you planning on moving the code to openjpa-jdbc? > > The openjpa-xmlmapping module is used to store entities to xml instead of > a > relational database. It wouldn't make sense to add this code to the > xmlmapping module. > > > 3. What is the Java 5 dependency? Is it just usage of things like > > > StringWriter, or is there more to it than that? > > > > > > The Java 5 dependency is due to JAXB XML marshall/unmarshal > > dependendies. > > > > > > + * @since 1.0 > > > > > > Nice... I'm always happy to see @since tags. I wish there were some > > > way to enforce them for new classes / visible methods, or to > > > auto-generate them during javac builds and be done with it. > > > > > > > > + * Base class for xml value handlers. > > > > > > You may extend this class and override the following method, passing > > Marshaller's property such as: > > > > *public* Object toDataStoreValue(ValueMapping vm, Object val, JDBCStore > > store) { > > > > Marshaller m = jc.createMarshaller(); > > > > m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); > > > > Why is this called a "base class"? Are there other handler classes > > > that aren't checked in yet? > > > > > > see previous comment. > > > > -Patrick > > > > > > On 6/15/07, Craig L Russell wrote: > > > > 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, wisneskid@apache.org 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 @@ > > > > > + > > > > > + > > > > > + > > > > + 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"> > > > > > + 4.0.0 > > > > > + org.apache.openjpa > > > > > + openjpa-xmlmapping-5 > > > > > + jar > > > > > + OpenJPA Xmlmapping 1.5 > > > > > + OpenJPA Xmlmapping 1.5 > > > > > + http://incubator.apache.org/projects/openjpa > > > > > + > > > > > + org.apache.openjpa > > > > > + openjpa-parent > > > > > + 1.0.0-SNAPSHOT > > > > > + > > > > > + > > > > > + > > > > > + org.apache.openjpa > > > > > + openjpa-kernel > > > > > + ${pom.version} > > > > > + > > > > > + > > > > > + org.apache.openjpa > > > > > + openjpa-jdbc > > > > > + ${pom.version} > > > > > + > > > > > + > > > > > + javax.xml.bind > > > > > + jaxb-api > > > > > + 2.1 > > > > > + > > > > > + > > > > > + > > > > > + > > > > > + > > > > > + org.apache.maven.plugins > > > > > + maven-compiler-plugin > > > > > + > > > > > + 1.5 > > > > > + 1.5 > > > > > + > > > > > + > > > > > + > > > > > + > > > > > + > > > > > \ 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:Craig.Russell@sun.com > > > > P.S. A good JDO? O, Gasp! > > > > > > > > > > > > > > > > > > > > > -- > > > Patrick Linskey > > > 202 669 5907 > > > > > > ------=_Part_64765_12040760.1182216997966--