You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2018/02/21 15:36:38 UTC
[isis] 10/11: ISIS-1867: refactors GridLoaderServiceDefault to
cache its JAXBContext during initialization
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
commit 88a2f665cfa1473873b2db4ed8f5ec52309ceddb
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 21 15:21:11 2018 +0000
ISIS-1867: refactors GridLoaderServiceDefault to cache its JAXBContext during initialization
---
.../services/grid/GridLoaderServiceDefault.java | 36 +++++++++++++---------
1 file changed, 21 insertions(+), 15 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
index cd1a2ef..95cc52f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/services/grid/GridLoaderServiceDefault.java
@@ -25,6 +25,7 @@ import java.util.Objects;
import javax.annotation.PostConstruct;
import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
import com.google.common.base.Function;
import com.google.common.collect.FluentIterable;
@@ -60,20 +61,22 @@ public class GridLoaderServiceDefault implements GridLoaderService {
// cache (used only in prototyping mode)
private final Map<String, Grid> gridByXml = Maps.newHashMap();
- private List<Class<? extends Grid>> pageImplementations;
-
-
+ private JAXBContext jaxbContext;
@PostConstruct
public void init(){
- pageImplementations = FluentIterable.from(gridSystemServices)
- .transform(new Function<GridSystemService, Class<? extends Grid>>() {
- @Override
- public Class<? extends Grid> apply(final GridSystemService gridSystemService) {
- return gridSystemService.gridImplementation();
- }
- })
- .toList();
+ final List<Class<? extends Grid>> pageImplementations =
+ FluentIterable.from(gridSystemServices)
+ .transform(
+ (Function<GridSystemService, Class<? extends Grid>>) gss -> gss.gridImplementation())
+ .toList();
+
+ final Class[] clazz = pageImplementations.toArray(_Constants.emptyClasses);
+ try {
+ jaxbContext = JAXBContext.newInstance(clazz);
+ } catch (JAXBException e) {
+ // leave as null
+ }
}
@Override
@@ -126,11 +129,14 @@ public class GridLoaderServiceDefault implements GridLoaderService {
}
}
- try {
- // all known implementations of Page
- final JAXBContext context = JAXBContext.newInstance(pageImplementations.toArray(_Constants.emptyClasses));
- final Grid grid = (Grid) jaxbService.fromXml(context, xml);
+ try {
+ if(jaxbContext == null) {
+ // shouldn't occur, indicates that initialization failed to locate any GridSystemService implementations.
+ return null;
+ }
+
+ final Grid grid = (Grid) jaxbService.fromXml(jaxbContext, xml);
grid.setDomainClass(domainClass);
if(supportsReloading()) {
gridByXml.put(xml, grid);
--
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.