You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2022/09/05 07:19:46 UTC
[cayenne] 01/02: Minor cleanup
This is an automated email from the ASF dual-hosted git repository.
ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit bf7953e910d5d47e6a25878a457e977c3d10c39d
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Fri Aug 26 18:37:50 2022 +0300
Minor cleanup
---
.../cayenne/reflect/EmbeddedFieldAccessor.java | 9 ++----
.../cayenne/reflect/FieldEmbeddableDescriptor.java | 32 ++++++----------------
.../reflect/PersistentDescriptorFactory.java | 10 +++----
.../testdo/embeddable/auto/_EmbedChild.java | 4 +++
.../testdo/embeddable/auto/_EmbedEntity1.java | 4 +++
.../testdo/embeddable/auto/_EmbedEntity2.java | 3 ++
.../cayenne/testdo/embeddable/auto/_EmbedRoot.java | 4 +++
7 files changed, 31 insertions(+), 35 deletions(-)
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/EmbeddedFieldAccessor.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/EmbeddedFieldAccessor.java
index fade22485..4844471ce 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/EmbeddedFieldAccessor.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/EmbeddedFieldAccessor.java
@@ -32,10 +32,8 @@ public class EmbeddedFieldAccessor implements Accessor {
protected EmbeddableDescriptor embeddableDescriptor;
public EmbeddedFieldAccessor(EmbeddableDescriptor embeddableDescriptor,
- Accessor embeddedAccessor, Accessor embeddableAccessor) {
- this.propertyPath = embeddedAccessor.getName()
- + "."
- + embeddableAccessor.getName();
+ Accessor embeddedAccessor, Accessor embeddableAccessor) {
+ this.propertyPath = embeddedAccessor.getName() + "." + embeddableAccessor.getName();
this.embeddableDescriptor = embeddableDescriptor;
this.embeddableAccessor = embeddableAccessor;
this.embeddedAccessor = embeddedAccessor;
@@ -60,8 +58,7 @@ public class EmbeddedFieldAccessor implements Accessor {
protected Object getEmbeddable(Object owner) {
Object embeddable = embeddedAccessor.getValue(owner);
if (embeddable == null) {
- embeddable = embeddableDescriptor.createObject(owner, embeddedAccessor
- .getName());
+ embeddable = embeddableDescriptor.createObject(owner, embeddedAccessor.getName());
embeddedAccessor.setValue(owner, embeddable);
}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/FieldEmbeddableDescriptor.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/FieldEmbeddableDescriptor.java
index 543952ed7..d442672e0 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/FieldEmbeddableDescriptor.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/FieldEmbeddableDescriptor.java
@@ -19,6 +19,7 @@
package org.apache.cayenne.reflect;
import org.apache.cayenne.Persistent;
+import org.apache.cayenne.di.AdhocObjectFactory;
import org.apache.cayenne.map.Embeddable;
/**
@@ -33,37 +34,20 @@ public class FieldEmbeddableDescriptor implements EmbeddableDescriptor {
protected Accessor ownerAccessor;
protected Accessor embeddedPropertyAccessor;
- public FieldEmbeddableDescriptor(Embeddable embeddable, String ownerProperty,
- String embeddedPropertyProperty) {
+ public FieldEmbeddableDescriptor(AdhocObjectFactory objectFactory, Embeddable embeddable,
+ String ownerProperty, String embeddedPropertyProperty) {
this.embeddable = embeddable;
- try {
- this.embeddableClass = Class.forName(embeddable.getClassName(), true, Thread
- .currentThread()
- .getContextClassLoader());
- }
- catch (ClassNotFoundException e) {
- throw new PropertyException("Class not found", e);
- }
-
- this.ownerAccessor = new FieldAccessor(
- embeddableClass,
- ownerProperty,
- Persistent.class);
- this.embeddedPropertyAccessor = new FieldAccessor(
- embeddableClass,
- embeddedPropertyProperty,
- String.class);
+ this.embeddableClass = objectFactory.getJavaClass(embeddable.getClassName());
+ this.ownerAccessor = new FieldAccessor(embeddableClass, ownerProperty, Persistent.class);
+ this.embeddedPropertyAccessor = new FieldAccessor(embeddableClass, embeddedPropertyProperty, String.class);
}
public Object createObject(Object owner, String embeddedProperty) {
Object embeddable;
try {
embeddable = embeddableClass.getDeclaredConstructor().newInstance();
- }
- catch (Throwable e) {
- throw new PropertyException("Error creating embeddable object of class '"
- + embeddableClass.getName()
- + "'", e);
+ } catch (Throwable e) {
+ throw new PropertyException("Error creating embeddable object of class '" + embeddableClass.getName() + "'", e);
}
ownerAccessor.setValue(embeddable, owner);
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/PersistentDescriptorFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/PersistentDescriptorFactory.java
index 83eaf7aa0..b6c8fe2d7 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/PersistentDescriptorFactory.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/PersistentDescriptorFactory.java
@@ -370,7 +370,7 @@ public abstract class PersistentDescriptorFactory implements ClassDescriptorFact
* Creates an accessor for the property of the embeddable class.
*/
protected Accessor createEmbeddableAccessor(EmbeddableDescriptor descriptor, String propertyName,
- Class<?> propertyType) {
+ Class<?> propertyType) {
return new FieldAccessor(descriptor.getObjectClass(), propertyName, propertyType);
}
@@ -378,9 +378,9 @@ public abstract class PersistentDescriptorFactory implements ClassDescriptorFact
* Creates a descriptor of the embedded property.
*/
protected EmbeddableDescriptor createEmbeddableDescriptor(EmbeddedAttribute embeddedAttribute) {
- // TODO: andrus, 11/19/2007 = avoid creation of descriptor for every
- // property of
- // embeddable; look up reusable descriptor instead.
- return new FieldEmbeddableDescriptor(embeddedAttribute.getEmbeddable(), "owner", "embeddedProperty");
+ // TODO: andrus, 11/19/2007 = avoid creation of descriptor for every property of embeddable;
+ // look up reusable descriptor instead.
+ return new FieldEmbeddableDescriptor(descriptorMap.getResolver().getObjectFactory(),
+ embeddedAttribute.getEmbeddable(), "owner", "embeddedProperty");
}
}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedChild.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedChild.java
index a43726a21..e8ce11563 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedChild.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedChild.java
@@ -4,8 +4,10 @@ import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
+import org.apache.cayenne.exp.property.EntityProperty;
import org.apache.cayenne.exp.property.PropertyFactory;
import org.apache.cayenne.exp.property.StringProperty;
+import org.apache.cayenne.testdo.embeddable.EmbedChild;
import org.apache.cayenne.testdo.embeddable.EmbedRoot;
/**
@@ -18,6 +20,8 @@ public abstract class _EmbedChild extends EmbedRoot {
private static final long serialVersionUID = 1L;
+ public static final EntityProperty<EmbedChild> SELF = PropertyFactory.createSelf(EmbedChild.class);
+
public static final String ID_PK_COLUMN = "ID";
public static final StringProperty<String> CHILD_ATTR = PropertyFactory.createString("childAttr", String.class);
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java
index 82b8a1d5a..155d1d3c0 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity1.java
@@ -7,9 +7,11 @@ import java.util.List;
import org.apache.cayenne.BaseDataObject;
import org.apache.cayenne.exp.property.EmbeddableProperty;
+import org.apache.cayenne.exp.property.EntityProperty;
import org.apache.cayenne.exp.property.ListProperty;
import org.apache.cayenne.exp.property.PropertyFactory;
import org.apache.cayenne.exp.property.StringProperty;
+import org.apache.cayenne.testdo.embeddable.EmbedEntity1;
import org.apache.cayenne.testdo.embeddable.EmbedEntity2;
import org.apache.cayenne.testdo.embeddable.Embeddable1;
@@ -23,6 +25,8 @@ public abstract class _EmbedEntity1 extends BaseDataObject {
private static final long serialVersionUID = 1L;
+ public static final EntityProperty<EmbedEntity1> SELF = PropertyFactory.createSelf(EmbedEntity1.class);
+
public static final String ID_PK_COLUMN = "ID";
public static final EmbeddableProperty<Embeddable1> EMBEDDED1 = PropertyFactory.createEmbeddable("embedded1", Embeddable1.class);
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity2.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity2.java
index c4875ebfa..f3116a3d2 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity2.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedEntity2.java
@@ -10,6 +10,7 @@ import org.apache.cayenne.exp.property.EntityProperty;
import org.apache.cayenne.exp.property.PropertyFactory;
import org.apache.cayenne.exp.property.StringProperty;
import org.apache.cayenne.testdo.embeddable.EmbedEntity1;
+import org.apache.cayenne.testdo.embeddable.EmbedEntity2;
import org.apache.cayenne.testdo.embeddable.Embeddable1;
/**
@@ -22,6 +23,8 @@ public abstract class _EmbedEntity2 extends BaseDataObject {
private static final long serialVersionUID = 1L;
+ public static final EntityProperty<EmbedEntity2> SELF = PropertyFactory.createSelf(EmbedEntity2.class);
+
public static final String ID_PK_COLUMN = "ID";
public static final EmbeddableProperty<Embeddable1> EMBEDDED = PropertyFactory.createEmbeddable("embedded", Embeddable1.class);
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedRoot.java b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedRoot.java
index 0d12baec9..6467f9dbf 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedRoot.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/testdo/embeddable/auto/_EmbedRoot.java
@@ -6,9 +6,11 @@ import java.io.ObjectOutputStream;
import org.apache.cayenne.BaseDataObject;
import org.apache.cayenne.exp.property.EmbeddableProperty;
+import org.apache.cayenne.exp.property.EntityProperty;
import org.apache.cayenne.exp.property.NumericProperty;
import org.apache.cayenne.exp.property.PropertyFactory;
import org.apache.cayenne.exp.property.StringProperty;
+import org.apache.cayenne.testdo.embeddable.EmbedRoot;
import org.apache.cayenne.testdo.embeddable.Embeddable1;
/**
@@ -21,6 +23,8 @@ public abstract class _EmbedRoot extends BaseDataObject {
private static final long serialVersionUID = 1L;
+ public static final EntityProperty<EmbedRoot> SELF = PropertyFactory.createSelf(EmbedRoot.class);
+
public static final String ID_PK_COLUMN = "ID";
public static final EmbeddableProperty<Embeddable1> EMBEDDED = PropertyFactory.createEmbeddable("embedded", Embeddable1.class);