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/01 16:20:05 UTC
[cayenne] 04/06: CAY-2737 Cayenne 4.3: cleanup deprecated code
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 36add985c22aa06b2334ec6b17d79f02fb1010f8
Author: Nikita Timofeev <st...@gmail.com>
AuthorDate: Fri Jul 1 18:06:13 2022 +0300
CAY-2737 Cayenne 4.3: cleanup deprecated code
---
.../legacy/DefaultBatchTranslatorFactory.java | 64 --------
.../batch/legacy/DeleteBatchTranslator.java | 118 --------------
.../batch/legacy/InsertBatchTranslator.java | 149 -----------------
.../batch/legacy/SoftDeleteBatchTranslator.java | 110 -------------
.../batch/legacy/SoftDeleteTranslatorFactory.java | 73 ---------
.../batch/legacy/UpdateBatchTranslator.java | 148 -----------------
.../java/org/apache/cayenne/dba/JdbcAdapter.java | 11 --
.../org/apache/cayenne/dba/db2/DB2Adapter.java | 8 -
.../org/apache/cayenne/dba/derby/DerbyAdapter.java | 5 -
.../cayenne/dba/frontbase/FrontBaseAdapter.java | 5 -
.../java/org/apache/cayenne/dba/h2/H2Adapter.java | 5 -
.../apache/cayenne/dba/ingres/IngresAdapter.java | 8 -
.../org/apache/cayenne/dba/mysql/MySQLAdapter.java | 10 --
.../apache/cayenne/dba/oracle/OracleAdapter.java | 9 -
.../cayenne/dba/postgres/PostgresAdapter.java | 8 -
.../apache/cayenne/dba/sybase/SybaseAdapter.java | 9 -
.../java/org/apache/cayenne/reflect/Property.java | 31 ----
.../resource/FilesystemResourceLocator.java | 118 --------------
.../batch/legacy/DeleteBatchTranslatorIT.java | 164 -------------------
.../batch/legacy/InsertBatchTranslatorIT.java | 105 ------------
.../batch/legacy/SoftDeleteBatchTranslatorIT.java | 181 ---------------------
.../batch/legacy/UpdateBatchTranslatorIT.java | 170 -------------------
.../resource/FilesystemResourceLocatorTest.java | 108 ------------
23 files changed, 1617 deletions(-)
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorFactory.java
deleted file mode 100644
index d246fe3b6..000000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/DefaultBatchTranslatorFactory.java
+++ /dev/null
@@ -1,64 +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.access.translator.batch.legacy;
-
-import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.access.translator.batch.BatchTranslator;
-import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.query.BatchQuery;
-import org.apache.cayenne.query.DeleteBatchQuery;
-import org.apache.cayenne.query.InsertBatchQuery;
-import org.apache.cayenne.query.UpdateBatchQuery;
-
-/**
- * Default implementation of {@link BatchTranslatorFactory}.
- *
- * @since 4.0
- * @deprecated since 4.2
- */
-@Deprecated
-public class DefaultBatchTranslatorFactory implements BatchTranslatorFactory {
-
- @Override
- public BatchTranslator translator(BatchQuery query, DbAdapter adapter, String trimFunction) {
- if (query instanceof InsertBatchQuery) {
- return insertTranslator((InsertBatchQuery) query, adapter);
- } else if (query instanceof UpdateBatchQuery) {
- return updateTranslator((UpdateBatchQuery) query, adapter, trimFunction);
- } else if (query instanceof DeleteBatchQuery) {
- return deleteTranslator((DeleteBatchQuery) query, adapter, trimFunction);
- } else {
- throw new CayenneRuntimeException("Unsupported batch query: %s", query);
- }
- }
-
- protected BatchTranslator deleteTranslator(DeleteBatchQuery query, DbAdapter adapter, String trimFunction) {
- return new DeleteBatchTranslator(query, adapter, trimFunction);
- }
-
- protected BatchTranslator insertTranslator(InsertBatchQuery query, DbAdapter adapter) {
- return new InsertBatchTranslator(query, adapter);
- }
-
- protected BatchTranslator updateTranslator(UpdateBatchQuery query, DbAdapter adapter, String trimFunction) {
- return new UpdateBatchTranslator(query, adapter, trimFunction);
- }
-
-}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/DeleteBatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/DeleteBatchTranslator.java
deleted file mode 100644
index afe719652..000000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/DeleteBatchTranslator.java
+++ /dev/null
@@ -1,118 +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.access.translator.batch.legacy;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.cayenne.access.translator.DbAttributeBinding;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.QuotingStrategy;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.query.BatchQueryRow;
-import org.apache.cayenne.query.DeleteBatchQuery;
-
-/**
- * Translator for delete BatchQueries. Creates parameterized DELETE SQL
- * statements.
- * @deprecated since 4.2
- */
-@Deprecated
-public class DeleteBatchTranslator extends DefaultBatchTranslator {
-
- public DeleteBatchTranslator(DeleteBatchQuery query, DbAdapter adapter, String trimFunction) {
- super(query, adapter, trimFunction);
- }
-
- @Override
- protected String createSql() {
-
- QuotingStrategy strategy = adapter.getQuotingStrategy();
-
- StringBuilder buffer = new StringBuilder("DELETE FROM ");
- buffer.append(strategy.quotedFullyQualifiedName(query.getDbEntity()));
-
- applyQualifier(buffer);
-
- return buffer.toString();
- }
-
- /**
- * Appends WHERE clause to SQL string
- */
- protected void applyQualifier(StringBuilder buffer) {
- buffer.append(" WHERE ");
-
- DeleteBatchQuery deleteBatch = (DeleteBatchQuery) query;
- Iterator<DbAttribute> i = deleteBatch.getDbAttributes().iterator();
- while (i.hasNext()) {
- DbAttribute attribute = i.next();
- appendDbAttribute(buffer, attribute);
- buffer.append(deleteBatch.isNull(attribute) ? " IS NULL" : " = ?");
-
- if (i.hasNext()) {
- buffer.append(" AND ");
- }
- }
- }
-
- @Override
- protected DbAttributeBinding[] createBindings() {
- DeleteBatchQuery deleteBatch = (DeleteBatchQuery) query;
- List<DbAttribute> attributes = deleteBatch.getDbAttributes();
- int len = attributes.size();
-
- DbAttributeBinding[] bindings = new DbAttributeBinding[len];
-
- for (int i = 0; i < len; i++) {
- bindings[i] = new DbAttributeBinding(attributes.get(i));
- }
-
- return bindings;
- }
-
- @Override
- protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
-
- int len = bindings.length;
-
- DeleteBatchQuery deleteBatch = (DeleteBatchQuery) query;
-
- for (int i = 0, j = 1; i < len; i++) {
-
- DbAttributeBinding b = bindings[i];
-
- // skip null attributes... they are translated as "IS NULL"
- if (deleteBatch.isNull(b.getAttribute())) {
- b.exclude();
- } else {
- Object value = row.getValue(i);
- ExtendedType extendedType = value != null
- ? adapter.getExtendedTypes().getRegisteredType(value.getClass())
- : adapter.getExtendedTypes().getDefaultType();
-
- b.include(j++, value, extendedType);
- }
- }
-
- return bindings;
- }
-}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/InsertBatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/InsertBatchTranslator.java
deleted file mode 100644
index 3bc59274b..000000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/InsertBatchTranslator.java
+++ /dev/null
@@ -1,149 +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.access.translator.batch.legacy;
-
-import java.util.List;
-
-import org.apache.cayenne.access.translator.DbAttributeBinding;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.QuotingStrategy;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.query.BatchQueryRow;
-import org.apache.cayenne.query.InsertBatchQuery;
-
-/**
- * Translator of InsertBatchQueries.
- * @deprecated since 4.2
- */
-@Deprecated
-public class InsertBatchTranslator extends DefaultBatchTranslator {
-
- public InsertBatchTranslator(InsertBatchQuery query, DbAdapter adapter) {
- // no trimming is needed here, so passing hardcoded NULL for trim
- // function
- super(query, adapter, null);
- }
-
- @Override
- protected String createSql() {
-
- List<DbAttribute> dbAttributes = query.getDbAttributes();
- QuotingStrategy strategy = adapter.getQuotingStrategy();
-
- StringBuilder buffer = new StringBuilder("INSERT INTO ");
- buffer.append(strategy.quotedFullyQualifiedName(query.getDbEntity()));
- buffer.append(" (");
-
- int columnCount = 0;
- for (DbAttribute attribute : dbAttributes) {
-
- // attribute inclusion rule - one of the rules below must be true:
- // (1) attribute not generated
- // (2) attribute is generated and PK and adapter does not support
- // generated
- // keys
-
- if (includeInBatch(attribute)) {
-
- if (columnCount > 0) {
- buffer.append(", ");
- }
- buffer.append(strategy.quotedName(attribute));
- columnCount++;
- }
- }
-
- buffer.append(") VALUES (");
-
- for (int i = 0; i < columnCount; i++) {
- if (i > 0) {
- buffer.append(", ");
- }
-
- buffer.append('?');
- }
- buffer.append(')');
- return buffer.toString();
- }
-
- @Override
- protected DbAttributeBinding[] createBindings() {
- List<DbAttribute> attributes = query.getDbAttributes();
- int len = attributes.size();
-
- DbAttributeBinding[] bindings = new DbAttributeBinding[len];
-
- for (int i = 0; i < len; i++) {
- DbAttribute a = attributes.get(i);
-
- bindings[i] = new DbAttributeBinding(a);
-
- // include/exclude state depends on DbAttribute only and can be
- // precompiled here
- if (includeInBatch(a)) {
- // setting fake position here... all we care about is that it is
- // > -1
- bindings[i].include(1, null, null);
- } else {
- bindings[i].exclude();
- }
- }
-
- return bindings;
- }
-
- @Override
- protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
- int len = bindings.length;
-
- for (int i = 0, j = 1; i < len; i++) {
-
- DbAttributeBinding b = bindings[i];
-
- // exclusions are permanent
- if (!b.isExcluded()) {
- Object value = row.getValue(i);
- ExtendedType extendedType = value != null
- ? adapter.getExtendedTypes().getRegisteredType(value.getClass())
- : adapter.getExtendedTypes().getDefaultType();
-
- b.include(j++, value, extendedType);
- }
- }
-
- return bindings;
- }
-
- /**
- * Returns true if an attribute should be included in the batch.
- *
- * @since 1.2
- */
- protected boolean includeInBatch(DbAttribute attribute) {
- // attribute inclusion rule - one of the rules below must be true:
- // (1) attribute not generated
- // (2) attribute is generated and PK and adapter does not support
- // generated
- // keys
-
- return !attribute.isGenerated() || (attribute.isPrimaryKey() && !adapter.supportsGeneratedKeys());
- }
-}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/SoftDeleteBatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/SoftDeleteBatchTranslator.java
deleted file mode 100644
index b616d9287..000000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/SoftDeleteBatchTranslator.java
+++ /dev/null
@@ -1,110 +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.access.translator.batch.legacy;
-
-import java.util.Objects;
-
-import org.apache.cayenne.access.translator.DbAttributeBinding;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.QuotingStrategy;
-import org.apache.cayenne.dba.TypesMapping;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.query.BatchQueryRow;
-import org.apache.cayenne.query.DeleteBatchQuery;
-
-/**
- * Implementation of {@link DeleteBatchTranslator}, which uses 'soft' delete
- * (runs UPDATE and sets 'deleted' field to true instead-of running SQL DELETE)
- *
- * @deprecated since 4.2
- */
-@Deprecated
-public class SoftDeleteBatchTranslator extends DeleteBatchTranslator {
-
- private String deletedFieldName;
-
- public SoftDeleteBatchTranslator(DeleteBatchQuery query, DbAdapter adapter, String trimFunction,
- String deletedFieldName) {
- super(query, adapter, trimFunction);
- this.deletedFieldName = Objects.requireNonNull(deletedFieldName);
- }
-
- @Override
- protected String createSql() {
-
- QuotingStrategy strategy = adapter.getQuotingStrategy();
-
- StringBuilder buffer = new StringBuilder("UPDATE ");
- buffer.append(strategy.quotedFullyQualifiedName(query.getDbEntity()));
- buffer.append(" SET ").append(strategy.quotedIdentifier(query.getDbEntity(), deletedFieldName)).append(" = ?");
-
- applyQualifier(buffer);
-
- return buffer.toString();
- }
-
- @Override
- protected DbAttributeBinding[] createBindings() {
-
- DbAttributeBinding[] superBindings = super.createBindings();
-
- int slen = superBindings.length;
-
- DbAttributeBinding[] bindings = new DbAttributeBinding[slen + 1];
-
- DbAttribute deleteAttribute = Objects.requireNonNull(query.getDbEntity().getAttribute(deletedFieldName));
- String typeName = TypesMapping.getJavaBySqlType(deleteAttribute);
- ExtendedType extendedType = adapter.getExtendedTypes().getRegisteredType(typeName);
-
- bindings[0] = new DbAttributeBinding(deleteAttribute);
- bindings[0].include(1, true, extendedType);
-
- System.arraycopy(superBindings, 0, bindings, 1, slen);
-
- return bindings;
- }
-
- @Override
- protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
- int len = bindings.length;
-
- DeleteBatchQuery deleteBatch = (DeleteBatchQuery) query;
-
- // skip position 0... Otherwise follow super algorithm
- for (int i = 1, j = 2; i < len; i++) {
-
- DbAttributeBinding b = bindings[i];
-
- // skip null attributes... they are translated as "IS NULL"
- if (deleteBatch.isNull(b.getAttribute())) {
- b.exclude();
- } else {
- Object value = row.getValue(i - 1);
- ExtendedType extendedType = value != null
- ? adapter.getExtendedTypes().getRegisteredType(value.getClass())
- : adapter.getExtendedTypes().getDefaultType();
-
- b.include(j++, value, extendedType);
- }
- }
-
- return bindings;
- }
-}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/SoftDeleteTranslatorFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/SoftDeleteTranslatorFactory.java
deleted file mode 100644
index 1fa838eed..000000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/SoftDeleteTranslatorFactory.java
+++ /dev/null
@@ -1,73 +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.access.translator.batch.legacy;
-
-import java.sql.Types;
-import java.util.Objects;
-
-import org.apache.cayenne.access.translator.batch.BatchTranslator;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.query.DeleteBatchQuery;
-
-/**
- * Implementation of {link #BatchTranslator}, which uses 'soft' delete
- * (runs UPDATE and sets 'deleted' field to true instead-of running SQL DELETE)
- *
- * @since 4.0
- * @deprecated since 4.2
- */
-@Deprecated
-public class SoftDeleteTranslatorFactory extends DefaultBatchTranslatorFactory {
- /**
- * Default name of 'deleted' field
- */
- public static final String DEFAULT_DELETED_FIELD_NAME = "DELETED";
-
- /**
- * Name of 'deleted' field
- */
- private String deletedFieldName;
-
- public SoftDeleteTranslatorFactory() {
- this(DEFAULT_DELETED_FIELD_NAME);
- }
-
- public SoftDeleteTranslatorFactory(String deletedFieldName) {
- this.deletedFieldName = Objects.requireNonNull(deletedFieldName);
- }
-
- @Override
- protected BatchTranslator deleteTranslator(DeleteBatchQuery query, DbAdapter adapter, String trimFunction) {
-
- DbAttribute attr = query.getDbEntity().getAttribute(deletedFieldName);
- boolean needsSoftDelete = attr != null && attr.getType() == Types.BOOLEAN;
-
- return needsSoftDelete
- ? new SoftDeleteBatchTranslator(query, adapter, trimFunction, deletedFieldName)
- : super.deleteTranslator(query, adapter, trimFunction);
- }
-
- /**
- * @return name of 'deleted' field
- */
- public String getDeletedFieldName() {
- return deletedFieldName;
- }
-}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/UpdateBatchTranslator.java b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/UpdateBatchTranslator.java
deleted file mode 100644
index 36e851bb2..000000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/batch/legacy/UpdateBatchTranslator.java
+++ /dev/null
@@ -1,148 +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.access.translator.batch.legacy;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.cayenne.access.translator.DbAttributeBinding;
-import org.apache.cayenne.access.types.ExtendedType;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.QuotingStrategy;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.query.BatchQueryRow;
-import org.apache.cayenne.query.UpdateBatchQuery;
-
-/**
- * A translator for UpdateBatchQueries that produces parameterized SQL.
- * @deprecated since 4.2
- */
-@Deprecated
-public class UpdateBatchTranslator extends DefaultBatchTranslator {
-
- public UpdateBatchTranslator(UpdateBatchQuery query, DbAdapter adapter, String trimFunction) {
- super(query, adapter, trimFunction);
- }
-
- @Override
- protected String createSql() {
- UpdateBatchQuery updateBatch = (UpdateBatchQuery) query;
-
- QuotingStrategy strategy = adapter.getQuotingStrategy();
-
- List<DbAttribute> qualifierAttributes = updateBatch.getQualifierAttributes();
- List<DbAttribute> updatedDbAttributes = updateBatch.getUpdatedAttributes();
-
- StringBuilder buffer = new StringBuilder("UPDATE ");
- buffer.append(strategy.quotedFullyQualifiedName(query.getDbEntity()));
- buffer.append(" SET ");
-
- int len = updatedDbAttributes.size();
- for (int i = 0; i < len; i++) {
- if (i > 0) {
- buffer.append(", ");
- }
-
- DbAttribute attribute = updatedDbAttributes.get(i);
- buffer.append(strategy.quotedName(attribute));
- buffer.append(" = ?");
- }
-
- buffer.append(" WHERE ");
-
- Iterator<DbAttribute> i = qualifierAttributes.iterator();
- while (i.hasNext()) {
- DbAttribute attribute = i.next();
- appendDbAttribute(buffer, attribute);
- buffer.append(updateBatch.isNull(attribute) ? " IS NULL" : " = ?");
-
- if (i.hasNext()) {
- buffer.append(" AND ");
- }
- }
-
- return buffer.toString();
- }
-
- @Override
- protected DbAttributeBinding[] createBindings() {
- UpdateBatchQuery updateBatch = (UpdateBatchQuery) query;
-
- List<DbAttribute> updatedDbAttributes = updateBatch.getUpdatedAttributes();
- List<DbAttribute> qualifierAttributes = updateBatch.getQualifierAttributes();
-
- int ul = updatedDbAttributes.size();
- int ql = qualifierAttributes.size();
-
- DbAttributeBinding[] bindings = new DbAttributeBinding[ul + ql];
-
- for (int i = 0; i < ul; i++) {
- bindings[i] = new DbAttributeBinding(updatedDbAttributes.get(i));
- }
-
- for (int i = 0; i < ql; i++) {
- bindings[ul + i] = new DbAttributeBinding(qualifierAttributes.get(i));
- }
-
- return bindings;
- }
-
- @Override
- protected DbAttributeBinding[] doUpdateBindings(BatchQueryRow row) {
-
- UpdateBatchQuery updateBatch = (UpdateBatchQuery) query;
-
- List<DbAttribute> updatedDbAttributes = updateBatch.getUpdatedAttributes();
- List<DbAttribute> qualifierAttributes = updateBatch.getQualifierAttributes();
-
- int ul = updatedDbAttributes.size();
- int ql = qualifierAttributes.size();
-
- int j = 1;
-
- for (int i = 0; i < ul; i++) {
- Object value = row.getValue(i);
- ExtendedType extendedType = value != null
- ? adapter.getExtendedTypes().getRegisteredType(value.getClass())
- : adapter.getExtendedTypes().getDefaultType();
-
- bindings[i].include(j++, value, extendedType);
- }
-
- for (int i = 0; i < ql; i++) {
-
- DbAttribute a = qualifierAttributes.get(i);
-
- // skip null attributes... they are translated as "IS NULL"
- if (updateBatch.isNull(a)) {
- continue;
- }
-
- Object value = row.getValue(ul + i);
- ExtendedType extendedType = value != null
- ? adapter.getExtendedTypes().getRegisteredType(value.getClass())
- : adapter.getExtendedTypes().getDefaultType();
-
- bindings[ul + i].include(j++, value, extendedType);
- }
-
- return bindings;
- }
-}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
index 5dfc160d4..8c250d6a3 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
@@ -103,7 +103,6 @@ public class JdbcAdapter implements DbAdapter {
this.caseInsensitiveCollations = runtimeProperties.getBoolean(Constants.CI_PROPERTY, false);
this.resourceLocator = resourceLocator;
- this.pkGenerator = createPkGenerator();
this.quotingStrategy = createQuotingStrategy();
this.ejbqlTranslatorFactory = createEJBQLTranslatorFactory();
@@ -191,16 +190,6 @@ public class JdbcAdapter implements DbAdapter {
extendedTypes.addFactory(new ValueObjectTypeFactory(extendedTypes, valueObjectTypeRegistry));
}
- /**
- * Creates and returns a primary key generator. This factory method should
- * be overriden by JdbcAdapter subclasses to provide custom implementations
- * of PKGenerator.
- */
- @Deprecated
- protected PkGenerator createPkGenerator() {
- return new JdbcPkGenerator(this);
- }
-
/**
* Creates and returns an {@link EJBQLTranslatorFactory} used to generate
* visitors for EJBQL to SQL translations. This method should be overriden
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
index bdbd376be..1f4887127 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
@@ -73,14 +73,6 @@ public class DB2Adapter extends JdbcAdapter {
setSupportsGeneratedKeys(true);
}
- /**
- * Creates a DB2 specific PK Generator.
- */
- @Override
- protected PkGenerator createPkGenerator() {
- return new DB2PkGenerator(this);
- }
-
@Override
protected void configureExtendedTypes(ExtendedTypeMap map) {
super.configureExtendedTypes(map);
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
index e7471fe19..437b0e394 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
@@ -95,11 +95,6 @@ public class DerbyAdapter extends JdbcAdapter {
public boolean supportsGeneratedKeysForBatchInserts() {
return false;
}
-
- @Override
- protected PkGenerator createPkGenerator() {
- return new DerbyPkGenerator(this);
- }
@Override
public SQLAction getAction(Query query, DataNode node) {
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java
index 28c667729..cdc56a0f9 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java
@@ -214,11 +214,6 @@ public class FrontBaseAdapter extends JdbcAdapter {
return Collections.singleton("DROP TABLE " + getQuotingStrategy().quotedFullyQualifiedName(table) + " CASCADE");
}
- @Override
- protected PkGenerator createPkGenerator() {
- return new FrontBasePkGenerator(this);
- }
-
/**
* Uses FrontBaseActionBuilder to create the right action.
*
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/h2/H2Adapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/h2/H2Adapter.java
index 128321bd2..6799ef5de 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/h2/H2Adapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/h2/H2Adapter.java
@@ -96,9 +96,4 @@ public class H2Adapter extends JdbcAdapter {
// create specially configured CharType handler
map.registerType(new H2CharType());
}
-
- @Override
- protected PkGenerator createPkGenerator() {
- return new H2PkGenerator(this);
- }
}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
index ffa1aabb5..a04e3a4ab 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
@@ -92,14 +92,6 @@ public class IngresAdapter extends JdbcAdapter {
map.registerType(new IngresBooleanType());
}
- /**
- * @see JdbcAdapter#createPkGenerator()
- */
- @Override
- protected PkGenerator createPkGenerator() {
- return new IngresPkGenerator(this);
- }
-
@Override
public void bindParameter(PreparedStatement statement, ParameterBinding binding)
throws SQLException, Exception {
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
index 1573379ff..06e248a76 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
@@ -249,16 +249,6 @@ public class MySQLAdapter extends JdbcAdapter {
}
}
- /**
- * Creates and returns a primary key generator. Overrides superclass
- * implementation to return an instance of MySQLPkGenerator that does the
- * correct table locking.
- */
- @Override
- protected PkGenerator createPkGenerator() {
- return new MySQLPkGenerator(this);
- }
-
/**
* @since 3.0
*/
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
index ccb93e72d..2f2b7b3ba 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
@@ -214,15 +214,6 @@ public class OracleAdapter extends JdbcAdapter {
map.registerType(new OracleBooleanType());
}
- /**
- * Creates and returns a primary key generator. Overrides superclass
- * implementation to return an instance of OraclePkGenerator.
- */
- @Override
- protected PkGenerator createPkGenerator() {
- return new OraclePkGenerator(this);
- }
-
/**
* Returns a query string to drop a table corresponding to <code>ent</code>
* DbEntity. Changes superclass behavior to drop all related foreign key
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
index 1765c3ba5..d1373a08e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
@@ -259,14 +259,6 @@ public class PostgresAdapter extends JdbcAdapter {
return Collections.singleton("DROP TABLE " + context.quotedFullyQualifiedName(table) + " CASCADE");
}
- /**
- * @see JdbcAdapter#createPkGenerator()
- */
- @Override
- protected PkGenerator createPkGenerator() {
- return new PostgresPkGenerator(this);
- }
-
@Override
public boolean supportsCatalogsOnReverseEngineering() {
return false;
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
index 303381f8a..f4013fd66 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseAdapter.java
@@ -111,15 +111,6 @@ public class SybaseAdapter extends JdbcAdapter {
map.registerType(new ByteType(true));
}
- /**
- * Creates and returns a primary key generator. Overrides superclass
- * implementation to return an instance of SybasePkGenerator.
- */
- @Override
- protected PkGenerator createPkGenerator() {
- return new SybasePkGenerator(this);
- }
-
@Override
public void bindParameter(PreparedStatement statement, ParameterBinding binding) throws Exception {
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/reflect/Property.java b/cayenne-server/src/main/java/org/apache/cayenne/reflect/Property.java
deleted file mode 100644
index 133209e17..000000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/Property.java
+++ /dev/null
@@ -1,31 +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.reflect;
-
-/**
- * Defines bean property API used by Cayenne to access object data, do faulting and graph
- * maintenance tasks.
- *
- * @since 1.2
- * @deprecated since 4.0 renamed to PropertyDescriptor.
- *
- */
-public interface Property extends PropertyDescriptor {
-}
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/resource/FilesystemResourceLocator.java b/cayenne-server/src/main/java/org/apache/cayenne/resource/FilesystemResourceLocator.java
deleted file mode 100644
index 295837a6c..000000000
--- a/cayenne-server/src/main/java/org/apache/cayenne/resource/FilesystemResourceLocator.java
+++ /dev/null
@@ -1,118 +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.resource;
-
-import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.ConfigurationException;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * A {@link ResourceLocator} that can locate resources in the filesystem. Instances of
- * {@link FilesystemResourceLocator} are explicitly created by the user and then bound to
- * a DI registry. E.g.:
- *
- * <pre>
- * class MyModule implements Module {
- *
- * public void configure(Binder binder) {
- * File dir1 = ...
- * File dir2 = ...
- * binder.bind(ResourceLocator.class).
- * toInstance(new FilesystemResourceLocator(dir1, dir2);
- * }
- * </pre>
- *
- * @since 3.1
- * @deprecated since 4.1. This can be implemented as a custom strategy outside Cayenne. There's no need for this object
- * to be in Cayenne.
- */
-@Deprecated
-public class FilesystemResourceLocator implements ResourceLocator {
-
- protected File[] roots;
-
- /**
- * Creates a new {@link FilesystemResourceLocator}, using an array of base locations
- * ("roots"). If a location is a file, its parent directory is used for resolving. If
- * location is a directory, it is used as is. If no locations are specified, current
- * application directory is used as a single base.
- */
- public FilesystemResourceLocator(File... roots) {
- init(roots);
- }
-
- /**
- * Creates a new {@link FilesystemResourceLocator}, using a collection of base
- * locations. If a location is a file, its parent directory is used for resolving. If
- * location is a directory, it is used as is. If no locations are specified, current
- * application directory is used as a single base.
- */
- public FilesystemResourceLocator(Collection<File> roots) {
- if (roots == null) {
- throw new NullPointerException("Null roots");
- }
-
- init(roots.toArray(new File[roots.size()]));
- }
-
- private void init(File[] roots) {
-
- if (roots == null || roots.length == 0) {
- roots = new File[] {
- new File(System.getProperty("user.dir"))
- };
- }
-
- this.roots = new File[roots.length];
- for (int i = 0; i < roots.length; i++) {
- File root = roots[i].isDirectory() ? roots[i] : roots[i].getParentFile();
- if (root == null) {
- throw new ConfigurationException("Invalid root: %s", roots[i]);
- }
-
- this.roots[i] = root;
- }
- }
-
- public Collection<Resource> findResources(String name) {
- Collection<Resource> resources = new ArrayList<>(3);
-
- for (File root : roots) {
-
- File resourceFile = new File(root, name);
- if (resourceFile.exists()) {
- try {
- resources.add(new URLResource(resourceFile.toURI().toURL()));
- }
- catch (MalformedURLException e) {
- throw new CayenneRuntimeException(
- "Can't convert file to URL: %s",
- e,
- resourceFile.getAbsolutePath());
- }
- }
- }
-
- return resources;
- }
-}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DeleteBatchTranslatorIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DeleteBatchTranslatorIT.java
deleted file mode 100644
index 2af52dbd9..000000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/DeleteBatchTranslatorIT.java
+++ /dev/null
@@ -1,164 +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.access.translator.batch.legacy;
-
-import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.query.DeleteBatchQuery;
-import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
-import org.apache.cayenne.unit.UnitDbAdapter;
-import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.mockito.Mockito.mock;
-
-@Deprecated
-@UseServerRuntime(CayenneProjects.LOCKING_PROJECT)
-public class DeleteBatchTranslatorIT extends ServerCase {
-
- @Inject
- private ServerRuntime runtime;
-
- @Inject
- private DbAdapter adapter;
-
- @Inject
- private UnitDbAdapter unitAdapter;
-
- @Inject
- private AdhocObjectFactory objectFactory;
-
- @Test
- public void testConstructor() throws Exception {
- DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
-
- DeleteBatchTranslator builder = new DeleteBatchTranslator(mock(DeleteBatchQuery.class), adapter, null);
-
- assertSame(adapter, builder.adapter);
- }
-
- @Test
- public void testCreateSqlString() throws Exception {
- DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
- .getDbEntity();
-
- List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID"));
-
- DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, Collections.<String> emptySet(), 1);
-
- DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
- DeleteBatchTranslator builder = new DeleteBatchTranslator(deleteQuery, adapter, null);
- String generatedSql = builder.getSql();
- assertNotNull(generatedSql);
- assertEquals("DELETE FROM " + entity.getName() + " WHERE LOCKING_TEST_ID = ?", generatedSql);
- }
-
- @Test
- public void testCreateSqlStringWithNulls() throws Exception {
- DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
- .getDbEntity();
-
- List<DbAttribute> idAttributes = Arrays.asList(entity.getAttribute("LOCKING_TEST_ID"),
- entity.getAttribute("NAME"));
-
- Collection<String> nullAttributes = Collections.singleton("NAME");
-
- DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, nullAttributes, 1);
-
- DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
- DeleteBatchTranslator builder = new DeleteBatchTranslator(deleteQuery, adapter, null);
- String generatedSql = builder.getSql();
- assertNotNull(generatedSql);
- assertEquals("DELETE FROM " + entity.getName() + " WHERE LOCKING_TEST_ID = ? AND NAME IS NULL", generatedSql);
- }
-
- @Test
- public void testCreateSqlStringWithIdentifiersQuote() throws Exception {
- DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
- .getDbEntity();
- try {
-
- entity.getDataMap().setQuotingSQLIdentifiers(true);
- List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID"));
-
- DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, Collections.<String> emptySet(), 1);
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
- DeleteBatchTranslator builder = new DeleteBatchTranslator(deleteQuery, adapter, null);
- String generatedSql = builder.getSql();
-
- String charStart = unitAdapter.getIdentifiersStartQuote();
- String charEnd = unitAdapter.getIdentifiersEndQuote();
-
- assertNotNull(generatedSql);
- assertEquals("DELETE FROM " + charStart + entity.getName() + charEnd + " WHERE " + charStart
- + "LOCKING_TEST_ID" + charEnd + " = ?", generatedSql);
- } finally {
- entity.getDataMap().setQuotingSQLIdentifiers(false);
- }
-
- }
-
- @Test
- public void testCreateSqlStringWithNullsWithIdentifiersQuote() throws Exception {
- DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
- .getDbEntity();
- try {
-
- entity.getDataMap().setQuotingSQLIdentifiers(true);
-
- List<DbAttribute> idAttributes = Arrays.asList(entity.getAttribute("LOCKING_TEST_ID"),
- entity.getAttribute("NAME"));
-
- Collection<String> nullAttributes = Collections.singleton("NAME");
-
- DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, nullAttributes, 1);
-
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
-
- DeleteBatchTranslator builder = new DeleteBatchTranslator(deleteQuery, adapter, null);
- String generatedSql = builder.getSql();
-
- String charStart = unitAdapter.getIdentifiersStartQuote();
- String charEnd = unitAdapter.getIdentifiersEndQuote();
- assertNotNull(generatedSql);
-
- assertEquals("DELETE FROM " + charStart + entity.getName() + charEnd + " WHERE " + charStart
- + "LOCKING_TEST_ID" + charEnd + " = ? AND " + charStart + "NAME" + charEnd + " IS NULL",
- generatedSql);
- } finally {
- entity.getDataMap().setQuotingSQLIdentifiers(false);
- }
- }
-}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/InsertBatchTranslatorIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/InsertBatchTranslatorIT.java
deleted file mode 100644
index dad5bd467..000000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/InsertBatchTranslatorIT.java
+++ /dev/null
@@ -1,105 +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.access.translator.batch.legacy;
-
-import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.query.InsertBatchQuery;
-import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
-import org.apache.cayenne.unit.UnitDbAdapter;
-import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-import org.junit.Test;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.mockito.Mockito.mock;
-
-@Deprecated
-@UseServerRuntime(CayenneProjects.LOCKING_PROJECT)
-public class InsertBatchTranslatorIT extends ServerCase {
-
- @Inject
- private ServerRuntime runtime;
-
- @Inject
- private DbAdapter adapter;
-
- @Inject
- private UnitDbAdapter unitAdapter;
-
- @Inject
- private AdhocObjectFactory objectFactory;
-
- @Test
- public void testConstructor() throws Exception {
- DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
-
- InsertBatchTranslator builder = new InsertBatchTranslator(mock(InsertBatchQuery.class), adapter);
-
- assertSame(adapter, builder.adapter);
- }
-
- @Test
- public void testCreateSqlString() throws Exception {
- DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
- .getDbEntity();
-
- DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
- InsertBatchQuery insertQuery = new InsertBatchQuery(entity, 1);
- InsertBatchTranslator builder = new InsertBatchTranslator(insertQuery, adapter);
- String generatedSql = builder.getSql();
- assertNotNull(generatedSql);
- assertEquals("INSERT INTO " + entity.getName() + " (DESCRIPTION, INT_COLUMN_NOTNULL, INT_COLUMN_NULL, LOCKING_TEST_ID, NAME) VALUES (?, ?, ?, ?, ?)",
- generatedSql);
- }
-
- @Test
- public void testCreateSqlStringWithIdentifiersQuote() throws Exception {
- DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
- .getDbEntity();
- try {
-
- entity.getDataMap().setQuotingSQLIdentifiers(true);
-
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
-
- InsertBatchQuery insertQuery = new InsertBatchQuery(entity, 1);
- InsertBatchTranslator builder = new InsertBatchTranslator(insertQuery, adapter);
- String generatedSql = builder.getSql();
- String charStart = unitAdapter.getIdentifiersStartQuote();
- String charEnd = unitAdapter.getIdentifiersEndQuote();
- assertNotNull(generatedSql);
- assertEquals("INSERT INTO " + charStart + entity.getName() + charEnd
- + " (" + charStart + "DESCRIPTION" + charEnd + ", "
- + charStart + "INT_COLUMN_NOTNULL" + charEnd + ", "
- + charStart + "INT_COLUMN_NULL" + charEnd + ", "
- + charStart + "LOCKING_TEST_ID" + charEnd + ", "
- + charStart + "NAME" + charEnd + ") VALUES (?, ?, ?, ?, ?)", generatedSql);
- } finally {
- entity.getDataMap().setQuotingSQLIdentifiers(false);
- }
- }
-}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/SoftDeleteBatchTranslatorIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/SoftDeleteBatchTranslatorIT.java
deleted file mode 100644
index 36efd4c82..000000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/SoftDeleteBatchTranslatorIT.java
+++ /dev/null
@@ -1,181 +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.access.translator.batch.legacy;
-
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.PersistenceState;
-import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.exp.Expression;
-import org.apache.cayenne.exp.ExpressionFactory;
-import org.apache.cayenne.map.DbAttribute;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.query.DeleteBatchQuery;
-import org.apache.cayenne.query.ObjectSelect;
-import org.apache.cayenne.query.SQLTemplate;
-import org.apache.cayenne.test.parallel.ParallelTestContainer;
-import org.apache.cayenne.testdo.soft_delete.SoftDelete;
-import org.apache.cayenne.unit.UnitDbAdapter;
-import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-@Deprecated
-@UseServerRuntime(CayenneProjects.SOFT_DELETE_PROJECT)
-public class SoftDeleteBatchTranslatorIT extends ServerCase {
-
- @Inject
- private ObjectContext context;
-
- @Inject
- protected DbAdapter adapter;
-
- @Inject
- private DataNode dataNode;
-
- @Inject
- private UnitDbAdapter unitAdapter;
-
- @Inject
- private AdhocObjectFactory objectFactory;
-
- private DeleteBatchTranslator createTranslator(DeleteBatchQuery query) {
- JdbcAdapter adapter = objectFactory.newInstance(JdbcAdapter.class, JdbcAdapter.class.getName());
- return createTranslator(query, adapter);
- }
-
- private DeleteBatchTranslator createTranslator(DeleteBatchQuery query, JdbcAdapter adapter) {
- return (DeleteBatchTranslator) new SoftDeleteTranslatorFactory().translator(query, adapter, null);
- }
-
- @Test
- public void testCreateSqlString() {
- DbEntity entity = context.getEntityResolver().getObjEntity(SoftDelete.class).getDbEntity();
-
- List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("ID"));
-
- DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, Collections.emptySet(), 1);
- DeleteBatchTranslator builder = createTranslator(deleteQuery);
- String generatedSql = builder.getSql();
- assertNotNull(generatedSql);
- assertEquals("UPDATE " + entity.getName() + " SET DELETED = ? WHERE ID = ?", generatedSql);
- }
-
- @Test
- public void testCreateSqlStringWithNulls() {
- DbEntity entity = context.getEntityResolver().getObjEntity(SoftDelete.class).getDbEntity();
-
- List<DbAttribute> idAttributes = Arrays.asList(entity.getAttribute("ID"), entity.getAttribute("NAME"));
-
- Collection<String> nullAttributes = Collections.singleton("NAME");
-
- DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, nullAttributes, 1);
- DeleteBatchTranslator builder = createTranslator(deleteQuery);
- String generatedSql = builder.getSql();
- assertNotNull(generatedSql);
- assertEquals("UPDATE " + entity.getName() + " SET DELETED = ? WHERE ID = ? AND NAME IS NULL", generatedSql);
- }
-
- @Test
- public void testCreateSqlStringWithIdentifiersQuote() {
- DbEntity entity = context.getEntityResolver().getObjEntity(SoftDelete.class).getDbEntity();
- try {
-
- entity.getDataMap().setQuotingSQLIdentifiers(true);
-
- List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("ID"));
-
- DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, Collections.emptySet(), 1);
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
- DeleteBatchTranslator builder = createTranslator(deleteQuery, adapter);
- String generatedSql = builder.getSql();
-
- String charStart = unitAdapter.getIdentifiersStartQuote();
- String charEnd = unitAdapter.getIdentifiersEndQuote();
-
- assertNotNull(generatedSql);
- assertEquals("UPDATE " + charStart + entity.getName() + charEnd + " SET " + charStart + "DELETED" + charEnd
- + " = ? WHERE " + charStart + "ID" + charEnd + " = ?", generatedSql);
- } finally {
- entity.getDataMap().setQuotingSQLIdentifiers(false);
- }
-
- }
-
- @Test
- public void testUpdate() throws Exception {
-
- final DbEntity entity = context.getEntityResolver().getObjEntity(SoftDelete.class).getDbEntity();
-
- BatchTranslatorFactory oldFactory = dataNode.getBatchTranslatorFactory();
- try {
- dataNode.setBatchTranslatorFactory(new SoftDeleteTranslatorFactory());
-
- final SoftDelete test = context.newObject(SoftDelete.class);
- test.setName("SoftDeleteBatchQueryBuilderTest");
- context.commitChanges();
-
- new ParallelTestContainer() {
-
- @Override
- protected void assertResult() {
- Expression exp = ExpressionFactory.matchExp("name", test.getName());
- assertEquals(1, ObjectSelect.query(SoftDelete.class, exp).selectCount(context));
-
- exp = ExpressionFactory.matchDbExp("DELETED", true);
- assertEquals(0, ObjectSelect.query(SoftDelete.class, exp).selectCount(context));
- }
- }.runTest(200);
-
- context.deleteObjects(test);
- assertEquals(test.getPersistenceState(), PersistenceState.DELETED);
- context.commitChanges();
-
- new ParallelTestContainer() {
-
- @Override
- protected void assertResult() {
- Expression exp = ExpressionFactory.matchExp("name", test.getName());
- assertEquals(0, ObjectSelect.query(SoftDelete.class, exp).selectCount(context));
-
- SQLTemplate template = new SQLTemplate(entity, "SELECT * FROM SOFT_DELETE");
- template.setFetchingDataRows(true);
- assertEquals(1, context.performQuery(template).size());
- }
- }.runTest(200);
- } finally {
- context.performQuery(new SQLTemplate(entity, "DELETE FROM SOFT_DELETE"));
- dataNode.setBatchTranslatorFactory(oldFactory);
- }
- }
-
-}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/UpdateBatchTranslatorIT.java b/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/UpdateBatchTranslatorIT.java
deleted file mode 100644
index 1a10261f8..000000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/access/translator/batch/legacy/UpdateBatchTranslatorIT.java
+++ /dev/null
@@ -1,170 +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.access.translator.batch.legacy;
-
-import org.apache.cayenne.configuration.server.ServerRuntime;
-import org.apache.cayenne.dba.DbAdapter;
-import org.apache.cayenne.dba.JdbcAdapter;
-import org.apache.cayenne.di.AdhocObjectFactory;
-import org.apache.cayenne.di.Inject;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.query.UpdateBatchQuery;
-import org.apache.cayenne.testdo.locking.SimpleLockingTestEntity;
-import org.apache.cayenne.unit.UnitDbAdapter;
-import org.apache.cayenne.unit.di.server.CayenneProjects;
-import org.apache.cayenne.unit.di.server.ServerCase;
-import org.apache.cayenne.unit.di.server.UseServerRuntime;
-import org.junit.Test;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.mockito.Mockito.mock;
-
-@Deprecated
-@UseServerRuntime(CayenneProjects.LOCKING_PROJECT)
-public class UpdateBatchTranslatorIT extends ServerCase {
-
- @Inject
- private ServerRuntime runtime;
-
- @Inject
- private DbAdapter adapter;
-
- @Inject
- private UnitDbAdapter unitAdapter;
-
- @Inject
- private AdhocObjectFactory objectFactory;
-
- @Test
- public void testConstructor() throws Exception {
- DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
- UpdateBatchTranslator builder = new UpdateBatchTranslator(mock(UpdateBatchQuery.class), adapter, null);
- assertSame(adapter, builder.adapter);
- }
-
- @Test
- public void testCreateSqlString() throws Exception {
- DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
- .getDbEntity();
-
- List idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID"));
- List updatedAttributes = Collections.singletonList(entity.getAttribute("DESCRIPTION"));
-
- UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
- Collections.<String> emptySet(), 1);
-
- DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
- UpdateBatchTranslator builder = new UpdateBatchTranslator(updateQuery, adapter, null);
- String generatedSql = builder.getSql();
- assertNotNull(generatedSql);
- assertEquals("UPDATE " + entity.getName() + " SET DESCRIPTION = ? WHERE LOCKING_TEST_ID = ?", generatedSql);
- }
-
- @Test
- public void testCreateSqlStringWithNulls() throws Exception {
- DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
- .getDbEntity();
-
- List idAttributes = Arrays.asList(entity.getAttribute("LOCKING_TEST_ID"), entity.getAttribute("NAME"));
-
- List updatedAttributes = Collections.singletonList(entity.getAttribute("DESCRIPTION"));
-
- Collection nullAttributes = Collections.singleton("NAME");
-
- UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes, nullAttributes, 1);
-
- DbAdapter adapter = objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName());
- UpdateBatchTranslator builder = new UpdateBatchTranslator(updateQuery, adapter, null);
- String generatedSql = builder.getSql();
- assertNotNull(generatedSql);
-
- assertEquals("UPDATE " + entity.getName() + " SET DESCRIPTION = ? WHERE LOCKING_TEST_ID = ? AND NAME IS NULL",
- generatedSql);
- }
-
- @Test
- public void testCreateSqlStringWithIdentifiersQuote() throws Exception {
- DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
- .getDbEntity();
- try {
-
- entity.getDataMap().setQuotingSQLIdentifiers(true);
- List idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID"));
- List updatedAttributes = Collections.singletonList(entity.getAttribute("DESCRIPTION"));
-
- UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
- Collections.<String> emptySet(), 1);
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
-
- UpdateBatchTranslator builder = new UpdateBatchTranslator(updateQuery, adapter, null);
- String generatedSql = builder.getSql();
-
- String charStart = unitAdapter.getIdentifiersStartQuote();
- String charEnd = unitAdapter.getIdentifiersEndQuote();
-
- assertNotNull(generatedSql);
- assertEquals("UPDATE " + charStart + entity.getName() + charEnd + " SET " + charStart + "DESCRIPTION"
- + charEnd + " = ? WHERE " + charStart + "LOCKING_TEST_ID" + charEnd + " = ?", generatedSql);
-
- } finally {
- entity.getDataMap().setQuotingSQLIdentifiers(false);
- }
- }
-
- @Test
- public void testCreateSqlStringWithNullsWithIdentifiersQuote() throws Exception {
- DbEntity entity = runtime.getDataDomain().getEntityResolver().getObjEntity(SimpleLockingTestEntity.class)
- .getDbEntity();
- try {
-
- entity.getDataMap().setQuotingSQLIdentifiers(true);
- List idAttributes = Arrays.asList(entity.getAttribute("LOCKING_TEST_ID"), entity.getAttribute("NAME"));
-
- List updatedAttributes = Collections.singletonList(entity.getAttribute("DESCRIPTION"));
-
- Collection nullAttributes = Collections.singleton("NAME");
-
- UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes,
- nullAttributes, 1);
- JdbcAdapter adapter = (JdbcAdapter) this.adapter;
-
- UpdateBatchTranslator builder = new UpdateBatchTranslator(updateQuery, adapter, null);
- String generatedSql = builder.getSql();
- assertNotNull(generatedSql);
-
- String charStart = unitAdapter.getIdentifiersStartQuote();
- String charEnd = unitAdapter.getIdentifiersEndQuote();
- assertEquals("UPDATE " + charStart + entity.getName() + charEnd + " SET " + charStart + "DESCRIPTION"
- + charEnd + " = ? WHERE " + charStart + "LOCKING_TEST_ID" + charEnd + " = ? AND " + charStart
- + "NAME" + charEnd + " IS NULL", generatedSql);
-
- } finally {
- entity.getDataMap().setQuotingSQLIdentifiers(false);
- }
- }
-
-}
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/resource/FilesystemResourceLocatorTest.java b/cayenne-server/src/test/java/org/apache/cayenne/resource/FilesystemResourceLocatorTest.java
deleted file mode 100644
index 93b1e325d..000000000
--- a/cayenne-server/src/test/java/org/apache/cayenne/resource/FilesystemResourceLocatorTest.java
+++ /dev/null
@@ -1,108 +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.resource;
-
-import org.apache.cayenne.test.file.FileUtil;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-@Deprecated
-public class FilesystemResourceLocatorTest {
-
- @Test
- public void testArrayConstructor() {
- FilesystemResourceLocator l1 = new FilesystemResourceLocator();
- assertEquals(1, l1.roots.length);
- assertEquals(System.getProperty("user.dir"), l1.roots[0].getPath());
-
- File base = FileUtil.baseTestDirectory();
- File f1 = new File(base, "f1");
- File f2 = new File(new File(base, "f2"), "f3");
-
- FilesystemResourceLocator l2 = new FilesystemResourceLocator(f1, f2);
- assertEquals(2, l2.roots.length);
- assertEquals(base, l2.roots[0]);
- assertEquals(new File(base, "f2"), l2.roots[1]);
- }
-
- @Test
- public void testCollectionConstructor() {
- FilesystemResourceLocator l1 = new FilesystemResourceLocator(Collections.<File> emptyList());
- assertEquals(1, l1.roots.length);
- assertEquals(System.getProperty("user.dir"), l1.roots[0].getPath());
-
- File base = FileUtil.baseTestDirectory();
- File f1 = new File(base, "f1");
- File f2 = new File(new File(base, "f2"), "f3");
-
- FilesystemResourceLocator l2 = new FilesystemResourceLocator(Arrays.asList(f1, f2));
- assertEquals(2, l2.roots.length);
- assertEquals(base, l2.roots[0]);
- assertEquals(new File(base, "f2"), l2.roots[1]);
- }
-
- @Test
- public void testFindResources() throws Exception {
-
- File base = new File(FileUtil.baseTestDirectory(), getClass().getName());
- File root1 = new File(base, "r1");
- File root2 = new File(base, "r2");
-
- root1.mkdirs();
- root2.mkdirs();
-
- FilesystemResourceLocator locator = new FilesystemResourceLocator(root1, root2);
- Collection<Resource> resources1 = locator.findResources("x.txt");
- assertNotNull(resources1);
- assertEquals(0, resources1.size());
-
- File f1 = new File(root1, "x.txt");
- touch(f1);
-
- Collection<Resource> resources2 = locator.findResources("x.txt");
- assertNotNull(resources2);
- assertEquals(1, resources2.size());
- assertEquals(f1.toURI().toURL(), resources2.iterator().next().getURL());
-
- File f2 = new File(root2, "x.txt");
- touch(f2);
-
- Collection<Resource> resources3 = locator.findResources("x.txt");
- assertNotNull(resources3);
- assertEquals(2, resources3.size());
-
- Resource[] resources3a = resources3.toArray(new Resource[2]);
- assertEquals(f1.toURI().toURL(), resources3a[0].getURL());
- assertEquals(f2.toURI().toURL(), resources3a[1].getURL());
- }
-
- private void touch(File f) throws Exception {
- try (FileOutputStream out = new FileOutputStream(f);) {
- out.write('a');
- }
- }
-}