Skip to content

Commit

Permalink
Create temporary XNodeMutator interface
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Dec 11, 2018
1 parent a5c39e4 commit 7901dea
Show file tree
Hide file tree
Showing 7 changed files with 56 additions and 29 deletions.
Expand Up @@ -349,7 +349,7 @@ public static void removeShadowRefEvaluatorValue(ExpressionType expression, Stri
if (node instanceof MapXNode && ((MapXNode) node).containsKey(SHADOW_REF_KEY)) {
XNode shadowRefNodes = ((MapXNode) node).get(SHADOW_REF_KEY);
if (shadowRefNodes instanceof MapXNode && shadowRefOid.equals(getShadowRefNodeOid((MapXNode) shadowRefNodes))) {
prismContext.hacks().putToMapXNode((MapXNode) node, SHADOW_REF_KEY, null);
prismContext.xnodeMutator().putToMapXNode((MapXNode) node, SHADOW_REF_KEY, null);
//todo don't get why while using removeEvaluatorByName no changes are saved
// removeEvaluatorByName(expression, SchemaConstantsGenerated.C_VALUE);
} else if (shadowRefNodes instanceof ListXNode) {
Expand Down Expand Up @@ -416,7 +416,7 @@ public static MapXNode getOrCreateAssociationTargetSearchValues(ExpressionType e
filterClauseNode = prismContext.xnodeFactory().map();
}
if (!filterClauseNode.containsKey(new QName("equal"))) {
prismContext.hacks().putToMapXNode(filterClauseNode, new QName("equal"), null);
prismContext.xnodeMutator().putToMapXNode(filterClauseNode, new QName("equal"), null);
}
MapXNode values = (MapXNode)filterClauseNode.get(new QName("equal"));
if (values == null) {
Expand All @@ -429,7 +429,7 @@ public static void updateAssociationTargetSearchPath(ExpressionType expression,
MapXNode values = getOrCreateAssociationTargetSearchValues(expression, prismContext);
PrimitiveXNode<ItemPathType> pathValue = (PrimitiveXNode<ItemPathType>)values.get(new QName("path"));
if (pathValue != null) {
prismContext.hacks().setPrimitiveXNodeValue(pathValue, path, null);
prismContext.xnodeMutator().setPrimitiveXNodeValue(pathValue, path, null);
}
}

Expand Down Expand Up @@ -499,16 +499,16 @@ public static ListXNode getShadowRefNodesList(ExpressionType expression, boolean
} else if (createIfNotExist && ((MapXNode) node).get(SHADOW_REF_KEY) instanceof MapXNode) {
MapXNode shadowRef = (MapXNode) ((MapXNode) node).get(SHADOW_REF_KEY);
shadowRefNodes = prismContext.xnodeFactory().list(shadowRef);
prismContext.hacks().putToMapXNode((MapXNode) node, SHADOW_REF_KEY, shadowRefNodes);
prismContext.xnodeMutator().putToMapXNode((MapXNode) node, SHADOW_REF_KEY, shadowRefNodes);
}
} else if (createIfNotExist) {
shadowRefNodes = prismContext.xnodeFactory().list();
prismContext.hacks().putToMapXNode((MapXNode) node, SHADOW_REF_KEY, shadowRefNodes);
prismContext.xnodeMutator().putToMapXNode((MapXNode) node, SHADOW_REF_KEY, shadowRefNodes);
}
} else if (createIfNotExist) {
shadowRefNodes = prismContext.xnodeFactory().list();
node = prismContext.xnodeFactory().map();
prismContext.hacks().putToMapXNode((MapXNode) node, SHADOW_REF_KEY, shadowRefNodes);
prismContext.xnodeMutator().putToMapXNode((MapXNode) node, SHADOW_REF_KEY, shadowRefNodes);
raw = new RawType(node, prismContext);
element.setValue(raw);
}
Expand All @@ -532,7 +532,7 @@ public static void addShadowRefEvaluatorValue(ExpressionType expression, String
Map<QName, XNode> shadowRefNodeSource = new HashMap<>();
shadowRefNodeSource.put(SHADOW_OID_KEY, factory.primitive(oid));
shadowRefNodeSource.put(SHADOW_TYPE_KEY, factory.primitive(ShadowType.COMPLEX_TYPE.getLocalPart()));
prismContext.hacks().addToListXNode(shadowRefNodes, factory.map(shadowRefNodeSource));
prismContext.xnodeMutator().addToListXNode(shadowRefNodes, factory.map(shadowRefNodeSource));
}

public static List<String> getLiteralExpressionValues(ExpressionType expression) throws SchemaException{
Expand Down
Expand Up @@ -16,20 +16,14 @@

package com.evolveum.midpoint.prism;

import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.xnode.ListXNode;
import com.evolveum.midpoint.prism.xnode.MapXNode;
import com.evolveum.midpoint.prism.xnode.PrimitiveXNode;
import com.evolveum.midpoint.prism.xnode.XNode;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.prism.xml.ns._public.types_3.ProtectedDataType;
import org.jetbrains.annotations.Nullable;
import org.w3c.dom.Element;

import javax.xml.namespace.QName;
import javax.xml.soap.Detail;
import java.io.Serializable;

/**
* TEMPORARY.
Expand All @@ -42,15 +36,7 @@ public interface Hacks {

void serializeFaultMessage(Detail detail, Object faultInfo, QName faultMessageElementName, Trace logger);

<T> void setPrimitiveXNodeValue(PrimitiveXNode<T> node, T value, QName typeName);

void putToMapXNode(MapXNode map, QName key, XNode value);

void addToListXNode(ListXNode list, XNode... nodes);

<T> void parseProtectedType(ProtectedDataType<T> protectedType, MapXNode xmap, PrismContext prismContext, ParsingContext pc) throws SchemaException;

Element serializeSingleElementMapToElement(MapXNode filterClauseXNode) throws SchemaException;

void setXNodeType(XNode node, QName explicitTypeName, boolean explicitTypeDeclaration);
}
Expand Up @@ -35,6 +35,7 @@
import com.evolveum.midpoint.prism.util.PrismMonitor;
import com.evolveum.midpoint.prism.xnode.RootXNode;
import com.evolveum.midpoint.prism.xnode.XNodeFactory;
import com.evolveum.midpoint.prism.xnode.XNodeMutator;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.prism.xml.ns._public.types_3.ItemPathType;
import com.evolveum.prism.xml.ns._public.types_3.PolyStringNormalizerConfigurationType;
Expand Down Expand Up @@ -317,6 +318,8 @@ <C extends Containerable, O extends Objectable> void adopt(PrismContainerValue<C

XNodeFactory xnodeFactory();

XNodeMutator xnodeMutator();

/**
* Temporary
*/
Expand Down
@@ -0,0 +1,34 @@
/*
* 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.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.evolveum.midpoint.prism.xnode;

import javax.xml.namespace.QName;

/**
* Temporary interface to allow modifying XNode representation. Hopefully it will be removed soon. DO NOT USE.
*/
public interface XNodeMutator {

<T> void setPrimitiveXNodeValue(PrimitiveXNode<T> node, T value, QName typeName);

void putToMapXNode(MapXNode map, QName key, XNode value);

void addToListXNode(ListXNode list, XNode... nodes);

void setXNodeType(XNode node, QName explicitTypeName, boolean explicitTypeDeclaration);

}
Expand Up @@ -259,7 +259,7 @@ public XNode serializeToXNode() throws SchemaException {
} else if (parsed != null) {
checkPrismContext();
XNode rv = prismContext.xnodeSerializer().root(new QName("dummy")).serialize(parsed).getSubnode();
prismContext.hacks().setXNodeType(rv, explicitTypeName, explicitTypeDeclaration);
prismContext.xnodeMutator().setXNodeType(rv, explicitTypeName, explicitTypeDeclaration);
return rv;
} else {
return null; // or an exception here?
Expand Down
Expand Up @@ -16,28 +16,26 @@

package com.evolveum.midpoint.prism.impl;

import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.Hacks;
import com.evolveum.midpoint.prism.ParsingContext;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.impl.lex.dom.DomLexicalProcessor;
import com.evolveum.midpoint.prism.impl.marshaller.XNodeProcessorUtil;
import com.evolveum.midpoint.prism.impl.xnode.*;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.xnode.*;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.prism.xml.ns._public.types_3.ProtectedDataType;
import com.evolveum.prism.xml.ns._public.types_3.RawType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.w3c.dom.Element;

import javax.xml.namespace.QName;
import javax.xml.soap.Detail;
import java.io.Serializable;

/**
* TEMPORARY
*/
public class HacksImpl implements Hacks {
public class HacksImpl implements Hacks, XNodeMutator {

@NotNull private final PrismContextImpl prismContext;

Expand Down
Expand Up @@ -49,6 +49,7 @@
import com.evolveum.midpoint.prism.impl.xnode.RootXNodeImpl;
import com.evolveum.midpoint.prism.xnode.XNodeFactory;
import com.evolveum.midpoint.prism.impl.xnode.XNodeFactoryImpl;
import com.evolveum.midpoint.prism.xnode.XNodeMutator;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.exception.SystemException;
Expand Down Expand Up @@ -87,7 +88,7 @@ public class PrismContextImpl implements PrismContext {
@NotNull private final PrismMarshaller prismMarshaller;
@NotNull private final BeanMarshaller beanMarshaller;
@NotNull private final BeanUnmarshaller beanUnmarshaller;
@NotNull private final Hacks hacks;
@NotNull private final HacksImpl hacks;
@NotNull private final XNodeFactory xnodeFactory;
@NotNull private final DeltaFactory deltaFactory;
@NotNull private final QueryFactory queryFactory;
Expand Down Expand Up @@ -576,6 +577,11 @@ public XNodeFactory xnodeFactory() {
return xnodeFactory;
}

@Override
public XNodeMutator xnodeMutator() {
return hacks;
}

@Override
public KeyStoreBasedProtector createInitializedProtector(KeyStoreBasedProtectorBuilder builder) {
KeyStoreBasedProtectorImpl protector = new KeyStoreBasedProtectorImpl(builder);
Expand Down

0 comments on commit 7901dea

Please sign in to comment.