openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "catalina wei" <catalina....@gmail.com>
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/
Date Tue, 19 Jun 2007 01:36:37 GMT
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 <michael.d.dick@gmail.com> wrote:
>
> On 6/18/07, catalina wei <catalina.wei@gmail.com> 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 <plinskey@gmail.com> 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 <Craig.Russell@sun.com> 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 @@
> > > > > +<?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:Craig.Russell@sun.com
> > > > P.S. A good JDO? O, Gasp!
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > Patrick Linskey
> > > 202 669 5907
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message