You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/11/10 10:07:30 UTC

[isis] branch master updated: ISIS-2891: split XDocReportService into interface and impl.

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

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 339959f  ISIS-2891: split XDocReportService into interface and impl.
339959f is described below

commit 339959f99b1271237b3d34f926f38d555c264ca4
Author: Andi Huber <ah...@apache.org>
AuthorDate: Wed Nov 10 11:07:15 2021 +0100

    ISIS-2891: split XDocReportService into interface and impl.
    
    - also properly register with Spring
---
 .../IsisModuleSubdomainsXDocReportApplib.java      |  8 +++-
 .../xdocreport/applib/XDocReportService.java       | 42 +++++++++++++++++++
 .../xdocreport/applib/service/OutputType.java      | 27 ------------
 .../xdocreport/applib/service/XDocReportModel.java | 48 ----------------------
 ...tService.java => XDocReportServiceDefault.java} | 26 ++++++++----
 .../applib/service/XDocReportServiceTest.java      |  4 +-
 .../example/models/ProjectDevelopersModel.java     |  2 +-
 7 files changed, 69 insertions(+), 88 deletions(-)

diff --git a/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/IsisModuleSubdomainsXDocReportApplib.java b/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/IsisModuleSubdomainsXDocReportApplib.java
index 94bf3b9..4de755c 100644
--- a/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/IsisModuleSubdomainsXDocReportApplib.java
+++ b/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/IsisModuleSubdomainsXDocReportApplib.java
@@ -18,14 +18,18 @@
  */
 package org.apache.isis.subdomains.xdocreport.applib;
 
-import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
+
+import org.apache.isis.subdomains.xdocreport.applib.service.XDocReportServiceDefault;
 
 /**
  * @since 2.0 {@index}
  */
 @Configuration
-@ComponentScan
+@Import({
+    XDocReportServiceDefault.class
+})
 public class IsisModuleSubdomainsXDocReportApplib {
 
 }
diff --git a/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/XDocReportService.java b/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/XDocReportService.java
new file mode 100644
index 0000000..b015e0e
--- /dev/null
+++ b/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/XDocReportService.java
@@ -0,0 +1,42 @@
+package org.apache.isis.subdomains.xdocreport.applib;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @since 2.0 {@index}
+ */
+public interface XDocReportService {
+
+    byte[] render(byte[] templateBytes, XDocReportModel dataModel, OutputType outputType) throws IOException;
+
+    enum OutputType {
+        DOCX,
+        PDF
+    }
+
+    /**
+     * @since 2.0 {@index}
+     */
+    interface XDocReportModel {
+
+        @lombok.Data
+        class Data {
+            private final Object obj;
+            private final Class<?> cls;
+            private final boolean list;
+
+            public static <T> Data list(final List<T> objects, final Class<T> cls) {
+                return new Data(objects, cls, true);
+            }
+
+            public static <T> Data object(final T object) {
+                return new Data(object, object.getClass(), false);
+            }
+        }
+        Map<String, Data> getContextData();
+
+    }
+
+}
\ No newline at end of file
diff --git a/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/OutputType.java b/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/OutputType.java
deleted file mode 100644
index 30e4207..0000000
--- a/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/OutputType.java
+++ /dev/null
@@ -1,27 +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
- *
- *        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.isis.subdomains.xdocreport.applib.service;
-
-/**
- * @since 2.0 {@index}
- */
-public enum OutputType {
-    DOCX,
-    PDF
-}
diff --git a/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportModel.java b/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportModel.java
deleted file mode 100644
index c3d56f5..0000000
--- a/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportModel.java
+++ /dev/null
@@ -1,48 +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
- *
- *        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.isis.subdomains.xdocreport.applib.service;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @since 2.0 {@index}
- */
-public interface XDocReportModel {
-
-    @lombok.Data
-    class Data {
-        private final Object obj;
-        private final Class<?> cls;
-        private final boolean list;
-
-        public static <T> Data list(final List<T> objects, final Class<T> cls) {
-            return new Data(objects, cls, true);
-        }
-
-        public static <T> Data object(final T object) {
-            return new Data(object, object.getClass(), false);
-        }
-    }
-    Map<String, Data> getContextData();
-
-}
-
-
-
diff --git a/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportService.java b/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportServiceDefault.java
similarity index 89%
rename from subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportService.java
rename to subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportServiceDefault.java
index d2677ff..dc4845c 100644
--- a/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportService.java
+++ b/subdomains/xdocreport/applib/src/main/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportServiceDefault.java
@@ -23,11 +23,15 @@ import java.io.IOException;
 import java.util.Map;
 
 import javax.annotation.PostConstruct;
+import javax.annotation.Priority;
+import javax.inject.Named;
 
 import org.apache.poi.xwpf.usermodel.XWPFDocument;
+import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Service;
 
-import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.annotation.PriorityPrecedence;
+import org.apache.isis.subdomains.xdocreport.applib.XDocReportService;
 
 import fr.opensagres.poi.xwpf.converter.core.IXWPFConverter;
 import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter;
@@ -40,11 +44,11 @@ import fr.opensagres.xdocreport.template.IContext;
 import fr.opensagres.xdocreport.template.TemplateEngineKind;
 import fr.opensagres.xdocreport.template.formatter.FieldsMetadata;
 
-/**
- * @since 2.0 {@index}
- */
 @Service
-public class XDocReportService {
+@Named("isis.sub.zip.XDocReportServiceDefault")
+@Priority(PriorityPrecedence.MIDPOINT)
+@Qualifier("Default")
+public class XDocReportServiceDefault implements XDocReportService {
 
     PdfOptions pdfOptions;
 
@@ -53,7 +57,7 @@ public class XDocReportService {
         pdfOptions = PdfOptions.create();
     }
 
-    @Programmatic
+    @Override
     public byte[] render(
             final byte[] templateBytes,
             final XDocReportModel dataModel,
@@ -73,6 +77,13 @@ public class XDocReportService {
         }
     }
 
+
+    protected IXWPFConverter<PdfOptions> pdfConverter() {
+        return PdfConverter.getInstance();
+    }
+
+    // -- HELPER
+
     private byte[] toDocx(final byte[] bytes, final XDocReportModel dataModel) throws IOException, XDocReportException {
         final IXDocReport report = XDocReportRegistry
                 .getRegistry().loadReport(new ByteArrayInputStream(bytes), TemplateEngineKind.Freemarker);
@@ -105,7 +116,4 @@ public class XDocReportService {
         return baos.toByteArray();
     }
 
-    protected IXWPFConverter<PdfOptions> pdfConverter() {
-        return PdfConverter.getInstance();
-    }
 }
diff --git a/subdomains/xdocreport/applib/src/test/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportServiceTest.java b/subdomains/xdocreport/applib/src/test/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportServiceTest.java
index 30b389e..bcf6004 100644
--- a/subdomains/xdocreport/applib/src/test/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportServiceTest.java
+++ b/subdomains/xdocreport/applib/src/test/java/org/apache/isis/subdomains/xdocreport/applib/service/XDocReportServiceTest.java
@@ -30,6 +30,8 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
+import org.apache.isis.subdomains.xdocreport.applib.XDocReportService;
+import org.apache.isis.subdomains.xdocreport.applib.XDocReportService.OutputType;
 import org.apache.isis.subdomains.xdocreport.applib.service.example.models.Developer;
 import org.apache.isis.subdomains.xdocreport.applib.service.example.models.Project;
 import org.apache.isis.subdomains.xdocreport.applib.service.example.models.ProjectDevelopersModel;
@@ -49,7 +51,7 @@ public class XDocReportServiceTest {
 
     @Before
     public void setUp() throws Exception {
-        service = new XDocReportService();
+        service = new XDocReportServiceDefault();
     }
 
     @Test
diff --git a/subdomains/xdocreport/applib/src/test/java/org/apache/isis/subdomains/xdocreport/applib/service/example/models/ProjectDevelopersModel.java b/subdomains/xdocreport/applib/src/test/java/org/apache/isis/subdomains/xdocreport/applib/service/example/models/ProjectDevelopersModel.java
index bbe639d..dccbb75 100644
--- a/subdomains/xdocreport/applib/src/test/java/org/apache/isis/subdomains/xdocreport/applib/service/example/models/ProjectDevelopersModel.java
+++ b/subdomains/xdocreport/applib/src/test/java/org/apache/isis/subdomains/xdocreport/applib/service/example/models/ProjectDevelopersModel.java
@@ -22,7 +22,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.isis.commons.internal.collections._Maps;
-import org.apache.isis.subdomains.xdocreport.applib.service.XDocReportModel;
+import org.apache.isis.subdomains.xdocreport.applib.XDocReportService.XDocReportModel;
 
 import lombok.Data;