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>