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 <stari...@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);