/* | |
* 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.persistence.kernel; | |
import java.io.Serializable; | |
import javax.persistence.CascadeType; | |
import javax.persistence.Entity; | |
import javax.persistence.EntityManager; | |
import javax.persistence.Id; | |
import javax.persistence.OneToOne; | |
import javax.persistence.Table; | |
import org.apache.openjpa.persistence.common.utils.AbstractTestCase; | |
public class TestEJBLobs extends AbstractTestCase { | |
private EntityManager _pm = null; | |
private Inner _inner = null; | |
public TestEJBLobs(String name) { | |
super(name, "kernelcactusapp"); | |
} | |
public void setUp() throws Exception { | |
deleteAll(Inner.class); | |
deleteAll(Inner2.class); | |
EntityManager em = currentEntityManager(); | |
startTx(em); | |
endTx(em); | |
endEm(em); | |
Inner inner = new Inner(); | |
inner.setString("string"); | |
inner.setClob("clobField"); | |
inner.setEBlob("eblob"); | |
Inner2 inner2 = new Inner2(); | |
inner2.string = "inner2"; | |
inner.setBlob(inner2); | |
_pm = currentEntityManager(); | |
startTx(_pm); | |
_pm.persist(inner); | |
try { | |
endTx(_pm); | |
} | |
catch (Exception jdoe) { | |
System.out.println( | |
"An exception was thrown while persisting the entity : \n" + | |
getStackTrace(jdoe)); | |
} | |
endEm(_pm); | |
_pm = currentEntityManager(); | |
_inner = (Inner) _pm.find(Inner.class, "string"); | |
} | |
public void testOtherFields() { | |
assertEquals("string", _inner.getString()); | |
} | |
public void testClob() { | |
assertEquals("clobField", _inner.getClob()); | |
} | |
public void testBlob() { | |
assertNotNull(_inner.getBlob()); | |
assertEquals("inner2", _inner.getBlob().string); | |
} | |
public void testSetNull() { | |
startTx(_pm); | |
_inner.setClob(null); | |
_inner.setBlob(null); | |
endTx(_pm); | |
assertEquals(null, _inner.getBlob()); | |
assertEquals(null, _inner.getClob()); | |
} | |
public void testDelete() { | |
deleteAll(Inner.class); | |
} | |
public void testUpdate() { | |
startTx(_pm); | |
_inner.setClob("newvalue"); | |
Inner2 inner2 = new Inner2(); | |
inner2.string = "newinner2"; | |
_inner.setBlob(inner2); | |
endTx(_pm); | |
assertEquals("newvalue", _inner.getClob()); | |
assertEquals("newinner2", _inner.getBlob().string); | |
} | |
@Entity | |
@Table(name = "inntable") | |
public static class Inner { | |
@Id | |
private String string = null; | |
private String clobField = null; | |
private Object eblob = null; | |
@OneToOne(cascade = { CascadeType.PERSIST, CascadeType.REMOVE }) | |
private Inner2 blobField = null; | |
public String getString() { | |
return string; | |
} | |
public void setString(String val) { | |
string = val; | |
} | |
public String getClob() { | |
return clobField; | |
} | |
public void setClob(String val) { | |
clobField = val; | |
} | |
public String getEBlob() { | |
return ((String) eblob); | |
} | |
public void setEBlob(String val) { | |
eblob = val; | |
} | |
public Inner2 getBlob() { | |
return blobField; | |
} | |
public void setBlob(Inner2 val) { | |
blobField = val; | |
} | |
} | |
@SuppressWarnings("serial") | |
@Entity | |
@Table(name="Inner2") | |
public static class Inner2 implements Serializable { | |
@Id | |
public String string = null; | |
public String getString() { | |
return string; | |
} | |
public void setString(String string) { | |
this.string = string; | |
} | |
} | |
} |