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/07/13 12:09:56 UTC
[cayenne] branch master updated: CAY-2737 Cayenne 4.3: cleanup deprecated code - some more deprecated code deleted
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
The following commit(s) were added to refs/heads/master by this push:
new 45c75e3d9 CAY-2737 Cayenne 4.3: cleanup deprecated code - some more deprecated code deleted
45c75e3d9 is described below
commit 45c75e3d99f292432c09853fd42e7bfec4bf5815
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Wed Jul 13 13:28:21 2022 +0300
CAY-2737 Cayenne 4.3: cleanup deprecated code
- some more deprecated code deleted
---
.../tools/GradlePluginClassLoaderManager.java | 97 ----------------------
.../configuration/server/DataDomainProvider.java | 15 +---
.../xml/XMLDataChannelDescriptorLoader.java | 52 ------------
.../org/apache/cayenne/graph/ChildDiffLoader.java | 3 +-
.../org/apache/cayenne/map/EntityResolver.java | 24 +++++-
.../java/org/apache/cayenne/map/ObjEntity.java | 23 -----
.../reflect/LazyClassDescriptorDecorator.java | 2 +-
.../cayenne/reflect/LifecycleCallbackRegistry.java | 8 +-
.../reflect/PersistentDescriptorFactory.java | 2 +-
.../cayenne/access/DataContextQueryChainIT.java | 1 -
.../cayenne/access/VerticalInheritanceIT.java | 1 -
.../select/DescriptorColumnExtractorTest.java | 5 +-
.../cayenne/dba/ConcurrentPkGeneratorIT.java | 6 +-
13 files changed, 39 insertions(+), 200 deletions(-)
diff --git a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/GradlePluginClassLoaderManager.java b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/GradlePluginClassLoaderManager.java
deleted file mode 100644
index 6c49be9bc..000000000
--- a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/GradlePluginClassLoaderManager.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*****************************************************************
- * 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
- *
- * https://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.cayenne.tools;
-
-import org.apache.cayenne.di.ClassLoaderManager;
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.ArrayList;
-import java.util.List;
-import org.gradle.api.Project;
-import org.gradle.api.artifacts.Configuration;
-import org.gradle.api.artifacts.ConfigurationContainer;
-import org.gradle.api.artifacts.Dependency;
-import org.gradle.api.artifacts.DependencySet;
-
-/**
- * Gradle class loader manager to update class loader urls with project dependencies.
- *
- * @since 4.1
- *
- * @deprecated
- * Class supports only compile gradle configuration, which is removed in gradle 7.0
- * replaced with org.apache.cayenne.di.spi.DefaultClassLoaderManager
- *
- * Class will be removed in next updates
- * @since 4.2.M4
- */
-@Deprecated
-public class GradlePluginClassLoaderManager implements ClassLoaderManager {
-
- private Project project;
- private List<URL> urls = new ArrayList<>();
-
- public GradlePluginClassLoaderManager(final Project project) {
- this.project = project;
- }
-
- @Override
- public ClassLoader getClassLoader(final String resourceName) {
- return buildClassLoader();
- }
-
- private void addUrlFromDependency(final Dependency dependency, final Configuration configuration) {
-
- if(dependency == null) {
- return;
- }
-
- configuration.files(dependency).forEach(this::addUrlFromFile);
- }
-
- private void addUrlFromFile(final File file) {
- try {
- urls.add(file.toURI().toURL());
- } catch (Exception ignored) {
- }
- }
-
- private ClassLoader buildClassLoader() {
- ClassLoader classLoader = getClass().getClassLoader();
- ConfigurationContainer configurations = project.getConfigurations();
-
- if (configurations == null || configurations.isEmpty()) {
- return classLoader;
- }
-
- Configuration configuration = configurations.getByName("compile");
- DependencySet dependencies = configuration.getDependencies();
- if(dependencies == null || dependencies.isEmpty()) {
- return classLoader;
- }
-
- dependencies.forEach(dependency -> addUrlFromDependency(dependency, configuration));
-
- return new URLClassLoader(urls.toArray(new URL[0]), getClass().getClassLoader());
- }
-
-}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java
index e948c8355..f7aeb038e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DataDomainProvider.java
@@ -35,6 +35,7 @@ import org.apache.cayenne.configuration.DataChannelDescriptorLoader;
import org.apache.cayenne.configuration.DataChannelDescriptorMerger;
import org.apache.cayenne.configuration.DataNodeDescriptor;
import org.apache.cayenne.configuration.RuntimeProperties;
+import org.apache.cayenne.di.AdhocObjectFactory;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.di.Injector;
import org.apache.cayenne.di.Provider;
@@ -100,15 +101,6 @@ public class DataDomainProvider implements Provider<DataDomain> {
@Inject
protected DataNodeFactory dataNodeFactory;
- @Inject
- protected ValueObjectTypeRegistry valueObjectTypeRegistry;
-
- /**
- * @since 4.2
- */
- @Inject
- protected ValueComparisonStrategyFactory valueComparisonStrategyFactory;
-
@Override
public DataDomain get() throws ConfigurationException {
@@ -148,8 +140,9 @@ public class DataDomainProvider implements Provider<DataDomain> {
}
dataDomain.getEntityResolver().applyDBLayerDefaults();
- dataDomain.getEntityResolver().setValueObjectTypeRegistry(valueObjectTypeRegistry);
- dataDomain.getEntityResolver().setValueComparisionStrategyFactory(valueComparisonStrategyFactory);
+ dataDomain.getEntityResolver().setValueObjectTypeRegistry(injector.getInstance(ValueObjectTypeRegistry.class));
+ dataDomain.getEntityResolver().setValueComparisonStrategyFactory(injector.getInstance(ValueComparisonStrategyFactory.class));
+ dataDomain.getEntityResolver().setObjectFactory(injector.getInstance(AdhocObjectFactory.class));
for (DataNodeDescriptor nodeDescriptor : descriptor.getNodeDescriptors()) {
addDataNode(dataDomain, nodeDescriptor);
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
index fbb56ce41..1de65aa5a 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/xml/XMLDataChannelDescriptorLoader.java
@@ -27,18 +27,13 @@ import org.apache.cayenne.configuration.DataMapLoader;
import org.apache.cayenne.di.AdhocObjectFactory;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.di.Provider;
-import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.resource.Resource;
-import org.apache.cayenne.util.Util;
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
-import java.io.BufferedReader;
-import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
import java.net.URL;
import java.util.Arrays;
@@ -58,53 +53,6 @@ public class XMLDataChannelDescriptorLoader implements DataChannelDescriptorLoad
Arrays.sort(SUPPORTED_PROJECT_VERSIONS);
}
- /**
- * @deprecated the caller should use password resolving strategy instead of
- * resolving the password on the spot. For one thing this can be
- * used in the Modeler and no password may be available.
- */
- @Deprecated
- static String passwordFromURL(URL url) {
- InputStream inputStream;
- String password = null;
-
- try {
- inputStream = url.openStream();
- password = passwordFromInputStream(inputStream);
- } catch (IOException exception) {
- // Log the error while trying to open the stream. A null
- // password will be returned as a result.
- logger.warn(exception.getMessage(), exception);
- }
-
- return password;
- }
-
- /**
- * @deprecated the caller should use password resolving strategy instead of
- * resolving the password on the spot. For one thing this can be
- * used in the Modeler and no password may be available.
- */
- @Deprecated
- static String passwordFromInputStream(InputStream inputStream) {
- String password = null;
-
- try (BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));) {
-
- password = bufferedReader.readLine();
- } catch (IOException exception) {
- logger.warn(exception.getMessage(), exception);
- } finally {
-
- try {
- inputStream.close();
- } catch (IOException ignored) {
- }
- }
-
- return password;
- }
-
@Inject
protected Provider<XMLReader> xmlReaderProvider;
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/graph/ChildDiffLoader.java b/cayenne-server/src/main/java/org/apache/cayenne/graph/ChildDiffLoader.java
index 6c6889932..8bfd9a1de 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/graph/ChildDiffLoader.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/graph/ChildDiffLoader.java
@@ -96,8 +96,9 @@ public class ChildDiffLoader implements GraphChangeHandler {
}
Persistent dataObject;
+ Class<?> javaClass = context.getEntityResolver().getObjectFactory().getJavaClass(entity.getJavaClassName());
try {
- dataObject = (Persistent) entity.getJavaClass().getDeclaredConstructor().newInstance();
+ dataObject = (Persistent) javaClass.getDeclaredConstructor().newInstance();
} catch (Exception ex) {
throw new CayenneRuntimeException("Error instantiating object.", ex);
}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/EntityResolver.java b/cayenne-server/src/main/java/org/apache/cayenne/map/EntityResolver.java
index 09d31b12e..55f98e110 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/EntityResolver.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/EntityResolver.java
@@ -43,6 +43,7 @@ import org.apache.cayenne.annotation.PostUpdate;
import org.apache.cayenne.annotation.PrePersist;
import org.apache.cayenne.annotation.PreRemove;
import org.apache.cayenne.annotation.PreUpdate;
+import org.apache.cayenne.di.AdhocObjectFactory;
import org.apache.cayenne.reflect.ClassDescriptor;
import org.apache.cayenne.reflect.ClassDescriptorMap;
import org.apache.cayenne.reflect.FaultFactory;
@@ -104,6 +105,11 @@ public class EntityResolver implements MappingNamespace, Serializable {
*/
protected transient EntitySorter entitySorter;
+ /**
+ * @since 4.3
+ */
+ protected transient AdhocObjectFactory objectFactory;
+
/**
* Creates new empty EntityResolver.
@@ -174,7 +180,7 @@ public class EntityResolver implements MappingNamespace, Serializable {
// load entity callbacks
for (ObjEntity entity : getObjEntities()) {
- Class<?> entityClass = entity.getJavaClass();
+ Class<?> entityClass = objectFactory.getJavaClass(entity.getJavaClassName());
// load annotated methods
for (Method m : entityClass.getDeclaredMethods()) {
@@ -538,7 +544,7 @@ public class EntityResolver implements MappingNamespace, Serializable {
/**
* @since 4.2
*/
- public void setValueComparisionStrategyFactory(ValueComparisonStrategyFactory valueComparisonStrategyFactory) {
+ public void setValueComparisonStrategyFactory(ValueComparisonStrategyFactory valueComparisonStrategyFactory) {
this.valueComparisonStrategyFactory = valueComparisonStrategyFactory;
}
@@ -555,4 +561,18 @@ public class EntityResolver implements MappingNamespace, Serializable {
public EntitySorter getEntitySorter() {
return entitySorter;
}
+
+ /**
+ * @since 4.3
+ */
+ public void setObjectFactory(AdhocObjectFactory objectFactory) {
+ this.objectFactory = objectFactory;
+ }
+
+ /**
+ * @since 4.3
+ */
+ public AdhocObjectFactory getObjectFactory() {
+ return objectFactory;
+ }
}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java b/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
index b12e27390..117cdcfca 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/map/ObjEntity.java
@@ -178,29 +178,6 @@ public class ObjEntity extends Entity implements ObjEntityListener, Configuratio
return name;
}
- /**
- * Returns Java class of persistent objects described by this entity. For
- * generic entities with no class specified explicitly, default DataMap
- * superclass is used, and if it is not set - CayenneDataObject is used.
- * Casts any thrown exceptions into CayenneRuntimeException.
- *
- * @since 1.2
- * @deprecated since 4.0 this method based on statically defined class
- * loading algorithm is not going to work in environments like
- * OSGi. {@link AdhocObjectFactory} should be used as it can
- * provide the environment-specific class loading policy.
- */
- @Deprecated
- public Class<?> getJavaClass() {
- String name = getJavaClassName();
-
- try {
- return Util.getJavaClass(name);
- } catch (ClassNotFoundException e) {
- throw new CayenneRuntimeException("Failed to doLoad class " + name + ": " + e.getMessage(), e);
- }
- }
-
/**
* Returns an object that stores callback methods of this entity.
*
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/LazyClassDescriptorDecorator.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/LazyClassDescriptorDecorator.java
index 821334e8a..9a7576e9a 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/LazyClassDescriptorDecorator.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/LazyClassDescriptorDecorator.java
@@ -113,7 +113,7 @@ public class LazyClassDescriptorDecorator implements ClassDescriptor {
ObjEntity entity = descriptorMap.getResolver().getObjEntity(entityName);
if (entity != null) {
- return entity.getJavaClass();
+ return descriptorMap.getResolver().getObjectFactory().getJavaClass(entity.getJavaClassName());
}
}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry.java
index c8af4c83b..642a8d518 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/LifecycleCallbackRegistry.java
@@ -403,13 +403,7 @@ public class LifecycleCallbackRegistry {
entities = new HashSet<>();
for (ObjEntity entity : entityResolver.getObjEntities()) {
- Class<?> entityType;
- try {
- entityType = Util.getJavaClass(entity.getClassName());
- } catch (ClassNotFoundException e) {
- throw new CayenneRuntimeException("Class not found: " + entity.getClassName(), e);
- }
-
+ Class<?> entityType = entityResolver.getObjectFactory().getJavaClass(entity.getJavaClassName());
// ensure that we don't register the same callback for multiple
// classes in the same hierarchy, so find the topmost type using
// a given annotation and register it once
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 3ff91b4ea..83eaf7aa0 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
@@ -56,7 +56,7 @@ public abstract class PersistentDescriptorFactory implements ClassDescriptorFact
throw new CayenneRuntimeException("Unmapped entity: %s", entityName);
}
- Class<?> entityClass = entity.getJavaClass();
+ Class<?> entityClass = descriptorMap.getResolver().getObjectFactory().getJavaClass(entity.getJavaClassName());
return getDescriptor(entity, entityClass);
}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java
index 51a2362c8..7394fc747 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/DataContextQueryChainIT.java
@@ -41,7 +41,6 @@ public class DataContextQueryChainIT extends ServerCase {
private DataContext context;
@Test
- @Deprecated
public void testSelectQuery() {
Artist a1 = context.newObject(Artist.class);
a1.setArtistName("X");
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java
index 4a83c8392..7bcbff3ea 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/VerticalInheritanceIT.java
@@ -526,7 +526,6 @@ public class VerticalInheritanceIT extends ServerCase {
}
@Test
- @Deprecated
public void testSelectQuery_AttributeOverrides() throws Exception {
TableHelper iv1RootTable = new TableHelper(dbHelper, "IV1_ROOT");
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractorTest.java b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractorTest.java
index 523d1fee2..a6ad6c117 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractorTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/select/DescriptorColumnExtractorTest.java
@@ -23,6 +23,8 @@ import java.sql.Types;
import org.apache.cayenne.access.sqlbuilder.sqltree.ColumnNode;
import org.apache.cayenne.access.types.ValueObjectTypeRegistry;
+import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory;
+import org.apache.cayenne.di.spi.DefaultClassLoaderManager;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.EntityResolver;
@@ -69,7 +71,8 @@ public class DescriptorColumnExtractorTest extends BaseColumnExtractorTest {
EntityResolver resolver = new EntityResolver();
resolver.addDataMap(dataMap);
- resolver.setValueComparisionStrategyFactory(new DefaultValueComparisonStrategyFactory(mock(ValueObjectTypeRegistry.class)));
+ resolver.setValueComparisonStrategyFactory(new DefaultValueComparisonStrategyFactory(mock(ValueObjectTypeRegistry.class)));
+ resolver.setObjectFactory(new DefaultAdhocObjectFactory(null, new DefaultClassLoaderManager()));
DescriptorColumnExtractor extractor = new DescriptorColumnExtractor(context, resolver.getClassDescriptor("mock"));
extractor.extract();
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java b/cayenne-server/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
index b21807e5f..68b91af46 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/dba/ConcurrentPkGeneratorIT.java
@@ -23,6 +23,7 @@ import org.apache.cayenne.ObjectContext;
import org.apache.cayenne.configuration.server.ServerRuntime;
import org.apache.cayenne.di.Inject;
import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.query.ObjectSelect;
import org.apache.cayenne.testdo.qualified.Qualified1;
@@ -96,8 +97,9 @@ public class ConcurrentPkGeneratorIT extends ServerCase {
Runnable task = () -> {
try {
ObjectContext context1 = runtime.newContext();
- for (ObjEntity entity : dataMap.getObjEntities()) {
- context1.newObject(entity.getJavaClass());
+ EntityResolver entityResolver = context1.getEntityResolver();
+ for (ObjEntity entity : dataMap.getObjEntities()) {
+ context1.newObject(entityResolver.getObjectFactory().getJavaClass(entity.getJavaClassName()));
}
context1.commitChanges();
} catch (Exception e) {