SLING-12360 apply spotless code formatting
diff --git a/pom.xml b/pom.xml
index 576c1cd..b907238 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
@@ -34,14 +34,26 @@
<scm>
<connection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-models-jacksonexporter.git</connection>
<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-org-apache-sling-models-jacksonexporter.git</developerConnection>
+ <tag>HEAD</tag>
<url>https://github.com/apache/sling-org-apache-sling-models-jacksonexporter.git</url>
- <tag>HEAD</tag>
- </scm>
+ </scm>
<properties>
<project.build.outputTimestamp>2023-07-13T09:44:49Z</project.build.outputTimestamp>
</properties>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.junit</groupId>
+ <artifactId>junit-bom</artifactId>
+ <version>5.8.2</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
@@ -156,24 +168,12 @@
<scope>test</scope>
</dependency>
<dependency>
- <groupId>ch.qos.logback</groupId>
- <artifactId>logback-classic</artifactId>
- <version>1.2.13</version>
- <scope>test</scope>
- </dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>1.2.13</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.junit</groupId>
- <artifactId>junit-bom</artifactId>
- <version>5.8.2</version>
- <type>pom</type>
- <scope>import</scope>
- </dependency>
- </dependencies>
- </dependencyManagement>
-
</project>
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/ModuleProvider.java b/src/main/java/org/apache/sling/models/jacksonexporter/ModuleProvider.java
index a1e62e2..ada4d1e 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/ModuleProvider.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/ModuleProvider.java
@@ -1,24 +1,25 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter;
-import org.osgi.annotation.versioning.ConsumerType;
-
import com.fasterxml.jackson.databind.Module;
+import org.osgi.annotation.versioning.ConsumerType;
/**
* Extension interface which allows for plugging in Jackson Modules
@@ -28,5 +29,4 @@
public interface ModuleProvider {
Module getModule();
-
}
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/ConfigurableSerializationModuleProvider.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/ConfigurableSerializationModuleProvider.java
index afd4b40..f62d332 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/ConfigurableSerializationModuleProvider.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/ConfigurableSerializationModuleProvider.java
@@ -1,24 +1,28 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter.impl;
import java.util.Arrays;
import java.util.List;
+import com.fasterxml.jackson.databind.Module;
+import com.fasterxml.jackson.databind.module.SimpleModule;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.models.jacksonexporter.ModuleProvider;
import org.osgi.service.component.annotations.Activate;
@@ -29,44 +33,45 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.fasterxml.jackson.databind.Module;
-import com.fasterxml.jackson.databind.module.SimpleModule;
-
@Component(service = ModuleProvider.class)
@Designate(ocd = ConfigurableSerializationModuleProvider.Config.class)
public class ConfigurableSerializationModuleProvider implements ModuleProvider {
-
- @ObjectClassDefinition(name = "Apache Sling Models Jackson Exporter - Serialization Blocker",
+
+ @ObjectClassDefinition(
+ name = "Apache Sling Models Jackson Exporter - Serialization Blocker",
description = "Provider of a Jackson Module which can disable the serialization of classes")
static @interface Config {
- @AttributeDefinition(name ="disable serialization",
- description = "provide a list of the full classnames which should not get serialized; currently only \"" + RESOURCERESOLVER + "\" is supported")
+ @AttributeDefinition(
+ name = "disable serialization",
+ description = "provide a list of the full classnames which should not get serialized; currently only \""
+ + RESOURCERESOLVER + "\" is supported")
String[] disable_serialization() default {};
-
- @AttributeDefinition(name ="warn on serialization",
- description = "provide a list of the full classnames for which a warning should be written when serialized; currently only \"" + RESOURCERESOLVER + "\" is supported")
- String[] enable_warn_logging() default {ConfigurableSerializationModuleProvider.RESOURCERESOLVER};
-
+ @AttributeDefinition(
+ name = "warn on serialization",
+ description =
+ "provide a list of the full classnames for which a warning should be written when serialized; currently only \""
+ + RESOURCERESOLVER + "\" is supported")
+ String[] enable_warn_logging() default {ConfigurableSerializationModuleProvider.RESOURCERESOLVER};
}
-
+
private static final Logger LOG = LoggerFactory.getLogger(ConfigurableSerializationModuleProvider.class);
protected static final String RESOURCERESOLVER = "org.apache.sling.api.resource.ResourceResolver";
-
+
boolean ignoringRR = false;
-
+
SimpleModule moduleInstance;
-
+
@Activate
private void activate(Config config) {
this.moduleInstance = new SimpleModule();
List<String> disabled = Arrays.asList(config.disable_serialization());
List<String> logging = Arrays.asList(config.enable_warn_logging());
-
+
// Currently only the Sling ResourceResolver is supported
- for (String type: disabled) {
+ for (String type : disabled) {
if (RESOURCERESOLVER.equals(type)) {
moduleInstance.setMixInAnnotation(ResourceResolver.class, IgnoringResourceResolverMixin.class);
ignoringRR = true;
@@ -74,8 +79,8 @@
LOG.warn("Support to disable the serialization of type {} is not implemented", type);
}
}
-
- for (String type: logging) {
+
+ for (String type : logging) {
if (RESOURCERESOLVER.equals(type)) {
if (!ignoringRR) {
moduleInstance.setMixInAnnotation(ResourceResolver.class, WarningResourceResolverMixin.class);
@@ -85,11 +90,9 @@
}
}
}
-
@Override
public Module getModule() {
return moduleInstance;
}
-
}
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/EnumerationSerializer.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/EnumerationSerializer.java
index 5812939..054ffb9 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/EnumerationSerializer.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/EnumerationSerializer.java
@@ -1,18 +1,20 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter.impl;
@@ -20,14 +22,13 @@
import java.util.Enumeration;
import java.util.Iterator;
-import org.apache.commons.collections4.iterators.EnumerationIterator;
-
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ResolvableSerializer;
+import org.apache.commons.collections4.iterators.EnumerationIterator;
/**
* Trivial serializer for Enumeration types (needed for Servlet APIs) which leverages
@@ -44,8 +45,8 @@
@Override
@SuppressWarnings("unchecked")
- public void serialize(Enumeration value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
+ public void serialize(Enumeration value, JsonGenerator jgen, SerializerProvider provider)
+ throws IOException, JsonProcessingException {
iteratorSerializer.serialize(new EnumerationIterator(value), jgen, provider);
}
-
}
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/HttpServletRequestMixin.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/HttpServletRequestMixin.java
index d161453..471162b 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/HttpServletRequestMixin.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/HttpServletRequestMixin.java
@@ -1,27 +1,29 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter.impl;
-import java.security.Principal;
-import java.util.Enumeration;
-
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
+import java.security.Principal;
+import java.util.Enumeration;
+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonGetter;
@@ -29,7 +31,10 @@
* This "mixin" interface instructs the Jackson ObjectMapper what properties should be included in JSON view of a HttpServletRequest object.
* Without it, the auto-detection may lead to unexpected results, e.g. StackOverflow errors.
*/
-@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE)
+@JsonAutoDetect(
+ getterVisibility = JsonAutoDetect.Visibility.NONE,
+ fieldVisibility = JsonAutoDetect.Visibility.NONE,
+ isGetterVisibility = JsonAutoDetect.Visibility.NONE)
public interface HttpServletRequestMixin extends ServletRequestMixin, HttpServletRequest {
@JsonGetter
@@ -62,7 +67,7 @@
@JsonGetter
@Override
- public String getRemoteUser();
+ public String getRemoteUser();
@JsonGetter
@Override
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/IgnoringResourceResolverMixin.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/IgnoringResourceResolverMixin.java
index 5f4a3c5..376b930 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/IgnoringResourceResolverMixin.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/IgnoringResourceResolverMixin.java
@@ -18,21 +18,17 @@
*/
package org.apache.sling.models.jacksonexporter.impl;
-import org.apache.sling.api.resource.ResourceResolver;
-
import com.fasterxml.jackson.annotation.JsonIgnoreType;
+import org.apache.sling.api.resource.ResourceResolver;
/**
* This mixin disables the serialization of the ResourceResolver.
*
*/
-
@JsonIgnoreType
public abstract interface IgnoringResourceResolverMixin extends ResourceResolver {
-
/**
* TODO: find a way how we can both ignore this type and write a warning when trying to serialize a ResourceResolver.
- */
-
+ */
}
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporter.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporter.java
index c5406c1..2b36db4 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporter.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporter.java
@@ -24,6 +24,13 @@
import java.util.LinkedHashMap;
import java.util.Map;
+import com.fasterxml.jackson.core.JsonFactory;
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.core.SerializableString;
+import com.fasterxml.jackson.core.io.CharacterEscapes;
+import com.fasterxml.jackson.databind.MapperFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.SerializationFeature;
import org.apache.sling.models.export.spi.ModelExporter;
import org.apache.sling.models.factory.ExportException;
import org.apache.sling.models.jacksonexporter.ModuleProvider;
@@ -39,14 +46,6 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.SerializableString;
-import com.fasterxml.jackson.core.io.CharacterEscapes;
-import com.fasterxml.jackson.databind.MapperFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-
@Component(service = ModelExporter.class)
@Designate(ocd = JacksonExporter.Config.class)
public class JacksonExporter implements ModelExporter {
@@ -61,20 +60,24 @@
private static final int MAPPER_FEATURE_PREFIX_LENGTH = MAPPER_FEATURE_PREFIX.length();
- @ObjectClassDefinition(name = "Apache Sling Models Jackson Exporter",
+ @ObjectClassDefinition(
+ name = "Apache Sling Models Jackson Exporter",
description = "Configures the Jackson JSON Exporter for Sling Models.")
static @interface Config {
- @AttributeDefinition(name ="Mapping options",
- description = "Mapping options to override default Jackson settings. "
- + "Mapping options that are passed via request parameters have higher precedence. "
- + "Example: SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS=true, MapperFeature.SORT_PROPERTIES_ALPHABETICALLY=true")
+ @AttributeDefinition(
+ name = "Mapping options",
+ description =
+ "Mapping options to override default Jackson settings. "
+ + "Mapping options that are passed via request parameters have higher precedence. "
+ + "Example: SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS=true, MapperFeature.SORT_PROPERTIES_ALPHABETICALLY=true")
String[] mapping_options();
-
}
- @Reference(service = ModuleProvider.class,
- cardinality = ReferenceCardinality.MULTIPLE, policy = ReferencePolicy.DYNAMIC)
+ @Reference(
+ service = ModuleProvider.class,
+ cardinality = ReferenceCardinality.MULTIPLE,
+ policy = ReferencePolicy.DYNAMIC)
private volatile Collection<ModuleProvider> moduleProviders;
private Map<String, String> mappingOptions;
@@ -85,11 +88,11 @@
}
@Override
- @SuppressWarnings({ "null", "unchecked" })
+ @SuppressWarnings({"null", "unchecked"})
public <T> T export(@NotNull Object model, @NotNull Class<T> clazz, @NotNull Map<String, String> options)
throws ExportException {
ObjectMapper mapper = new ObjectMapper();
- Map<String,String> mergedOptions = mergeWithConfiguredOptions(options);
+ Map<String, String> mergedOptions = mergeWithConfiguredOptions(options);
for (Map.Entry<String, String> optionEntry : mergedOptions.entrySet()) {
String key = optionEntry.getKey();
if (key.startsWith(SERIALIZATION_FEATURE_PREFIX)) {
@@ -143,8 +146,8 @@
}
}
- private Map<String,String> mergeWithConfiguredOptions(@NotNull Map<String, String> options) {
- Map<String,String> mergedMap = new LinkedHashMap<>();
+ private Map<String, String> mergeWithConfiguredOptions(@NotNull Map<String, String> options) {
+ Map<String, String> mergedMap = new LinkedHashMap<>();
mergedMap.putAll(mappingOptions);
mergedMap.putAll(options);
return mergedMap;
@@ -182,5 +185,4 @@
return null;
}
}
-
}
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/ModelSkippingSerializers.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/ModelSkippingSerializers.java
index bec1b8e..7b713a9 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/ModelSkippingSerializers.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/ModelSkippingSerializers.java
@@ -1,28 +1,29 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter.impl;
-import org.apache.sling.models.annotations.Model;
-
import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializationConfig;
import com.fasterxml.jackson.databind.module.SimpleSerializers;
+import org.apache.sling.models.annotations.Model;
public class ModelSkippingSerializers extends SimpleSerializers {
private static final long serialVersionUID = -638837465287955097L;
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/PropertiesUtil.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/PropertiesUtil.java
index 42d17c6..f206ec2 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/PropertiesUtil.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/PropertiesUtil.java
@@ -46,7 +46,7 @@
* @return Map value
*/
static Map<String, String> toMap(String @NotNull [] stringArray) {
- //in property values
+ // in property values
Map<String, String> result = new LinkedHashMap<>();
for (String kv : stringArray) {
if (kv == null) {
@@ -63,5 +63,4 @@
}
return result;
}
-
}
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/RequestModuleProvider.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/RequestModuleProvider.java
index 30c0856..53ee732 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/RequestModuleProvider.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/RequestModuleProvider.java
@@ -1,32 +1,33 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter.impl;
-import java.util.Enumeration;
-
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.models.jacksonexporter.ModuleProvider;
-import org.osgi.service.component.annotations.Component;
+import java.util.Enumeration;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.databind.module.SimpleModule;
+import org.apache.sling.api.SlingHttpServletRequest;
+import org.apache.sling.models.jacksonexporter.ModuleProvider;
+import org.osgi.service.component.annotations.Component;
@Component(service = ModuleProvider.class)
public class RequestModuleProvider implements ModuleProvider {
@@ -45,5 +46,4 @@
public Module getModule() {
return moduleInstance;
}
-
}
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/ResourceModuleProvider.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/ResourceModuleProvider.java
index 7418c2a..6f1dd9f 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/ResourceModuleProvider.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/ResourceModuleProvider.java
@@ -1,21 +1,25 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter.impl;
+import com.fasterxml.jackson.databind.Module;
+import com.fasterxml.jackson.databind.module.SimpleModule;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.models.jacksonexporter.ModuleProvider;
import org.osgi.service.component.annotations.Activate;
@@ -24,23 +28,23 @@
import org.osgi.service.metatype.annotations.Designate;
import org.osgi.service.metatype.annotations.ObjectClassDefinition;
-import com.fasterxml.jackson.databind.Module;
-import com.fasterxml.jackson.databind.module.SimpleModule;
-
@Component(service = ModuleProvider.class)
@Designate(ocd = ResourceModuleProvider.Config.class)
public class ResourceModuleProvider implements ModuleProvider {
private static final int DEFAULT_MAX_RECURSION_LEVELS = -1;
- @ObjectClassDefinition(name = "Apache Sling Models Jackson Exporter - Resource object support",
- description = "Provider of a Jackson Module which enables support for proper serialization of Resource objects")
+ @ObjectClassDefinition(
+ name = "Apache Sling Models Jackson Exporter - Resource object support",
+ description =
+ "Provider of a Jackson Module which enables support for proper serialization of Resource objects")
static @interface Config {
- @AttributeDefinition(name ="Maximum Recursion Levels",
- description = "Maximum number of levels of child resources which will be exported for each resource. Specify -1 for infinite.")
+ @AttributeDefinition(
+ name = "Maximum Recursion Levels",
+ description =
+ "Maximum number of levels of child resources which will be exported for each resource. Specify -1 for infinite.")
int max_recursion_levels() default DEFAULT_MAX_RECURSION_LEVELS;
-
}
private SimpleModule moduleInstance;
@@ -58,5 +62,4 @@
public Module getModule() {
return moduleInstance;
}
-
}
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/ResourceSerializer.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/ResourceSerializer.java
index 07559f6..53c5cfc 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/ResourceSerializer.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/ResourceSerializer.java
@@ -1,18 +1,20 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter.impl;
@@ -23,14 +25,13 @@
import java.util.Iterator;
import java.util.Map;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ValueMap;
-
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ResolvableSerializer;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ValueMap;
public class ResourceSerializer extends JsonSerializer<Resource> implements ResolvableSerializer {
@@ -42,14 +43,19 @@
}
@Override
- public void serialize(final Resource value, final JsonGenerator jgen, final SerializerProvider provider) throws IOException {
+ public void serialize(final Resource value, final JsonGenerator jgen, final SerializerProvider provider)
+ throws IOException {
create(value, jgen, 0, provider);
}
/** Dump given resource in JSON, optionally recursing into its objects */
- @SuppressWarnings({ "unused", "null" })
- private void create(final Resource resource, final JsonGenerator jgen, final int currentRecursionLevel,
- final SerializerProvider provider) throws IOException {
+ @SuppressWarnings({"unused", "null"})
+ private void create(
+ final Resource resource,
+ final JsonGenerator jgen,
+ final int currentRecursionLevel,
+ final SerializerProvider provider)
+ throws IOException {
jgen.writeStartObject();
final ValueMap valueMap = resource.adaptTo(ValueMap.class);
@@ -76,7 +82,6 @@
}
jgen.writeEndArray();
}
-
}
} else {
@@ -109,37 +114,40 @@
* Write a single property
*/
@SuppressWarnings("null")
- private void createProperty(final JsonGenerator jgen, final ValueMap valueMap, final String key, final Object value,
- final SerializerProvider provider)
+ private void createProperty(
+ final JsonGenerator jgen,
+ final ValueMap valueMap,
+ final String key,
+ final Object value,
+ final SerializerProvider provider)
throws IOException {
Object[] values = null;
if (value.getClass().isArray()) {
final int length = Array.getLength(value);
// write out empty array
- if ( length == 0 ) {
+ if (length == 0) {
jgen.writeArrayFieldStart(key);
jgen.writeEndArray();
return;
}
values = new Object[Array.getLength(value)];
- for(int i=0; i<length; i++) {
+ for (int i = 0; i < length; i++) {
values[i] = Array.get(value, i);
}
}
// special handling for binaries: we dump the length and not the data!
- if (value instanceof InputStream
- || (values != null && values[0] instanceof InputStream)) {
+ if (value instanceof InputStream || (values != null && values[0] instanceof InputStream)) {
// TODO for now we mark binary properties with an initial colon in
// their name
// (colon is not allowed as a JCR property name)
// in the name, and the value should be the size of the binary data
if (values == null) {
- jgen.writeNumberField(":" + key, getLength(valueMap, -1, key, (InputStream)value));
+ jgen.writeNumberField(":" + key, getLength(valueMap, -1, key, (InputStream) value));
} else {
jgen.writeArrayFieldStart(":" + key);
for (int i = 0; i < values.length; i++) {
- jgen.writeNumber(getLength(valueMap, i, key, (InputStream)values[i]));
+ jgen.writeNumber(getLength(valueMap, i, key, (InputStream) values[i]));
}
jgen.writeEndArray();
}
@@ -166,15 +174,16 @@
private long getLength(final ValueMap valueMap, final int index, final String key, final InputStream stream) {
try {
stream.close();
- } catch (IOException ignore) {}
+ } catch (IOException ignore) {
+ }
long length = -1;
- if ( valueMap != null ) {
- if ( index == -1 ) {
+ if (valueMap != null) {
+ if (index == -1) {
length = valueMap.get(key, length);
} else {
Long[] lengths = valueMap.get(key, Long[].class);
- if ( lengths != null && lengths.length > index ) {
+ if (lengths != null && lengths.length > index) {
length = lengths[index];
}
}
@@ -183,20 +192,21 @@
}
/** Dump only a value in the correct format */
- private void writeValue(final JsonGenerator jgen, final Object value, final SerializerProvider provider) throws IOException {
+ private void writeValue(final JsonGenerator jgen, final Object value, final SerializerProvider provider)
+ throws IOException {
if (value instanceof InputStream) {
// input stream is already handled
jgen.writeNumber(0);
} else if (value instanceof Calendar) {
calendarSerializer.serialize(value, jgen, provider);
} else if (value instanceof Boolean) {
- jgen.writeBoolean(((Boolean)value).booleanValue());
+ jgen.writeBoolean(((Boolean) value).booleanValue());
} else if (value instanceof Long) {
- jgen.writeNumber(((Long)value).longValue());
+ jgen.writeNumber(((Long) value).longValue());
} else if (value instanceof Integer) {
- jgen.writeNumber(((Integer)value).intValue());
+ jgen.writeNumber(((Integer) value).intValue());
} else if (value instanceof Double) {
- jgen.writeNumber(((Double)value).doubleValue());
+ jgen.writeNumber(((Double) value).doubleValue());
} else if (value != null) {
jgen.writeString(value.toString());
} else {
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/ServletRequestMixin.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/ServletRequestMixin.java
index ac839ec..c4ba2b6 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/ServletRequestMixin.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/ServletRequestMixin.java
@@ -1,27 +1,29 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter.impl;
+import javax.servlet.ServletRequest;
+
import java.util.Enumeration;
import java.util.Locale;
import java.util.Map;
-import javax.servlet.ServletRequest;
-
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonGetter;
@@ -29,12 +31,15 @@
* This "mixin" interface instructs the Jackson ObjectMapper what properties should be included in JSON view of a ServletRequest object.
* Without it, the auto-detection may lead to unexpected results, e.g. StackOverflow errors.
*/
-@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE)
+@JsonAutoDetect(
+ getterVisibility = JsonAutoDetect.Visibility.NONE,
+ fieldVisibility = JsonAutoDetect.Visibility.NONE,
+ isGetterVisibility = JsonAutoDetect.Visibility.NONE)
public interface ServletRequestMixin extends ServletRequest {
@JsonGetter("parameters")
@Override
- public Map<String,String[]> getParameterMap();
+ public Map<String, String[]> getParameterMap();
@JsonGetter
@Override
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/SlingHttpServletRequestMixin.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/SlingHttpServletRequestMixin.java
index b21b0f7..e186846 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/SlingHttpServletRequestMixin.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/SlingHttpServletRequestMixin.java
@@ -1,34 +1,38 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter.impl;
import java.util.Enumeration;
-import org.apache.sling.api.request.RequestPathInfo;
-import org.apache.sling.api.resource.Resource;
-
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonGetter;
+import org.apache.sling.api.request.RequestPathInfo;
+import org.apache.sling.api.resource.Resource;
/**
* This "mixin" interface instructs the Jackson ObjectMapper what properties should be included in JSON view of a SlingHttpServletRequest object.
* Without it, the auto-detection may lead to unexpected results, e.g. StackOverflow errors.
*/
-@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE, fieldVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE)
+@JsonAutoDetect(
+ getterVisibility = JsonAutoDetect.Visibility.NONE,
+ fieldVisibility = JsonAutoDetect.Visibility.NONE,
+ isGetterVisibility = JsonAutoDetect.Visibility.NONE)
public interface SlingHttpServletRequestMixin extends HttpServletRequestMixin {
@JsonGetter
@@ -42,5 +46,4 @@
@JsonGetter()
public Enumeration<String> getResponseContentTypes();
-
}
diff --git a/src/main/java/org/apache/sling/models/jacksonexporter/impl/WarningResourceResolverMixin.java b/src/main/java/org/apache/sling/models/jacksonexporter/impl/WarningResourceResolverMixin.java
index 51b4ac0..b9ad87f 100644
--- a/src/main/java/org/apache/sling/models/jacksonexporter/impl/WarningResourceResolverMixin.java
+++ b/src/main/java/org/apache/sling/models/jacksonexporter/impl/WarningResourceResolverMixin.java
@@ -20,53 +20,40 @@
import java.io.IOException;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-
+import org.apache.sling.api.resource.ResourceResolver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* This mixin exports data which Jackson would export by default (so not change in the default behaviour),
* but prints a warning whenever it does that.
*/
-
-
@JsonAutoDetect
public interface WarningResourceResolverMixin extends ResourceResolver {
-
+
public static final String MESSAGE = "A ResourceResolver is serialized with all its private fields containing "
+ "implementation details you should not disclose. Please review your Sling Model implementation(s) and remove "
+ "all public accessors to a ResourceResolver.";
-
+
public static final Logger LOG = LoggerFactory.getLogger(JacksonExporter.class);
-
-
// This method is explicitly mentioned so we provide a custom serializer which prints the warning
-
+
@Override
- @JsonSerialize(using=WarningBooleanSerializer.class)
+ @JsonSerialize(using = WarningBooleanSerializer.class)
boolean isLive();
-
-
-
+
public class WarningBooleanSerializer extends JsonSerializer<Boolean> {
@Override
- public void serialize(Boolean value, JsonGenerator jgen, SerializerProvider provider)
- throws IOException {
+ public void serialize(Boolean value, JsonGenerator jgen, SerializerProvider provider) throws IOException {
LOG.warn(MESSAGE);
jgen.writeObject(value);
-
}
-
}
-
-
}
diff --git a/src/test/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporterLimitSerializationTest.java b/src/test/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporterLimitSerializationTest.java
index 3e9b944..4325ee9 100644
--- a/src/test/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporterLimitSerializationTest.java
+++ b/src/test/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporterLimitSerializationTest.java
@@ -18,16 +18,16 @@
*/
package org.apache.sling.models.jacksonexporter.impl;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertTrue;
+import javax.servlet.http.HttpServletRequest;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-
+import ch.qos.logback.classic.Level;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.PersistenceException;
import org.apache.sling.api.resource.Resource;
@@ -40,77 +40,76 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-import ch.qos.logback.classic.Level;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
@ExtendWith(OsgiContextExtension.class)
class JacksonExporterLimitSerializationTest {
private OsgiContext context = new OsgiContext();
-
+
@Test
void testWarnLogWhenSerializingResourceResolver() throws Exception {
-
- LogCapture capture = new LogCapture(JacksonExporter.class.getName(),false);
-
+
+ LogCapture capture = new LogCapture(JacksonExporter.class.getName(), false);
+
PojoWithResourceResolver pojo = new PojoWithResourceResolver("text", new EmptyResourceResolver());
-
+
context.registerInjectActivateService(new ConfigurableSerializationModuleProvider());
JacksonExporter underTest = context.registerInjectActivateService(JacksonExporter.class);
- Map<String,String> options = Collections.emptyMap();
+ Map<String, String> options = Collections.emptyMap();
String json = underTest.export(pojo, String.class, options);
ObjectMapper mapper = new ObjectMapper();
JsonNode result = mapper.readTree(json);
assertTrue(result.path("resolver").isContainerNode());
assertTrue(capture.anyMatch(event -> {
- return event.getFormattedMessage().equals(WarningResourceResolverMixin.MESSAGE) &&
- event.getLevel().equals(Level.WARN);
+ return event.getFormattedMessage().equals(WarningResourceResolverMixin.MESSAGE)
+ && event.getLevel().equals(Level.WARN);
}));
}
-
+
@Test
void testNotSerializingResourceResolverWhenDisabled() throws Exception {
-
- LogCapture capture = new LogCapture(ConfigurableSerializationModuleProvider.class.getName(),false);
-
- PojoWithResourceResolver pojo = new PojoWithResourceResolver("text",new EmptyResourceResolver());
- Map<String,Object> config = Collections.singletonMap("disable.serialization", ResourceResolver.class.getName());
- context.registerInjectActivateService(new ConfigurableSerializationModuleProvider(),config);
-
+
+ LogCapture capture = new LogCapture(ConfigurableSerializationModuleProvider.class.getName(), false);
+
+ PojoWithResourceResolver pojo = new PojoWithResourceResolver("text", new EmptyResourceResolver());
+ Map<String, Object> config =
+ Collections.singletonMap("disable.serialization", ResourceResolver.class.getName());
+ context.registerInjectActivateService(new ConfigurableSerializationModuleProvider(), config);
+
JacksonExporter underTest = context.registerInjectActivateService(JacksonExporter.class);
- Map<String,String> options = Collections.emptyMap();
+ Map<String, String> options = Collections.emptyMap();
String expectedJson = "{\"msg\":\"text\"}";
assertEquals(expectedJson, underTest.export(pojo, String.class, options));
// no log is written in this case
- assertEquals(0,capture.list.size());
+ assertEquals(0, capture.list.size());
}
-
-
+
@Test
void test_givenInvalidTypes_whenActivate_thenWarnLogStatements() throws ExportException {
- LogCapture capture = new LogCapture(ConfigurableSerializationModuleProvider.class.getName(),false);
-
- Map<String,Object> config = new HashMap<>();
+ LogCapture capture = new LogCapture(ConfigurableSerializationModuleProvider.class.getName(), false);
+
+ Map<String, Object> config = new HashMap<>();
config.put("disable.serialization", "foo.bar.disable");
config.put("enable.warn.logging", "foo.bar.logging");
-
- context.registerInjectActivateService(new ConfigurableSerializationModuleProvider(),config);
+
+ context.registerInjectActivateService(new ConfigurableSerializationModuleProvider(), config);
assertTrue(capture.anyMatch(event -> {
- return event.getFormattedMessage().equals("Support to disable the serialization of type foo.bar.disable is not implemented") &&
- event.getLevel().equals(Level.WARN);
+ return event.getFormattedMessage()
+ .equals("Support to disable the serialization of type foo.bar.disable is not implemented")
+ && event.getLevel().equals(Level.WARN);
}));
assertTrue(capture.anyMatch(event -> {
- return event.getFormattedMessage().equals("Support to log any serialization of type foo.bar.logging is not implemented") &&
- event.getLevel().equals(Level.WARN);
- }));
+ return event.getFormattedMessage()
+ .equals("Support to log any serialization of type foo.bar.logging is not implemented")
+ && event.getLevel().equals(Level.WARN);
+ }));
}
-
-
+
/**
* A very simple ResourceResolver implementation which does not lead to any issues with any mocking framework
* when trying to export it with Jackson.
@@ -182,7 +181,6 @@
return null;
}
-
@Override
public ResourceResolver clone(Map<String, Object> authenticationInfo) throws LoginException {
return null;
diff --git a/src/test/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporterMappingOptionsTest.java b/src/test/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporterMappingOptionsTest.java
index 356e62a..b37a5ea 100644
--- a/src/test/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporterMappingOptionsTest.java
+++ b/src/test/java/org/apache/sling/models/jacksonexporter/impl/JacksonExporterMappingOptionsTest.java
@@ -18,8 +18,6 @@
*/
package org.apache.sling.models.jacksonexporter.impl;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
import java.util.Collections;
import java.util.Map;
@@ -31,6 +29,8 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
/**
* Tests passing in and configuring mapping options for {@link JacksonExporter}.
*/
@@ -43,16 +43,13 @@
@BeforeEach
void setUp() {
- pojoWithData = new ExamplePojo()
- .stringProp("value1")
- .numberProp(1)
- .booleanProp(true);
+ pojoWithData = new ExamplePojo().stringProp("value1").numberProp(1).booleanProp(true);
}
@Test
void testDefaultConfig() throws ExportException {
JacksonExporter underTest = context.registerInjectActivateService(JacksonExporter.class);
- Map<String,String> options = Collections.emptyMap();
+ Map<String, String> options = Collections.emptyMap();
String expectedJson = "{\"stringProp\":\"value1\",\"numberProp\":1,\"booleanProp\":true}";
assertEquals(expectedJson, underTest.export(pojoWithData, String.class, options));
@@ -61,7 +58,7 @@
@Test
void testPassedInOptions() throws ExportException {
JacksonExporter underTest = context.registerInjectActivateService(JacksonExporter.class);
- Map<String,String> options = Collections.singletonMap("MapperFeature.SORT_PROPERTIES_ALPHABETICALLY", "true");
+ Map<String, String> options = Collections.singletonMap("MapperFeature.SORT_PROPERTIES_ALPHABETICALLY", "true");
String expectedJson = "{\"booleanProp\":true,\"numberProp\":1,\"stringProp\":\"value1\"}";
assertEquals(expectedJson, underTest.export(pojoWithData, String.class, options));
@@ -69,9 +66,11 @@
@Test
void testConfiguredOptions() throws ExportException {
- JacksonExporter underTest = context.registerInjectActivateService(JacksonExporter.class,
- "mapping.options", new String[] { "MapperFeature.SORT_PROPERTIES_ALPHABETICALLY=true" });
- Map<String,String> options = Collections.emptyMap();
+ JacksonExporter underTest =
+ context.registerInjectActivateService(JacksonExporter.class, "mapping.options", new String[] {
+ "MapperFeature.SORT_PROPERTIES_ALPHABETICALLY=true"
+ });
+ Map<String, String> options = Collections.emptyMap();
String expectedJson = "{\"booleanProp\":true,\"numberProp\":1,\"stringProp\":\"value1\"}";
assertEquals(expectedJson, underTest.export(pojoWithData, String.class, options));
@@ -79,12 +78,13 @@
@Test
void testPassedInOptionsOverlayConfiguredOptions() throws ExportException {
- JacksonExporter underTest = context.registerInjectActivateService(JacksonExporter.class,
- "mapping.options", new String[] { "MapperFeature.SORT_PROPERTIES_ALPHABETICALLY=true" });
- Map<String,String> options = Collections.singletonMap("MapperFeature.SORT_PROPERTIES_ALPHABETICALLY", "false");
+ JacksonExporter underTest =
+ context.registerInjectActivateService(JacksonExporter.class, "mapping.options", new String[] {
+ "MapperFeature.SORT_PROPERTIES_ALPHABETICALLY=true"
+ });
+ Map<String, String> options = Collections.singletonMap("MapperFeature.SORT_PROPERTIES_ALPHABETICALLY", "false");
String expectedJson = "{\"stringProp\":\"value1\",\"numberProp\":1,\"booleanProp\":true}";
assertEquals(expectedJson, underTest.export(pojoWithData, String.class, options));
}
-
}
diff --git a/src/test/java/org/apache/sling/models/jacksonexporter/impl/ModelSkippingSerializersTest.java b/src/test/java/org/apache/sling/models/jacksonexporter/impl/ModelSkippingSerializersTest.java
index 35675ad..081417e 100644
--- a/src/test/java/org/apache/sling/models/jacksonexporter/impl/ModelSkippingSerializersTest.java
+++ b/src/test/java/org/apache/sling/models/jacksonexporter/impl/ModelSkippingSerializersTest.java
@@ -1,26 +1,27 @@
/*
- * 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
+ * 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
+ * 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.
+ * 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.sling.models.jacksonexporter.impl;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import java.util.Iterator;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.type.TypeFactory;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.AbstractResource;
import org.apache.sling.api.resource.Resource;
@@ -30,8 +31,8 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
-import com.fasterxml.jackson.databind.JavaType;
-import com.fasterxml.jackson.databind.type.TypeFactory;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
class ModelSkippingSerializersTest {
diff --git a/src/test/java/org/apache/sling/models/jacksonexporter/impl/PropertiesUtilTest.java b/src/test/java/org/apache/sling/models/jacksonexporter/impl/PropertiesUtilTest.java
index da069ed..654a87d 100644
--- a/src/test/java/org/apache/sling/models/jacksonexporter/impl/PropertiesUtilTest.java
+++ b/src/test/java/org/apache/sling/models/jacksonexporter/impl/PropertiesUtilTest.java
@@ -18,15 +18,15 @@
*/
package org.apache.sling.models.jacksonexporter.impl;
-import static org.apache.sling.models.jacksonexporter.impl.PropertiesUtil.toMap;
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import org.junit.jupiter.api.Test;
+import static org.apache.sling.models.jacksonexporter.impl.PropertiesUtil.toMap;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
class PropertiesUtilTest {
@Test
@@ -37,21 +37,14 @@
@Test
void testToMap_VariousEntries() {
String[] input = new String[] {
- "prop1=value1",
- " prop.2 = value.2 ",
- "prop3=",
- "prop4",
- "",
- null,
- "prop5=value5a=value5b"
+ "prop1=value1", " prop.2 = value.2 ", "prop3=", "prop4", "", null, "prop5=value5a=value5b"
};
- Map<String,String> expectedOutput = new LinkedHashMap<>();
+ Map<String, String> expectedOutput = new LinkedHashMap<>();
expectedOutput.put("prop1", "value1");
expectedOutput.put("prop.2", "value.2");
expectedOutput.put("prop5", "value5a=value5b");
assertEquals(expectedOutput, toMap(input));
}
-
}
diff --git a/src/test/java/org/apache/sling/models/jacksonexporter/impl/example/ExamplePojo.java b/src/test/java/org/apache/sling/models/jacksonexporter/impl/example/ExamplePojo.java
index cf4e325..ba59779 100644
--- a/src/test/java/org/apache/sling/models/jacksonexporter/impl/example/ExamplePojo.java
+++ b/src/test/java/org/apache/sling/models/jacksonexporter/impl/example/ExamplePojo.java
@@ -50,5 +50,4 @@
this.booleanProp = value;
return this;
}
-
}
diff --git a/src/test/java/org/apache/sling/models/jacksonexporter/impl/example/PojoWithResourceResolver.java b/src/test/java/org/apache/sling/models/jacksonexporter/impl/example/PojoWithResourceResolver.java
index 3e544b7..186794f 100644
--- a/src/test/java/org/apache/sling/models/jacksonexporter/impl/example/PojoWithResourceResolver.java
+++ b/src/test/java/org/apache/sling/models/jacksonexporter/impl/example/PojoWithResourceResolver.java
@@ -21,16 +21,12 @@
import org.apache.sling.api.resource.ResourceResolver;
public class PojoWithResourceResolver {
-
-
+
public String msg;
public ResourceResolver resolver;
-
- public PojoWithResourceResolver (String msg, ResourceResolver resolver) {
+
+ public PojoWithResourceResolver(String msg, ResourceResolver resolver) {
this.msg = msg;
this.resolver = resolver;
}
-
-
-
}
diff --git a/src/test/java/org/apache/sling/models/jacksonexporter/impl/util/LogCapture.java b/src/test/java/org/apache/sling/models/jacksonexporter/impl/util/LogCapture.java
index be328b0..d252fe9 100644
--- a/src/test/java/org/apache/sling/models/jacksonexporter/impl/util/LogCapture.java
+++ b/src/test/java/org/apache/sling/models/jacksonexporter/impl/util/LogCapture.java
@@ -18,21 +18,20 @@
*/
package org.apache.sling.models.jacksonexporter.impl.util;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
import java.io.Closeable;
import java.io.IOException;
import java.util.function.Predicate;
-import org.slf4j.LoggerFactory;
-
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
+import org.slf4j.LoggerFactory;
-public class LogCapture extends ListAppender<ILoggingEvent> implements Closeable {
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class LogCapture extends ListAppender<ILoggingEvent> implements Closeable {
private final boolean verboseFailure;
/** Setup the capture and start it */
@@ -54,16 +53,9 @@
return event.getFormattedMessage().equals(message);
}));
}
-
-
-
-
@Override
public void close() throws IOException {
stop();
}
-
-
-
}