You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by di...@apache.org on 2021/07/05 07:38:32 UTC

[sling-org-apache-sling-sitemap] branch master updated: SLING-10581: properly implement Closeable#close() contract for SitemapImpl

This is an automated email from the ASF dual-hosted git repository.

diru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-sitemap.git


The following commit(s) were added to refs/heads/master by this push:
     new 7713444  SLING-10581: properly implement Closeable#close() contract for SitemapImpl
7713444 is described below

commit 7713444018106e96cc81f1454ffa6efb9680d397
Author: Dirk Rudolph <dr...@adobe.com>
AuthorDate: Mon Jul 5 09:38:16 2021 +0200

    SLING-10581: properly implement Closeable#close() contract for SitemapImpl
---
 .../sling/sitemap/impl/builder/SitemapImpl.java    |  4 +++-
 .../sitemap/impl/builder/SitemapImplTest.java      | 25 +++++++++++++++++-----
 .../sling/sitemap/impl/builder/UrlImplTest.java    |  4 +---
 3 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/src/main/java/org/apache/sling/sitemap/impl/builder/SitemapImpl.java b/src/main/java/org/apache/sling/sitemap/impl/builder/SitemapImpl.java
index d034ee0..ce590a3 100644
--- a/src/main/java/org/apache/sling/sitemap/impl/builder/SitemapImpl.java
+++ b/src/main/java/org/apache/sling/sitemap/impl/builder/SitemapImpl.java
@@ -75,8 +75,10 @@ public class SitemapImpl implements Sitemap, Closeable {
 
     @Override
     public void close() throws IOException {
+        if (closed) {
+            return;
+        }
         try {
-            ensureNotClosed();
             closed = true;
             writePendingUrl();
             out.write("</urlset>");
diff --git a/src/test/java/org/apache/sling/sitemap/impl/builder/SitemapImplTest.java b/src/test/java/org/apache/sling/sitemap/impl/builder/SitemapImplTest.java
index f0a8057..c7e320b 100644
--- a/src/test/java/org/apache/sling/sitemap/impl/builder/SitemapImplTest.java
+++ b/src/test/java/org/apache/sling/sitemap/impl/builder/SitemapImplTest.java
@@ -18,21 +18,21 @@
  */
 package org.apache.sling.sitemap.impl.builder;
 
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+
 import org.apache.sling.sitemap.SitemapException;
 import org.apache.sling.sitemap.impl.builder.extensions.ExtensionProviderManager;
 import org.apache.sling.testing.mock.sling.junit5.SlingContext;
 import org.apache.sling.testing.mock.sling.junit5.SlingContextExtension;
-import org.jetbrains.annotations.NotNull;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.instanceOf;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
@@ -142,4 +142,19 @@ class SitemapImplTest extends AbstractBuilderTest {
         SitemapException ex = assertThrows(SitemapException.class, () -> sitemap.addUrl("http://localhost:4503"));
         assertThat(ex.getCause(), instanceOf(IOException.class));
     }
+
+
+    @Test
+    void testWritingToClosedSitemapThrows() throws IOException {
+        // given
+        StringWriter writer = new StringWriter();
+        SitemapImpl subject = new SitemapImpl(writer, extensionManager);
+
+        // when
+        subject.close();
+
+        assertThrows(IllegalStateException.class, () -> subject.addUrl("http://localhost:4502"));
+        assertThrows(IllegalStateException.class, () -> subject.flush());
+        assertDoesNotThrow(() -> subject.close());
+    }
 }
diff --git a/src/test/java/org/apache/sling/sitemap/impl/builder/UrlImplTest.java b/src/test/java/org/apache/sling/sitemap/impl/builder/UrlImplTest.java
index d2496b5..43a7137 100644
--- a/src/test/java/org/apache/sling/sitemap/impl/builder/UrlImplTest.java
+++ b/src/test/java/org/apache/sling/sitemap/impl/builder/UrlImplTest.java
@@ -148,7 +148,7 @@ class UrlImplTest extends AbstractBuilderTest {
     }
 
     @Test
-    void testWritingUrlOrExtensionTwiceFails() throws SitemapException, IOException {
+    void testWritingToWrittenUrlThrows() throws SitemapException, IOException {
         // given
         StringWriter writer = new StringWriter();
         SitemapImpl subject = new SitemapImpl(writer, extensionManager);
@@ -164,8 +164,6 @@ class UrlImplTest extends AbstractBuilderTest {
         assertThrows(IllegalStateException.class, () -> url.setChangeFrequency(Url.ChangeFrequency.ALWAYS));
         assertThrows(IllegalStateException.class, () -> url.setLastModified(now));
         assertThrows(IllegalStateException.class, () -> url.addExtension(TestExtension.class));
-        assertThrows(IllegalStateException.class, () -> subject.addUrl("http://foo.bar"));
-        assertThrows(IllegalStateException.class, subject::close);
     }
 
     interface TestExtension2 extends Extension {