openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Patrick Linskey" <plins...@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 Sat, 16 Jun 2007 05:36:16 GMT
Also, does anyone know if Derby has any support for XML datatypes?

Regardless, it'd be really good to see some test cases. Historically,
we used to code our test cases to automatically disable themselves
when running against databases that they didn't support; we could
probably move that logic to the new OpenJPA test hierarchy. If Derby
doesn't support XML datatypes, then this could be a good moment to add
such logic.

-Patrick

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.
>
> 3. What is the Java 5 dependency? Is it just usage of things like
> StringWriter, or is there more to it than that?
>
> > > + * @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.
>
> Why is this called a "base class"? Are there other handler classes
> that aren't checked in yet?
>
> -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
>


-- 
Patrick Linskey
202 669 5907

Mime
View raw message