You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by wi...@apache.org on 2007/06/19 21:44:59 UTC
svn commit: r548834 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/XMLValueHandler.java
openjpa-kernel/pom.xml openjpa-persistence-jdbc/pom.xml pom.xml
Author: wisneskid
Date: Tue Jun 19 12:44:58 2007
New Revision: 548834
URL: http://svn.apache.org/viewvc?view=rev&rev=548834
Log:
OPENJPA-240, packaging/renaming/JAXB dependency cleanups
Added:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/XMLValueHandler.java
Modified:
openjpa/trunk/openjpa-kernel/pom.xml
openjpa/trunk/openjpa-persistence-jdbc/pom.xml
openjpa/trunk/pom.xml
Added: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/XMLValueHandler.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/XMLValueHandler.java?view=auto&rev=548834
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/XMLValueHandler.java (added)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/XMLValueHandler.java Tue Jun 19 12:44:58 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.jdbc.meta.strats;
+
+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);
+ }
+ }
+}
Modified: openjpa/trunk/openjpa-kernel/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/pom.xml?view=diff&rev=548834&r1=548833&r2=548834
==============================================================================
--- openjpa/trunk/openjpa-kernel/pom.xml (original)
+++ openjpa/trunk/openjpa-kernel/pom.xml Tue Jun 19 12:44:58 2007
@@ -59,11 +59,6 @@
<version>${pom.version}</version>
<scope>compile</scope>
</dependency>
- <dependency>
- <groupId>javax.xml.bind</groupId>
- <artifactId>jaxb-api</artifactId>
- <version>2.1</version>
- </dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
Modified: openjpa/trunk/openjpa-persistence-jdbc/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/pom.xml?view=diff&rev=548834&r1=548833&r2=548834
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/pom.xml (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/pom.xml Tue Jun 19 12:44:58 2007
@@ -357,6 +357,11 @@
<version>${pom.version}</version>
<scope>compile</scope>
</dependency>
+ <dependency>
+ <groupId>javax.xml.bind</groupId>
+ <artifactId>jaxb-api</artifactId>
+ <version>2.1</version>
+ </dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
Modified: openjpa/trunk/pom.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/pom.xml?view=diff&rev=548834&r1=548833&r2=548834
==============================================================================
--- openjpa/trunk/pom.xml (original)
+++ openjpa/trunk/pom.xml Tue Jun 19 12:44:58 2007
@@ -124,7 +124,6 @@
<module>openjpa-persistence-jdbc</module>
<module>openjpa-kernel-5</module>
<module>openjpa-jdbc-5</module>
- <module>openjpa-xmlmapping-5</module>
<module>openjpa-examples</module>
</modules>
</profile>