diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismContainerValue.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismContainerValue.java
index 0a12251a624..d425b462679 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismContainerValue.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismContainerValue.java
@@ -87,18 +87,22 @@ public PrismContainerValue(OriginType type, Objectable source, PrismContainerabl
/**
* Returns a set of items that the property container contains. The items may be properties or inner property containers.
*
- * The set must not be null. In case there are no properties an empty set is
+ * The set may be null. In case there are no properties an empty set is
* returned.
*
* Returned set is mutable. Live object is returned.
*
* @return set of items that the property container contains.
*/
+
public List- > getItems() {
return items;
}
public Item> getNextItem(Item> referenceItem) {
+ if (items == null){
+ return null;
+ }
Iterator
- > iterator = items.iterator();
while (iterator.hasNext()) {
Item> item = iterator.next();
@@ -114,6 +118,9 @@ public Item> getNextItem(Item> referenceItem) {
}
public Item> getPreviousItem(Item> referenceItem) {
+ if (items == null){
+ return null;
+ }
Item> lastItem = null;
Iterator
- > iterator = items.iterator();
while (iterator.hasNext()) {
@@ -139,6 +146,9 @@ public Item> getPreviousItem(Item> referenceItem) {
*/
public Set
> getProperties() {
Set> properties = new HashSet>();
+ if (items == null){
+ return null;
+ }
for (Item> item : getItems()) {
if (item instanceof PrismProperty) {
properties.add((PrismProperty>) item);
@@ -323,7 +333,7 @@ public boolean substract(Item item) throws SchemaExcep
*/
public void addReplaceExisting(Item> item) throws SchemaException {
Item> existingItem = findItem(item.getElementName(), Item.class);
- if (existingItem != null) {
+ if (existingItem != null && items != null) {
items.remove(existingItem);
existingItem.setParent(null);
}
@@ -334,13 +344,16 @@ public void remove(Item> item) {
Validate.notNull(item, "Item must not be null.");
Item> existingItem = findItem(item.getElementName(), Item.class);
- if (existingItem != null) {
+ if (existingItem != null && items != null) {
items.remove(existingItem);
existingItem.setParent(null);
}
}
public void removeAll() {
+ if (items == null){
+ return;
+ }
Iterator- > iterator = items.iterator();
while (iterator.hasNext()) {
Item> item = iterator.next();
@@ -370,7 +383,7 @@ public void addAllReplaceExisting(Collection extends Item>> itemsToAdd) thro
// Check for conflicts, remove conflicting values
for (Item> item : itemsToAdd) {
Item> existingItem = findItem(item.getElementName(), Item.class);
- if (existingItem != null) {
+ if (existingItem != null && items != null) {
items.remove(existingItem);
}
}
@@ -478,6 +491,9 @@ public PrismReference findReference(QName elementName) {
}
public PrismReference findReferenceByCompositeObjectElementName(QName elementName) {
+ if (items == null){
+ return null;
+ }
for (Item item: items) {
if (item instanceof PrismReference) {
PrismReference ref = (PrismReference)item;
@@ -751,7 +767,10 @@ public void removeContainer(ItemPath itemPath) {
// Expects that "self" path is NOT present in propPath
> void removeItem(ItemPath propPath, Class itemType) {
- ItemPathSegment first = propPath.first();
+ if (items == null){
+ return;
+ }
+ ItemPathSegment first = propPath.first();
if (!(first instanceof NameItemPathSegment)) {
throw new IllegalArgumentException("Attempt to remove item using a non-name path "+propPath+" in "+this);
}
@@ -797,8 +816,10 @@ public void recompute(PrismContext prismContext) {
@Override
public void accept(Visitor visitor) {
super.accept(visitor);
- for (Item> item: getItems()) {
- item.accept(visitor);
+ if (items != null) {
+ for (Item> item : getItems()) {
+ item.accept(visitor);
+ }
}
}
@@ -818,20 +839,24 @@ public void accept(Visitor visitor, ItemPath path, boolean recursive) {
}
QName subName = ((NameItemPathSegment)first).getName();
ItemPath rest = path.rest();
- for (Item> item : items) {
- if (first.isWildcard() || subName.equals(item.getElementName())) {
- item.accept(visitor, rest, recursive);
- }
- }
+ if (items != null) {
+ for (Item> item : items) {
+ if (first.isWildcard() || subName.equals(item.getElementName())) {
+ item.accept(visitor, rest, recursive);
+ }
+ }
+ }
}
}
public boolean hasCompleteDefinition() {
- for (Item> item: getItems()) {
- if (!item.hasCompleteDefinition()) {
- return false;
- }
- }
+ if (items != null) {
+ for (Item> item : getItems()) {
+ if (!item.hasCompleteDefinition()) {
+ return false;
+ }
+ }
+ }
return true;
}
@@ -1161,14 +1186,16 @@ public PrismContainerValue clone() {
protected void copyValues(PrismContainerValue clone) {
super.copyValues(clone);
clone.id = this.id;
- for (Item> item: this.items) {
- Item> clonedItem = item.clone();
- clonedItem.setParent(clone);
- if (clone.items == null) {
- clone.items = new ArrayList<>(this.items.size());
- }
- clone.items.add(clonedItem);
- }
+ if (this.items != null) {
+ for (Item> item : this.items) {
+ Item> clonedItem = item.clone();
+ clonedItem.setParent(clone);
+ if (clone.items == null) {
+ clone.items = new ArrayList<>(this.items.size());
+ }
+ clone.items.add(clonedItem);
+ }
+ }
// TODO: deep clonning?
clone.rawXNode = this.rawXNode;
clone.rawElements = this.rawElements;
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 188c09be324..8b63caa08a8 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
@@ -17,7 +17,10 @@
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
@@ -200,6 +203,12 @@ public PrismObject parseObject(Element objectElement)
* @throws IOException
*/
public PrismObject parseObject(File file) throws SchemaException, IOException {
+ Parser parser = findParser(file);
+ XNode xnode = parser.parse(file);
+ return xnodeProcessor.parseObject(xnode);
+ }
+
+ private Parser findParser(File file) throws IOException{
Parser parser = null;
for (Entry entry: parserMap.entrySet()) {
Parser aParser = entry.getValue();
@@ -211,8 +220,7 @@ public PrismObject parseObject(File file) throws Schem
if (parser == null) {
throw new SystemException("No parser for file '"+file+"' (autodetect)");
}
- XNode xnode = parser.parse(file);
- return xnodeProcessor.parseObject(xnode);
+ return parser;
}
/**
* Parses a file and creates a prism from it.
@@ -228,19 +236,24 @@ public PrismObject parseObject(File file, String langu
* Used mostly for testing, but can also be used for built-in editors, etc.
*/
public PrismObject parseObject(String dataString) throws SchemaException {
+ Parser parser = findParser(dataString);
+ XNode xnode = parser.parse(dataString);
+ return xnodeProcessor.parseObject(xnode);
+ }
+
+ private Parser findParser(String data){
Parser parser = null;
for (Entry entry: parserMap.entrySet()) {
Parser aParser = entry.getValue();
- if (aParser.canParse(dataString)) {
+ if (aParser.canParse(data)) {
parser = aParser;
break;
}
}
if (parser == null) {
- throw new SystemException("No parser for data '"+DebugUtil.excerpt(dataString,16)+"' (autodetect)");
+ throw new SystemException("No parser for data '"+DebugUtil.excerpt(data,16)+"' (autodetect)");
}
- XNode xnode = parser.parse(dataString);
- return xnodeProcessor.parseObject(xnode);
+ return parser;
}
/**
@@ -312,8 +325,17 @@ public void adopt(PrismContainer
getSchemaRegistry().applyDefinition(prismContainerValue, typeName, path, false);
}
- public List> parseObjects(File file) {
- throw new UnsupportedOperationException();
+ public List> parseObjects(File file) throws SchemaException, IOException {
+ Parser parser = findParser(file);
+ Collection nodes = parser.parseCollection(file);
+ Iterator nodesIterator = nodes.iterator();
+ List> objects = new ArrayList>();
+ while (nodesIterator.hasNext()){
+ XNode node = nodesIterator.next();
+ PrismObject object = xnodeProcessor.parseObject(node);
+ objects.add(object);
+ }
+ return objects;
}
public String serializeObjectToString(PrismObject object, String language) throws SchemaException {
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismPropertyValue.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismPropertyValue.java
index 9e450f1973e..bc0a03b23b3 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismPropertyValue.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/PrismPropertyValue.java
@@ -22,6 +22,7 @@
import com.evolveum.midpoint.prism.schema.SchemaRegistry;
import com.evolveum.midpoint.prism.util.CloneUtil;
import com.evolveum.midpoint.prism.util.PrismUtil;
+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.DOMUtil;
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/AbstractParser.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/AbstractParser.java
index 82702cbdad1..53bfa15ddc0 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/AbstractParser.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/AbstractParser.java
@@ -3,6 +3,7 @@
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
+import java.util.Collection;
import java.util.Iterator;
import java.util.ListIterator;
import java.util.Map.Entry;
@@ -54,6 +55,16 @@ public abstract class AbstractParser implements Parser {
protected abstract JsonParser createParser(File file) throws SchemaException, IOException;
public abstract JsonGenerator createGenerator(StringWriter out) throws SchemaException;
+ @Override
+ public Collection parseCollection(File file) throws SchemaException, IOException {
+ throw new UnsupportedOperationException("Parse objects not supported for json and yaml.");
+ }
+
+ @Override
+ public Collection parseCollection(String dataString) throws SchemaException {
+ throw new UnsupportedOperationException("Parse objects not supported for json and yaml.");
+ }
+
@Override
public XNode parse(File file) throws SchemaException, IOException {
JsonParser parser = createParser(file);
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/DomParser.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/DomParser.java
index bc6a368b848..bb36df35096 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/DomParser.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/DomParser.java
@@ -18,6 +18,7 @@
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -28,6 +29,7 @@
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import com.evolveum.midpoint.prism.PrismConstants;
import com.evolveum.midpoint.prism.PrismContainerValue;
@@ -44,6 +46,7 @@
import com.evolveum.midpoint.prism.xnode.XNode;
import com.evolveum.midpoint.util.DOMUtil;
import com.evolveum.midpoint.util.PrettyPrinter;
+import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.SchemaException;
public class DomParser implements Parser {
@@ -56,7 +59,27 @@ public DomParser(SchemaRegistry schemaRegistry) {
super();
this.schemaRegistry = schemaRegistry;
}
+
+ @Override
+ public Collection parseCollection(File file) throws SchemaException, IOException {
+ Document document = DOMUtil.parseFile(file);
+ Element root = DOMUtil.getFirstChildElement(document);
+ // TODO: maybe some check if this is a collection of other objects???
+ List children = DOMUtil.listChildElements(root);
+ Collection nodes = new ArrayList();
+ for (Element child : children){
+ RootXNode xroot = parse(child);
+ nodes.add(xroot);
+ }
+ return nodes;
+ }
+ @Override
+ public Collection parseCollection(String dataString) throws SchemaException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
@Override
public XNode parse(File file) throws SchemaException {
Document document = DOMUtil.parseFile(file);
@@ -71,6 +94,11 @@ public XNode parse(String dataString) throws SchemaException {
public RootXNode parse(Document document) throws SchemaException {
Element rootElement = DOMUtil.getFirstChildElement(document);
+ RootXNode xroot = parse(rootElement);
+ return xroot;
+ }
+
+ private RootXNode parse(Element rootElement) throws SchemaException{
RootXNode xroot = new RootXNode(DOMUtil.getQName(rootElement));
extractCommonMetadata(rootElement, xroot);
XNode xnode = parseElementContent(rootElement);
@@ -355,4 +383,6 @@ public Element serializeToElement(RootXNode xroot) throws SchemaException {
DomSerializer serializer = new DomSerializer(this, schemaRegistry);
return serializer.serialize(xroot);
}
+
+
}
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/DomSerializer.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/DomSerializer.java
index 4ce99d155ba..e35f276271d 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/DomSerializer.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/DomSerializer.java
@@ -140,6 +140,9 @@ private void serializeSubnode(XNode xsubnode, Element parentElement, QName eleme
}
if (xsubnode instanceof MapXNode) {
Element element = createElement(elementName);
+ if (xsubnode.isExplicitTypeDeclaration() && xsubnode.getTypeQName() != null){
+ DOMUtil.setXsiType(element, xsubnode.getTypeQName());
+ }
parentElement.appendChild(element);
serializeMap((MapXNode)xsubnode, element);
} else if (xsubnode instanceof PrimitiveXNode>) {
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/Parser.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/Parser.java
index 1cd6e7bb7f0..25915de98d0 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/Parser.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/Parser.java
@@ -17,6 +17,7 @@
import java.io.File;
import java.io.IOException;
+import java.util.Collection;
import javax.xml.namespace.QName;
@@ -34,6 +35,10 @@ public interface Parser {
XNode parse(String dataString) throws SchemaException;
+ Collection parseCollection(File file) throws SchemaException, IOException;
+
+ Collection parseCollection(String dataString) throws SchemaException;
+
boolean canParse(File file) throws IOException;
boolean canParse(String dataString);
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/PrismBeanConverter.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/PrismBeanConverter.java
index f708a94b301..fa269451bce 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/PrismBeanConverter.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/PrismBeanConverter.java
@@ -201,6 +201,14 @@ public T unmarshall(MapXNode xnode, Class beanClass) throws SchemaExcepti
String paramNamespace = determineNamespace(paramType);
+ //check for subclasses???
+ if (!(xsubnode instanceof PrimitiveXNode) && xsubnode.getTypeQName()!= null){
+ Class explicitParamType = schemaRegistry.determineCompileTimeClass(xsubnode.getTypeQName());
+ if (explicitParamType != null && explicitParamType != null){
+ paramType = explicitParamType;
+ }
+ }
+
Object propValue = null;
Collection propValues = null;
if (xsubnode instanceof ListXNode) {
@@ -586,14 +594,21 @@ private T postConvertUnmarshall(Object parsedPrimValue) {
}
}
- public MapXNode marshall(T bean) {
+ public XNode marshall(T bean) {
if (bean == null) {
return null;
}
MapXNode xmap = new MapXNode();
-
+
Class extends Object> beanClass = bean.getClass();
+
+ //check for enums
+ if (beanClass.isEnum()){
+ QName fieldTypeName = findFieldTypeName(null, beanClass, DEFAULT_NAMESPACE_PLACEHOLDER);
+ return marshallValue(bean, fieldTypeName, false);
+ }
+
XmlType xmlType = beanClass.getAnnotation(XmlType.class);
if (xmlType == null) {
throw new IllegalArgumentException("Cannot marshall "+beanClass+" it does not have @XmlType annotation");
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeProcessor.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeProcessor.java
index 13f1c95982d..75fa84851a4 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeProcessor.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeProcessor.java
@@ -510,7 +510,21 @@ public QName transform(QName in) {
protectedType.setEncryptedData(encryptedDataType);
}
}
- // TODO: clearValue
+ // protected data empty..check for clear value
+ if (protectedType.isEmpty()){
+ XNode xClearValue = xmap.get(ProtectedDataType.F_CLEAR_VALUE);
+ if (xClearValue == null){
+ return;
+ }
+ if (!(xClearValue instanceof PrimitiveXNode)){
+ //this is maybe not good..
+ throw new SchemaException("Cannot parse clear value from " + xClearValue);
+ }
+ // TODO: clearValue
+ T clearValue = (T) ((PrimitiveXNode)xClearValue).getParsedValue(DOMUtil.XSD_STRING);
+ protectedType.setClearValue(clearValue);
+ }
+
}
private PolyString parsePolyString(MapXNode xmap) throws SchemaException {
@@ -722,6 +736,7 @@ private PrismReferenceValue parseReferenceAsCompositeObject(MapXNode xmap,
PrismReferenceValue refVal = new PrismReferenceValue();
setReferenceObject(refVal, compositeObject);
+ referenceDefinition.setComposite(true);
return refVal;
}
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeSerializer.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeSerializer.java
index 099dbf364fc..d62dffefb76 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeSerializer.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/parser/XNodeSerializer.java
@@ -55,6 +55,7 @@
import com.evolveum.midpoint.prism.util.PrismUtil;
import com.evolveum.midpoint.prism.xml.DynamicNamespacePrefixMapper;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
+import com.evolveum.midpoint.prism.xml.XsdTypeMapper;
import com.evolveum.midpoint.prism.xnode.ListXNode;
import com.evolveum.midpoint.prism.xnode.MapXNode;
import com.evolveum.midpoint.prism.xnode.PrimitiveXNode;
@@ -67,6 +68,7 @@
import com.evolveum.prism.xml.ns._public.types_2.ItemPathType;
import com.evolveum.prism.xml.ns._public.types_2.PolyStringType;
import com.evolveum.prism.xml.ns._public.types_2.ProtectedDataType;
+import com.evolveum.prism.xml.ns._public.types_2.ProtectedStringType;
import com.evolveum.prism.xml.ns._public.types_2.SchemaDefinitionType;
/**
@@ -164,7 +166,7 @@ private void serializeContainerValue(MapXNode xmap, Pr
}
}
- private XNode serializeItem(Item item) throws SchemaException {
+ public XNode serializeItem(Item item) throws SchemaException {
ListXNode xlist = new ListXNode();
List values = item.getValues();
ItemDefinition definition = item.getDefinition();
@@ -192,7 +194,7 @@ private XNode serializeItem(Item item) throws SchemaEx
}
}
- protected XNode serializeItemValue(V itemValue, ItemDefinition definition) throws SchemaException {
+ public XNode serializeItemValue(V itemValue, ItemDefinition definition) throws SchemaException {
XNode xnode;
if (definition == null){
return serializePropertyRawValue((PrismPropertyValue>) itemValue);
@@ -253,7 +255,12 @@ private XNode serializePropertyValue(PrismPropertyValue value, PrismPrope
if (realValue instanceof SchemaDefinitionType) {
return serializeSchemaDefinition((SchemaDefinitionType)realValue);
} else if (realValue instanceof ProtectedDataType>) {
- return serializeProtectedDataType((ProtectedDataType>) realValue);
+ MapXNode xProtected = serializeProtectedDataType((ProtectedDataType>) realValue);
+ if (definition.isDynamic()){
+ xProtected.setExplicitTypeDeclaration(true);
+ xProtected.setTypeQName(definition.getTypeName());
+ }
+ return xProtected;
} else if (realValue instanceof PolyString) {
return serializePolyString((PolyString) realValue);
} else if (realValue instanceof ItemPathType){
@@ -283,12 +290,16 @@ private XNode serializePolyString(PolyString realValue) {
return xprim;
}
- private XNode serializeProtectedDataType(ProtectedDataType protectedType) {
+ private MapXNode serializeProtectedDataType(ProtectedDataType protectedType) {
MapXNode xmap = new MapXNode();
if (protectedType.getEncryptedDataType() != null) {
EncryptedDataType encryptedDataType = protectedType.getEncryptedDataType();
- MapXNode xEncryptedDataType = beanConverter.marshall(encryptedDataType);
+ MapXNode xEncryptedDataType = (MapXNode) beanConverter.marshall(encryptedDataType);
xmap.put(ProtectedDataType.F_ENCRYPTED_DATA, xEncryptedDataType);
+ } else if (protectedType.getClearValue() != null){
+ QName type = XsdTypeMapper.toXsdType(protectedType.getClearValue().getClass());
+ PrimitiveXNode xClearValue = createPrimitiveXNode(protectedType.getClearValue(), type);
+ xmap.put(ProtectedDataType.F_CLEAR_VALUE, xClearValue);
}
// TODO: clearValue
return xmap;
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/JaxbTestUtil.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/JaxbTestUtil.java
index ac825ab451b..d969cb636ad 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/JaxbTestUtil.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/JaxbTestUtil.java
@@ -466,6 +466,10 @@ public T unmarshalObject(File file, Class type) throws JAXBException, Sch
return value;
}
+ public Object unmarshalObjects(File file) throws JAXBException{
+ return createUnmarshaller().unmarshal(file);
+ }
+
public T unmarshalObject(String stringXml, Class type) throws JAXBException, SchemaException {
JAXBElement element = unmarshalElement(stringXml, type);
if (element == null) {
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/PrismTestUtil.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/PrismTestUtil.java
index 77ae9276685..b6462716c69 100644
--- a/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/PrismTestUtil.java
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/PrismTestUtil.java
@@ -115,7 +115,7 @@ public static PrismObject parseObject(Element element)
return getPrismContext().parseObject(element);
}
- public static List> parseObjects(File file) throws SchemaException {
+ public static List> parseObjects(File file) throws SchemaException, IOException {
return getPrismContext().parseObjects(file);
}
diff --git a/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/ValueSerializationUtil.java b/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/ValueSerializationUtil.java
new file mode 100644
index 00000000000..522b9354cad
--- /dev/null
+++ b/infra/prism/src/main/java/com/evolveum/midpoint/prism/util/ValueSerializationUtil.java
@@ -0,0 +1,131 @@
+package com.evolveum.midpoint.prism.util;
+
+import java.util.Collection;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import com.evolveum.midpoint.prism.Containerable;
+import com.evolveum.midpoint.prism.Item;
+import com.evolveum.midpoint.prism.ItemDefinition;
+import com.evolveum.midpoint.prism.PrismContainer;
+import com.evolveum.midpoint.prism.PrismContainerDefinition;
+import com.evolveum.midpoint.prism.PrismContext;
+import com.evolveum.midpoint.prism.PrismProperty;
+import com.evolveum.midpoint.prism.PrismPropertyValue;
+import com.evolveum.midpoint.prism.PrismReference;
+import com.evolveum.midpoint.prism.PrismValue;
+import com.evolveum.midpoint.prism.Referencable;
+import com.evolveum.midpoint.prism.parser.XNodeProcessor;
+import com.evolveum.midpoint.prism.parser.XNodeSerializer;
+import com.evolveum.midpoint.prism.query.ObjectFilter;
+import com.evolveum.midpoint.prism.xnode.MapXNode;
+import com.evolveum.midpoint.prism.xnode.RootXNode;
+import com.evolveum.midpoint.prism.xnode.XNode;
+import com.evolveum.midpoint.util.exception.SchemaException;
+
+public class ValueSerializationUtil {
+
+ public static String serializeValue(T value, ItemDefinition def, PrismContext prismContext, String language) throws SchemaException{
+ System.out.println("value serialization");
+ if (value == null){
+ return null;
+ }
+
+ if (value instanceof List){
+ List values = (List) value;
+ if (values.isEmpty()){
+ return null;
+ }
+ }
+
+ PrismValue pVal = null;
+
+ if (value instanceof Containerable){
+ pVal = ((Containerable) value).asPrismContainerValue();
+ } else if (value instanceof Referencable){
+ pVal = ((Referencable) value).asReferenceValue();
+ } else {
+ pVal = new PrismPropertyValue(value);
+ }
+
+// Class clazz = prismContext.getSchemaRegistry().determineCompileTimeClass(itemName);
+// PrismContainerDefinition def = prismContext.getSchemaRegistry().determineDefinitionFromClass(clazz);
+//
+// ItemDefinition def = prismContext.getSchemaRegistry().findItemDefinitionByElementName(itemName);
+
+ QName itemName = null;
+ if (def != null){
+ itemName = def.getName();
+ }
+
+ XNodeSerializer serializer = prismContext.getXnodeProcessor().createSerializer();
+ XNode node = serializer.serializeItemValue(pVal, def);
+ String s = prismContext.getParserDom().serializeToString(node, itemName);
+ System.out.println("serialized: " + s);
+ return s;
+// throw new UnsupportedOperationException("need to be implemented");
+ }
+
+ public static String serializeItemValue(PrismValue value, String language){
+ System.out.println("item value serialization");
+ throw new UnsupportedOperationException("need to be implemented");
+ }
+
+ public static String serializeFilter(ObjectFilter query, PrismContext prismContext, String language){
+ System.out.println("query serialization");
+ throw new UnsupportedOperationException("need to be implemented");
+ }
+
+ public static T deserializeValue(String value, Class clazz, QName itemName, ItemDefinition itemDef, PrismContext prismContext, String language) throws SchemaException{
+ System.out.println("item value deserialization");
+
+ XNode xnode = prismContext.getParserDom().parse(value);
+
+ System.out.println("xnode: " + xnode.debugDump());
+
+ MapXNode xmap = null;
+ if (xnode instanceof RootXNode){
+ xmap = (MapXNode) ((RootXNode) xnode).getSubnode();
+ } else if (xnode instanceof MapXNode){
+ xmap = (MapXNode) xnode;
+ }
+
+ Item item = prismContext.getXnodeProcessor().parseItem(xmap, itemName, itemDef);
+
+ System.out.println("item: " + item.debugDump());
+
+ if (item instanceof PrismProperty){
+ PrismProperty prop = (PrismProperty) item;
+ return (T) prop.getRealValue();
+ } else if (item instanceof PrismContainer){
+ PrismContainer cont = (PrismContainer) item;
+ return (T) cont.getValue().asContainerable();
+ } else if (item instanceof PrismReference){
+ PrismReference ref = (PrismReference) item;
+ return (T) ref.getValue();
+ }
+ if (item != null){
+ return (T) item.getValue(0);
+ }
+// if (prismContext.getBeanConverter().canConvert(clazz)){
+// prismContext.getBeanConverter().unmarshall(xmap, clazz);
+// } else{
+// prismContext.getXnodeProcessor().parseContainer(xnode, clazz);
+// }
+
+ throw new UnsupportedOperationException("need to be implemented");
+ }
+
+ public static Collection extends PrismValue> deserializeItemValues(String value, String language){
+ System.out.println("item value deserialization");
+ throw new UnsupportedOperationException("need to be implemented");
+ }
+
+ public static ObjectFilter deserializeFilter(String query, String language){
+ System.out.println("query deserialization");
+ throw new UnsupportedOperationException("need to be implemented");
+ }
+
+
+}
diff --git a/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/types_2/ProtectedDataType.java b/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/types_2/ProtectedDataType.java
index 6fc713eacc1..ef73fc0b5d4 100644
--- a/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/types_2/ProtectedDataType.java
+++ b/infra/prism/src/main/java/com/evolveum/prism/xml/ns/_public/types_2/ProtectedDataType.java
@@ -77,6 +77,7 @@ public abstract class ProtectedDataType implements ProtectedData, Serializ
public static final QName COMPLEX_TYPE = new QName("http://prism.evolveum.com/xml/ns/public/types-2", "ProtectedDataType");
public final static QName F_ENCRYPTED_DATA = new QName("http://prism.evolveum.com/xml/ns/public/types-2", "encryptedData");
+ public final static QName F_CLEAR_VALUE = new QName("http://prism.evolveum.com/xml/ns/public/types-2", "clearValue");
public static final String NS_XML_ENC = "http://www.w3.org/2001/04/xmlenc#";
public static final String NS_XML_DSIG = "http://www.w3.org/2000/09/xmldsig#";
diff --git a/infra/prism/src/main/resources/xml/ns/public/types-2.xsd b/infra/prism/src/main/resources/xml/ns/public/types-2.xsd
index cd1352725c8..00d4f005e3f 100644
--- a/infra/prism/src/main/resources/xml/ns/public/types-2.xsd
+++ b/infra/prism/src/main/resources/xml/ns/public/types-2.xsd
@@ -415,7 +415,7 @@
-
+
Path to the CONTAINER.
diff --git a/infra/schema/src/main/resources/xml/ns/public/common/common-2a.xsd b/infra/schema/src/main/resources/xml/ns/public/common/common-2a.xsd
index 959912fad55..d6456cd369c 100644
--- a/infra/schema/src/main/resources/xml/ns/public/common/common-2a.xsd
+++ b/infra/schema/src/main/resources/xml/ns/public/common/common-2a.xsd
@@ -3996,6 +3996,7 @@
+
@@ -6631,6 +6632,7 @@
+
diff --git a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestConstants.java b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestConstants.java
index 28f6ea667f9..84ccc0bf393 100644
--- a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestConstants.java
+++ b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestConstants.java
@@ -27,6 +27,8 @@
*/
public class TestConstants {
+ public static final String COMMON_DIR_PATH = "src/test/resources/common";
+
public static final String NS_EXTENSION = SchemaConstants.NS_MIDPOINT_TEST + "/extension";
public static final String NS_FOO = "http://www.example.com/foo";
@@ -38,6 +40,7 @@ public class TestConstants {
public static final File COMMON_DIR = new File("src/test/resources/common");
+ public static final String USER_FILE_BASENAME = "user-jack";
public static final File USER_FILE = new File(COMMON_DIR, "user-jack.xml");
public static final Long USER_ASSIGNMENT_1_ID = 111L;
diff --git a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseUser.java b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseUser.java
index 6fc9e22d47f..3011de5dcdd 100644
--- a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseUser.java
+++ b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseUser.java
@@ -15,12 +15,39 @@
*/
package com.evolveum.midpoint.schema;
-import com.evolveum.midpoint.prism.*;
+import static com.evolveum.midpoint.schema.TestConstants.*;
+import static org.testng.AssertJUnit.assertEquals;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import javax.xml.namespace.QName;
+
+import org.testng.annotations.BeforeSuite;
+import org.testng.annotations.Test;
+import org.w3c.dom.Element;
+import org.xml.sax.SAXException;
+
+import com.evolveum.midpoint.prism.Containerable;
+import com.evolveum.midpoint.prism.Item;
+import com.evolveum.midpoint.prism.PrismConstants;
+import com.evolveum.midpoint.prism.PrismContainer;
+import com.evolveum.midpoint.prism.PrismContainerValue;
+import com.evolveum.midpoint.prism.PrismContext;
+import com.evolveum.midpoint.prism.PrismObject;
+import com.evolveum.midpoint.prism.PrismObjectDefinition;
+import com.evolveum.midpoint.prism.PrismProperty;
+import com.evolveum.midpoint.prism.PrismPropertyValue;
+import com.evolveum.midpoint.prism.PrismReference;
+import com.evolveum.midpoint.prism.PrismReferenceValue;
+import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.util.PrismAsserts;
-import com.evolveum.midpoint.prism.util.JaxbTestUtil;
import com.evolveum.midpoint.prism.util.PrismTestUtil;
import com.evolveum.midpoint.schema.constants.MidPointConstants;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
@@ -33,36 +60,16 @@
import com.evolveum.midpoint.xml.ns._public.common.common_2a.AssignmentType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ExtensionType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectReferenceType;
-import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectType;
+import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectReferenceType.Filter;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ShadowType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.UserType;
-import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectReferenceType.Filter;
import com.evolveum.prism.xml.ns._public.types_2.PolyStringType;
-import com.sun.tools.xjc.reader.Ring;
-
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-
-import javax.xml.bind.JAXBElement;
-import javax.xml.bind.JAXBException;
-import javax.xml.namespace.QName;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertNotNull;
-import static com.evolveum.midpoint.schema.TestConstants.*;
/**
* @author semancik
*
*/
-public class TestParseUser {
+public abstract class TestParseUser {
@BeforeSuite
public void setup() throws SchemaException, SAXException, IOException {
@@ -70,6 +77,19 @@ public void setup() throws SchemaException, SAXException, IOException {
PrismTestUtil.resetPrismContext(MidPointPrismContextFactory.FACTORY);
}
+ protected abstract String getSubdirName();
+
+ protected abstract String getLanguage();
+
+ protected abstract String getFilenameSuffix();
+
+ protected File getCommonSubdir() {
+ return new File(COMMON_DIR_PATH, getSubdirName());
+ }
+
+ protected File getFile(String baseName) {
+ return new File(getCommonSubdir(), baseName+"."+getFilenameSuffix());
+ }
@Test
public void testParseUserFile() throws Exception {
@@ -80,18 +100,16 @@ public void testParseUserFile() throws Exception {
PrismContext prismContext = PrismTestUtil.getPrismContext();
// WHEN
- PrismObject user = prismContext.parseObject(USER_FILE);
+ PrismObject user = prismContext.parseObject(getFile(USER_FILE_BASENAME));
// THEN
System.out.println("Parsed user:");
System.out.println(user.debugDump());
- String serialized = prismContext.serializeObjectToString(user, PrismContext.LANG_XML);
+ String serialized = prismContext.serializeObjectToString(user, getLanguage());
System.out.println("Serialized: \n" +serialized);
PrismObject reparsedUser = prismContext.parseObject(serialized);
-
-
assertUser(user);
}
@@ -107,7 +125,7 @@ public void testParseUserDom() throws Exception {
// Element userElement = DOMUtil.getFirstChildElement(document);
// WHEN
- PrismObject user = prismContext.parseObject(USER_FILE);
+ PrismObject user = prismContext.parseObject(getFile(USER_FILE_BASENAME));
// THEN
System.out.println("Parsed user:");
@@ -115,123 +133,52 @@ public void testParseUserDom() throws Exception {
assertUser(user);
}
-
- @Test
- public void testPrismParseJaxb() throws Exception {
- final String TEST_NAME = "testPrismParseJaxb";
- PrismTestUtil.displayTestTitle(TEST_NAME);
-
- // GIVEN
-// PrismTestUtil.resetPrismContext();
- PrismContext prismContext = PrismTestUtil.getPrismContext();
- JaxbTestUtil jaxbUtil = PrismTestUtil.getJaxbUtil();
-
-// prismContext.getSchemaRegistry().registerPrismSchemaFile(file);
-
-
- // WHEN
- UserType userType = jaxbUtil.unmarshalObject(USER_FILE, UserType.class);
-
- System.out.println("Parsed user (before adopt):");
- System.out.println(userType.asPrismObject().debugDump());
-
- prismContext.adopt(userType);
-
- // THEN
- System.out.println("Parsed user (after adopt):");
- System.out.println(userType.asPrismObject().debugDump());
-
- assertUser(userType.asPrismObject());
-
- userType.asPrismObject().checkConsistence(true, true);
- }
- /**
- * The definition should be set properly even if the declared type is ObjectType. The Prism should determine
- * the actual type.
- */
@Test
- public void testPrismParseJaxbObjectType() throws Exception {
- final String TEST_NAME = "testPrismParseJaxbObjectType";
+ public void testParseUserRoundTrip() throws Exception{
+ final String TEST_NAME = "testParseUserRoundTrip";
PrismTestUtil.displayTestTitle(TEST_NAME);
-
+
// GIVEN
PrismContext prismContext = PrismTestUtil.getPrismContext();
- JaxbTestUtil jaxbProcessor = PrismTestUtil.getJaxbUtil();
- // WHEN
- ObjectType userType = jaxbProcessor.unmarshalObject(USER_FILE, ObjectType.class);
-
- System.out.println("Parsed user (before adopt):");
- System.out.println(userType.asPrismObject().debugDump());
+// Document document = DOMUtil.parseFile(USER_FILE);
+// Element userElement = DOMUtil.getFirstChildElement(document);
- prismContext.adopt(userType);
+ // WHEN
+ PrismObject user = prismContext.parseObject(getFile(USER_FILE_BASENAME));
// THEN
- System.out.println("Parsed user (after adopt):");
- System.out.println(userType.asPrismObject().debugDump());
-
- assertUser(userType.asPrismObject());
- }
-
- /**
- * Parsing in form of JAXBELement
- */
- @Test
- public void testPrismParseJaxbElement() throws Exception {
- final String TEST_NAME = "testPrismParseJaxbElement";
- PrismTestUtil.displayTestTitle(TEST_NAME);
+ System.out.println("Parsed user:");
+ System.out.println(user.debugDump());
- // GIVEN
- PrismContext prismContext = PrismTestUtil.getPrismContext();
- JaxbTestUtil jaxbProcessor = PrismTestUtil.getJaxbUtil();
+ assertUser(user);
- // WHEN
- JAXBElement jaxbElement = jaxbProcessor.unmarshalElement(USER_FILE, UserType.class);
- UserType userType = jaxbElement.getValue();
- System.out.println("Parsed user (before adopt):");
- System.out.println(userType.asPrismObject().debugDump());
+ String serializedUser = prismContext.serializeObjectToString(user, getLanguage());
+ System.out.println("Serialized user:");
+ System.out.println(serializedUser);
- prismContext.adopt(userType);
+ // REPARSE
+ PrismObject reparsedUser = prismContext.parseObject(serializedUser);
// THEN
- System.out.println("Parsed user (after adopt):");
- System.out.println(userType.asPrismObject().debugDump());
-
- assertUser(userType.asPrismObject());
- }
-
- /**
- * Parsing in form of JAXBELement, with declared ObjectType
- */
- @Test
- public void testPrismParseJaxbElementObjectType() throws Exception {
- final String TEST_NAME = "testPrismParseJaxbElementObjectType";
- PrismTestUtil.displayTestTitle(TEST_NAME);
-
- // GIVEN
- PrismContext prismContext = PrismTestUtil.getPrismContext();
- JaxbTestUtil jaxbProcessor = PrismTestUtil.getJaxbUtil();
+ System.out.println("Parsed user:");
+ System.out.println(reparsedUser.debugDump());
- // WHEN
- JAXBElement jaxbElement = jaxbProcessor.unmarshalElement(USER_FILE, ObjectType.class);
- ObjectType userType = jaxbElement.getValue();
+ assertUser(reparsedUser);
- System.out.println("Parsed user (before adopt):");
- System.out.println(userType.asPrismObject().debugDump());
+ // and some sanity checks
- prismContext.adopt(userType);
+ assertTrue("User not equals", user.equals(reparsedUser));
- // THEN
- System.out.println("Parsed user (after adopt):");
- System.out.println(userType.asPrismObject().debugDump());
+ ObjectDelta delta = user.diff(reparsedUser);
+ assertTrue("Delta not empty", delta.isEmpty());
- assertUser(userType.asPrismObject());
}
- private void assertUser(PrismObject user) {
+ void assertUser(PrismObject user) {
user.checkConsistence();
assertUserPrism(user);
assertUserJaxb(user.asObjectable());
@@ -239,7 +186,7 @@ private void assertUser(PrismObject user) {
user.checkConsistence(true, true);
}
- private void assertUserPrism(PrismObject user) {
+ void assertUserPrism(PrismObject user) {
assertEquals("Wrong oid", "2f9b9299-6f45-498f-bc8e-8d17c6b93b20", user.getOid());
// assertEquals("Wrong version", "42", user.getVersion());
diff --git a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseUserJson.java b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseUserJson.java
new file mode 100644
index 00000000000..43202462138
--- /dev/null
+++ b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseUserJson.java
@@ -0,0 +1,30 @@
+package com.evolveum.midpoint.schema;
+
+import java.io.File;
+
+import org.testng.annotations.Test;
+
+import com.evolveum.midpoint.prism.PrismContext;
+
+public class TestParseUserJson extends TestParseUser{
+
+ @Test
+ public void f() {
+ }
+
+
+@Override
+protected String getSubdirName() {
+ return "json";
+}
+
+@Override
+protected String getLanguage() {
+ return PrismContext.LANG_JSON;
+}
+
+@Override
+protected String getFilenameSuffix() {
+ return "json";
+}
+}
diff --git a/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseUserXml.java b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseUserXml.java
new file mode 100644
index 00000000000..a95c4ff5a37
--- /dev/null
+++ b/infra/schema/src/test/java/com/evolveum/midpoint/schema/TestParseUserXml.java
@@ -0,0 +1,147 @@
+package com.evolveum.midpoint.schema;
+
+import static com.evolveum.midpoint.schema.TestConstants.USER_FILE;
+
+import javax.xml.bind.JAXBElement;
+
+import org.testng.annotations.Test;
+
+import com.evolveum.midpoint.prism.PrismContext;
+import com.evolveum.midpoint.prism.util.JaxbTestUtil;
+import com.evolveum.midpoint.prism.util.PrismTestUtil;
+import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectType;
+import com.evolveum.midpoint.xml.ns._public.common.common_2a.UserType;
+
+public class TestParseUserXml extends TestParseUser{
+
+ @Override
+ protected String getSubdirName() {
+ return "xml";
+ }
+
+ @Override
+ protected String getLanguage() {
+ return PrismContext.LANG_XML;
+ }
+
+ @Override
+ protected String getFilenameSuffix() {
+ return "xml";
+ }
+
+ @Test
+ public void testPrismParseJaxb() throws Exception {
+ final String TEST_NAME = "testPrismParseJaxb";
+ PrismTestUtil.displayTestTitle(TEST_NAME);
+
+ // GIVEN
+// PrismTestUtil.resetPrismContext();
+ PrismContext prismContext = PrismTestUtil.getPrismContext();
+ JaxbTestUtil jaxbUtil = PrismTestUtil.getJaxbUtil();
+
+// prismContext.getSchemaRegistry().registerPrismSchemaFile(file);
+
+
+ // WHEN
+ UserType userType = jaxbUtil.unmarshalObject(USER_FILE, UserType.class);
+
+ System.out.println("Parsed user (before adopt):");
+ System.out.println(userType.asPrismObject().debugDump());
+
+ prismContext.adopt(userType);
+
+ // THEN
+ System.out.println("Parsed user (after adopt):");
+ System.out.println(userType.asPrismObject().debugDump());
+
+ assertUser(userType.asPrismObject());
+
+ userType.asPrismObject().checkConsistence(true, true);
+ }
+
+ /**
+ * The definition should be set properly even if the declared type is ObjectType. The Prism should determine
+ * the actual type.
+ */
+ @Test
+ public void testPrismParseJaxbObjectType() throws Exception {
+ final String TEST_NAME = "testPrismParseJaxbObjectType";
+ PrismTestUtil.displayTestTitle(TEST_NAME);
+
+ // GIVEN
+ PrismContext prismContext = PrismTestUtil.getPrismContext();
+ JaxbTestUtil jaxbProcessor = PrismTestUtil.getJaxbUtil();
+
+ // WHEN
+ ObjectType userType = jaxbProcessor.unmarshalObject(USER_FILE, ObjectType.class);
+
+ System.out.println("Parsed user (before adopt):");
+ System.out.println(userType.asPrismObject().debugDump());
+
+ prismContext.adopt(userType);
+
+ // THEN
+ System.out.println("Parsed user (after adopt):");
+ System.out.println(userType.asPrismObject().debugDump());
+
+ assertUser(userType.asPrismObject());
+ }
+
+ /**
+ * Parsing in form of JAXBELement
+ */
+ @Test
+ public void testPrismParseJaxbElement() throws Exception {
+ final String TEST_NAME = "testPrismParseJaxbElement";
+ PrismTestUtil.displayTestTitle(TEST_NAME);
+
+ // GIVEN
+ PrismContext prismContext = PrismTestUtil.getPrismContext();
+ JaxbTestUtil jaxbProcessor = PrismTestUtil.getJaxbUtil();
+
+ // WHEN
+ JAXBElement jaxbElement = jaxbProcessor.unmarshalElement(USER_FILE, UserType.class);
+ UserType userType = jaxbElement.getValue();
+
+ System.out.println("Parsed user (before adopt):");
+ System.out.println(userType.asPrismObject().debugDump());
+
+ prismContext.adopt(userType);
+
+ // THEN
+ System.out.println("Parsed user (after adopt):");
+ System.out.println(userType.asPrismObject().debugDump());
+
+ assertUser(userType.asPrismObject());
+ }
+
+ /**
+ * Parsing in form of JAXBELement, with declared ObjectType
+ */
+ @Test
+ public void testPrismParseJaxbElementObjectType() throws Exception {
+ final String TEST_NAME = "testPrismParseJaxbElementObjectType";
+ PrismTestUtil.displayTestTitle(TEST_NAME);
+
+ // GIVEN
+ PrismContext prismContext = PrismTestUtil.getPrismContext();
+ JaxbTestUtil jaxbProcessor = PrismTestUtil.getJaxbUtil();
+
+ // WHEN
+ JAXBElement jaxbElement = jaxbProcessor.unmarshalElement(USER_FILE, ObjectType.class);
+ ObjectType userType = jaxbElement.getValue();
+
+ System.out.println("Parsed user (before adopt):");
+ System.out.println(userType.asPrismObject().debugDump());
+
+ prismContext.adopt(userType);
+
+ // THEN
+ System.out.println("Parsed user (after adopt):");
+ System.out.println(userType.asPrismObject().debugDump());
+
+ assertUser(userType.asPrismObject());
+ }
+
+
+}
diff --git a/infra/schema/src/test/resources/common/json/user-jack.json b/infra/schema/src/test/resources/common/json/user-jack.json
index 9011809264c..41070888389 100644
--- a/infra/schema/src/test/resources/common/json/user-jack.json
+++ b/infra/schema/src/test/resources/common/json/user-jack.json
@@ -1,46 +1,90 @@
-{
-"_type" : "user",
- "_oid" : "2f9b9299-6f45-498f-bc8e-8d17c6b93b20",
- "_ns" : "http://midpoint.evolveum.com/xml/ns/public/common/common-2a",
-
-
+{
+ "@ns" : "http://midpoint.evolveum.com/xml/ns/public/common/common-2a",
+ "object" : {
+ "@type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-2a#UserType",
+ "oid" : "2f9b9299-6f45-498f-bc8e-8d17c6b93b20",
"name" : "jack",
-
- "link" : {
- "_oid" : "2f9b9299-6f45-498f-aaaa-000000002222",
- "_type" : "RoleType",
- "name" : "captain",
- "resource" : {
- "_oid" : "2f9b9299-5555-5555-5555-000000002222",
- "name" : "Rum Supply System",
- "connectorRef" : {
- "_oid" : "2f9b9299-cccc-cccc-cccc-000000002222"
- }
-
- },
- "objectClass" : "{http://midpoint.evolveum.com/xml/ns/public/common/common-2a}AccountObjectClass"
+ "extension" : {
+ "@ns" : "http://www.example.com/foo",
+ "bar" : [ {
+ "@typeDef" : "http://www.w3.org/2001/XMLSchema#string",
+ "@value" : "BAR"
+ } ],
+ "num" : [ {
+ "@typeDef" : "http://www.w3.org/2001/XMLSchema#int",
+ "@value" : 42
+ } ],
+ "multi" : [ {
+ "@typeDef" : "http://www.w3.org/2001/XMLSchema#string",
+ "@value" : "raz"
+ }, {
+ "@typeDef" : "http://www.w3.org/2001/XMLSchema#string",
+ "@value" : "dva"
+ }, {
+ "@typeDef" : "http://www.w3.org/2001/XMLSchema#string",
+ "@value" : "tri"
+ } ],
+ "password" : [ { } ]
+ },
+ "linkRef" : [ {
+ "oid" : "2f9b9299-6f45-498f-aaaa-000000001111",
+ "type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-2a#ShadowType"
+ }, {
+ "oid" : "2f9b9299-6f45-498f-aaaa-000000002222",
+ "type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-2a#ShadowType"
+ }, {
+ "oid" : "2f9b9299-6f45-498f-aaaa-000000003333",
+ "type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-2a#ShadowType",
+ "description" : "This is third accountRef",
+ "filter" : {
+ "@ns" : "http://prism.evolveum.com/xml/ns/public/query-2",
+ "equal" : {
+ "path" : "c:connectorType",
+ "value" : [ ">org.identityconnectors.ldap.LdapConnector" ]
+ }
+ }
+ } ],
+ "assignment" : [ {
+ "id" : 111,
+ "extension" : {
+ "@ns" : "http://midpoint.evolveum.com/xml/ns/test/extension",
+ "intType" : "42"
+ },
+ "construction" : {
+ "resourceRef" : {
+ "oid" : "2f9b9299-5555-5555-5555-000000001111",
+ "type" : "http://midpoint.evolveum.com/xml/ns/public/common/common-2a#ResourceType"
+ }
+ }
+ } ],
+ "activation" : {
+ "administrativeStatus" : { }
},
-
-"linkRef" :{
- "_oid" : "2f9b9299-6f45-498f-aaaa-000000003333",
- "_type" : "ShadowType",
- "description" : "This is third accountRef",
- "filter" : {
- "_ns" : "http://prism.evolveum.com/xml/ns/public/query-2",
- "equal" : {
- "value" : "org.identityconnectors.ldap.LdapConnector"
- }
-
- }
- },
-
- "activation" : {
- "administrativeStatus" : "enabled"
- },
"fullName" : "Jack Sparrow",
"givenName" : "Jack",
"familyName" : "Sparrow",
"honorificPrefix" : "Cpt.",
- "emailAddress" : "email@email.sk",
- "organizationalUnit" : ["Brethren of the Coast", "Davie Jones' Locker"]
+ "emailAddress" : "",
+ "organizationalUnit" : [ "Brethren of the Coast", "Davie Jones' Locker" ],
+ "locality" : "",
+ "credentials" : {
+ "password" : {
+ "value" : {
+ "@ns" : "http://prism.evolveum.com/xml/ns/public/types-2",
+ "encryptedData" : {
+ "encryptionMethod" : {
+ "algorithm" : "http://www.w3.org/2001/04/xmlenc#aes256-cbc\""
+ },
+ "keyInfo" : {
+ "keyName" : "HF6JRsNMeJt6alihT44CXKgpe0c="
+ },
+ "cipherData" : {
+ "cipherValue" : "blc5OXO2Z4vJW7o/XXhqZzg/rkwsIOwRBK7KLgMqwcrVcYpeZZOjxzgRgFiNw4IB"
+ }
+ }
+ }
+ },
+ "allowedIdmAdminGuiAccess" : false
+ }
+ }
}
\ No newline at end of file
diff --git a/infra/schema/src/test/resources/common/xml/user-jack.xml b/infra/schema/src/test/resources/common/xml/user-jack.xml
new file mode 100644
index 00000000000..869e85514ae
--- /dev/null
+++ b/infra/schema/src/test/resources/common/xml/user-jack.xml
@@ -0,0 +1,140 @@
+
+
+
+
+
+ jack
+ jack
+
+
+
+ BAR
+ 42
+ raz
+ dva
+ tri
+
+ openS3zam3
+
+
+
+
+
+ jsparrow
+
+
+ AccountObjectClass
+
+
+
+
+ captain
+
+ Rum Supply System
+
+
+
+ http://midpoint.evolveum.com/xml/ns/public/resource/instance/2f9b9299-5555-5555-5555-000000002222
+
+
+ AccountObjectClass
+
+
+
+
+ This is third accountRef
+
+
+
+ connectorType
+ >org.identityconnectors.ldap.LdapConnector
+
+
+
+
+
+
+ 42
+
+
+
+
+
+
+
+ enabled
+
+
+
+ Jack Sparrow
+ jack sparrow
+
+
+ Jack
+ jack
+
+
+ Sparrow
+ sparrow
+
+
+ Cpt.
+ cpt
+
+
+
+ Brethren of the Coast
+ brethren of the coast
+
+
+ Davie Jones' Locker
+ davie jones locker
+
+
+
+
+
+
+
+
+ http://www.w3.org/2001/04/xmlenc#aes256-cbc"
+
+
+ HF6JRsNMeJt6alihT44CXKgpe0c=
+
+
+ blc5OXO2Z4vJW7o/XXhqZzg/rkwsIOwRBK7KLgMqwcrVcYpeZZOjxzgRgFiNw4IB
+
+
+
+
+ false
+
+
+
diff --git a/infra/schema/testng.xml b/infra/schema/testng.xml
index 61dd241a090..40177c3e6aa 100644
--- a/infra/schema/testng.xml
+++ b/infra/schema/testng.xml
@@ -24,6 +24,7 @@
+
diff --git a/repo/repo-sql-impl-test/src/main/java/com/evolveum/midpoint/repo/sql/testing/ResourceCarefulAntUtil.java b/repo/repo-sql-impl-test/src/main/java/com/evolveum/midpoint/repo/sql/testing/ResourceCarefulAntUtil.java
index d0ce5de9c10..bc7ddd07a3d 100644
--- a/repo/repo-sql-impl-test/src/main/java/com/evolveum/midpoint/repo/sql/testing/ResourceCarefulAntUtil.java
+++ b/repo/repo-sql-impl-test/src/main/java/com/evolveum/midpoint/repo/sql/testing/ResourceCarefulAntUtil.java
@@ -19,6 +19,7 @@
import static org.testng.AssertJUnit.assertEquals;
import java.io.File;
+import java.io.IOException;
import java.util.List;
import java.util.Random;
@@ -37,7 +38,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.SchemaHandlingType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.XmlSchemaType;
-import com.evolveum.midpoint.xml.ns._public.common.common_2a.XmlSchemaType.Definition;
+import com.evolveum.prism.xml.ns._public.types_2.SchemaDefinitionType;
/**
* @author semancik
@@ -80,7 +81,7 @@ public void assertModification(PrismObject resource, int iteration
});
ants.add(new CarefulAnt() {
- Definition xmlSchemaDef;
+ SchemaDefinitionType xmlSchemaDef;
@Override
public ItemDelta> createDelta(int iteration) throws SchemaException {
xmlSchemaDef = createNewXmlSchemaDef(resourceFile, iteration, prismContext);
@@ -99,7 +100,7 @@ public void assertModification(PrismObject resource, int iteration
}
private static SchemaHandlingType createNewSchemaHandling(File resourceFile, int iteration, PrismContext prismContext) throws SchemaException {
- PrismObject resource = prismContext.getPrismDomProcessor().parseObject(resourceFile);
+ PrismObject resource = parseResource(resourceFile, prismContext);
SchemaHandlingType schemaHandling = resource.asObjectable().getSchemaHandling();
ResourceObjectTypeDefinitionType accountType = schemaHandling.getObjectType().iterator().next();
List attrDefs = accountType.getAttribute();
@@ -108,12 +109,12 @@ private static SchemaHandlingType createNewSchemaHandling(File resourceFile, int
return schemaHandling;
}
- private static Definition createNewXmlSchemaDef(File resourceFile, int iteration, PrismContext prismContext) throws SchemaException {
- PrismObject resource = prismContext.getPrismDomProcessor().parseObject(resourceFile);
+ private static SchemaDefinitionType createNewXmlSchemaDef(File resourceFile, int iteration, PrismContext prismContext) throws SchemaException {
+ PrismObject resource = parseResource(resourceFile, prismContext);
XmlSchemaType schema = resource.asObjectable().getSchema();
- Definition def;
+ SchemaDefinitionType def;
if (schema == null) {
- def = new Definition();
+ def = new SchemaDefinitionType();
def.getAny().add(DOMUtil.createElement(DOMUtil.XSD_SCHEMA_ELEMENT));
} else {
def = schema.getDefinition();
@@ -121,6 +122,14 @@ private static Definition createNewXmlSchemaDef(File resourceFile, int iteration
}
return def;
}
+
+ private static PrismObject parseResource(File resourceFile, PrismContext prismContext) throws SchemaException{
+ try{
+ return prismContext.parseObject(resourceFile);
+ } catch (IOException ex){
+ throw new SchemaException(ex.getMessage(), ex);
+ }
+ }
}
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddGetObjectTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddGetObjectTest.java
index 534ac47ce8c..fd6d92c9264 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddGetObjectTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddGetObjectTest.java
@@ -16,6 +16,8 @@
package com.evolveum.midpoint.repo.sql;
+import static com.evolveum.midpoint.prism.util.PrismTestUtil.*;
+
import com.evolveum.midpoint.common.refinery.RefinedResourceSchema;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.delta.ItemDelta;
@@ -24,6 +26,8 @@
import com.evolveum.midpoint.prism.dom.PrismDomProcessor;
import com.evolveum.midpoint.prism.query.LessFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
+import com.evolveum.midpoint.prism.util.JaxbTestUtil;
+import com.evolveum.midpoint.prism.util.PrismTestUtil;
import com.evolveum.midpoint.repo.sql.type.XMLGregorianCalendarType;
import com.evolveum.midpoint.repo.sql.util.RUtil;
import com.evolveum.midpoint.schema.DeltaConvertor;
@@ -38,6 +42,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_2a.*;
import com.evolveum.prism.xml.ns._public.types_2.ObjectDeltaType;
import com.evolveum.prism.xml.ns._public.types_2.PolyStringType;
+
import org.hibernate.stat.Statistics;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
@@ -45,6 +50,7 @@
import org.testng.annotations.Test;
import javax.xml.namespace.QName;
+
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
@@ -65,7 +71,7 @@ public void perfTest() throws Exception {
stats.setStatisticsEnabled(true);
final File OBJECTS_FILE = new File("./src/test/resources/10k-users.xml");
- List> elements = prismContext.getPrismDomProcessor().parseObjects(
+ List> elements = prismContext.parseObjects(
OBJECTS_FILE);
long previousCycle = 0;
@@ -127,7 +133,7 @@ public void simpleAddGetTest() throws Exception {
}
private void addGetCompare(File file) throws Exception {
- List> elements = prismContext.getPrismDomProcessor().parseObjects(file);
+ List> elements = prismContext.parseObjects(file);
List oids = new ArrayList();
OperationResult result = new OperationResult("Simple Add Get Test");
@@ -142,7 +148,7 @@ private void addGetCompare(File file) throws Exception {
(System.currentTimeMillis() - time),});
int count = 0;
- elements = prismContext.getPrismDomProcessor().parseObjects(file);
+ elements = prismContext.parseObjects(file);
for (int i = 0; i < elements.size(); i++) {
try {
PrismObject object = elements.get(i);
@@ -170,7 +176,7 @@ private void addGetCompare(File file) throws Exception {
}
LOGGER.error(">>> {} Found {} changes for {}\n{}", new Object[]{(i + 1),
delta.getModifications().size(), newObject.toString(), delta.debugDump(3)});
- LOGGER.error("{}", prismContext.getPrismDomProcessor().serializeObjectToString(newObject));
+ LOGGER.error("{}", prismContext.serializeObjectToString(newObject, PrismContext.LANG_XML));
}
} catch (Exception ex) {
LOGGER.error("Exception occurred", ex);
@@ -249,12 +255,12 @@ private void checkContainersSize(PrismContainer newContainer, PrismContainer old
public void addUserWithAssignmentExtension() throws Exception {
LOGGER.info("===[ addUserWithAssignmentExtension ]===");
File file = new File(FOLDER_BASIC, "user-assignment-extension.xml");
- List> elements = prismContext.getPrismDomProcessor().parseObjects(file);
+ List> elements = prismContext.parseObjects(file);
OperationResult result = new OperationResult("ADD");
String oid = repositoryService.addObject((PrismObject) elements.get(0), null, result);
- PrismObject fileUser = (PrismObject) prismContext.getPrismDomProcessor().parseObjects(file)
+ PrismObject fileUser = (PrismObject) prismContext.parseObjects(file)
.get(0);
long id = 1;
for (AssignmentType assignment : fileUser.asObjectable().getAssignment()) {
@@ -436,7 +442,7 @@ private String testIterationToken(String token) throws Exception {
@Test(enabled = false)
public void deltaOperationSerializationPerformanceTest() throws Exception {
List> elements =
- prismContext.getPrismDomProcessor().parseObjects(new File(FOLDER_BASIC, "objects.xml"));
+ prismContext.parseObjects(new File(FOLDER_BASIC, "objects.xml"));
//get user from objects.xml
ObjectDelta delta = ObjectDelta.createAddDelta(elements.get(0));
@@ -487,7 +493,7 @@ private void addGetFullAccountShadow() throws Exception {
File file = new File(FOLDER_BASIC, "account-accountTypeShadow.xml");
try
{
- PrismObject account = prismContext.getPrismDomProcessor().parseObject(file);
+ PrismObject account = prismContext.parseObject(file);
// apply appropriate schema
PrismObject resource = prismContext.parseObject(new File(FOLDER_BASIC, "resource-opendj.xml"));
@@ -515,13 +521,13 @@ private void addGetFullAccountShadow() throws Exception {
*/
@Test
public void domVsJaxbProcessor() throws Exception {
- PrismDomProcessor domProcessor =prismContext.getPrismDomProcessor();
- List> elements = domProcessor.parseObjects(new File(FOLDER_BASIC, "objects.xml"));
+// PrismDomProcessor domProcessor =prismContext.getPrismDomProcessor();
+ List> elements = prismContext.parseObjects(new File(FOLDER_BASIC, "objects.xml"));
PrismObject obj = elements.get(0);
- System.out.println(domProcessor.serializeObjectToString(obj));
+ System.out.println(prismContext.serializeObjectToString(obj, PrismContext.LANG_XML));
- System.out.println(prismContext.getPrismJaxbProcessor().marshalToString(obj.asObjectable()));
+ System.out.println(getJaxbUtil().marshalToString(obj.asObjectable()));
}
}
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddOverwriteTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddOverwriteTest.java
index 3925e438ae8..1462a93b803 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddOverwriteTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/AddOverwriteTest.java
@@ -18,13 +18,17 @@
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertNull;
+
import com.evolveum.midpoint.prism.Objectable;
+import com.evolveum.midpoint.prism.PrismContainerDefinition;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
+import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.delta.PropertyDelta;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.prism.query.EqualsFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
+import com.evolveum.midpoint.prism.schema.SchemaRegistry;
import com.evolveum.midpoint.prism.util.PrismAsserts;
import com.evolveum.midpoint.prism.util.PrismTestUtil;
import com.evolveum.midpoint.prism.util.PrismUtil;
@@ -38,11 +42,16 @@
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
+import com.evolveum.midpoint.xml.ns._public.common.common_2a.AccountShadowType;
+import com.evolveum.midpoint.xml.ns._public.common.common_2a.CapabilitiesType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.OrgType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ResourceType;
+import com.evolveum.midpoint.xml.ns._public.common.common_2a.ShadowType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.SystemConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.UserType;
+import com.evolveum.midpoint.xml.ns._public.resource.capabilities_2.CapabilityType;
+
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.testng.AssertJUnit;
@@ -80,7 +89,9 @@ public void setup() throws SchemaException, SAXException, IOException {
@Test
public void addWithOverwrite() throws Exception {
- List> objects = prismContext.getPrismDomProcessor().parseObjects(new File(ORG_STRUCT_OBJECTS));
+ List> objects = prismContext.parseObjects(new File(ORG_STRUCT_OBJECTS));
+
+
OperationResult opResult = new OperationResult("Import file");
for (PrismObject o : objects) {
repositoryService.addObject(o, null, opResult);
@@ -99,7 +110,7 @@ public void addWithOverwrite() throws Exception {
AssertJUnit.assertNotNull(oid);
//reimport carla, oid should stay the same, version must be incremented
- objects = prismContext.getPrismDomProcessor().parseObjects(new File(IMPORT_OVERWRITE));
+ objects = prismContext.parseObjects(new File(IMPORT_OVERWRITE));
PrismObject newCarla = objects.get(0);
newCarla.setOid(oid);
@@ -159,7 +170,11 @@ public void test091GetVersion() throws Exception {
@Test
public void addWithOverwriteResource() throws Exception {
// GIVEN
- PrismObject resource = prismContext.getPrismDomProcessor().parseObject(RESOURCE_OPENDJ_FILE);
+
+ SchemaRegistry reg= prismContext.getSchemaRegistry();
+ PrismPropertyDefinition def = reg.findPropertyDefinitionByElementName(CapabilitiesType.F_NATIVE);
+
+ PrismObject resource = prismContext.parseObject(RESOURCE_OPENDJ_FILE);
OperationResult opResult = new OperationResult("Import resource");
repositoryService.addObject(resource, null, opResult);
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/BaseSQLRepoTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/BaseSQLRepoTest.java
index 025dbf9d67d..643ba22e2b0 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/BaseSQLRepoTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/BaseSQLRepoTest.java
@@ -19,6 +19,7 @@
import com.evolveum.midpoint.audit.api.AuditService;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.query.ObjectQuery;
+import com.evolveum.midpoint.prism.util.PrismTestUtil;
import com.evolveum.midpoint.repo.api.RepositoryService;
import com.evolveum.midpoint.repo.sql.query.QueryInterpreter;
import com.evolveum.midpoint.repo.sql.util.HibernateToSqlTranslator;
@@ -30,6 +31,7 @@
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectType;
import com.evolveum.prism.xml.ns._public.query_2.QueryType;
+
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
@@ -185,8 +187,9 @@ protected String getInterpretedQuery(Session session, Cla
QueryInterpreter interpreter = new QueryInterpreter();
Document document = DOMUtil.parseFile(file);
- QueryType queryType = prismContext.getPrismJaxbProcessor().unmarshalObject(file, QueryType.class);
- Element filter = DOMUtil.listChildElements(document.getDocumentElement()).get(0);
+ QueryType queryType = PrismTestUtil.getJaxbUtil().unmarshalObject(file, QueryType.class);
+// QueryType queryType = prismContext.getPrismJaxbProcessor().unmarshalObject(file, QueryType.class);
+// Element filter = DOMUtil.listChildElements(document.getDocumentElement()).get(0);
LOGGER.info("QUERY TYPE TO CONVERT : {}", ObjectQueryUtil.dump(queryType));
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/CleanupTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/CleanupTest.java
index 12b23e1103d..0f80dead527 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/CleanupTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/CleanupTest.java
@@ -69,7 +69,7 @@ public class CleanupTest extends BaseSQLRepoTest {
public void testTasksCleanup() throws Exception {
// GIVEN
final File file = new File(FOLDER_BASIC, "tasks.xml");
- List> elements = prismContext.getPrismDomProcessor().parseObjects(file);
+ List> elements = prismContext.parseObjects(file);
OperationResult result = new OperationResult("tasks cleanup");
for (int i = 0; i < elements.size(); i++) {
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ConcurrencyTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ConcurrencyTest.java
index df002c3c72d..98c5db768f5 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ConcurrencyTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ConcurrencyTest.java
@@ -201,7 +201,7 @@ public void execute(Connection connection) throws SQLException {
session.close();
final File file = new File("src/test/resources/concurrency/user.xml");
- PrismObject user = prismContext.getPrismDomProcessor().parseObject(file);
+ PrismObject user = prismContext.parseObject(file);
user.asObjectable().setName(new PolyStringType(name));
OperationResult result = new OperationResult("Concurrency Test");
@@ -442,7 +442,7 @@ public void concurrency010_SearchIterative() throws Exception {
final String newFullName = "new-full-name";
final File file = new File("src/test/resources/concurrency/user.xml");
- PrismObject user = prismContext.getPrismDomProcessor().parseObject(file);
+ PrismObject user = prismContext.parseObject(file);
user.asObjectable().setName(new PolyStringType(name));
final OperationResult result = new OperationResult("Concurrency Test10");
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/DeleteTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/DeleteTest.java
index 96697731e62..9c51b0b15a8 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/DeleteTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/DeleteTest.java
@@ -53,7 +53,7 @@ public void delete001() throws Exception {
return;
}
- List> elements = prismContext.getPrismDomProcessor().parseObjects(file);
+ List> elements = prismContext.parseObjects(file);
List oids = new ArrayList();
OperationResult result = new OperationResult("Delete Test");
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ListAccountShadowOwnerTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ListAccountShadowOwnerTest.java
index 73ec308ab60..d2f94a7e1d3 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ListAccountShadowOwnerTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ListAccountShadowOwnerTest.java
@@ -16,6 +16,21 @@
package com.evolveum.midpoint.repo.sql;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertNull;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Collection;
+import java.util.List;
+
+import org.springframework.test.annotation.DirtiesContext;
+import org.springframework.test.context.ContextConfiguration;
+import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeSuite;
+import org.testng.annotations.Test;
+import org.xml.sax.SAXException;
+
import com.evolveum.midpoint.prism.Objectable;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismProperty;
@@ -33,21 +48,6 @@
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ShadowType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.UserType;
-import org.springframework.test.annotation.DirtiesContext;
-import org.springframework.test.context.ContextConfiguration;
-import org.testng.AssertJUnit;
-import org.testng.annotations.BeforeSuite;
-import org.testng.annotations.Test;
-import org.xml.sax.SAXException;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-
-import static org.testng.AssertJUnit.assertEquals;
-import static org.testng.AssertJUnit.assertNotNull;
-import static org.testng.AssertJUnit.assertNull;
/**
* @author lazyman
@@ -70,7 +70,7 @@ public void listExistingOwner() throws Exception {
//insert sample data
final File OBJECTS_FILE = new File(FOLDER_BASIC, "objects.xml");
- List> elements = prismContext.getPrismDomProcessor().parseObjects(OBJECTS_FILE);
+ List> elements = prismContext.parseObjects(OBJECTS_FILE);
for (int i = 0; i < elements.size(); i++) {
PrismObject object = elements.get(i);
repositoryService.addObject(object, null, result);
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyAssignmentTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyAssignmentTest.java
index be41f5ec043..c8f08e3f80e 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyAssignmentTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyAssignmentTest.java
@@ -16,12 +16,13 @@
package com.evolveum.midpoint.repo.sql;
+import static com.evolveum.midpoint.prism.util.PrismTestUtil.*;
+
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.dom.PrismDomProcessor;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.util.PrismAsserts;
-import com.evolveum.midpoint.prism.util.PrismTestUtil;
import com.evolveum.midpoint.schema.DeltaConvertor;
import com.evolveum.midpoint.schema.MidPointPrismContextFactory;
import com.evolveum.midpoint.schema.result.OperationResult;
@@ -58,13 +59,13 @@ public class ModifyAssignmentTest extends BaseSQLRepoTest {
public void beforeClass() throws Exception {
super.beforeClass();
- PrismTestUtil.resetPrismContext(MidPointPrismContextFactory.FACTORY);
+ resetPrismContext(MidPointPrismContextFactory.FACTORY);
//given
//no role
//when
- PrismDomProcessor domProcessor = prismContext.getPrismDomProcessor();
- PrismObject role = domProcessor.parseObject(FILE_ROLE);
+// PrismDomProcessor domProcessor = prismContext.getPrismDomProcessor();
+ PrismObject role = prismContext.parseObject(FILE_ROLE);
OperationResult result = new OperationResult("add role");
String oid = repositoryService.addObject(role, null, result);
@@ -88,7 +89,7 @@ public void test10AddAssignment() throws Exception {
//given
//when
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "modify-add-assignment.xml"), ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, RoleType.class, prismContext);
@@ -130,7 +131,7 @@ public void test11AddInducement() throws Exception {
//given
//when
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "modify-add-inducement.xml"), ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, RoleType.class, prismContext);
@@ -169,7 +170,7 @@ public void test20ModifyAssignment() throws Exception {
//given
//when
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "modify-assignment.xml"), ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, RoleType.class, prismContext);
@@ -210,7 +211,7 @@ public void test21ModifyInducement() throws Exception {
//given
//when
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "modify-inducement.xml"), ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, RoleType.class, prismContext);
@@ -254,7 +255,7 @@ public void test30DeleteAssignment() throws Exception {
//given
//when
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "modify-delete-assignment.xml"), ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, RoleType.class, prismContext);
@@ -289,7 +290,7 @@ public void test31DeleteInducement() throws Exception {
//given
//when
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "modify-delete-inducement.xml"), ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, RoleType.class, prismContext);
@@ -330,7 +331,7 @@ public void test40RenameAssignmentToInducement() throws Exception {
//given
//when
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "modify-delete-add-assignment.xml"), ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, RoleType.class, prismContext);
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java
index 9f447955f6b..91206f30b74 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ModifyTest.java
@@ -16,6 +16,8 @@
package com.evolveum.midpoint.repo.sql;
+import static com.evolveum.midpoint.prism.util.PrismTestUtil.*;
+
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.delta.ContainerDelta;
import com.evolveum.midpoint.prism.delta.ItemDelta;
@@ -26,6 +28,7 @@
import com.evolveum.midpoint.prism.query.LessFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.util.PrismAsserts;
+import com.evolveum.midpoint.prism.util.PrismTestUtil;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.repo.sql.data.common.RAnyContainer;
import com.evolveum.midpoint.repo.sql.data.common.RShadow;
@@ -39,27 +42,36 @@
import com.evolveum.midpoint.repo.sql.testing.SqlRepoTestUtil;
import com.evolveum.midpoint.repo.sql.type.XMLGregorianCalendarType;
import com.evolveum.midpoint.schema.DeltaConvertor;
+import com.evolveum.midpoint.schema.MidPointPrismContextFactory;
+import com.evolveum.midpoint.schema.constants.MidPointConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectTypeUtil;
import com.evolveum.midpoint.schema.util.SynchronizationSituationUtil;
+import com.evolveum.midpoint.util.PrettyPrinter;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
+import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.api_types_2.ObjectModificationType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.*;
import com.evolveum.prism.xml.ns._public.types_2.PolyStringType;
+
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.hibernate.Session;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
+import org.xml.sax.SAXException;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
+
import java.io.File;
+import java.io.IOException;
import java.sql.Timestamp;
import java.util.*;
@@ -70,6 +82,12 @@
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
public class ModifyTest extends BaseSQLRepoTest {
+ @BeforeSuite
+ public void setup() throws SchemaException, SAXException, IOException {
+ PrettyPrinter.setDefaultNamespacePrefix(MidPointConstants.NS_MIDPOINT_PUBLIC_PREFIX);
+ PrismTestUtil.resetPrismContext(MidPointPrismContextFactory.FACTORY);
+ }
+
private static final Trace LOGGER = TraceManager.getTrace(ModifyTest.class);
private static final File TEST_DIR = new File("src/test/resources/modify");
@@ -79,19 +97,19 @@ public void test010ModifyWithExistingName() throws Exception {
File userFile = new File(TEST_DIR, "modify-user.xml");
//add first user
- PrismObject user = prismContext.getPrismDomProcessor().parseObject(userFile);
+ PrismObject user = prismContext.parseObject(userFile);
user.setOid(null);
user.setPropertyRealValue(ObjectType.F_NAME, "existingName");
repositoryService.addObject(user, null, result);
//add second user
- user = prismContext.getPrismDomProcessor().parseObject(userFile);
+ user = prismContext.parseObject(userFile);
user.setOid(null);
user.setPropertyRealValue(ObjectType.F_NAME, "otherName");
String oid = repositoryService.addObject(user, null, result);
//modify second user name to "existingName"
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "change-name.xml"),
ObjectModificationType.class);
modification.setOid(oid);
@@ -103,7 +121,7 @@ public void test010ModifyWithExistingName() throws Exception {
@Test(expectedExceptions = ObjectNotFoundException.class, enabled = false)
public void test020ModifyNotExistingUser() throws Exception {
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "change-add.xml"),
ObjectModificationType.class);
@@ -120,7 +138,7 @@ public void test030ModifyUserOnNonExistingAccountTest() throws Exception {
//add user
File userFile = new File(TEST_DIR, "modify-user.xml");
- PrismObject user = prismContext.getPrismDomProcessor().parseObject(userFile);
+ PrismObject user = prismContext.parseObject(userFile);
user.setOid(null);
user.asObjectable().setName(new PolyStringType("non-existing-account-user"));
@@ -128,7 +146,7 @@ public void test030ModifyUserOnNonExistingAccountTest() throws Exception {
PrismObject userOld = repositoryService.getObject(UserType.class, oid, null, result);
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "change-add-non-existing.xml"),
ObjectModificationType.class);
@@ -153,12 +171,12 @@ public void test031ModifyUserOnExistingAccountTest() throws Exception {
//add account
File accountFile = new File(TEST_DIR, "account.xml");
- PrismObject account = prismContext.getPrismDomProcessor().parseObject(accountFile);
+ PrismObject account = prismContext.parseObject(accountFile);
repositoryService.addObject(account, null, result);
//add user
File userFile = new File(TEST_DIR, "modify-user.xml");
- PrismObject user = prismContext.getPrismDomProcessor().parseObject(userFile);
+ PrismObject user = prismContext.parseObject(userFile);
String userOid = user.getOid();
String oid = repositoryService.addObject(user, null, result);
@@ -166,7 +184,7 @@ public void test031ModifyUserOnExistingAccountTest() throws Exception {
PrismObject userOld = repositoryService.getObject(UserType.class, oid, null, result);
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "change-add.xml"),
ObjectModificationType.class);
@@ -190,7 +208,7 @@ public void test032ModifyTaskObjectRef() throws Exception {
OperationResult result = new OperationResult("MODIFY");
File taskFile = new File(TEST_DIR, "task.xml");
System.out.println("ADD");
- PrismObject task = prismContext.getPrismDomProcessor().parseObject(taskFile);
+ PrismObject task = prismContext.parseObject(taskFile);
repositoryService.addObject(task, null, result);
final String taskOid = "00000000-0000-0000-0000-123450000001";
AssertJUnit.assertNotNull(taskOid);
@@ -239,7 +257,7 @@ public void test032ModifyTaskObjectRef() throws Exception {
AssertJUnit.assertNotNull(taskType.getObjectRef());
objectRef = taskType.getObjectRef();
AssertJUnit.assertEquals("2", objectRef.getOid());
- LOGGER.info(prismContext.silentMarshalObject(taskType, LOGGER));
+ LOGGER.info(getJaxbUtil().marshalObjectToString(taskType, TaskType.COMPLEX_TYPE));
SqlRepoTestUtil.assertVersionProgress(lastVersion, getTask.getVersion());
lastVersion = getTask.getVersion();
@@ -280,27 +298,27 @@ public void testModifyUserAddRole() throws Exception {
OperationResult parentResult = new OperationResult("Modify user -> add roles");
String userToModifyOid = "f65963e3-9d47-4b18-aaf3-bfc98bdfa000";
- PrismObject csvResource = prismContext.getPrismDomProcessor().parseObject(new File(TEST_DIR + "/resource-csv.xml"));
+ PrismObject csvResource = prismContext.parseObject(new File(TEST_DIR + "/resource-csv.xml"));
repositoryService.addObject(csvResource, null, parentResult);
- PrismObject openDjResource = prismContext.getPrismDomProcessor().parseObject(new File(TEST_DIR + "/resource-opendj.xml"));
+ PrismObject openDjResource = prismContext.parseObject(new File(TEST_DIR + "/resource-opendj.xml"));
repositoryService.addObject(openDjResource, null, parentResult);
- PrismObject user = prismContext.getPrismDomProcessor().parseObject(new File(TEST_DIR + "/user.xml"));
+ PrismObject user = prismContext.parseObject(new File(TEST_DIR + "/user.xml"));
repositoryService.addObject(user, null, parentResult);
- PrismObject roleCsv = prismContext.getPrismDomProcessor().parseObject(new File(TEST_DIR + "/role-csv.xml"));
+ PrismObject roleCsv = prismContext.parseObject(new File(TEST_DIR + "/role-csv.xml"));
repositoryService.addObject(roleCsv, null, parentResult);
String ldapRoleOid = "12345678-d34d-b33f-f00d-987987987988";
- PrismObject roleLdap = prismContext.getPrismDomProcessor().parseObject(new File(TEST_DIR + "/role-ldap.xml"));
+ PrismObject roleLdap = prismContext.parseObject(new File(TEST_DIR + "/role-ldap.xml"));
repositoryService.addObject(roleLdap, null, parentResult);
RoleType ldapRole = repositoryService.getObject(RoleType.class, ldapRoleOid, null, parentResult).asObjectable();
AssertJUnit.assertEquals("Expected that the role has one approver.", 1, ldapRole.getApproverRef().size());
AssertJUnit.assertEquals("Actual approved not equals to expected one.", userToModifyOid, ldapRole.getApproverRef().get(0).getOid());
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(new File(TEST_DIR + "/modify-user-add-roles.xml"),
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(new File(TEST_DIR + "/modify-user-add-roles.xml"),
ObjectModificationType.class);
@@ -317,7 +335,7 @@ public void testModifyUserAddRole() throws Exception {
@Test
public void testModifyDeleteObjectChangeFromAccount() throws Exception {
OperationResult parentResult = new OperationResult("testModifyDeleteObjectChnageFromAccount");
- PrismObject accShadow = prismContext.getPrismDomProcessor().parseObject(new File(TEST_DIR + "/account-delete-object-change.xml"));
+ PrismObject accShadow = prismContext.parseObject(new File(TEST_DIR + "/account-delete-object-change.xml"));
String oid = repositoryService.addObject(accShadow, null, parentResult);
System.out.println("\nAcc shadow");
System.out.println(accShadow.debugDump());
@@ -342,10 +360,10 @@ public void testModifyDeleteObjectChangeFromAccount() throws Exception {
public void testModifyAccountMetadata() throws Exception {
OperationResult parentResult = new OperationResult("testModifyAccountMetadata");
- PrismObject user = prismContext.getPrismDomProcessor().parseObject(new File(TEST_DIR + "/user-modify-link-account.xml"));
+ PrismObject user = prismContext.parseObject(new File(TEST_DIR + "/user-modify-link-account.xml"));
- PrismObject accShadow = prismContext.getPrismDomProcessor().parseObject(new File(TEST_DIR + "/account-modify-metadata.xml"));
+ PrismObject accShadow = prismContext.parseObject(new File(TEST_DIR + "/account-modify-metadata.xml"));
MetadataType metaData = new MetadataType();
metaData.setCreateChannel("channel");
@@ -421,12 +439,12 @@ public void testExtensionModify() throws Exception {
File userFile = new File(TEST_DIR, "user-with-extension.xml");
//add first user
- PrismObject user = prismContext.getPrismDomProcessor().parseObject(userFile);
+ PrismObject user = prismContext.parseObject(userFile);
OperationResult result = new OperationResult("test extension modify");
final String oid = repositoryService.addObject(user, null, result);
- user = prismContext.getPrismDomProcessor().parseObject(userFile);
+ user = prismContext.parseObject(userFile);
PrismObject readUser = repositoryService.getObject(UserType.class, oid, null, result);
AssertJUnit.assertTrue("User was not saved correctly", user.diff(readUser).isEmpty());
String lastVersion = readUser.getVersion();
@@ -441,7 +459,7 @@ public void testExtensionModify() throws Exception {
repositoryService.modifyObject(UserType.class, oid, modifications, result);
//check read after modify operation
- user = prismContext.getPrismDomProcessor().parseObject(userFile);
+ user = prismContext.parseObject(userFile);
loot = user.findProperty(new ItemPath(UserType.F_EXTENSION, QNAME_LOOT));
loot.setValue(new PrismPropertyValue(456));
@@ -594,7 +612,7 @@ public void testModifyAccountSynchronizationSituation() throws Exception {
//add account
File accountFile = new File(TEST_DIR, "account-synchronization-situation.xml");
- PrismObject account = prismContext.getPrismDomProcessor().parseObject(accountFile);
+ PrismObject account = prismContext.parseObject(accountFile);
repositoryService.addObject(account, null, result);
// XMLGregorianCalendar timestamp = XmlTypeConverter.createXMLGregorianCalendar(System.currentTimeMillis());
@@ -758,11 +776,11 @@ public void modifyRoleAddInducements() throws Exception {
File roleFile = new File(TEST_DIR, "role-modify.xml");
//add first user
- PrismObject role = prismContext.getPrismDomProcessor().parseObject(roleFile);
+ PrismObject role = prismContext.parseObject(roleFile);
String oid = repositoryService.addObject(role, null, result);
//modify second user name to "existingName"
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(
new File(TEST_DIR, "role-modify-change.xml"),
ObjectModificationType.class);
modification.setOid(oid);
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/OrgClosureTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/OrgClosureTest.java
index 840078ba8c8..9cab8a595f4 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/OrgClosureTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/OrgClosureTest.java
@@ -155,14 +155,14 @@ public void testSelectChildren() throws Exception {
OperationResult opResult = new OperationResult("===[ addOrgStruct ]===");
LOGGER.info("Starting import.");
- List> orgStruct = prismContext.getPrismDomProcessor().parseObjects(
+ List> orgStruct = prismContext.parseObjects(
new File(ORG_STRUCT_OBJECTS));
for (PrismObject extends Objectable> o : orgStruct) {
repositoryService.addObject((PrismObject) o, null, opResult);
}
- orgStruct = prismContext.getPrismDomProcessor().parseObjects(new File(ORG_SIMPLE_TEST));
+ orgStruct = prismContext.parseObjects(new File(ORG_SIMPLE_TEST));
for (PrismObject extends Objectable> o : orgStruct) {
repositoryService.addObject((PrismObject) o, null, opResult);
}
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/OrgStructTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/OrgStructTest.java
index ecfb231e9bf..abb2192f9e6 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/OrgStructTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/OrgStructTest.java
@@ -16,6 +16,8 @@
package com.evolveum.midpoint.repo.sql;
+import static com.evolveum.midpoint.prism.util.PrismTestUtil.*;
+
import com.evolveum.midpoint.prism.Objectable;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
@@ -48,6 +50,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_2a.OrgType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.UserType;
import com.evolveum.prism.xml.ns._public.query_2.QueryType;
+
import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Query;
@@ -122,7 +125,7 @@ public void test001addOrgStructObjects() throws Exception {
LOGGER.info("===[ addOrgStruct ]===");
OperationResult opResult = new OperationResult("===[ addOrgStruct ]===");
- List> orgStruct = prismContext.getPrismDomProcessor().parseObjects(
+ List> orgStruct = prismContext.parseObjects(
new File(ORG_STRUCT_OBJECTS));
for (PrismObject extends Objectable> o : orgStruct) {
@@ -192,7 +195,7 @@ public void test001addOrgStructObjects() throws Exception {
AssertJUnit.assertEquals(1, users.size());
UserType elaine = users.get(0).asObjectable();
LOGGER.info("--->elaine<----");
- LOGGER.info(prismContext.silentMarshalObject(elaine, LOGGER));
+// LOGGER.info(prismContext.silentMarshalObject(elaine, LOGGER));
AssertJUnit.assertEquals("Expected name elaine, but got " + elaine.getName().getOrig(), "elaine", elaine.getName().getOrig());
AssertJUnit.assertEquals("Expected elaine has one org ref, but got " + elaine.getParentOrgRef().size(), 2, elaine.getParentOrgRef().size());
AssertJUnit.assertEquals("Parent org ref oid not equal.", "00000000-8888-6666-0000-100000000001", elaine.getParentOrgRef().get(0).getOid());
@@ -259,7 +262,7 @@ public void test001addOrgStructObjectsIncorrect() throws Exception {
OperationResult opResult = new OperationResult("===[ addIncorrectOrgStruct ]===");
- List> orgStructIncorrect = prismContext.getPrismDomProcessor().parseObjects(
+ List> orgStructIncorrect = prismContext.parseObjects(
new File(ORG_STRUCT_OBJECTS_INCORRECT));
for (PrismObject extends Objectable> o : orgStructIncorrect) {
@@ -327,7 +330,7 @@ public void test001addOrgStructObjectsIncorrect() throws Exception {
AssertJUnit.assertEquals(1, users.size());
UserType elaine1 = users.get(0).asObjectable();
LOGGER.info("--->elaine1<----");
- LOGGER.info(prismContext.silentMarshalObject(elaine1, LOGGER));
+// LOGGER.info(prismContext.silentMarshalObject(elaine1, LOGGER));
AssertJUnit.assertEquals("Expected name elaine, but got " + elaine1.getName().getOrig(), "elaine1", elaine1.getName().getOrig());
AssertJUnit.assertEquals("Expected elaine has one org ref, but got " + elaine1.getParentOrgRef().size(), 2, elaine1.getParentOrgRef().size());
AssertJUnit.assertEquals("Parent org ref oid not equal.", "00000000-8888-6666-0000-100000000011", elaine1.getParentOrgRef().get(0).getOid());
@@ -343,7 +346,7 @@ public void test002modifyOrgStructAddRef() throws Exception {
OperationResult opResult = new OperationResult("===[ modifyOrgStruct ]===");
// test modification of org ref in another org type..
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(new File(MODIFY_ORG_ADD_REF_FILENAME),
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(new File(MODIFY_ORG_ADD_REF_FILENAME),
ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, OrgType.class, prismContext);
@@ -438,7 +441,7 @@ public void test002modifyOrgStructAddRefIncorrect() throws Exception {
OperationResult opResult = new OperationResult("===[ modifyOrgStructIncorrect ]===");
// test modification of org ref in another org type..
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(new File(MODIFY_ORG_INCORRECT_ADD_REF_FILENAME),
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(new File(MODIFY_ORG_INCORRECT_ADD_REF_FILENAME),
ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, OrgType.class, prismContext);
@@ -523,7 +526,7 @@ public void test003modifyOrgStructDeleteRef() throws Exception {
LOGGER.info("===[ modify delete org ref ]===");
OperationResult opResult = new OperationResult("===[ modify delete org ref ]===");
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(new File(MODIFY_ORG_DELETE_REF_FILENAME),
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(new File(MODIFY_ORG_DELETE_REF_FILENAME),
ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, OrgType.class, prismContext);
@@ -580,7 +583,7 @@ public void test003modifyOrgStructDeleteRefIncorrect() throws Exception {
LOGGER.info("===[ modify delete org ref ]===");
OperationResult opResult = new OperationResult("===[ modify delete org ref ]===");
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(new File(MODIFY_ORG_INCORRECT_DELETE_REF_FILENAME),
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(new File(MODIFY_ORG_INCORRECT_DELETE_REF_FILENAME),
ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, OrgType.class, prismContext);
@@ -651,7 +654,7 @@ public void test004modifyOrgStructAddUser() throws Exception
OperationResult opResult = new OperationResult("===[ modify add user to orgStruct ]===");
//test modification of org ref in another org type..
- ObjectModificationType modification = prismContext.getPrismJaxbProcessor().unmarshalObject(new File(MODIFY_ORG_ADD_USER_FILENAME),
+ ObjectModificationType modification = getJaxbUtil().unmarshalObject(new File(MODIFY_ORG_ADD_USER_FILENAME),
ObjectModificationType.class);
ObjectDelta delta = DeltaConvertor.createObjectDelta(modification, UserType.class, prismContext);
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/QueryInterpreterTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/QueryInterpreterTest.java
index e3960733012..4b48d13dce9 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/QueryInterpreterTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/QueryInterpreterTest.java
@@ -17,6 +17,7 @@
package com.evolveum.midpoint.repo.sql;
import java.io.File;
+import java.io.IOException;
import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Date;
@@ -26,6 +27,7 @@
import javax.xml.namespace.QName;
import com.evolveum.midpoint.prism.query.*;
+
import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Session;
@@ -39,7 +41,9 @@
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import org.testng.AssertJUnit;
+import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Test;
+import org.xml.sax.SAXException;
import com.evolveum.midpoint.prism.PrismObjectDefinition;
import com.evolveum.midpoint.prism.match.PolyStringNormMatchingRule;
@@ -47,6 +51,7 @@
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.prism.schema.SchemaRegistry;
+import com.evolveum.midpoint.prism.util.PrismTestUtil;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.repo.sql.data.common.RConnector;
import com.evolveum.midpoint.repo.sql.data.common.RGenericObject;
@@ -60,7 +65,13 @@
import com.evolveum.midpoint.repo.sql.data.common.other.RAssignmentOwner;
import com.evolveum.midpoint.repo.sql.query.QueryException;
import com.evolveum.midpoint.repo.sql.util.HibernateToSqlTranslator;
+import com.evolveum.midpoint.schema.MidPointPrismContextFactory;
+import com.evolveum.midpoint.schema.constants.MidPointConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
+import com.evolveum.midpoint.util.DOMUtil;
+import com.evolveum.midpoint.util.PrettyPrinter;
+import com.evolveum.midpoint.util.QNameUtil;
+import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ActivationStatusType;
@@ -69,6 +80,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ConnectorType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.GenericObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectType;
+import com.evolveum.midpoint.xml.ns._public.common.common_2a.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.RoleType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ShadowType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.TaskExecutionStatusType;
@@ -86,6 +98,12 @@ public class QueryInterpreterTest extends BaseSQLRepoTest {
private static final Trace LOGGER = TraceManager.getTrace(QueryInterpreterTest.class);
private static final File TEST_DIR = new File("./src/test/resources/query");
+ @BeforeSuite
+ public void setup() throws SchemaException, SAXException, IOException {
+ PrettyPrinter.setDefaultNamespacePrefix(MidPointConstants.NS_MIDPOINT_PUBLIC_PREFIX);
+ PrismTestUtil.resetPrismContext(MidPointPrismContextFactory.FACTORY);
+ }
+
@Test
public void queryOrganizationNorm() throws Exception {
Session session = open();
@@ -240,7 +258,7 @@ public void queryGenericLong() throws Exception {
Conjunction c2 = Restrictions.conjunction();
c2.add(Restrictions.eq("l.value", 123L));
c2.add(Restrictions.eq("l.name", new QName("http://example.com/p", "intType")));
- c2.add(Restrictions.eq("l.type", new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "integer")));
+ c2.add(Restrictions.eq("l.type", DOMUtil.XSD_INTEGER));
Conjunction conjunction = Restrictions.conjunction();
conjunction.add(c1);
@@ -274,15 +292,16 @@ public void queryOrComposite() throws Exception {
Conjunction c2 = Restrictions.conjunction();
c2.add(Restrictions.eq("s1x.value", "foo value"));
c2.add(Restrictions.eq("s1x.name", new QName("http://midpoint.evolveum.com/blabla", "foo")));
- c2.add(Restrictions.eq("s1x.type", new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "string")));
+ c2.add(Restrictions.eq("s1x.type", DOMUtil.XSD_STRING));
//or
Conjunction c3 = Restrictions.conjunction();
c3.add(Restrictions.eq("s2x.value", "uid=test,dc=example,dc=com"));
c3.add(Restrictions.eq("s2x.name", new QName("http://example.com/p", "stringType")));
- c3.add(Restrictions.eq("s2x.type", new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "string")));
+ c3.add(Restrictions.eq("s2x.type", DOMUtil.XSD_STRING));
//or
- Criterion c4 = Restrictions.conjunction().add(
- Restrictions.eq("r.resourceRef.targetOid", "d0db5be9-cb93-401f-b6c1-86ffffe4cd5e"));
+ Conjunction c4 = Restrictions.conjunction();
+ c4.add(Restrictions.eq("r.resourceRef.targetOid", "d0db5be9-cb93-401f-b6c1-86ffffe4cd5e"));
+ c4.add(Restrictions.eq("r.resourceRef.type", QNameUtil.qNameToUri(ResourceType.COMPLEX_TYPE)));
Disjunction disjunction = Restrictions.disjunction();
disjunction.add(c1);
@@ -401,13 +420,16 @@ public void queryAccountByAttributesAndResourceRef() throws Exception {
Criteria stringAttr = attributes.createCriteria("strings", "s1x");
//and
- Criterion c1 = Restrictions.conjunction().add(
- Restrictions.eq("r.resourceRef.targetOid", "aae7be60-df56-11df-8608-0002a5d5c51b"));
+ Conjunction c1 = Restrictions.conjunction();
+ c1.add(Restrictions.eq("r.resourceRef.targetOid", "aae7be60-df56-11df-8608-0002a5d5c51b"));
+ c1.add(Restrictions.eq("r.resourceRef.type", QNameUtil.qNameToUri(ResourceType.COMPLEX_TYPE)));
+// Criterion c1 = Restrictions.conjunction().add(
+// Restrictions.eq("r.resourceRef.targetOid", "aae7be60-df56-11df-8608-0002a5d5c51b"));
//and
Conjunction c2 = Restrictions.conjunction();
c2.add(Restrictions.eq("s1x.value", "uid=jbond,ou=People,dc=example,dc=com"));
c2.add(Restrictions.eq("s1x.name", new QName("http://midpoint.evolveum.com/blabla", "foo")));
- c2.add(Restrictions.eq("s1x.type", new QName(XMLConstants.W3C_XML_SCHEMA_NS_URI, "string")));
+ c2.add(Restrictions.eq("s1x.type", DOMUtil.XSD_STRING));
Conjunction conjunction = Restrictions.conjunction();
conjunction.add(c1);
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ResourceModifyTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ResourceModifyTest.java
index 7bc0cac0547..365d7acd9de 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ResourceModifyTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/ResourceModifyTest.java
@@ -76,7 +76,7 @@ public void test010AddResource() throws Exception {
// GIVEN
OperationResult result = new OperationResult(ResourceModifyTest.class.getName()+"."+TEST_NAME);
- PrismObject resource = prismContext.getPrismDomProcessor().parseObject(RESOURCE_OPENDJ_FILE);
+ PrismObject resource = prismContext.parseObject(RESOURCE_OPENDJ_FILE);
// WHEN
String addOid = repositoryService.addObject(resource, null, result);
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchShadowOwnerTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchShadowOwnerTest.java
index 83e6fca1adc..79e13aac0f0 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchShadowOwnerTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchShadowOwnerTest.java
@@ -58,7 +58,7 @@ public void initSystem() throws Exception {
//insert sample data
final File OBJECTS_FILE = new File(FOLDER_BASIC, "objects.xml");
- List> elements = prismContext.getPrismDomProcessor().parseObjects(OBJECTS_FILE);
+ List> elements = prismContext.parseObjects(OBJECTS_FILE);
for (int i = 0; i < elements.size(); i++) {
PrismObject object = elements.get(i);
repositoryService.addObject(object, null, result);
diff --git a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java
index 4ce7272c6b6..290f9627565 100644
--- a/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java
+++ b/repo/repo-sql-impl-test/src/test/java/com/evolveum/midpoint/repo/sql/SearchTest.java
@@ -59,8 +59,8 @@ public void beforeClass() throws Exception {
PrismTestUtil.resetPrismContext(MidPointPrismContextFactory.FACTORY);
- PrismDomProcessor domProcessor = prismContext.getPrismDomProcessor();
- List> objects = domProcessor.parseObjects(
+// PrismDomProcessor domProcessor = prismContext.getPrismDomProcessor();
+ List> objects = prismContext.parseObjects(
new File(FOLDER_BASIC, "objects.xml"));
OperationResult result = new OperationResult("add objects");
for (PrismObject object : objects) {
diff --git a/repo/repo-sql-impl-test/src/test/resources/ctx-configuration-sql-test.xml b/repo/repo-sql-impl-test/src/test/resources/ctx-configuration-sql-test.xml
index 89b8ed2855b..23c97637f8f 100644
--- a/repo/repo-sql-impl-test/src/test/resources/ctx-configuration-sql-test.xml
+++ b/repo/repo-sql-impl-test/src/test/resources/ctx-configuration-sql-test.xml
@@ -53,7 +53,7 @@
-
-
- org.forgerock.openicf.csvfile.CSVFileConnector
-
+ connectorType
+ org.forgerock.openicf.csvfile.CSVFileConnector
@@ -129,12 +128,15 @@ object.
read
weak
- $user/name
+
+ $user/name
+
- declare namespace i="http://midpoint.evolveum.com/xml/ns/public/common/common-2a";
+ declare namespace i="http://midpoint.evolveum.com/xml/ns/public/common/common-2a";
$user/i:name
+
@@ -145,12 +147,15 @@ object.
Definition of Firstname attribute handling.
weak
- $user/givenName
+
+ $user/givenName
+
- declare namespace i="http://midpoint.evolveum.com/xml/ns/public/common/common-2a";
+ declare namespace i="http://midpoint.evolveum.com/xml/ns/public/common/common-2a";
$user/i:givenName
+
@@ -161,12 +166,15 @@ object.
Definition of Lastname attribute handling.
weak
- $user/familyName
+
+ $user/familyName
+
- declare namespace i="http://midpoint.evolveum.com/xml/ns/public/common/common-2a";
+ declare namespace i="http://midpoint.evolveum.com/xml/ns/public/common/common-2a";
$user/i:familyName
+
@@ -182,44 +190,50 @@ object.
-
+
+
+
-
- weak
+ weak
+
-
+
-
+
+
+
-
- weak
+ weak
+
-
+
-
-
- ri:disabled
- false
- true
-
-
-
-
-
-
-
+
+
+
+ ri:disabled
+ false
+ true
+
+
+
+
+
+
+
+
@@ -238,15 +252,17 @@ object.
The correlation rule always looks for users, so it will not match
any other object type.
-
- .
-
- [name]
-
- $c:account/c:attributes/icfs:name
-
-
-
+
+
+ name
+
+ [name]
+
+ $c:account/c:attributes/icfs:name
+
+
+
+
- declare namespace my="http://whatever.com/my";
- $c:user/c:extension/my:description
+ declare namespace my="http://whatever.com/my";
+ $c:user/c:extension/my:description
@@ -388,12 +394,14 @@ object.
my:defaultLocation
- middle of nowhere
+
- scalar
-
- $my:defaultLocation
-
+
@@ -401,26 +409,30 @@ object.
-
+
+
+
-
- weak
+ weak
+
-
+
-
+
+
+
-
- weak
-
-
+ weak
+
+
+
@@ -435,20 +447,22 @@ object.
-
-
-
- ri:ds-pwp-account-disabled
-
- true
-
-
-
-
-
-
-
-
+
+
+
+
+ ri:ds-pwp-account-disabled
+
+ true
+
+
+
+
+
+
+
+
+