blob: 00942c500599efadf31d3cd99a05162c2acb8236 [file] [log] [blame]
/*
* 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;
}
}
}