You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by ah...@apache.org on 2023/03/28 12:06:46 UTC
[causeway] branch master updated: CAUSEWAY-3129: more utility cleanups
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/causeway.git
The following commit(s) were added to refs/heads/master by this push:
new 3c89434aef CAUSEWAY-3129: more utility cleanups
3c89434aef is described below
commit 3c89434aef52581b671603d570ad91dcdd5c7d69
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Mar 28 14:06:39 2023 +0200
CAUSEWAY-3129: more utility cleanups
---
.../testdomain/rest/JsonValueEncoderTest.java | 2 +-
.../restfulobjects/rendering/LinkFollowSpecs.java | 16 +++++++--
.../JsonValueEncoderServiceDefault.java | 25 ++++----------
.../service/valuerender/_JsonValueConverters.java | 11 +++++-
.../rendering/util/FollowSpecUtil.java | 39 ----------------------
.../rendering/util/JsonWriterUtil.java | 21 +++++-------
.../JsonValueEncoderTestAbstract.java | 2 +-
7 files changed, 40 insertions(+), 76 deletions(-)
diff --git a/regressiontests/stable-rest/src/test/java/org/apache/causeway/testdomain/rest/JsonValueEncoderTest.java b/regressiontests/stable-rest/src/test/java/org/apache/causeway/testdomain/rest/JsonValueEncoderTest.java
index 041da4c8d2..ff5679b41f 100644
--- a/regressiontests/stable-rest/src/test/java/org/apache/causeway/testdomain/rest/JsonValueEncoderTest.java
+++ b/regressiontests/stable-rest/src/test/java/org/apache/causeway/testdomain/rest/JsonValueEncoderTest.java
@@ -427,7 +427,7 @@ class JsonValueEncoderTest {
private JsonRepresentation representationFor(
final Object value, final Context context, final Consumer<Object> valueAsObjectVerifier) {
val valueAdapter = mmc.getObjectManager().adapt(value);
- val jsonValueEncoder = JsonValueEncoderServiceDefault.forTesting(mmc.getSpecificationLoader());
+ val jsonValueEncoder = new JsonValueEncoderServiceDefault(mmc.getSpecificationLoader());
valueAsObjectVerifier.accept(jsonValueEncoder.asObject(valueAdapter, context));
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/LinkFollowSpecs.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/LinkFollowSpecs.java
index e75ef9603e..8abd8098da 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/LinkFollowSpecs.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/LinkFollowSpecs.java
@@ -18,21 +18,33 @@
*/
package org.apache.causeway.viewer.restfulobjects.rendering;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.causeway.commons.internal.base._NullSafe;
import org.apache.causeway.commons.internal.collections._Lists;
import org.apache.causeway.viewer.restfulobjects.applib.JsonRepresentation;
import org.apache.causeway.viewer.restfulobjects.applib.util.PathNode;
-import org.apache.causeway.viewer.restfulobjects.rendering.util.FollowSpecUtil;
public final class LinkFollowSpecs {
public static final LinkFollowSpecs create(final List<List<String>> links) {
- final List<List<PathNode>> specs = FollowSpecUtil.asFollowSpecs(links);
+ final List<List<PathNode>> specs = asFollowSpecs(links);
return new LinkFollowSpecs(specs, Mode.FOLLOWING, null);
}
+ private static final List<List<PathNode>> asFollowSpecs(final List<List<String>> links) {
+ return _NullSafe.stream(links)
+ .map(_NullSafe::stream)
+ .map((final Stream<String> pathPartStream)->pathPartStream
+ .map(PathNode::parse)
+ .collect(Collectors.toCollection(ArrayList::new)))
+ .collect(Collectors.toCollection(ArrayList::new));
+ }
+
private enum Mode {
FOLLOWING, TERMINATED;
}
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java
index f3ba178f42..0f6777840c 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/JsonValueEncoderServiceDefault.java
@@ -22,7 +22,6 @@ import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
-import javax.annotation.PostConstruct;
import javax.annotation.Priority;
import javax.inject.Inject;
import javax.inject.Named;
@@ -38,7 +37,6 @@ import org.apache.causeway.applib.value.semantics.ValueSemanticsProvider;
import org.apache.causeway.commons.functional.Try;
import org.apache.causeway.commons.internal.assertions._Assert;
import org.apache.causeway.commons.internal.base._Casts;
-import org.apache.causeway.commons.internal.collections._Maps;
import org.apache.causeway.commons.internal.exceptions._Exceptions;
import org.apache.causeway.core.metamodel.facets.object.value.ValueSerializer;
import org.apache.causeway.core.metamodel.facets.object.value.ValueSerializer.Format;
@@ -63,14 +61,13 @@ import lombok.extern.log4j.Log4j2;
@Log4j2
public class JsonValueEncoderServiceDefault implements JsonValueEncoderService {
- @Inject private SpecificationLoader specificationLoader;
+ private final SpecificationLoader specificationLoader;
+ private final Map<Class<?>, JsonValueConverter> converterByClass;
- private Map<Class<?>, JsonValueConverter> converterByClass = _Maps.newLinkedHashMap();
-
- @PostConstruct
- public void init() {
- new _JsonValueConverters().asList()
- .forEach(converter->converterByClass.put(converter.getValueClass(), converter));
+ @Inject
+ public JsonValueEncoderServiceDefault(final SpecificationLoader specificationLoader) {
+ this.specificationLoader = specificationLoader;
+ this.converterByClass = _JsonValueConverters.byClass();
}
@Override
@@ -250,14 +247,4 @@ public class JsonValueEncoderServiceDefault implements JsonValueEncoderService {
.enstring(Format.JSON, _Casts.uncheckedCast(adapter.getPojo()));
}
- /**
- * JUnit support
- */
- public static JsonValueEncoderServiceDefault forTesting(final SpecificationLoader specificationLoader) {
- val jsonValueEncoder = new JsonValueEncoderServiceDefault();
- jsonValueEncoder.specificationLoader = specificationLoader;
- jsonValueEncoder.init();
- return jsonValueEncoder;
- }
-
}
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/_JsonValueConverters.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/_JsonValueConverters.java
index ff289d9062..ea80738cc7 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/_JsonValueConverters.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/service/valuerender/_JsonValueConverters.java
@@ -22,6 +22,7 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
@@ -31,6 +32,7 @@ import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;
import org.apache.causeway.commons.internal.collections._Lists;
+import org.apache.causeway.commons.internal.collections._Maps;
import org.apache.causeway.core.metamodel.object.ManagedObject;
import org.apache.causeway.viewer.restfulobjects.applib.JsonRepresentation;
@@ -79,7 +81,14 @@ final class _JsonValueConverters {
final String extendedFormat;
}
- public List<JsonValueConverter> asList() {
+ public static Map<Class<?>, JsonValueConverter> byClass() {
+ val converterByClass = _Maps.<Class<?>, JsonValueConverter>newLinkedHashMap();
+ new _JsonValueConverters().asList()
+ .forEach(converter->converterByClass.put(converter.getValueClass(), converter));
+ return converterByClass;
+ }
+
+ private List<JsonValueConverter> asList() {
val converters = _Lists.<JsonValueConverter>newArrayList();
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/FollowSpecUtil.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/FollowSpecUtil.java
deleted file mode 100644
index 79f3f88b5d..0000000000
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/FollowSpecUtil.java
+++ /dev/null
@@ -1,39 +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.causeway.viewer.restfulobjects.rendering.util;
-
-import java.util.List;
-
-import org.apache.causeway.commons.internal.collections._Lists;
-import org.apache.causeway.viewer.restfulobjects.applib.util.PathNode;
-
-public final class FollowSpecUtil {
-
- private FollowSpecUtil() {
- }
-
- public static final List<List<PathNode>> asFollowSpecs(final List<List<String>> links) {
-
- final List<List<PathNode>> unmodifiable = _Lists.map(links, (List<String> pathParts) -> {
- return _Lists.newArrayList(_Lists.map(pathParts, (String input)->PathNode.parse(input)));
- });
-
- return _Lists.newArrayList(unmodifiable);
- }
-}
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/JsonWriterUtil.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/JsonWriterUtil.java
index 8fdbacbfbf..e7d41087d0 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/JsonWriterUtil.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/causeway/viewer/restfulobjects/rendering/util/JsonWriterUtil.java
@@ -18,33 +18,28 @@
*/
package org.apache.causeway.viewer.restfulobjects.rendering.util;
-import java.io.IOException;
-
import org.springframework.lang.Nullable;
import org.apache.causeway.core.config.environment.CausewaySystemEnvironment;
import org.apache.causeway.viewer.restfulobjects.applib.util.JsonMapper;
+import lombok.SneakyThrows;
import lombok.val;
+import lombok.experimental.UtilityClass;
+@UtilityClass
public final class JsonWriterUtil {
- private JsonWriterUtil(){}
-
- public static String jsonFor(Object object, JsonMapper.PrettyPrinting prettyPrinting) {
- try {
- return JsonMapper.instance(prettyPrinting).write(object);
- } catch (final IOException e) {
- throw new RuntimeException(e);
- }
+ @SneakyThrows
+ public String jsonFor(final Object object, final JsonMapper.PrettyPrinting prettyPrinting) {
+ return JsonMapper.instance(prettyPrinting).write(object);
}
- public static String jsonFor(Object object, @Nullable CausewaySystemEnvironment systemEnvironment) {
+ public String jsonFor(final Object object, @Nullable final CausewaySystemEnvironment systemEnvironment) {
val prettyPrinting = (systemEnvironment!=null && systemEnvironment.isPrototyping())
? JsonMapper.PrettyPrinting.ENABLE
- : JsonMapper.PrettyPrinting.DISABLE;
+ : JsonMapper.PrettyPrinting.DISABLE;
return jsonFor(object, prettyPrinting);
}
-
}
diff --git a/viewers/restfulobjects/rendering/src/test/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTestAbstract.java b/viewers/restfulobjects/rendering/src/test/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTestAbstract.java
index 5d28f623e3..7283edf8a6 100644
--- a/viewers/restfulobjects/rendering/src/test/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTestAbstract.java
+++ b/viewers/restfulobjects/rendering/src/test/java/org/apache/causeway/viewer/restfulobjects/rendering/domainobjects/JsonValueEncoderTestAbstract.java
@@ -53,7 +53,7 @@ abstract class JsonValueEncoderTestAbstract {
.withValueSemantics(new FloatValueSemantics())
;
- jsonValueEncoder = JsonValueEncoderServiceDefault.forTesting(mmc.getSpecificationLoader());
+ jsonValueEncoder = new JsonValueEncoderServiceDefault(mmc.getSpecificationLoader());
}
protected ObjectSpecification specFor(final Class<?> cls) {