From 651c3bcfd998c7281dc95bd3dda0be60b315373f Mon Sep 17 00:00:00 2001 From: Fritz Schinkel Date: Thu, 21 Dec 2023 15:45:45 +0100 Subject: [PATCH] WIP encrypt PrimaryKeys - add rest.jersey.server-module to inject encrypted reader/writer - add IIdCodecFlag to parametrize IdCodec-calls - add idEncryption to ScoutDataObjectModuleContext and pass context to all IId-serializers/deserializers - add IIdEncryptionDataObjectMapper/JacksonIdEncryptionDataObjectMapper that uses the ScoutDataObjectModuleContexts idEncryption flag - use IIdEncryptionDataObjectMapper in Json layer 340299 --- .../rt/dataobject/id/AbstractIdCodecTest.java | 7 +- ...CompositeIdDataObjectVisitorExtension.java | 3 +- .../IIdEncryptionDataObjectMapper.java | 18 + .../scout/rt/dataobject/id/IdCodec.java | 83 ++-- .../rt/dataobject/id/IdExternalFormatter.java | 3 +- .../scout/rt/dataobject/id/IdTypeName.java | 5 +- .../id/QualifiedIIdSerializationTest.java | 6 +- .../JacksonIdEncryptionDataObjectMapper.java | 31 ++ .../ScoutDataObjectModuleContext.java | 13 +- .../ScoutDataObjectSerializerProvider.java | 16 +- ...DataObjectModuleContextJsonSerializer.java | 44 ++ ...ataObjectModuleContextKeyDeserializer.java | 44 ++ ...ataObjectModuleContextStdDeserializer.java | 52 +++ ...tDataObjectModuleContextStdSerializer.java | 52 +++ .../jackson/dataobject/id/IdCodecUtility.java | 37 ++ .../id/QualifiedIIdDeserializer.java | 13 +- .../id/QualifiedIIdMapKeyDeserializer.java | 11 +- .../id/QualifiedIIdMapKeySerializer.java | 12 +- .../dataobject/id/QualifiedIIdSerializer.java | 12 +- .../dataobject/id/TypedIdDeserializer.java | 12 +- .../dataobject/id/TypedIdSerializer.java | 12 +- .../id/UnqualifiedIIdDeserializer.java | 13 +- .../id/UnqualifiedIIdMapKeyDeserializer.java | 10 +- .../id/UnqualifiedIIdMapKeySerializer.java | 12 +- .../id/UnqualifiedIIdSerializer.java | 12 +- .../org.eclipse.core.resources.prefs | 18 + .../.settings/org.eclipse.core.runtime.prefs | 2 + .../.settings/org.eclipse.jdt.apt.core.prefs | 2 + .../.settings/org.eclipse.jdt.core.prefs | 399 ++++++++++++++++++ .../.settings/org.eclipse.jdt.launching.prefs | 2 + .../.settings/org.eclipse.jdt.ui.prefs | 127 ++++++ .../.settings/org.eclipse.m2e.core.prefs | 4 + .../pom.xml | 39 ++ .../IdEncryptionRestContainerFilter.java | 67 +++ .../src/main/resources/META-INF/scout.xml | 12 + .../rest/param/IIdParamConverterProvider.java | 19 +- .../desktop/hybrid/JsonHybridManagerTest.java | 6 +- .../rt/ui/html/json/desktop/JsonOutline.java | 3 +- .../desktop/hybrid/JsonHybridManager.java | 4 +- .../rt/ui/html/json/form/js/JsonJsForm.java | 3 +- org.eclipse.scout.rt/pom.xml | 7 + 41 files changed, 1132 insertions(+), 115 deletions(-) create mode 100644 org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/IIdEncryptionDataObjectMapper.java create mode 100644 org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/JacksonIdEncryptionDataObjectMapper.java create mode 100644 org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextJsonSerializer.java create mode 100644 org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextKeyDeserializer.java create mode 100644 org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextStdDeserializer.java create mode 100644 org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextStdSerializer.java create mode 100644 org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/IdCodecUtility.java create mode 100644 org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.core.resources.prefs create mode 100644 org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.core.runtime.prefs create mode 100644 org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.apt.core.prefs create mode 100644 org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.core.prefs create mode 100644 org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.launching.prefs create mode 100644 org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.ui.prefs create mode 100644 org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.m2e.core.prefs create mode 100644 org.eclipse.scout.rt.rest.jersey.server/pom.xml create mode 100644 org.eclipse.scout.rt.rest.jersey.server/src/main/java/org/eclipse/scout/rt/rest/jersey/server/IdEncryptionRestContainerFilter.java create mode 100644 org.eclipse.scout.rt.rest.jersey.server/src/main/resources/META-INF/scout.xml diff --git a/org.eclipse.scout.rt.dataobject.test/src/main/java/org/eclipse/scout/rt/dataobject/id/AbstractIdCodecTest.java b/org.eclipse.scout.rt.dataobject.test/src/main/java/org/eclipse/scout/rt/dataobject/id/AbstractIdCodecTest.java index 680400044f7..e0e0a633af2 100644 --- a/org.eclipse.scout.rt.dataobject.test/src/main/java/org/eclipse/scout/rt/dataobject/id/AbstractIdCodecTest.java +++ b/org.eclipse.scout.rt.dataobject.test/src/main/java/org/eclipse/scout/rt/dataobject/id/AbstractIdCodecTest.java @@ -22,6 +22,7 @@ import org.eclipse.scout.rt.dataobject.fixture.FixtureStringId; import org.eclipse.scout.rt.dataobject.fixture.FixtureUuId; import org.eclipse.scout.rt.dataobject.fixture.FixtureWrapperCompositeId; +import org.eclipse.scout.rt.dataobject.id.IdCodec.IdCodecFlag; import org.eclipse.scout.rt.platform.BEANS; import org.eclipse.scout.rt.platform.exception.PlatformException; import org.eclipse.scout.rt.platform.util.Assertions.AssertionException; @@ -513,19 +514,19 @@ public void testFromQualified_UnsupportedWrappedType() { @Test public void testFromQualifiedLenient_Default() { FixtureUuId id = FixtureUuId.of(TEST_UUID); - IId id2 = getCodec().fromQualifiedLenient("scout.FixtureUuId:" + TEST_UUID); + IId id2 = getCodec().fromQualified("scout.FixtureUuId:" + TEST_UUID, IdCodecFlag.LENIENT); assertEquals(id, id2); } @Test public void testFromQualifiedLenient_UnknownType() { - IId id = getCodec().fromQualifiedLenient("DoesNotExist:" + TEST_UUID); + IId id = getCodec().fromQualified("DoesNotExist:" + TEST_UUID, IdCodecFlag.LENIENT); assertNull(id); } @Test public void testFromQualifiedLenient_WrongFormat() { - IId id = getCodec().fromQualifiedLenient("Does:Not:Exist:" + TEST_UUID); + IId id = getCodec().fromQualified("Does:Not:Exist:" + TEST_UUID, IdCodecFlag.LENIENT); assertNull(id); } diff --git a/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/CompositeIdDataObjectVisitorExtension.java b/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/CompositeIdDataObjectVisitorExtension.java index 49380d22750..c402a5b038e 100644 --- a/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/CompositeIdDataObjectVisitorExtension.java +++ b/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/CompositeIdDataObjectVisitorExtension.java @@ -10,6 +10,7 @@ package org.eclipse.scout.rt.dataobject; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.function.Consumer; import java.util.function.UnaryOperator; @@ -50,7 +51,7 @@ public ICompositeId replaceOrVisit(ICompositeId value, UnaryOperator cha } /** - * Similar as in {@link IdCodec#toUnqualified(IId)}. + * Similar as in {@link IdCodec#toUnqualified(IId, Collection)}. */ protected void unwrap(IId component, List unwrappedComponents) { if (component instanceof IRootId) { diff --git a/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/IIdEncryptionDataObjectMapper.java b/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/IIdEncryptionDataObjectMapper.java new file mode 100644 index 00000000000..1cb8774f07f --- /dev/null +++ b/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/IIdEncryptionDataObjectMapper.java @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.scout.rt.dataobject; + +/** + * Interface to a data mapper that uses id encryption. + * + * @see IDataObjectMapper + */ +public interface IIdEncryptionDataObjectMapper extends IDataObjectMapper { +} diff --git a/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdCodec.java b/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdCodec.java index 3b312d51e9a..f7cccd2c0c2 100644 --- a/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdCodec.java +++ b/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdCodec.java @@ -10,8 +10,11 @@ package org.eclipse.scout.rt.dataobject.id; import static org.eclipse.scout.rt.platform.util.Assertions.assertNotNull; +import static org.eclipse.scout.rt.platform.util.CollectionUtility.arrayList; +import static org.eclipse.scout.rt.platform.util.ObjectUtility.isOneOf; import java.util.Arrays; +import java.util.Collection; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -21,13 +24,13 @@ import java.util.function.Function; import java.util.stream.Collectors; -import jakarta.annotation.PostConstruct; - import org.eclipse.scout.rt.platform.ApplicationScoped; import org.eclipse.scout.rt.platform.exception.PlatformException; import org.eclipse.scout.rt.platform.util.LazyValue; import org.eclipse.scout.rt.platform.util.StringUtility; +import jakarta.annotation.PostConstruct; + /** * Codec used to convert between {@link IId} instances and their qualified/unqualified representation as {@link String}. */ @@ -40,6 +43,14 @@ public class IdCodec { protected final Map, Function> m_rawTypeFromStringMapper = new HashMap<>(); protected final Map, Function> m_rawTypeToStringMapper = new HashMap<>(); + public interface IIdCodecFlag { + } + + public enum IdCodecFlag implements IIdCodecFlag { + LENIENT, + ENCRYPTION + } + @PostConstruct protected void initialize() { // setup default type mappings between raw type <--> string @@ -53,6 +64,13 @@ protected void initialize() { // ---------------- IId to String ---------------- + /** + * @see #toQualified(IId, Collection) + */ + public String toQualified(IId id, IIdCodecFlag... flags) { + return toQualified(id, arrayList(flags)); + } + /** * Returns a string in the format "[type-name]:[raw-id;raw-id;...]". *
    @@ -62,7 +80,7 @@ protected void initialize() { * converted to their string representation, separated by ';'. *
*/ - public String toQualified(IId id) { + public String toQualified(IId id, Collection flags) { if (id == null) { return null; } @@ -70,7 +88,14 @@ public String toQualified(IId id) { if (StringUtility.isNullOrEmpty(typeName)) { throw new PlatformException("Missing @{} in class {}", IdTypeName.class.getSimpleName(), id.getClass()); } - return typeName + ":" + toUnqualified(id); + return typeName + ":" + toUnqualified(id, flags); + } + + /** + * @see #toUnqualified(IId, Collection) + */ + public String toUnqualified(IId id, IIdCodecFlag... flags) { + return toUnqualified(id, arrayList(flags)); } /** @@ -81,7 +106,7 @@ public String toQualified(IId id) { * converted to their string representation, separated by ';'. * */ - public String toUnqualified(IId id) { + public String toUnqualified(IId id, Collection flags) { if (id == null) { return null; } @@ -96,15 +121,22 @@ public String toUnqualified(IId id) { else if (id instanceof ICompositeId) { List components = ((ICompositeId) id).unwrap(); return components.stream() - .map(this::toUnqualified) + .map(comp -> toUnqualified(comp, flags)) .map(s -> s == null ? "" : s) // empty string if component is null just in case of composite id .collect(Collectors.joining(";")); } - return handleToUnqualifiedUnknownIdType(id); + return handleToUnqualifiedUnknownIdType(id, flags); } // ---------------- String to IId ---------------- + /** + * @see #fromQualified(String, Collection) + */ + public IId fromQualified(String qualifiedId, IIdCodecFlag... flags) { + return fromQualified(qualifiedId, arrayList(flags)); + } + /** * Parses a string in the format {@code [type-name]:[raw-id;raw-id;...]}. * @@ -112,18 +144,15 @@ else if (id instanceof ICompositeId) { * @throws PlatformException * if the given string does not match the expected format or the referenced class is not found. */ - public IId fromQualified(String qualifiedId) { - return fromQualifiedInternal(qualifiedId, false); + public IId fromQualified(String qualifiedId, Collection flags) { + return fromQualifiedInternal(qualifiedId, flags); } /** - * Parses a string in the format {@code [type-name]:[raw-id;raw-id;...]}. - * - * @return {@code IId} parsed from {@code qualifiedId} or {@code null} if the given string does not match the expected - * format or the referenced class is not found. + * @see #fromUnqualified(Class, String, Collection) */ - public IId fromQualifiedLenient(String qualifiedId) { - return fromQualifiedInternal(qualifiedId, true); + public ID fromUnqualified(Class idClass, String unqualifiedId, IIdCodecFlag... flags) { + return fromUnqualified(idClass, unqualifiedId, arrayList(flags)); } /** @@ -133,14 +162,14 @@ public IId fromQualifiedLenient(String qualifiedId) { * @throws PlatformException * if the given string does not match the expected format */ - public ID fromUnqualified(Class idClass, String unqualifiedId) { + public ID fromUnqualified(Class idClass, String unqualifiedId, Collection flags) { if (idClass == null) { throw new PlatformException("Missing id class to parse unqualified id {}", unqualifiedId); } if (StringUtility.isNullOrEmpty(unqualifiedId)) { return null; } - return fromUnqualifiedUnchecked(idClass, unqualifiedId); + return fromUnqualifiedUnchecked(idClass, unqualifiedId, flags); } /** @@ -177,23 +206,23 @@ public void unregisterRawTypeMapper(Class rawType) { /** * Callback method to implement if the codec should be extended to handle qualification of unknown {@link IId} types. */ - protected String handleToUnqualifiedUnknownIdType(IId id) { + protected String handleToUnqualifiedUnknownIdType(IId id, Collection flags) { throw new PlatformException("Unsupported id type {}, cannot convert id {}", id.getClass(), id); } /** * Parses a string in the format {@code [type-name]:[raw-id;raw-id;...]}. * - * @param lenient - * If the structure of the given {@code qualifiedId} is invalid and {@code lenient} flag is set to - * {@code true}, value {@code null} is returned. If {@code lenient} flag is set to {@code false}, an - * exception is thrown. + * @param flags + * If the structure of the given {@code qualifiedId} is invalid and {@code IdCodecFlag.LENIENT} flag is set, + * value {@code null} is returned. If {@code IdCodecFlag.LENIENT} flag is not set, an exception is thrown. * @return {@code IId} parsed from {@code qualifiedId} */ - protected IId fromQualifiedInternal(String qualifiedId, boolean lenient) { + protected IId fromQualifiedInternal(String qualifiedId, Collection flags) { if (StringUtility.isNullOrEmpty(qualifiedId)) { return null; } + boolean lenient = isOneOf(IdCodecFlag.LENIENT, flags); String[] tmp = qualifiedId.split(":", 2); // split into at most two parts if (tmp.length < 2) { // no ":" found if (lenient) { @@ -213,7 +242,7 @@ protected IId fromQualifiedInternal(String qualifiedId, boolean lenient) { throw new PlatformException("No class found for type name '{}'", typeName); } } - return fromUnqualified(idClass, tmp[1]); + return fromUnqualified(idClass, tmp[1], flags); } /** @@ -224,16 +253,16 @@ protected IId fromQualifiedInternal(String qualifiedId, boolean lenient) { * @throws PlatformException * if the given string does not match the expected format */ - protected ID fromUnqualifiedUnchecked(Class idClass, String unqualifiedId) { + protected ID fromUnqualifiedUnchecked(Class idClass, String unqualifiedId, Collection flags) { String[] rawComponents = unqualifiedId.split(";", -1 /* force empty strings for empty components */); - Object[] components = parseComponents(idClass, rawComponents); + Object[] components = parseComponents(idClass, rawComponents, flags); return m_idFactory.get().createInternal(idClass, components); } /** * Parses given {@code rawComponents} based on the declared component types of given {@code idClass}. */ - protected Object[] parseComponents(Class idClass, String[] rawComponents) { + protected Object[] parseComponents(Class idClass, String[] rawComponents, Collection flags) { List> componentTypes = m_idFactory.get().getRawTypes(idClass); if (!(componentTypes.size() == rawComponents.length)) { throw new PlatformException("Wrong argument size, expected {} parameter, got {} raw components {}, idType={}", componentTypes.size(), rawComponents.length, Arrays.toString(rawComponents), idClass.getName()); diff --git a/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdExternalFormatter.java b/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdExternalFormatter.java index 69f40e09dec..4c842b7e071 100644 --- a/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdExternalFormatter.java +++ b/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdExternalFormatter.java @@ -9,6 +9,7 @@ */ package org.eclipse.scout.rt.dataobject.id; +import org.eclipse.scout.rt.dataobject.id.IdCodec.IdCodecFlag; import org.eclipse.scout.rt.platform.ApplicationScoped; import org.eclipse.scout.rt.platform.exception.ProcessingException; import org.eclipse.scout.rt.platform.util.LazyValue; @@ -54,7 +55,7 @@ public IId fromExternalForm(String externalForm) { * format or there is no type {@code null} is returned. */ public IId fromExternalFormLenient(String externalForm) { - return m_codec.get().fromQualifiedLenient(externalForm); + return m_codec.get().fromQualified(externalForm, IdCodecFlag.LENIENT); } /** diff --git a/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdTypeName.java b/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdTypeName.java index acbc31047dd..46b277667cc 100644 --- a/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdTypeName.java +++ b/org.eclipse.scout.rt.dataobject/src/main/java/org/eclipse/scout/rt/dataobject/id/IdTypeName.java @@ -16,13 +16,14 @@ import java.lang.annotation.Inherited; import java.lang.annotation.Retention; import java.lang.annotation.Target; +import java.util.Collection; /** * Annotation used to define the unique type name for an {@link IId} class, used when serializing or deserializing * instances. * - * @see IdCodec#toQualified(IId) - * @see IdCodec#fromQualified(String) + * @see IdCodec#toQualified(IId, Collection) + * @see IdCodec#fromQualified(String, Collection) * @see TypedId */ @Documented diff --git a/org.eclipse.scout.rt.jackson.test/src/test/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdSerializationTest.java b/org.eclipse.scout.rt.jackson.test/src/test/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdSerializationTest.java index 33fd771b644..e6d28218df6 100644 --- a/org.eclipse.scout.rt.jackson.test/src/test/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdSerializationTest.java +++ b/org.eclipse.scout.rt.jackson.test/src/test/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdSerializationTest.java @@ -117,7 +117,7 @@ protected static class QualifiedIIdSerializationTest_DataObjectSerializerProvide @Override public JsonSerializer findSerializer(ScoutDataObjectModuleContext moduleContext, JavaType type, SerializationConfig config, BeanDescription beanDesc) { if (type.hasRawClass(FixtureStringId.class) || type.hasRawClass(FixtureUuId.class) || type.hasRawClass(FixtureCompositeId.class)) { - return new QualifiedIIdSerializer(); + return new QualifiedIIdSerializer(moduleContext); } return null; @@ -126,7 +126,7 @@ public JsonSerializer findSerializer(ScoutDataObjectModuleContext moduleConte @Override public JsonDeserializer findDeserializer(ScoutDataObjectModuleContext moduleContext, JavaType type, DeserializationConfig config, BeanDescription beanDesc) { if (type.hasRawClass(FixtureStringId.class) || type.hasRawClass(FixtureUuId.class) || type.hasRawClass(FixtureCompositeId.class) || type.hasRawClass(IId.class)) { - return new QualifiedIIdDeserializer(type.getRawClass().asSubclass(IId.class)); + return new QualifiedIIdDeserializer(moduleContext, type.getRawClass().asSubclass(IId.class)); } return null; } @@ -134,7 +134,7 @@ public JsonDeserializer findDeserializer(ScoutDataObjectModuleContext moduleC @Override public JsonSerializer findKeySerializer(ScoutDataObjectModuleContext moduleContext, JavaType type, SerializationConfig config, BeanDescription beanDesc) { if (type.hasRawClass(FixtureStringId.class) || type.hasRawClass(FixtureUuId.class) || type.hasRawClass(FixtureCompositeId.class)) { - return new QualifiedIIdMapKeySerializer(); + return new QualifiedIIdMapKeySerializer(moduleContext); } return null; } diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/JacksonIdEncryptionDataObjectMapper.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/JacksonIdEncryptionDataObjectMapper.java new file mode 100644 index 00000000000..0a7737a69c6 --- /dev/null +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/JacksonIdEncryptionDataObjectMapper.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.scout.rt.jackson.dataobject; + +import org.eclipse.scout.rt.dataobject.IDataObjectMapper; +import org.eclipse.scout.rt.dataobject.IIdEncryptionDataObjectMapper; +import org.eclipse.scout.rt.platform.IBean; +import org.eclipse.scout.rt.platform.Order; + +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * {@link IDataObjectMapper} implementation based on jackson {@link ObjectMapper} with id encrypted + * serialization/deserialization. + */ +@Order(IBean.DEFAULT_BEAN_ORDER + 100) +public class JacksonIdEncryptionDataObjectMapper extends JacksonDataObjectMapper implements IIdEncryptionDataObjectMapper { + + @Override + protected void prepareScoutDataModuleContext(ScoutDataObjectModuleContext moduleContext) { + super.prepareScoutDataModuleContext(moduleContext); + moduleContext.withIdEncryption(true); + } +} diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/ScoutDataObjectModuleContext.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/ScoutDataObjectModuleContext.java index a1198a09330..8a29ad07d82 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/ScoutDataObjectModuleContext.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/ScoutDataObjectModuleContext.java @@ -41,6 +41,8 @@ public class ScoutDataObjectModuleContext { protected static final String LENIENT_MODE_KEY = "lenientModeKey"; + protected static final String ID_ENCRYPTION_KEY = "idEncryptionKey"; + protected LazyValue m_comparator = new LazyValue<>(() -> BEANS.get(DoEntitySerializerAttributeNameComparator.class).init(this)); protected final Map m_contextMap = new HashMap<>(); @@ -138,7 +140,16 @@ public boolean isLenientMode() { } public ScoutDataObjectModuleContext withLenientMode(boolean lenientMode) { - put(LENIENT_MODE_KEY, true); + put(LENIENT_MODE_KEY, lenientMode); + return this; + } + + public boolean isIdEncryption() { + return BooleanUtility.nvl(get(ID_ENCRYPTION_KEY, Boolean.class)); + } + + public ScoutDataObjectModuleContext withIdEncryption(boolean idEncryption) { + put(ID_ENCRYPTION_KEY, idEncryption); return this; } } diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/ScoutDataObjectSerializerProvider.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/ScoutDataObjectSerializerProvider.java index c8f060f3ee7..cb8bc0534b8 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/ScoutDataObjectSerializerProvider.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/ScoutDataObjectSerializerProvider.java @@ -75,14 +75,14 @@ else if (BinaryResource.class.isAssignableFrom(rawClass)) { } else if (IId.class.isAssignableFrom(rawClass)) { if (type.isConcrete()) { - return new UnqualifiedIIdSerializer(type); + return new UnqualifiedIIdSerializer(moduleContext, type); } else { - return new QualifiedIIdSerializer(); + return new QualifiedIIdSerializer(moduleContext); } } else if (TypedId.class.isAssignableFrom(rawClass)) { - return new TypedIdSerializer(); + return new TypedIdSerializer(moduleContext); } else if (IEnum.class.isAssignableFrom(rawClass)) { return new EnumSerializer(type); @@ -125,14 +125,14 @@ else if (BinaryResource.class.isAssignableFrom(rawClass)) { else if (IId.class.isAssignableFrom(rawClass)) { Class idClass = rawClass.asSubclass(IId.class); if (type.isConcrete()) { - return new UnqualifiedIIdDeserializer(idClass); + return new UnqualifiedIIdDeserializer(moduleContext, idClass); } else { - return new QualifiedIIdDeserializer(idClass); + return new QualifiedIIdDeserializer(moduleContext, idClass); } } else if (TypedId.class.isAssignableFrom(rawClass)) { - return new TypedIdDeserializer(); + return new TypedIdDeserializer(moduleContext); } return null; @@ -146,10 +146,10 @@ public JsonSerializer findKeySerializer(ScoutDataObjectModuleContext moduleCo } if (IId.class.isAssignableFrom(rawClass)) { if (type.isConcrete()) { - return new UnqualifiedIIdMapKeySerializer(); + return new UnqualifiedIIdMapKeySerializer(moduleContext); } else { - return new QualifiedIIdMapKeySerializer(); + return new QualifiedIIdMapKeySerializer(moduleContext); } } if (IEnum.class.isAssignableFrom(rawClass)) { diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextJsonSerializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextJsonSerializer.java new file mode 100644 index 00000000000..b1599dbf3e5 --- /dev/null +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextJsonSerializer.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.scout.rt.jackson.dataobject.id; + +import java.util.Collection; + +import org.eclipse.scout.rt.dataobject.id.IdCodec.IIdCodecFlag; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; +import org.eclipse.scout.rt.platform.util.LazyValue; + +import com.fasterxml.jackson.databind.JsonSerializer; + +/** + * Abstract {@link JsonSerializer} with {@link ScoutDataObjectModuleContext} that provides information about the + * {@link IIdCodecFlag}s of the context. + */ +public abstract class AbstractScoutDataObjectModuleContextJsonSerializer extends JsonSerializer { + + protected final ScoutDataObjectModuleContext m_moduleContext; + protected final LazyValue> m_idCodecFlags = new LazyValue<>(() -> computeIdCodecFlags()); + + public AbstractScoutDataObjectModuleContextJsonSerializer(ScoutDataObjectModuleContext moduleContext) { + m_moduleContext = moduleContext; + } + + protected ScoutDataObjectModuleContext moduleContext() { + return m_moduleContext; + } + + protected Collection computeIdCodecFlags() { + return IdCodecUtility.getIdCodecFlags(moduleContext()); + } + + protected Collection idCodecFlags() { + return m_idCodecFlags.get(); + } +} diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextKeyDeserializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextKeyDeserializer.java new file mode 100644 index 00000000000..1e53ad04191 --- /dev/null +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextKeyDeserializer.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.scout.rt.jackson.dataobject.id; + +import java.util.Collection; + +import org.eclipse.scout.rt.dataobject.id.IdCodec.IIdCodecFlag; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; +import org.eclipse.scout.rt.platform.util.LazyValue; + +import com.fasterxml.jackson.databind.KeyDeserializer; + +/** + * Abstract {@link KeyDeserializer} with {@link ScoutDataObjectModuleContext} that provides information about the + * {@link IIdCodecFlag}s of the context. + */ +public abstract class AbstractScoutDataObjectModuleContextKeyDeserializer extends KeyDeserializer { + + protected final ScoutDataObjectModuleContext m_moduleContext; + protected final LazyValue> m_idCodecFlags = new LazyValue<>(() -> computeIdCodecFlags()); + + public AbstractScoutDataObjectModuleContextKeyDeserializer(ScoutDataObjectModuleContext moduleContext) { + m_moduleContext = moduleContext; + } + + protected ScoutDataObjectModuleContext moduleContext() { + return m_moduleContext; + } + + protected Collection computeIdCodecFlags() { + return IdCodecUtility.getIdCodecFlags(moduleContext()); + } + + protected Collection idCodecFlags() { + return m_idCodecFlags.get(); + } +} diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextStdDeserializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextStdDeserializer.java new file mode 100644 index 00000000000..6d7597b826f --- /dev/null +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextStdDeserializer.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.scout.rt.jackson.dataobject.id; + +import java.util.Collection; + +import org.eclipse.scout.rt.dataobject.id.IdCodec.IIdCodecFlag; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; +import org.eclipse.scout.rt.platform.util.LazyValue; + +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +/** + * Abstract {@link StdDeserializer} with {@link ScoutDataObjectModuleContext} that provides information about the + * {@link IIdCodecFlag}s of the context. + */ +public abstract class AbstractScoutDataObjectModuleContextStdDeserializer extends StdDeserializer { + private static final long serialVersionUID = 1L; + + protected final ScoutDataObjectModuleContext m_moduleContext; + protected final LazyValue> m_idCodecFlags = new LazyValue<>(() -> computeIdCodecFlags()); + + public AbstractScoutDataObjectModuleContextStdDeserializer(ScoutDataObjectModuleContext moduleContext, Class valueClass) { + super(valueClass); + m_moduleContext = moduleContext; + } + + public AbstractScoutDataObjectModuleContextStdDeserializer(ScoutDataObjectModuleContext moduleContext, JavaType valueType) { + super(valueType); + m_moduleContext = moduleContext; + } + + protected ScoutDataObjectModuleContext moduleContext() { + return m_moduleContext; + } + + protected Collection computeIdCodecFlags() { + return IdCodecUtility.getIdCodecFlags(moduleContext()); + } + + protected Collection idCodecFlags() { + return m_idCodecFlags.get(); + } +} diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextStdSerializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextStdSerializer.java new file mode 100644 index 00000000000..9b0b67bce46 --- /dev/null +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/AbstractScoutDataObjectModuleContextStdSerializer.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.scout.rt.jackson.dataobject.id; + +import java.util.Collection; + +import org.eclipse.scout.rt.dataobject.id.IdCodec.IIdCodecFlag; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; +import org.eclipse.scout.rt.platform.util.LazyValue; + +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +/** + * Abstract {@link StdSerializer} with {@link ScoutDataObjectModuleContext} that provides information about the + * {@link IIdCodecFlag}s of the context. + */ +public abstract class AbstractScoutDataObjectModuleContextStdSerializer extends StdSerializer { + private static final long serialVersionUID = 1L; + + protected final ScoutDataObjectModuleContext m_moduleContext; + protected final LazyValue> m_idCodecFlags = new LazyValue<>(() -> computeIdCodecFlags()); + + public AbstractScoutDataObjectModuleContextStdSerializer(ScoutDataObjectModuleContext moduleContext, Class valueClass) { + super(valueClass, false); + m_moduleContext = moduleContext; + } + + public AbstractScoutDataObjectModuleContextStdSerializer(ScoutDataObjectModuleContext moduleContext, JavaType valueType) { + super(valueType); + m_moduleContext = moduleContext; + } + + protected ScoutDataObjectModuleContext moduleContext() { + return m_moduleContext; + } + + protected Collection computeIdCodecFlags() { + return IdCodecUtility.getIdCodecFlags(moduleContext()); + } + + protected Collection idCodecFlags() { + return m_idCodecFlags.get(); + } +} diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/IdCodecUtility.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/IdCodecUtility.java new file mode 100644 index 00000000000..cdfcaaae5a5 --- /dev/null +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/IdCodecUtility.java @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + */ +package org.eclipse.scout.rt.jackson.dataobject.id; + +import static java.util.Collections.*; + +import java.util.Collection; +import java.util.Set; + +import org.eclipse.scout.rt.dataobject.id.IdCodec.IIdCodecFlag; +import org.eclipse.scout.rt.dataobject.id.IdCodec.IdCodecFlag; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; +import org.eclipse.scout.rt.platform.util.CollectionUtility; + +public final class IdCodecUtility { + + private IdCodecUtility() { + } + + public static Collection getIdCodecFlags(ScoutDataObjectModuleContext moduleContext) { + if (moduleContext == null) { + return emptySet(); + } + Set flags = CollectionUtility.emptyHashSet(); + if (moduleContext.isIdEncryption()) { + flags.add(IdCodecFlag.ENCRYPTION); + } + return unmodifiableSet(flags); + } +} diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdDeserializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdDeserializer.java index 6e25b53ec97..795fef7ba71 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdDeserializer.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdDeserializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -15,25 +15,26 @@ import org.eclipse.scout.rt.dataobject.id.IId; import org.eclipse.scout.rt.dataobject.id.IdCodec; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; import org.eclipse.scout.rt.platform.util.LazyValue; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; import com.fasterxml.jackson.databind.exc.InvalidFormatException; /** * Custom deserializer for {@link IId} instances - like {@link TypedIdDeserializer} it uses {@link IdCodec} for * serialization. It may be used as a replacement for {@link UnqualifiedIIdDeserializer}. */ -public class QualifiedIIdDeserializer extends StdDeserializer { +public class QualifiedIIdDeserializer extends AbstractScoutDataObjectModuleContextStdDeserializer { private static final long serialVersionUID = 1L; protected final LazyValue m_idCodec = new LazyValue<>(IdCodec.class); + protected final Class m_idClass; - public QualifiedIIdDeserializer(Class idClass) { - super(idClass); + public QualifiedIIdDeserializer(ScoutDataObjectModuleContext moduleContext, Class idClass) { + super(moduleContext, idClass); m_idClass = idClass; } @@ -42,7 +43,7 @@ public IId deserialize(JsonParser p, DeserializationContext ctxt) throws IOExcep // check required to prevent returning an instance that isn't compatible with requested ID class String rawValue = p.getText(); try { - return assertInstance(m_idCodec.get().fromQualified(rawValue), m_idClass); + return assertInstance(m_idCodec.get().fromQualified(rawValue, idCodecFlags()), m_idClass); } catch (RuntimeException e) { throw InvalidFormatException.from(p, "Failed to deserialize qualified IId: " + e.getMessage(), rawValue, m_idClass); diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdMapKeyDeserializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdMapKeyDeserializer.java index 9848bdf59b1..4b698448f41 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdMapKeyDeserializer.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdMapKeyDeserializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -19,22 +19,21 @@ import org.eclipse.scout.rt.platform.util.LazyValue; import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.KeyDeserializer; import com.fasterxml.jackson.databind.exc.InvalidFormatException; /** * Custom deserializer for {@link IId} instances - like {@link TypedIdDeserializer} it uses {@link IdCodec} for * serialization. It may be used as a replacement for {@link UnqualifiedIIdDeserializer}. */ -public class QualifiedIIdMapKeyDeserializer extends KeyDeserializer { +public class QualifiedIIdMapKeyDeserializer extends AbstractScoutDataObjectModuleContextKeyDeserializer { protected final LazyValue m_idCodec = new LazyValue<>(IdCodec.class); - protected final ScoutDataObjectModuleContext m_moduleContext; + protected final Class m_idClass; public QualifiedIIdMapKeyDeserializer(ScoutDataObjectModuleContext moduleContext, Class idClass) { - m_moduleContext = moduleContext; + super(moduleContext); m_idClass = idClass; } @@ -42,7 +41,7 @@ public QualifiedIIdMapKeyDeserializer(ScoutDataObjectModuleContext moduleContext public Object deserializeKey(String key, DeserializationContext ctxt) throws IOException { // check required to prevent returning an instance that isn't compatible with requested ID class try { - return assertInstance(m_idCodec.get().fromQualified(key), m_idClass); + return assertInstance(m_idCodec.get().fromQualified(key, idCodecFlags()), m_idClass); } catch (RuntimeException e) { if (m_moduleContext.isLenientMode()) { diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdMapKeySerializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdMapKeySerializer.java index 860a450a9c3..f9596549eff 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdMapKeySerializer.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdMapKeySerializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -13,22 +13,26 @@ import org.eclipse.scout.rt.dataobject.id.IId; import org.eclipse.scout.rt.dataobject.id.IdCodec; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; import org.eclipse.scout.rt.platform.util.LazyValue; import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; /** * Custom serializer for {@link IId} instances - like {@link TypedIdSerializer} it uses {@link IdCodec} for * serialization. It may be used as a replacement for {@link UnqualifiedIIdMapKeySerializer}. */ -public class QualifiedIIdMapKeySerializer extends JsonSerializer { +public class QualifiedIIdMapKeySerializer extends AbstractScoutDataObjectModuleContextJsonSerializer { protected final LazyValue m_idCodec = new LazyValue<>(IdCodec.class); + public QualifiedIIdMapKeySerializer(ScoutDataObjectModuleContext moduleContext) { + super(moduleContext); + } + @Override public void serialize(IId value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - gen.writeFieldName(m_idCodec.get().toQualified(value)); + gen.writeFieldName(m_idCodec.get().toQualified(value, idCodecFlags())); } } diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdSerializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdSerializer.java index 994fdc37815..37c72e1be32 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdSerializer.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/QualifiedIIdSerializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -13,27 +13,27 @@ import org.eclipse.scout.rt.dataobject.id.IId; import org.eclipse.scout.rt.dataobject.id.IdCodec; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; import org.eclipse.scout.rt.platform.util.LazyValue; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; /** * Custom serializer for {@link IId} instances - like {@link TypedIdSerializer} it uses {@link IdCodec} for * serialization. It may be used as a replacement for {@link UnqualifiedIIdSerializer}. */ -public class QualifiedIIdSerializer extends StdSerializer { +public class QualifiedIIdSerializer extends AbstractScoutDataObjectModuleContextStdSerializer { private static final long serialVersionUID = 1L; protected final LazyValue m_idCodec = new LazyValue<>(IdCodec.class); - public QualifiedIIdSerializer() { - super(IId.class, false); + public QualifiedIIdSerializer(ScoutDataObjectModuleContext moduleContext) { + super(moduleContext, IId.class); } @Override public void serialize(IId value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - gen.writeString(m_idCodec.get().toQualified(value)); + gen.writeString(m_idCodec.get().toQualified(value, idCodecFlags())); } } diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/TypedIdDeserializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/TypedIdDeserializer.java index eb0451ed0b7..9c70946c3d0 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/TypedIdDeserializer.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/TypedIdDeserializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -14,30 +14,30 @@ import org.eclipse.scout.rt.dataobject.id.IId; import org.eclipse.scout.rt.dataobject.id.IdCodec; import org.eclipse.scout.rt.dataobject.id.TypedId; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; import org.eclipse.scout.rt.platform.util.LazyValue; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; import com.fasterxml.jackson.databind.exc.InvalidFormatException; /** * Custom deserializer for {@link TypedId} values. */ -public class TypedIdDeserializer extends StdDeserializer> { +public class TypedIdDeserializer extends AbstractScoutDataObjectModuleContextStdDeserializer> { private static final long serialVersionUID = 1L; protected final LazyValue m_idCodec = new LazyValue<>(IdCodec.class); - public TypedIdDeserializer() { - super(TypedId.class); + public TypedIdDeserializer(ScoutDataObjectModuleContext moduleContext) { + super(moduleContext, TypedId.class); } @Override public TypedId deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String rawValue = p.getText(); try { - return TypedId.of(m_idCodec.get().fromQualified(rawValue)); + return TypedId.of(m_idCodec.get().fromQualified(rawValue, idCodecFlags())); } catch (RuntimeException e) { throw InvalidFormatException.from(p, "Failed to deserialize TypedId: " + e.getMessage(), rawValue, TypedId.class); diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/TypedIdSerializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/TypedIdSerializer.java index 64eb4368962..62d52670eab 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/TypedIdSerializer.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/TypedIdSerializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -14,26 +14,26 @@ import org.eclipse.scout.rt.dataobject.id.IId; import org.eclipse.scout.rt.dataobject.id.IdCodec; import org.eclipse.scout.rt.dataobject.id.TypedId; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; import org.eclipse.scout.rt.platform.util.LazyValue; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; /** * Custom serializer for all {@link TypedId} instances. */ -public class TypedIdSerializer extends StdSerializer> { +public class TypedIdSerializer extends AbstractScoutDataObjectModuleContextStdSerializer> { private static final long serialVersionUID = 1L; protected final LazyValue m_idCodec = new LazyValue<>(IdCodec.class); - public TypedIdSerializer() { - super(TypedId.class, false); + public TypedIdSerializer(ScoutDataObjectModuleContext moduleContext) { + super(moduleContext, TypedId.class); } @Override public void serialize(TypedId value, JsonGenerator gen, SerializerProvider provider) throws IOException { - gen.writeString(m_idCodec.get().toQualified(value.getId())); + gen.writeString(m_idCodec.get().toQualified(value.getId(), idCodecFlags())); } } diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdDeserializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdDeserializer.java index cc0d809e609..f43d6ba7b47 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdDeserializer.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdDeserializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -13,24 +13,25 @@ import org.eclipse.scout.rt.dataobject.id.IId; import org.eclipse.scout.rt.dataobject.id.IdCodec; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; import org.eclipse.scout.rt.platform.util.LazyValue; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; import com.fasterxml.jackson.databind.exc.InvalidFormatException; /** * Custom deserializer for {@link IId} values. */ -public class UnqualifiedIIdDeserializer extends StdDeserializer { +public class UnqualifiedIIdDeserializer extends AbstractScoutDataObjectModuleContextStdDeserializer { private static final long serialVersionUID = 1L; protected final LazyValue m_idCodec = new LazyValue<>(IdCodec.class); + protected final Class m_idClass; - public UnqualifiedIIdDeserializer(Class idClass) { - super(idClass); + public UnqualifiedIIdDeserializer(ScoutDataObjectModuleContext moduleContext, Class idClass) { + super(moduleContext, idClass); m_idClass = idClass; } @@ -38,7 +39,7 @@ public UnqualifiedIIdDeserializer(Class idClass) { public IId deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String rawValue = p.getText(); try { - return m_idCodec.get().fromUnqualified(m_idClass, rawValue); + return m_idCodec.get().fromUnqualified(m_idClass, rawValue, idCodecFlags()); } catch (RuntimeException e) { throw InvalidFormatException.from(p, "Failed to deserialize unqualified IId: " + e.getMessage(), rawValue, m_idClass); diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdMapKeyDeserializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdMapKeyDeserializer.java index 90e41fae015..95504f7938f 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdMapKeyDeserializer.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdMapKeyDeserializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -17,28 +17,26 @@ import org.eclipse.scout.rt.platform.util.LazyValue; import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.KeyDeserializer; import com.fasterxml.jackson.databind.exc.InvalidFormatException; /** * Custom deserializer used for map keys of type {@link IId}. */ -public class UnqualifiedIIdMapKeyDeserializer extends KeyDeserializer { +public class UnqualifiedIIdMapKeyDeserializer extends AbstractScoutDataObjectModuleContextKeyDeserializer { protected final LazyValue m_idCodec = new LazyValue<>(IdCodec.class); - protected final ScoutDataObjectModuleContext m_moduleContext; protected final Class m_idClass; public UnqualifiedIIdMapKeyDeserializer(ScoutDataObjectModuleContext moduleContext, Class idClass) { - m_moduleContext = moduleContext; + super(moduleContext); m_idClass = idClass; } @Override public Object deserializeKey(String key, DeserializationContext ctxt) throws IOException { try { - return m_idCodec.get().fromUnqualified(m_idClass, key); + return m_idCodec.get().fromUnqualified(m_idClass, key, idCodecFlags()); } catch (RuntimeException e) { if (m_moduleContext.isLenientMode()) { diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdMapKeySerializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdMapKeySerializer.java index 5b8995d3897..34165c72b54 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdMapKeySerializer.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdMapKeySerializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -13,21 +13,25 @@ import org.eclipse.scout.rt.dataobject.id.IId; import org.eclipse.scout.rt.dataobject.id.IdCodec; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; import org.eclipse.scout.rt.platform.util.LazyValue; import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; /** * Custom serializer used for map keys of type {@link IId}. */ -public class UnqualifiedIIdMapKeySerializer extends JsonSerializer { +public class UnqualifiedIIdMapKeySerializer extends AbstractScoutDataObjectModuleContextJsonSerializer { protected final LazyValue m_idCodec = new LazyValue<>(IdCodec.class); + public UnqualifiedIIdMapKeySerializer(ScoutDataObjectModuleContext moduleContext) { + super(moduleContext); + } + @Override public void serialize(IId value, JsonGenerator gen, SerializerProvider serializers) throws IOException { - gen.writeFieldName(m_idCodec.get().toUnqualified(value)); + gen.writeFieldName(m_idCodec.get().toUnqualified(value, idCodecFlags())); } } diff --git a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdSerializer.java b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdSerializer.java index 267a031bb82..f7ea7f4046f 100644 --- a/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdSerializer.java +++ b/org.eclipse.scout.rt.jackson/src/main/java/org/eclipse/scout/rt/jackson/dataobject/id/UnqualifiedIIdSerializer.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2024 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -13,27 +13,27 @@ import org.eclipse.scout.rt.dataobject.id.IId; import org.eclipse.scout.rt.dataobject.id.IdCodec; +import org.eclipse.scout.rt.jackson.dataobject.ScoutDataObjectModuleContext; import org.eclipse.scout.rt.platform.util.LazyValue; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JavaType; import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; /** * Custom serializer for all {@link IId} instances. */ -public class UnqualifiedIIdSerializer extends StdSerializer { +public class UnqualifiedIIdSerializer extends AbstractScoutDataObjectModuleContextStdSerializer { private static final long serialVersionUID = 1L; protected final LazyValue m_idCodec = new LazyValue<>(IdCodec.class); - public UnqualifiedIIdSerializer(JavaType type) { - super(type); + public UnqualifiedIIdSerializer(ScoutDataObjectModuleContext moduleContext, JavaType type) { + super(moduleContext, type); } @Override public void serialize(IId value, JsonGenerator gen, SerializerProvider provider) throws IOException { - gen.writeObject(m_idCodec.get().toUnqualified(value)); + gen.writeObject(m_idCodec.get().toUnqualified(value, idCodecFlags())); } } diff --git a/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.core.resources.prefs b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 00000000000..13d34f372ba --- /dev/null +++ b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,18 @@ +eclipse.preferences.version=1 +encoding//src/main/client=UTF-8 +encoding//src/main/fixture=UTF-8 +encoding//src/main/java=UTF-8 +encoding//src/main/java-jcl=UTF-8 +encoding//src/main/java-log4j=UTF-8 +encoding//src/main/java-original=UTF-8 +encoding//src/main/js=UTF-8 +encoding//src/main/resources=UTF-8 +encoding//src/main/shared=UTF-8 +encoding//src/main/webapp=UTF-8 +encoding//src/test/java=UTF-8 +encoding//src/test/js=UTF-8 +encoding//src/test/resources=UTF-8 +encoding//target/generated-sources/annotations=UTF-8 +encoding//target/generated-sources/wsimport=UTF-8 +encoding/=UTF-8 +encoding/files=UTF-8 diff --git a/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.core.runtime.prefs b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.core.runtime.prefs new file mode 100644 index 00000000000..5a0ad22d2a7 --- /dev/null +++ b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.core.runtime.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +line.separator=\n diff --git a/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.apt.core.prefs b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 00000000000..d4313d4b25e --- /dev/null +++ b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000000..91af6f20512 --- /dev/null +++ b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,399 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes=m_ +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=11 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=11 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=enabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.rawTypeReference=ignore +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.processAnnotations=disabled +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=11 +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=16 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=16 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=0 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true +org.eclipse.jdt.core.formatter.comment.count_line_length_from_starting_position=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=false +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=false +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true +org.eclipse.jdt.core.formatter.indentation.size=2 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=false +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=true +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=true +org.eclipse.jdt.core.formatter.lineSplit=240 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=2 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=true +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true diff --git a/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.launching.prefs b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.launching.prefs new file mode 100644 index 00000000000..d211d326335 --- /dev/null +++ b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.launching.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning diff --git a/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.ui.prefs b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 00000000000..a52f8c4ad0a --- /dev/null +++ b/org.eclipse.scout.rt.rest.jersey.server/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,127 @@ +cleanup.add_default_serial_version_id=true +cleanup.add_generated_serial_version_id=false +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=false +cleanup.add_missing_methods=false +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_missing_override_annotations_interface_methods=true +cleanup.add_serial_version_id=false +cleanup.always_use_blocks=true +cleanup.always_use_parentheses_in_expressions=false +cleanup.always_use_this_for_non_static_field_access=false +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_functional_interfaces=false +cleanup.convert_to_enhanced_for_loop=false +cleanup.correct_indentation=true +cleanup.format_source_code=true +cleanup.format_source_code_changes_only=false +cleanup.insert_inferred_type_arguments=false +cleanup.make_local_variable_final=true +cleanup.make_parameters_final=false +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=false +cleanup.never_use_blocks=false +cleanup.never_use_parentheses_in_expressions=true +cleanup.organize_imports=true +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=false +cleanup.qualify_static_member_accesses_with_declaring_class=false +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=true +cleanup.remove_redundant_type_arguments=true +cleanup.remove_trailing_whitespaces=true +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=false +cleanup.remove_unnecessary_casts=false +cleanup.remove_unnecessary_nls_tags=false +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=false +cleanup.remove_unused_private_fields=true +cleanup.remove_unused_private_members=false +cleanup.remove_unused_private_methods=true +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_anonymous_class_creation=false +cleanup.use_blocks=false +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_lambda=true +cleanup.use_parentheses_in_expressions=false +cleanup.use_this_for_non_static_field_access=false +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=false +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup.use_type_arguments=false +cleanup_profile=_Eclipse Scout +cleanup_settings_version=2 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_Eclipse Scout +formatter_settings_version=12 +org.eclipse.jdt.ui.exception.name=e +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.javadoc=true +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.overrideannotation=true +org.eclipse.jdt.ui.text.custom_code_templates=