This is an automated email from the ASF dual-hosted git repository. klund pushed a commit to branch support/1.14 in repository https://gitbox.apache.org/repos/asf/geode.git
commit 3f66ab05e5683edb4bcb43e52304d8e5f58ac707 Author: Kirk Lund <kl...@apache.org> AuthorDate: Thu Dec 9 10:15:20 2021 -0800 GEODE-9758: Move SanctionedSerializables to filter package (#7165) Move SanctionedSerializables to new package org.apache.geode.internal.serialization.filter. (cherry picked from commit db64b4948e790d61e82f95ae6163a62adc4c67fb) --- ...ctionedSerializablesServiceIntegrationTest.java | 3 +- .../RedisSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 2 +- geode-common/build.gradle | 2 +- ...ctionedSerializablesServiceIntegrationTest.java | 2 +- .../ConnectorsSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 geode-core/build.gradle | 2 + ...ctionedSerializablesServiceIntegrationTest.java | 2 +- .../CoreSanctionedSerializablesService.java | 2 +- .../geode/internal/InternalDataSerializer.java | 4 +- .../internal/ObjectInputStreamFilterWrapper.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 ...ctionedSerializablesServiceIntegrationTest.java | 2 +- .../internal/CQSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 ...ctionedSerializablesServiceIntegrationTest.java | 2 +- .../DUnitSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 ...ctionedSerializablesServiceIntegrationTest.java | 25 +++++- .../GfshSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 ...ctionedSerializablesServiceIntegrationTest.java | 5 +- ...nedSerializablesServiceIntegrationTestBase.java | 4 +- .../categories/SanctionedSerializablesTest.java | 5 +- .../JUnitSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 ...ctionedSerializablesServiceIntegrationTest.java | 2 +- .../LuceneSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 ...ctionedSerializablesServiceIntegrationTest.java | 2 +- .../ManagementSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 .../MembershipDependenciesJUnitTest.java | 1 - ...ctionedSerializablesServiceIntegrationTest.java | 2 +- .../MembershipSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 ...ctionedSerializablesServiceIntegrationTest.java | 2 +- .../MemcachedSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 geode-serialization/build.gradle | 4 + ...ctionedSerializablesServiceIntegrationTest.java | 1 + .../apache/geode/codeAnalysis/excludedClasses.txt | 0 ...erializationSanctionedSerializablesService.java | 2 + .../{ => filter}/SanctionedSerializables.java | 37 ++++++++- .../SanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 ...est.java => SerializationDependenciesTest.java} | 20 ++--- .../filter/SanctionedSerializablesTest.java | 95 ++++++++++++++++++++++ .../src/test/resources/expected-pom.xml | 10 +++ ...ctionedSerializablesServiceIntegrationTest.java | 4 +- .../wan/WANSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 ...ctionedSerializablesServiceIntegrationTest.java | 2 +- .../WebApiSanctionedSerializablesService.java | 2 +- ...lization.filter.SanctionedSerializablesService} | 0 56 files changed, 219 insertions(+), 55 deletions(-) diff --git a/geode-apis-compatible-with-redis/src/integrationTest/java/org/apache/geode/redis/internal/RedisSanctionedSerializablesServiceIntegrationTest.java b/geode-apis-compatible-with-redis/src/integrationTest/java/org/apache/geode/redis/internal/RedisSanctionedSerializablesServiceIntegrationTest.java index 420db71..8f9f4fe 100644 --- a/geode-apis-compatible-with-redis/src/integrationTest/java/org/apache/geode/redis/internal/RedisSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-apis-compatible-with-redis/src/integrationTest/java/org/apache/geode/redis/internal/RedisSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,8 @@ package org.apache.geode.redis.internal; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; +import org.apache.geode.redis.internal.services.RedisSanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-apis-compatible-with-redis/src/main/java/org/apache/geode/redis/internal/RedisSanctionedSerializablesService.java b/geode-apis-compatible-with-redis/src/main/java/org/apache/geode/redis/internal/RedisSanctionedSerializablesService.java index 6fed4e4..2f6024f 100644 --- a/geode-apis-compatible-with-redis/src/main/java/org/apache/geode/redis/internal/RedisSanctionedSerializablesService.java +++ b/geode-apis-compatible-with-redis/src/main/java/org/apache/geode/redis/internal/RedisSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.redis.internal; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class RedisSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-apis-compatible-with-redis/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-apis-compatible-with-redis/src/test/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 90% rename from geode-apis-compatible-with-redis/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-apis-compatible-with-redis/src/test/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService index c11ffee..5fcd5fa 100644 --- a/geode-apis-compatible-with-redis/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService +++ b/geode-apis-compatible-with-redis/src/test/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService @@ -12,4 +12,4 @@ # or implied. See the License for the specific language governing permissions and limitations under # the License. # -org.apache.geode.redis.internal.RedisSanctionedSerializablesService +org.apache.geode.redis.internal.services.RedisSanctionedSerializablesService diff --git a/geode-common/build.gradle b/geode-common/build.gradle index 3e9000a..9c23308 100755 --- a/geode-common/build.gradle +++ b/geode-common/build.gradle @@ -28,10 +28,10 @@ dependencies { // test testImplementation('junit:junit') + testImplementation('org.apache.commons:commons-lang3') testImplementation('org.assertj:assertj-core') testImplementation('org.mockito:mockito-core') - // jmhTest jmhTestImplementation('junit:junit') jmhTestImplementation('org.assertj:assertj-core') diff --git a/geode-connectors/src/integrationTest/java/org/apache/geode/connectors/jdbc/internal/ConnectorsSanctionedSerializablesServiceIntegrationTest.java b/geode-connectors/src/integrationTest/java/org/apache/geode/connectors/jdbc/internal/ConnectorsSanctionedSerializablesServiceIntegrationTest.java index 7a6d11a..9a1be57 100644 --- a/geode-connectors/src/integrationTest/java/org/apache/geode/connectors/jdbc/internal/ConnectorsSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-connectors/src/integrationTest/java/org/apache/geode/connectors/jdbc/internal/ConnectorsSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,7 @@ package org.apache.geode.connectors.jdbc.internal; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectorsSanctionedSerializablesService.java b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectorsSanctionedSerializablesService.java index 76b5390..007978b 100644 --- a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectorsSanctionedSerializablesService.java +++ b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/ConnectorsSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.connectors.jdbc.internal; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class ConnectorsSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-connectors/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-core/build.gradle b/geode-core/build.gradle index 78380fe..b129c55 100755 --- a/geode-core/build.gradle +++ b/geode-core/build.gradle @@ -329,6 +329,7 @@ dependencies { exclude module: 'geode-core' } testImplementation(project(':geode-concurrency-test')) + testImplementation(project(':geode-serialization')) testImplementation('org.apache.bcel:bcel') testImplementation('org.assertj:assertj-core') testImplementation('org.mockito:mockito-core') @@ -355,6 +356,7 @@ dependencies { integrationTestImplementation(project(':geode-dunit')) integrationTestImplementation(project(':geode-log4j')) integrationTestImplementation(project(':geode-concurrency-test')) + integrationTestImplementation(project(':geode-serialization')) integrationTestImplementation('org.apache.bcel:bcel') integrationTestImplementation('org.apache.logging.log4j:log4j-core') integrationTestImplementation('org.powermock:powermock-core') diff --git a/geode-core/src/integrationTest/java/org/apache/geode/internal/CoreSanctionedSerializablesServiceIntegrationTest.java b/geode-core/src/integrationTest/java/org/apache/geode/internal/CoreSanctionedSerializablesServiceIntegrationTest.java index feeb08d..36e0623 100644 --- a/geode-core/src/integrationTest/java/org/apache/geode/internal/CoreSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-core/src/integrationTest/java/org/apache/geode/internal/CoreSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,7 @@ package org.apache.geode.internal; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-core/src/main/java/org/apache/geode/internal/CoreSanctionedSerializablesService.java b/geode-core/src/main/java/org/apache/geode/internal/CoreSanctionedSerializablesService.java index 790520e..fa5f1e1 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/CoreSanctionedSerializablesService.java +++ b/geode-core/src/main/java/org/apache/geode/internal/CoreSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.internal; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class CoreSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java b/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java index dbab162..cba2560 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java +++ b/geode-core/src/main/java/org/apache/geode/internal/InternalDataSerializer.java @@ -14,7 +14,7 @@ */ package org.apache.geode.internal; -import static org.apache.geode.internal.serialization.SanctionedSerializables.loadSanctionedSerializablesServices; +import static org.apache.geode.internal.serialization.filter.SanctionedSerializables.loadSanctionedSerializablesServices; import java.io.DataInput; import java.io.DataOutput; @@ -115,11 +115,11 @@ import org.apache.geode.internal.serialization.DscodeHelper; import org.apache.geode.internal.serialization.KnownVersion; import org.apache.geode.internal.serialization.ObjectDeserializer; import org.apache.geode.internal.serialization.ObjectSerializer; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; import org.apache.geode.internal.serialization.SerializationContext; import org.apache.geode.internal.serialization.SerializationVersions; import org.apache.geode.internal.serialization.StaticSerialization; import org.apache.geode.internal.serialization.VersionedDataStream; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.internal.util.concurrent.CopyOnWriteHashMap; import org.apache.geode.logging.internal.log4j.api.LogService; import org.apache.geode.pdx.NonPortableClassException; diff --git a/geode-core/src/main/java/org/apache/geode/internal/ObjectInputStreamFilterWrapper.java b/geode-core/src/main/java/org/apache/geode/internal/ObjectInputStreamFilterWrapper.java index 184eb9f..25d5e35 100644 --- a/geode-core/src/main/java/org/apache/geode/internal/ObjectInputStreamFilterWrapper.java +++ b/geode-core/src/main/java/org/apache/geode/internal/ObjectInputStreamFilterWrapper.java @@ -30,7 +30,7 @@ import org.apache.logging.log4j.Logger; import org.apache.geode.GemFireConfigException; import org.apache.geode.InternalGemFireError; import org.apache.geode.InternalGemFireException; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.logging.internal.log4j.api.LogService; diff --git a/geode-core/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-core/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-core/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-core/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-cq/src/integrationTest/java/org/apache/geode/cache/query/cq/internal/CQSanctionedSerializablesServiceIntegrationTest.java b/geode-cq/src/integrationTest/java/org/apache/geode/cache/query/cq/internal/CQSanctionedSerializablesServiceIntegrationTest.java index b17a1cf..1d1d09c 100644 --- a/geode-cq/src/integrationTest/java/org/apache/geode/cache/query/cq/internal/CQSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-cq/src/integrationTest/java/org/apache/geode/cache/query/cq/internal/CQSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,7 @@ package org.apache.geode.cache.query.cq.internal; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-cq/src/main/java/org/apache/geode/cache/query/cq/internal/CQSanctionedSerializablesService.java b/geode-cq/src/main/java/org/apache/geode/cache/query/cq/internal/CQSanctionedSerializablesService.java index 59838f8..b61cbc5 100644 --- a/geode-cq/src/main/java/org/apache/geode/cache/query/cq/internal/CQSanctionedSerializablesService.java +++ b/geode-cq/src/main/java/org/apache/geode/cache/query/cq/internal/CQSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.cache.query.cq.internal; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class CQSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-cq/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-cq/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-cq/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-cq/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/internal/DUnitSanctionedSerializablesServiceIntegrationTest.java b/geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/internal/DUnitSanctionedSerializablesServiceIntegrationTest.java index f70d3c3..d73861e 100644 --- a/geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/internal/DUnitSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-dunit/src/integrationTest/java/org/apache/geode/test/dunit/internal/DUnitSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,7 @@ package org.apache.geode.test.dunit.internal; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitSanctionedSerializablesService.java b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitSanctionedSerializablesService.java index 6ae34d7..beb4daf 100644 --- a/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitSanctionedSerializablesService.java +++ b/geode-dunit/src/main/java/org/apache/geode/test/dunit/internal/DUnitSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.test.dunit.internal; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class DUnitSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-dunit/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-dunit/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-dunit/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-dunit/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-lucene/src/integrationTest/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesServiceIntegrationTest.java b/geode-gfsh/src/integrationTest/java/org/apache/geode/gfsh/internal/management/GfshSanctionedSerializablesServiceIntegrationTest.java similarity index 63% copy from geode-lucene/src/integrationTest/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesServiceIntegrationTest.java copy to geode-gfsh/src/integrationTest/java/org/apache/geode/gfsh/internal/management/GfshSanctionedSerializablesServiceIntegrationTest.java index 2c6ba29..48a414c 100644 --- a/geode-lucene/src/integrationTest/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-gfsh/src/integrationTest/java/org/apache/geode/gfsh/internal/management/GfshSanctionedSerializablesServiceIntegrationTest.java @@ -12,20 +12,27 @@ * or implied. See the License for the specific language governing permissions and limitations under * the License. */ -package org.apache.geode.cache.lucene.internal; +package org.apache.geode.gfsh.internal.management; +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; +import java.util.Collection; + +import org.junit.Test; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; +import org.apache.geode.management.cli.CommandProcessingException; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; @Category({SerializationTest.class, SanctionedSerializablesTest.class}) -public class LuceneSanctionedSerializablesServiceIntegrationTest +public class GfshSanctionedSerializablesServiceIntegrationTest extends SanctionedSerializablesServiceIntegrationTestBase { - private final SanctionedSerializablesService service = new LuceneSanctionedSerializablesService(); + private final SanctionedSerializablesService service = new GfshSanctionedSerializablesService(); @Override protected SanctionedSerializablesService getService() { @@ -36,4 +43,14 @@ public class LuceneSanctionedSerializablesServiceIntegrationTest protected ServiceResourceExpectation getServiceResourceExpectation() { return ServiceResourceExpectation.NON_EMPTY; } + + @Test + public void acceptListContainsCommandProcessingException() throws IOException { + SanctionedSerializablesService service = getService(); + + Collection<String> serializables = service.getSerializationAcceptlist(); + + assertThat(serializables) + .contains(CommandProcessingException.class.getName()); + } } diff --git a/geode-gfsh/src/main/java/org/apache/geode/management/internal/GfshSanctionedSerializablesService.java b/geode-gfsh/src/main/java/org/apache/geode/management/internal/GfshSanctionedSerializablesService.java index 66c9457..9c5d0ea 100644 --- a/geode-gfsh/src/main/java/org/apache/geode/management/internal/GfshSanctionedSerializablesService.java +++ b/geode-gfsh/src/main/java/org/apache/geode/management/internal/GfshSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.management.internal; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class GfshSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-gfsh/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-gfsh/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-gfsh/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-gfsh/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-junit/src/integrationTest/java/org/apache/geode/test/junit/internal/JUnitSanctionedSerializablesServiceIntegrationTest.java b/geode-junit/src/integrationTest/java/org/apache/geode/test/junit/internal/JUnitSanctionedSerializablesServiceIntegrationTest.java index f317278..2f48af8 100644 --- a/geode-junit/src/integrationTest/java/org/apache/geode/test/junit/internal/JUnitSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-junit/src/integrationTest/java/org/apache/geode/test/junit/internal/JUnitSanctionedSerializablesServiceIntegrationTest.java @@ -17,8 +17,7 @@ package org.apache.geode.test.junit.internal; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.CoreSanctionedSerializablesService; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; @@ -26,7 +25,7 @@ import org.apache.geode.test.junit.categories.SerializationTest; public class JUnitSanctionedSerializablesServiceIntegrationTest extends SanctionedSerializablesServiceIntegrationTestBase { - private final SanctionedSerializablesService service = new CoreSanctionedSerializablesService(); + private final SanctionedSerializablesService service = new JUnitSanctionedSerializablesService(); @Override protected SanctionedSerializablesService getService() { diff --git a/geode-junit/src/main/java/org/apache/geode/codeAnalysis/SanctionedSerializablesServiceIntegrationTestBase.java b/geode-junit/src/main/java/org/apache/geode/codeAnalysis/SanctionedSerializablesServiceIntegrationTestBase.java index 2fd6672..171a038 100644 --- a/geode-junit/src/main/java/org/apache/geode/codeAnalysis/SanctionedSerializablesServiceIntegrationTestBase.java +++ b/geode-junit/src/main/java/org/apache/geode/codeAnalysis/SanctionedSerializablesServiceIntegrationTestBase.java @@ -14,7 +14,7 @@ */ package org.apache.geode.codeAnalysis; -import static org.apache.geode.internal.serialization.SanctionedSerializables.loadSanctionedSerializablesServices; +import static org.apache.geode.internal.serialization.filter.SanctionedSerializables.loadSanctionedSerializablesServices; import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; @@ -23,7 +23,7 @@ import java.util.Collection; import org.junit.Test; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public abstract class SanctionedSerializablesServiceIntegrationTestBase { diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/categories/SanctionedSerializablesTest.java b/geode-junit/src/main/java/org/apache/geode/test/junit/categories/SanctionedSerializablesTest.java index 3401da1..ac0d7ac 100644 --- a/geode-junit/src/main/java/org/apache/geode/test/junit/categories/SanctionedSerializablesTest.java +++ b/geode-junit/src/main/java/org/apache/geode/test/junit/categories/SanctionedSerializablesTest.java @@ -14,5 +14,8 @@ */ package org.apache.geode.test.junit.categories; -public interface SanctionedSerializablesTest { +/** + * A test category for SanctionedSerializables. + */ +public interface SanctionedSerializablesTest extends SerializationTest { } diff --git a/geode-junit/src/main/java/org/apache/geode/test/junit/internal/JUnitSanctionedSerializablesService.java b/geode-junit/src/main/java/org/apache/geode/test/junit/internal/JUnitSanctionedSerializablesService.java index 0c3030e..4de5d3a 100644 --- a/geode-junit/src/main/java/org/apache/geode/test/junit/internal/JUnitSanctionedSerializablesService.java +++ b/geode-junit/src/main/java/org/apache/geode/test/junit/internal/JUnitSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.test.junit.internal; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class JUnitSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-junit/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-junit/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-junit/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-junit/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-lucene/src/integrationTest/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesServiceIntegrationTest.java b/geode-lucene/src/integrationTest/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesServiceIntegrationTest.java index 2c6ba29..f88e099 100644 --- a/geode-lucene/src/integrationTest/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-lucene/src/integrationTest/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,7 @@ package org.apache.geode.cache.lucene.internal; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesService.java b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesService.java index 918c05d..57db794 100644 --- a/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesService.java +++ b/geode-lucene/src/main/java/org/apache/geode/cache/lucene/internal/LuceneSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.cache.lucene.internal; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class LuceneSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-lucene/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-lucene/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-lucene/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-lucene/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-management/src/integrationTest/java/org/apache/geode/management/internal/ManagementSanctionedSerializablesServiceIntegrationTest.java b/geode-management/src/integrationTest/java/org/apache/geode/management/internal/ManagementSanctionedSerializablesServiceIntegrationTest.java index e2f1c10..7a54d77 100644 --- a/geode-management/src/integrationTest/java/org/apache/geode/management/internal/ManagementSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-management/src/integrationTest/java/org/apache/geode/management/internal/ManagementSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,7 @@ package org.apache.geode.management.internal; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-management/src/main/java/org/apache/geode/management/internal/ManagementSanctionedSerializablesService.java b/geode-management/src/main/java/org/apache/geode/management/internal/ManagementSanctionedSerializablesService.java index 6e232a5..051cc1d 100644 --- a/geode-management/src/main/java/org/apache/geode/management/internal/ManagementSanctionedSerializablesService.java +++ b/geode-management/src/main/java/org/apache/geode/management/internal/ManagementSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.management.internal; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class ManagementSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-management/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-management/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-management/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-management/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java index e43646c..112b225 100644 --- a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java +++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/MembershipDependenciesJUnitTest.java @@ -59,7 +59,6 @@ public class MembershipDependenciesJUnitTest { .or(resideInAPackage("org.apache.geode.internal.lang..")) .or(resideInAPackage("org.apache.geode.annotations..")) .or(resideInAPackage("org.apache.geode.codeAnalysis..")) - .or(not(resideInAPackage("org.apache.geode.."))) .or(type(AvailablePortHelper.class)) diff --git a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/MembershipSanctionedSerializablesServiceIntegrationTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/MembershipSanctionedSerializablesServiceIntegrationTest.java index cc1e6e9..1758efc 100644 --- a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/MembershipSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/MembershipSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,7 @@ package org.apache.geode.distributed.internal.membership.gms; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipSanctionedSerializablesService.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipSanctionedSerializablesService.java index b611b75..9311b06 100644 --- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipSanctionedSerializablesService.java +++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.distributed.internal.membership.gms; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class MembershipSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-membership/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-membership/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-membership/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-membership/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-memcached/src/integrationTest/java/org/apache/geode/internal/memcached/MemcachedSanctionedSerializablesServiceIntegrationTest.java b/geode-memcached/src/integrationTest/java/org/apache/geode/internal/memcached/MemcachedSanctionedSerializablesServiceIntegrationTest.java index 536b61b..9badf90 100644 --- a/geode-memcached/src/integrationTest/java/org/apache/geode/internal/memcached/MemcachedSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-memcached/src/integrationTest/java/org/apache/geode/internal/memcached/MemcachedSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,7 @@ package org.apache.geode.internal.memcached; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-memcached/src/main/java/org/apache/geode/internal/memcached/MemcachedSanctionedSerializablesService.java b/geode-memcached/src/main/java/org/apache/geode/internal/memcached/MemcachedSanctionedSerializablesService.java index ab04e2d..014a234 100644 --- a/geode-memcached/src/main/java/org/apache/geode/internal/memcached/MemcachedSanctionedSerializablesService.java +++ b/geode-memcached/src/main/java/org/apache/geode/internal/memcached/MemcachedSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.internal.memcached; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class MemcachedSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-memcached/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-memcached/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-memcached/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-memcached/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-serialization/build.gradle b/geode-serialization/build.gradle index 54620c7..581b424 100755 --- a/geode-serialization/build.gradle +++ b/geode-serialization/build.gradle @@ -25,10 +25,14 @@ dependencies { //Geode-common has annotations and other pieces used by geode-serialization implementation(project(':geode-common')) + implementation(project(':geode-logging')) //FastUtil contains optimized collections that are used in multiple places in core implementation('it.unimi.dsi:fastutil') + // serialization filtering uses Apache Commons + implementation('org.apache.commons:commons-lang3') + //Log4j is used everywhere implementation('org.apache.logging.log4j:log4j-api') diff --git a/geode-serialization/src/integrationTest/java/org/apache/geode/internal/serialization/SerializationSanctionedSerializablesServiceIntegrationTest.java b/geode-serialization/src/integrationTest/java/org/apache/geode/internal/serialization/SerializationSanctionedSerializablesServiceIntegrationTest.java index f733ee7..5c54d94 100644 --- a/geode-serialization/src/integrationTest/java/org/apache/geode/internal/serialization/SerializationSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-serialization/src/integrationTest/java/org/apache/geode/internal/serialization/SerializationSanctionedSerializablesServiceIntegrationTest.java @@ -17,6 +17,7 @@ package org.apache.geode.internal.serialization; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-serialization/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt b/geode-serialization/src/integrationTest/resources/org/apache/geode/codeAnalysis/excludedClasses.txt new file mode 100644 index 0000000..e69de29 diff --git a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/SerializationSanctionedSerializablesService.java b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/SerializationSanctionedSerializablesService.java index 52827f2..5957db6 100644 --- a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/SerializationSanctionedSerializablesService.java +++ b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/SerializationSanctionedSerializablesService.java @@ -16,6 +16,8 @@ package org.apache.geode.internal.serialization; import java.net.URL; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; + public class SerializationSanctionedSerializablesService implements SanctionedSerializablesService { @Override diff --git a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/SanctionedSerializables.java b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/SanctionedSerializables.java similarity index 64% rename from geode-serialization/src/main/java/org/apache/geode/internal/serialization/SanctionedSerializables.java rename to geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/SanctionedSerializables.java index 7b9a77f..a493c58 100644 --- a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/SanctionedSerializables.java +++ b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/SanctionedSerializables.java @@ -12,7 +12,7 @@ * or implied. See the License for the specific language governing permissions and limitations under * the License. */ -package org.apache.geode.internal.serialization; +package org.apache.geode.internal.serialization.filter; import static java.util.Collections.emptyList; @@ -20,20 +20,33 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.io.UncheckedIOException; import java.net.URL; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.ServiceLoader; +import java.util.Set; + +import org.apache.logging.log4j.Logger; + +import org.apache.geode.logging.internal.log4j.api.LogService; public class SanctionedSerializables { + private static final Logger logger = LogService.getLogger(); + + private SanctionedSerializables() { + // do not instantiate + } + /** * Loads all SanctionedSerializablesServices on the classpath. */ - public static Collection<SanctionedSerializablesService> loadSanctionedSerializablesServices() { + public static Set<SanctionedSerializablesService> loadSanctionedSerializablesServices() { ServiceLoader<SanctionedSerializablesService> loader = ServiceLoader.load(SanctionedSerializablesService.class); - Collection<SanctionedSerializablesService> services = new ArrayList<>(); + Set<SanctionedSerializablesService> services = new HashSet<>(); for (SanctionedSerializablesService service : loader) { services.add(service); } @@ -62,4 +75,22 @@ public class SanctionedSerializables { } return result; } + + public static Set<String> loadSanctionedClassNames( + Iterable<SanctionedSerializablesService> services) { + Set<String> sanctionedClasses = new HashSet<>(650); + for (SanctionedSerializablesService service : services) { + try { + Collection<String> classNames = service.getSerializationAcceptlist(); + logger.info("loaded {} sanctioned serializables from {}", classNames.size(), + service.getClass().getSimpleName()); + sanctionedClasses.addAll(classNames); + } catch (IOException e) { + throw new UncheckedIOException( + "Unable to initialize serialization filter for " + service, + e); + } + } + return sanctionedClasses; + } } diff --git a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/SanctionedSerializablesService.java b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/SanctionedSerializablesService.java similarity index 95% rename from geode-serialization/src/main/java/org/apache/geode/internal/serialization/SanctionedSerializablesService.java rename to geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/SanctionedSerializablesService.java index ad40721..1d139ce 100644 --- a/geode-serialization/src/main/java/org/apache/geode/internal/serialization/SanctionedSerializablesService.java +++ b/geode-serialization/src/main/java/org/apache/geode/internal/serialization/filter/SanctionedSerializablesService.java @@ -12,7 +12,7 @@ * or implied. See the License for the specific language governing permissions and limitations under * the License. */ -package org.apache.geode.internal.serialization; +package org.apache.geode.internal.serialization.filter; import java.io.IOException; import java.net.URL; diff --git a/geode-serialization/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-serialization/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-serialization/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-serialization/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-serialization/src/test/java/org/apache/geode/internal/serialization/SerializationDependenciesJUnitTest.java b/geode-serialization/src/test/java/org/apache/geode/internal/serialization/SerializationDependenciesTest.java similarity index 75% rename from geode-serialization/src/test/java/org/apache/geode/internal/serialization/SerializationDependenciesJUnitTest.java rename to geode-serialization/src/test/java/org/apache/geode/internal/serialization/SerializationDependenciesTest.java index 6f66731..199cb0f 100644 --- a/geode-serialization/src/test/java/org/apache/geode/internal/serialization/SerializationDependenciesJUnitTest.java +++ b/geode-serialization/src/test/java/org/apache/geode/internal/serialization/SerializationDependenciesTest.java @@ -18,7 +18,8 @@ import static com.tngtech.archunit.base.DescribedPredicate.not; import static com.tngtech.archunit.core.domain.JavaClass.Predicates.resideInAPackage; import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; -import com.tngtech.archunit.core.importer.ImportOption; +import com.tngtech.archunit.core.importer.ImportOption.DoNotIncludeArchives; +import com.tngtech.archunit.core.importer.ImportOption.DoNotIncludeTests; import com.tngtech.archunit.junit.AnalyzeClasses; import com.tngtech.archunit.junit.ArchTest; import com.tngtech.archunit.junit.ArchUnitRunner; @@ -26,23 +27,22 @@ import com.tngtech.archunit.junit.CacheMode; import com.tngtech.archunit.lang.ArchRule; import org.junit.runner.RunWith; - @RunWith(ArchUnitRunner.class) -@AnalyzeClasses(packages = "org.apache.geode.internal.serialization..", +@AnalyzeClasses( + packages = "org.apache.geode.internal.serialization..", cacheMode = CacheMode.PER_CLASS, - importOptions = {ImportOption.DoNotIncludeArchives.class, ImportOption.DoNotIncludeTests.class}) -public class SerializationDependenciesJUnitTest { + importOptions = {DoNotIncludeArchives.class, DoNotIncludeTests.class}) +public class SerializationDependenciesTest { @ArchTest - public static final ArchRule serializationDoesntDependOnCoreProvisional = classes() + public static final ArchRule serializationDoesNotDependOnCore = classes() .that() .resideInAPackage("org.apache.geode.internal.serialization..") - .should() .onlyDependOnClassesThat( resideInAPackage("org.apache.geode.internal.serialization..") .or(not(resideInAPackage("org.apache.geode.."))) - .or(resideInAPackage("org.apache.geode.test..")) - .or(resideInAPackage("org.apache.geode.annotations.."))); - + .or(resideInAPackage("org.apache.geode.annotations..")) + .or(resideInAPackage("org.apache.geode.logging..")) + .or(resideInAPackage("org.apache.geode.test.."))); } diff --git a/geode-serialization/src/test/java/org/apache/geode/internal/serialization/filter/SanctionedSerializablesTest.java b/geode-serialization/src/test/java/org/apache/geode/internal/serialization/filter/SanctionedSerializablesTest.java new file mode 100644 index 0000000..33c4684 --- /dev/null +++ b/geode-serialization/src/test/java/org/apache/geode/internal/serialization/filter/SanctionedSerializablesTest.java @@ -0,0 +1,95 @@ +/* + * 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 + * + * http://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.geode.internal.serialization.filter; + +import static java.util.Arrays.asList; +import static java.util.Collections.emptySet; +import static org.apache.geode.internal.serialization.filter.SanctionedSerializables.loadSanctionedClassNames; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.catchThrowable; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import org.junit.Test; + +public class SanctionedSerializablesTest { + + @Test + public void returnsAcceptListFromSanctionedSerializablesService() { + Collection<SanctionedSerializablesService> services = new HashSet<>(); + services.add(serviceWithSanctionedSerializablesOf("foo", "bar")); + + Set<String> result = loadSanctionedClassNames(services); + + assertThat(result).containsExactlyInAnyOrder("foo", "bar"); + } + + @Test + public void returnsAcceptListsFromManySanctionedSerializablesServices() { + Collection<SanctionedSerializablesService> services = new HashSet<>(); + services.add(serviceWithSanctionedSerializablesOf("foo", "bar")); + services.add(serviceWithSanctionedSerializablesOf("the", "fox")); + services.add(serviceWithSanctionedSerializablesOf("a", "bear")); + + Set<String> result = loadSanctionedClassNames(services); + + assertThat(result).containsExactlyInAnyOrder("foo", "bar", "the", "fox", "a", "bear"); + } + + @Test + public void nullThrowsNullPointerException() { + Throwable thrown = catchThrowable(() -> { + loadSanctionedClassNames(null); + }); + + assertThat(thrown).isInstanceOf(NullPointerException.class); + } + + @Test + public void emptyServicesReturnsEmptySet() { + Set<String> result = loadSanctionedClassNames(emptySet()); + + assertThat(result).isEmpty(); + } + + @Test + public void servicesWithEmptyAcceptListsReturnsEmptySet() { + Collection<SanctionedSerializablesService> services = new HashSet<>(); + services.add(serviceWithSanctionedSerializablesOf()); + services.add(serviceWithSanctionedSerializablesOf()); + services.add(serviceWithSanctionedSerializablesOf()); + + Set<String> result = loadSanctionedClassNames(services); + + assertThat(result).isEmpty(); + } + + private static SanctionedSerializablesService serviceWithSanctionedSerializablesOf( + String... classNames) { + try { + SanctionedSerializablesService service = mock(SanctionedSerializablesService.class); + when(service.getSerializationAcceptlist()).thenReturn(asList(classNames)); + return service; + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } +} diff --git a/geode-serialization/src/test/resources/expected-pom.xml b/geode-serialization/src/test/resources/expected-pom.xml index 3da2a5a..ae1f34e 100644 --- a/geode-serialization/src/test/resources/expected-pom.xml +++ b/geode-serialization/src/test/resources/expected-pom.xml @@ -52,11 +52,21 @@ <scope>runtime</scope> </dependency> <dependency> + <groupId>org.apache.geode</groupId> + <artifactId>geode-logging</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> <groupId>it.unimi.dsi</groupId> <artifactId>fastutil</artifactId> <scope>runtime</scope> </dependency> <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + <scope>runtime</scope> + </dependency> + <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <scope>runtime</scope> diff --git a/geode-wan/src/integrationTest/java/org/apache/geode/internal/cache/wan/WANSanctionedSerializablesServiceIntegrationTest.java b/geode-wan/src/integrationTest/java/org/apache/geode/internal/cache/wan/WANSanctionedSerializablesServiceIntegrationTest.java index 49749d4..e184ed3 100644 --- a/geode-wan/src/integrationTest/java/org/apache/geode/internal/cache/wan/WANSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-wan/src/integrationTest/java/org/apache/geode/internal/cache/wan/WANSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,7 @@ package org.apache.geode.internal.cache.wan; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; @@ -34,6 +34,6 @@ public class WANSanctionedSerializablesServiceIntegrationTest @Override protected ServiceResourceExpectation getServiceResourceExpectation() { - return ServiceResourceExpectation.EMPTY; + return ServiceResourceExpectation.NON_EMPTY; } } diff --git a/geode-wan/src/main/java/org/apache/geode/internal/cache/wan/WANSanctionedSerializablesService.java b/geode-wan/src/main/java/org/apache/geode/internal/cache/wan/WANSanctionedSerializablesService.java index 0c92c02..dbedf82 100644 --- a/geode-wan/src/main/java/org/apache/geode/internal/cache/wan/WANSanctionedSerializablesService.java +++ b/geode-wan/src/main/java/org/apache/geode/internal/cache/wan/WANSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.internal.cache.wan; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class WANSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-wan/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-wan/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-wan/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-wan/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService diff --git a/geode-web-api/src/integrationTest/java/org/apache/geode/rest/internal/WebApiSanctionedSerializablesServiceIntegrationTest.java b/geode-web-api/src/integrationTest/java/org/apache/geode/rest/internal/WebApiSanctionedSerializablesServiceIntegrationTest.java index 8408c24..05ab52b 100644 --- a/geode-web-api/src/integrationTest/java/org/apache/geode/rest/internal/WebApiSanctionedSerializablesServiceIntegrationTest.java +++ b/geode-web-api/src/integrationTest/java/org/apache/geode/rest/internal/WebApiSanctionedSerializablesServiceIntegrationTest.java @@ -17,7 +17,7 @@ package org.apache.geode.rest.internal; import org.junit.experimental.categories.Category; import org.apache.geode.codeAnalysis.SanctionedSerializablesServiceIntegrationTestBase; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; import org.apache.geode.test.junit.categories.SanctionedSerializablesTest; import org.apache.geode.test.junit.categories.SerializationTest; diff --git a/geode-web-api/src/main/java/org/apache/geode/rest/internal/WebApiSanctionedSerializablesService.java b/geode-web-api/src/main/java/org/apache/geode/rest/internal/WebApiSanctionedSerializablesService.java index 846a02e..9d24c0b 100644 --- a/geode-web-api/src/main/java/org/apache/geode/rest/internal/WebApiSanctionedSerializablesService.java +++ b/geode-web-api/src/main/java/org/apache/geode/rest/internal/WebApiSanctionedSerializablesService.java @@ -16,7 +16,7 @@ package org.apache.geode.rest.internal; import java.net.URL; -import org.apache.geode.internal.serialization.SanctionedSerializablesService; +import org.apache.geode.internal.serialization.filter.SanctionedSerializablesService; public class WebApiSanctionedSerializablesService implements SanctionedSerializablesService { diff --git a/geode-web-api/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService b/geode-web-api/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService similarity index 100% rename from geode-web-api/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.SanctionedSerializablesService rename to geode-web-api/src/main/resources/META-INF/services/org.apache.geode.internal.serialization.filter.SanctionedSerializablesService