From fcd4faaa9e4ff8fa7f555892fa9250fa095cc31d Mon Sep 17 00:00:00 2001 From: Pavol Mederly Date: Sun, 18 Nov 2018 00:37:08 +0100 Subject: [PATCH] Move ParsingContextImpl to prism-impl --- .../midpoint/prism/ParsingContextImpl.java | 23 ++++++++++++++++++- .../midpoint/prism/PrismContextImpl.java | 15 ++++++++++++ .../prism/marshaller/QueryConverterImpl.java | 4 ++-- .../midpoint/prism/ParsingContext.java | 20 ---------------- .../evolveum/midpoint/prism/PrismContext.java | 5 ++++ .../repo/sql/helpers/ObjectRetriever.java | 2 +- 6 files changed, 45 insertions(+), 24 deletions(-) rename infra/{prism => prism-impl}/src/main/java/com/evolveum/midpoint/prism/ParsingContextImpl.java (84%) diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/ParsingContextImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/ParsingContextImpl.java similarity index 84% rename from infra/prism/src/main/java/com/evolveum/midpoint/prism/ParsingContextImpl.java rename to infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/ParsingContextImpl.java index 9a46490d99e..4e1dde1d32e 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/ParsingContextImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/ParsingContextImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2017 Evolveum + * Copyright (c) 2010-2018 Evolveum * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,6 +35,27 @@ public class ParsingContextImpl implements ParsingContext { ParsingContextImpl() { } + static ParsingContext allowMissingRefTypes() { + ParsingContextImpl pc = new ParsingContextImpl(); + pc.setAllowMissingRefTypes(true); + return pc; + } + + + public static ParsingContext createForCompatibilityMode() { + return forMode(XNodeProcessorEvaluationMode.COMPAT); + } + + static ParsingContext forMode(XNodeProcessorEvaluationMode mode) { + ParsingContextImpl pc = new ParsingContextImpl(); + pc.setEvaluationMode(mode); + return pc; + } + + public static ParsingContext createDefault() { + return new ParsingContextImpl(); + } + @SuppressWarnings("SameParameterValue") void setAllowMissingRefTypes(boolean allowMissingRefTypes) { this.allowMissingRefTypes = allowMissingRefTypes; diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/PrismContextImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/PrismContextImpl.java index 6f24fff6b1f..a5cb12a5120 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/PrismContextImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/PrismContextImpl.java @@ -510,4 +510,19 @@ public boolean relationMatches(QName relationQuery, QName relation) { public boolean relationMatches(@NotNull List relationQuery, QName relation) { return relationQuery.stream().anyMatch(rq -> relationMatches(rq, relation)); } + + @Override + public ParsingContext getDefaultParsingContext() { + return ParsingContextImpl.createDefault(); + } + + @Override + public ParsingContext createParsingContextForAllowMissingRefTypes() { + return ParsingContextImpl.allowMissingRefTypes(); + } + + @Override + public ParsingContext createParsingContextForCompatibilityMode() { + return ParsingContextImpl.createForCompatibilityMode(); + } } diff --git a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/marshaller/QueryConverterImpl.java b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/marshaller/QueryConverterImpl.java index 326efa5d1df..9e83d37d4f6 100644 --- a/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/marshaller/QueryConverterImpl.java +++ b/infra/prism-impl/src/main/java/com/evolveum/midpoint/prism/marshaller/QueryConverterImpl.java @@ -494,7 +494,7 @@ private RefFilter parseRefFilter(MapXNode clauseXMap, Item item = prismContext.parserFor(valueRoot) .name(itemName) .definition(itemDefinition) - .context(ParsingContext.allowMissingRefTypes()) + .context(prismContext.createParsingContextForAllowMissingRefTypes()) .parseItem(); if (!(item instanceof PrismReference)) { throw new IllegalStateException("Expected PrismReference, got " + item); @@ -688,7 +688,7 @@ private Item parseItem(RootXNode root, QName itemName, ItemDefinition itemDefini item = prismContext.parserFor(root) .name(itemName) .definition(itemDefinition) - .context(ParsingContext.allowMissingRefTypes()) + .context(prismContext.createParsingContextForAllowMissingRefTypes()) .parseItem(); if (item.getValues().size() < 1 ) { diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/ParsingContext.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/ParsingContext.java index 058cba39f17..6c2dc8ba46a 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/ParsingContext.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/ParsingContext.java @@ -16,11 +16,9 @@ package com.evolveum.midpoint.prism; -import com.evolveum.midpoint.prism.marshaller.XNodeProcessorEvaluationMode; import com.evolveum.midpoint.util.exception.SchemaException; import com.evolveum.midpoint.util.logging.Trace; -import java.util.ArrayList; import java.util.List; /** @@ -30,24 +28,6 @@ public interface ParsingContext extends Cloneable { boolean isAllowMissingRefTypes(); - XNodeProcessorEvaluationMode getEvaluationMode(); - - static ParsingContext forMode(XNodeProcessorEvaluationMode mode) { - ParsingContextImpl pc = new ParsingContextImpl(); - pc.setEvaluationMode(mode); - return pc; - } - - static ParsingContext allowMissingRefTypes() { - ParsingContextImpl pc = new ParsingContextImpl(); - pc.setAllowMissingRefTypes(true); - return pc; - } - - static ParsingContext createDefault() { - return new ParsingContextImpl(); - } - boolean isCompat(); boolean isStrict(); diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismContext.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismContext.java index e6884ecec24..e23b6b4c4f0 100644 --- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismContext.java +++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismContext.java @@ -291,4 +291,9 @@ void adopt(PrismContainerValue relationQuery, QName relation); + ParsingContext getDefaultParsingContext(); + + ParsingContext createParsingContextForAllowMissingRefTypes(); + + ParsingContext createParsingContextForCompatibilityMode(); } diff --git a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/ObjectRetriever.java b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/ObjectRetriever.java index d3d5a93e0c9..58ca1af8684 100644 --- a/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/ObjectRetriever.java +++ b/repo/repo-sql-impl/src/main/java/com/evolveum/midpoint/repo/sql/helpers/ObjectRetriever.java @@ -510,7 +510,7 @@ private PrismObject updateLoadedObject(GetObjectResult PrismObject prismObject; try { // "Postel mode": be tolerant what you read. We need this to tolerate (custom) schema changes - ParsingContext parsingContext = ParsingContext.forMode(XNodeProcessorEvaluationMode.COMPAT); + ParsingContext parsingContext = prismContext.createParsingContextForCompatibilityMode(); prismObject = prismContext.parserFor(xml).context(parsingContext).parse(); if (parsingContext.hasWarnings()) { LOGGER.warn("Object {} parsed with {} warnings", ObjectTypeUtil.toShortString(prismObject), parsingContext.getWarnings().size());