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;