FIX for ManyToOne targetType & OSGI MANIFEST

This commit is contained in:
Eddie Mc Greal
2014-10-14 08:10:31 +02:00
parent 13791a2e58
commit 1065a84709
9 changed files with 224 additions and 1 deletions
+9 -1
View File
@@ -217,7 +217,15 @@
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
<!--
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -286,6 +286,12 @@ public final class DefaultServer implements SpiEbeanServer {
ddlGenerator = (DdlGenerator)plugin;
}
}
if (ddlGenerator == null){
ddlGenerator = new DdlGenerator();
spiPlugins.add(ddlGenerator);
ddlGenerator.setup(this, this.getDatabasePlatform(), config.getServerConfig());
}
ebeanPlugins = Collections.unmodifiableList(spiPlugins);
}
@@ -6,6 +6,7 @@ import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import javax.persistence.ManyToOne;
import javax.persistence.PersistenceException;
import javax.persistence.Transient;
@@ -273,6 +274,17 @@ public class DeployCreateProperties {
private DeployBeanProperty createProp(DeployBeanDescriptor<?> desc, Field field) {
Class<?> propertyType = field.getType();
ManyToOne manyToOne = field.getAnnotation(ManyToOne.class);
if (manyToOne != null){
Class<?> tt = manyToOne.targetEntity();
if (tt != null && !tt.equals(void.class)){
propertyType = tt;
logger.debug("target type" + tt);
}
}
Class<?> innerType = propertyType;
String specialTypeKey = getSpecialScalarType(field);
+64
View File
@@ -1,3 +1,67 @@
Manifest-Version: 1.0
Premain-Class: com.avaje.ebean.enhance.agent.Transformer
Bundle-ManifestVersion: 2
Bundle-Name: Ebean-ORM
Bundle-SymbolicName: com.avaje.ebean
Bundle-Version: 4.1.9
Bundle-ClassPath: .
Bundle-Vendor: avaje
Export-Package: com.avaje.ebean,
com.avaje.ebean.annotation,
com.avaje.ebean.bean,
com.avaje.ebean.cache,
com.avaje.ebean.common,
com.avaje.ebean.config,
com.avaje.ebean.config.dbplatform,
com.avaje.ebean.event,
com.avaje.ebean.meta,
com.avaje.ebean.text,
com.avaje.ebean.text.csv,
com.avaje.ebean.text.json,
com.avaje.ebean.util,
com.avaje.ebeaninternal.api,
com.avaje.ebeaninternal.jdbc,
com.avaje.ebeaninternal.server.autofetch,
com.avaje.ebeaninternal.server.cache,
com.avaje.ebeaninternal.server.cluster,
com.avaje.ebeaninternal.server.cluster.mcast,
com.avaje.ebeaninternal.server.cluster.socket,
com.avaje.ebeaninternal.server.core,
com.avaje.ebeaninternal.server.ddl,
com.avaje.ebeaninternal.server.deploy,
com.avaje.ebeaninternal.server.deploy.generatedproperty,
com.avaje.ebeaninternal.server.deploy.id,
com.avaje.ebeaninternal.server.deploy.meta,
com.avaje.ebeaninternal.server.deploy.parse,
com.avaje.ebeaninternal.server.el,
com.avaje.ebeaninternal.server.expression,
com.avaje.ebeaninternal.server.idgen,
com.avaje.ebeaninternal.server.jdbc,
com.avaje.ebeaninternal.server.jmx,
com.avaje.ebeaninternal.server.lib,
com.avaje.ebeaninternal.server.lib.resource,
com.avaje.ebeaninternal.server.lib.sql,
com.avaje.ebeaninternal.server.lib.thread,
com.avaje.ebeaninternal.server.lib.util,
com.avaje.ebeaninternal.server.loadcontext,
com.avaje.ebeaninternal.server.persist,
com.avaje.ebeaninternal.server.persist.dml,
com.avaje.ebeaninternal.server.persist.dmlbind,
com.avaje.ebeaninternal.server.query,
com.avaje.ebeaninternal.server.querydefn,
com.avaje.ebeaninternal.server.reflect,
com.avaje.ebeaninternal.server.resource,
com.avaje.ebeaninternal.server.text.csv,
com.avaje.ebeaninternal.server.text.json,
com.avaje.ebeaninternal.server.transaction,
com.avaje.ebeaninternal.server.type,
com.avaje.ebeaninternal.server.type.reflect,
com.avaje.ebeaninternal.server.util,
com.avaje.ebeaninternal.util
Bundle-RequiredExecutionEnvironment: JavaSE-1.7
Require-Bundle:
org.slf4j.api;bundle-version="1.7.2",
com.springsource.org.joda.time;bundle-version="1.6.0"
Import-Package: javax.persistence;version="2.0.0"
@@ -0,0 +1,32 @@
package com.avaje.tests.basic;
import org.junit.Test;
import com.avaje.ebean.BaseTestCase;
import com.avaje.ebean.Ebean;
import com.avaje.tests.model.basic.ResetBasicData;
import com.avaje.tests.model.interfaces.Address;
import com.avaje.tests.model.interfaces.IAddress;
import com.avaje.tests.model.interfaces.IPerson;
import com.avaje.tests.model.interfaces.Person;
public class TestManyOneInterface extends BaseTestCase {
@Test
public void test() {
ResetBasicData.reset();
IAddress a = new Address();
IPerson p = new Person();
p.setDefaultAddress(a);
Ebean.save(a);
Ebean.save(p);
//Assert.assertTrue();
}
}
@@ -0,0 +1,44 @@
package com.avaje.tests.model.interfaces;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Version;
@Entity
public class Address implements IAddress {
@Id
private long oid;
@Version
private int version;
private String street;
public long getOid() {
return oid;
}
public void setOid(long oid) {
this.oid = oid;
}
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
@Override
public String getStreet() {
return street;
}
@Override
public void setStreet(String s) {
this.street = s;
}
}
@@ -0,0 +1,6 @@
package com.avaje.tests.model.interfaces;
public interface IAddress {
public String getStreet();
public void setStreet(String s);
}
@@ -0,0 +1,6 @@
package com.avaje.tests.model.interfaces;
public interface IPerson {
public IAddress getDefaultAddress();
public void setDefaultAddress(IAddress address);
}
@@ -0,0 +1,45 @@
package com.avaje.tests.model.interfaces;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Version;
@Entity
public class Person implements IPerson {
@Id
private long oid;
@Version
private int version;
@ManyToOne(targetEntity=Address.class)
private IAddress defaultAddress;
@Override
public IAddress getDefaultAddress() {
return defaultAddress;
}
@Override
public void setDefaultAddress(IAddress address) {
this.defaultAddress = address;
}
public long getOid() {
return oid;
}
public void setOid(long oid) {
this.oid = oid;
}
public int getVersion() {
return version;
}
public void setVersion(int version) {
this.version = version;
}
}