mirror of https://github.com/apache/openjpa.git
OPENJPA-1176 Committing test contributed by Tim McConnell. Tests the use of PrivatePersistentProperties compatibility option with private embeddable property.
git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@795156 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
c23fb9660b
commit
8b98816386
|
@ -81,6 +81,8 @@
|
|||
<exclude name="**/AbstractUnenhanced*.class" />
|
||||
<exclude name="**/unenhanced/*.class" />
|
||||
<exclude name="**/persistence/property/PrivAccessModsEntity.class"/>
|
||||
<exclude name="**/persistence/property/EntityContact.class"/>
|
||||
<exclude name="**/persistence/property/EmbeddableAddress.class"/>
|
||||
</fileset>
|
||||
<openjpac>
|
||||
<classpath refid="cp" />
|
||||
|
@ -105,6 +107,8 @@
|
|||
<classpath refid="cp" />
|
||||
<fileset dir="${project.build.testOutputDirectory}">
|
||||
<include name="**/persistence/property/PrivAccessModsEntity.class"/>
|
||||
<include name="**/persistence/property/EntityContact.class"/>
|
||||
<include name="**/persistence/property/EmbeddableAddress.class"/>
|
||||
</fileset>
|
||||
<config log="DefaultLevel=${openjpa.loglevel}" />
|
||||
</openjpac>
|
||||
|
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* 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 agEmployee_Last_Name 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.property;
|
||||
|
||||
import javax.persistence.Embeddable;
|
||||
|
||||
@Embeddable
|
||||
public class EmbeddableAddress implements IAddress {
|
||||
|
||||
private String line1;
|
||||
private String line2;
|
||||
private String city;
|
||||
private String state;
|
||||
private String zipCode;
|
||||
private String country;
|
||||
|
||||
public String getLine1() {
|
||||
return line1;
|
||||
}
|
||||
public void setLine1(String line1) {
|
||||
this.line1 = line1;
|
||||
}
|
||||
|
||||
public String getLine2() {
|
||||
return line2;
|
||||
}
|
||||
public void setLine2(String line2) {
|
||||
this.line2 = line2;
|
||||
}
|
||||
|
||||
public String getCity() {
|
||||
return city;
|
||||
}
|
||||
public void setCity(String city) {
|
||||
this.city = city;
|
||||
}
|
||||
|
||||
public String getState() {
|
||||
return state;
|
||||
}
|
||||
public void setState(String state) {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public String getZipCode() {
|
||||
return zipCode;
|
||||
}
|
||||
public void setZipCode(String zipCode) {
|
||||
this.zipCode = zipCode;
|
||||
}
|
||||
|
||||
public String getCountry() {
|
||||
return country;
|
||||
}
|
||||
public void setCountry(String country) {
|
||||
this.country = country;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return( "org.apache.openjpa.persistence.compatible.EmbeddableAddress: " +
|
||||
" line1: " + getLine1() +
|
||||
" line2: " + getLine2() +
|
||||
" city: " + getCity() +
|
||||
" state: " + getState() +
|
||||
" zipCode: " + getZipCode() +
|
||||
" country: " + getCountry() );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
* 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 agEmployee_Last_Name 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.property;
|
||||
|
||||
import javax.persistence.Embedded;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Transient;
|
||||
|
||||
|
||||
@Entity
|
||||
public class EntityContact implements IContact {
|
||||
|
||||
private String id;
|
||||
private String email;
|
||||
private String phone;
|
||||
private String type;
|
||||
private EmbeddableAddress theAddress;
|
||||
|
||||
@Transient
|
||||
public IAddress getAddress() {
|
||||
return(IAddress) this.getTheAddress();
|
||||
}
|
||||
public void setAddress(IAddress address) {
|
||||
if (address instanceof EmbeddableAddress) {
|
||||
this.setTheAddress((EmbeddableAddress)address);
|
||||
}
|
||||
else if (address == null) {
|
||||
this.setTheAddress(null);
|
||||
}
|
||||
else {
|
||||
throw new ClassCastException("Invalid Implementaion of IAddress. " +
|
||||
"Class must be instance of org.apache.openjpa.persistence.compatible.EmbeddableAddress");
|
||||
}
|
||||
}
|
||||
|
||||
@Id
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
return phone;
|
||||
}
|
||||
public void setPhone(String phone) {
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
public void setType(String type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
@Embedded
|
||||
private EmbeddableAddress getTheAddress() {
|
||||
return theAddress;
|
||||
}
|
||||
private void setTheAddress(EmbeddableAddress address) {
|
||||
this.theAddress = address;
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return( "org.apache.openjpa.persistence.compatible.EntityContact: " +
|
||||
" id: " + getId() +
|
||||
" email: " + getEmail() +
|
||||
" phone: " + getPhone() +
|
||||
" type: " + getType() +
|
||||
" address: " + getAddress() );
|
||||
}
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* 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 agEmployee_Last_Name 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.property;
|
||||
|
||||
public interface IAddress {
|
||||
|
||||
public String getCity();
|
||||
public void setCity(String city);
|
||||
|
||||
public String getCountry();
|
||||
public void setCountry(String country);
|
||||
|
||||
public String getLine1();
|
||||
public void setLine1(String line1);
|
||||
|
||||
public String getLine2();
|
||||
public void setLine2(String line2);
|
||||
|
||||
public String getState();
|
||||
public void setState(String state);
|
||||
|
||||
public String getZipCode();
|
||||
public void setZipCode(String zipCode);
|
||||
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* 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 agEmployee_Last_Name 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.property;
|
||||
|
||||
public interface IContact {
|
||||
|
||||
public IAddress getAddress();
|
||||
public void setAddress(IAddress address);
|
||||
|
||||
public String getEmail();
|
||||
public void setEmail(String email);
|
||||
|
||||
public String getPhone();
|
||||
public void setPhone(String phone);
|
||||
|
||||
public String getType();
|
||||
public void setType(String type);
|
||||
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
/*
|
||||
* 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 agEmployee_Last_Name 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.property;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
|
||||
import org.apache.openjpa.persistence.test.SingleEMFTestCase;
|
||||
|
||||
/**
|
||||
* <b>TestCompatibile</b> is used to test various backwards compatibility
|
||||
* scenarios between JPA 2.0 and JPA 1.x.
|
||||
*
|
||||
* <p>The following scenarios are tested:
|
||||
* <ol>
|
||||
* <li>private persistent embeddable, which was valid in JPA 1.2 but no longer
|
||||
* in JPA 2.x
|
||||
* <li>TBD
|
||||
* </ol>
|
||||
* <p>
|
||||
* <b>Note(s):</b>
|
||||
* <ul>
|
||||
* <li>N/A
|
||||
* </ul>
|
||||
*/
|
||||
public class TestCompatible extends SingleEMFTestCase {
|
||||
|
||||
public void setUp() {
|
||||
setUp(EntityContact.class,
|
||||
EmbeddableAddress.class,
|
||||
"openjpa.Compatibility", "PrivatePersistentProperties=true",
|
||||
DROP_TABLES);
|
||||
}
|
||||
|
||||
public void testPrivateEmbbeddable() {
|
||||
|
||||
EntityManager em = emf.createEntityManager();
|
||||
|
||||
//
|
||||
// Create and persist the contact entity
|
||||
//
|
||||
EntityContact contactCreate = new EntityContact();
|
||||
contactCreate.setId("Contact id");
|
||||
contactCreate.setEmail("Contact email address");
|
||||
contactCreate.setPhone("Contact phone number");
|
||||
contactCreate.setType("HOME");
|
||||
EmbeddableAddress address = new EmbeddableAddress();
|
||||
address.setLine1("Address line 1");
|
||||
address.setLine2("Address line 2");
|
||||
address.setCity("Address city");
|
||||
address.setState("Address state");
|
||||
address.setZipCode("Address zipcode");
|
||||
address.setCountry("Address country");
|
||||
contactCreate.setAddress(address);
|
||||
|
||||
em.getTransaction().begin();
|
||||
em.persist(contactCreate);
|
||||
em.getTransaction().commit();
|
||||
|
||||
em.clear();
|
||||
em.close();
|
||||
|
||||
//
|
||||
// Find and verify the contact entity
|
||||
//
|
||||
em = emf.createEntityManager();
|
||||
EntityContact contactFind = em.find(EntityContact.class, "Contact id");
|
||||
assertTrue(contactFind != null);
|
||||
assertTrue(contactFind.getId().equals("Contact id"));
|
||||
assertTrue(contactFind.getEmail().equals("Contact email address"));
|
||||
assertTrue(contactFind.getPhone().equals("Contact phone number"));
|
||||
assertTrue(contactFind.getType().equals("HOME"));
|
||||
assertTrue(contactFind.getAddress() != null);
|
||||
assertTrue(contactFind.getAddress().getLine1().equals("Address line 1"));
|
||||
assertTrue(contactFind.getAddress().getLine2().equals("Address line 2"));
|
||||
assertTrue(contactFind.getAddress().getCity().equals("Address city"));
|
||||
assertTrue(contactFind.getAddress().getState().equals("Address state"));
|
||||
assertTrue(contactFind.getAddress().getZipCode().equals("Address zipcode"));
|
||||
assertTrue(contactFind.getAddress().getCountry().equals("Address country"));
|
||||
|
||||
//
|
||||
// Remove the contact entity
|
||||
//
|
||||
em.getTransaction().begin();
|
||||
em.remove(contactFind);
|
||||
em.getTransaction().commit();
|
||||
|
||||
em.clear();
|
||||
em.close();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue