From e0cee5c5e7078c0f5ca2eb2c6d6831307d8cbb32 Mon Sep 17 00:00:00 2001 From: Tom Page Date: Thu, 23 Apr 2020 15:56:58 +0100 Subject: [PATCH] SEARCH-2202 Fix NPE issues and add unit test for BoundedDeque. --- .../alfresco/solr/client/AclChangeSets.java | 2 +- .../org/alfresco/solr/client/AclReaders.java | 4 +- .../org/alfresco/solr/BoundedDequeTest.java | 57 +++++++++++++++++++ 3 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 search-services/alfresco-solrclient-lib/src/test/java/org/alfresco/solr/BoundedDequeTest.java diff --git a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/AclChangeSets.java b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/AclChangeSets.java index 5a508b361..1f1b2189f 100644 --- a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/AclChangeSets.java +++ b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/AclChangeSets.java @@ -43,7 +43,7 @@ public class AclChangeSets AclChangeSets(List aclChangeSets, Long maxChangeSetCommitTime, Long maxChangeSetId) { - this.aclChangeSets = new ArrayList<>(aclChangeSets); + this.aclChangeSets = (aclChangeSets == null ? null : new ArrayList<>(aclChangeSets)); this.maxChangeSetCommitTime = maxChangeSetCommitTime; this.maxChangeSetId = maxChangeSetId; } diff --git a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/AclReaders.java b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/AclReaders.java index ade01f21f..f18fc438f 100644 --- a/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/AclReaders.java +++ b/search-services/alfresco-solrclient-lib/src/main/java/org/alfresco/solr/client/AclReaders.java @@ -51,8 +51,8 @@ public class AclReaders public AclReaders(long id, List readers, List denied, long aclChangeSetId, String tenantDomain) { this.id = id; - this.readers = new ArrayList<>(readers); - this.denied = new ArrayList<>(denied); + this.readers = (readers == null ? null : new ArrayList<>(readers)); + this.denied = (denied == null ? null : new ArrayList<>(denied)); this.aclChangeSetId = aclChangeSetId; this.tenantDomain = tenantDomain; } diff --git a/search-services/alfresco-solrclient-lib/src/test/java/org/alfresco/solr/BoundedDequeTest.java b/search-services/alfresco-solrclient-lib/src/test/java/org/alfresco/solr/BoundedDequeTest.java new file mode 100644 index 000000000..73472f71a --- /dev/null +++ b/search-services/alfresco-solrclient-lib/src/test/java/org/alfresco/solr/BoundedDequeTest.java @@ -0,0 +1,57 @@ +/* + * #%L + * Alfresco Solr Client + * %% + * Copyright (C) 2005 - 2016 Alfresco Software Limited + * %% + * This file is part of the Alfresco software. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + * #L% + */ + +package org.alfresco.solr; + +import static java.util.Arrays.asList; + +import static org.junit.Assert.assertEquals; + +import java.util.ArrayList; +import java.util.concurrent.LinkedBlockingDeque; + +import org.junit.Test; + +/** Unit tests for the {@link BoundedDeque}. */ +public class BoundedDequeTest +{ + /** Check that earlier entries are removed from the BoundedDeque. */ + @Test + public void testBoundedness() + { + // Create a BoundedDeque with size two. + BoundedDeque boundedDeque = new BoundedDeque<>(2); + + // Add three things. + boundedDeque.add("A"); + boundedDeque.add("B"); + boundedDeque.add("C"); + + // Check that the latest two are still there. + LinkedBlockingDeque actual = boundedDeque.getDeque(); + assertEquals("Unexpected entries in BoundedDeque.", asList("C", "B"), new ArrayList(actual)); + } +}