Search in sources :

Example 6 with ListXNode

use of com.evolveum.midpoint.prism.xnode.ListXNode in project midpoint by Evolveum.

the class TestQueryConvertor method testAccountFilter.

@Test
public void testAccountFilter() throws Exception {
    displayTestTitle("testAccountFilter");
    SearchFilterType filterType = unmarshalFilter(FILTER_ACCOUNT_FILE);
    ObjectQuery query = toObjectQuery(ShadowType.class, filterType);
    displayQuery(query);
    assertNotNull(query);
    ObjectFilter filter = query.getFilter();
    PrismAsserts.assertAndFilter(filter, 2);
    ObjectFilter first = getFilterCondition(filter, 0);
    PrismAsserts.assertEqualsFilter(first, ShadowType.F_FAILED_OPERATION_TYPE, FAILED_OPERATION_TYPE_QNAME, new ItemPath(ShadowType.F_FAILED_OPERATION_TYPE));
    PrismAsserts.assertEqualsFilterValue((EqualFilter) first, FailedOperationTypeType.ADD);
    ObjectFilter second = getFilterCondition(filter, 1);
    PrismAsserts.assertEqualsFilter(second, ShadowType.F_NAME, PolyStringType.COMPLEX_TYPE, new ItemPath(ShadowType.F_NAME));
    PrismAsserts.assertEqualsFilterValue((EqualFilter) second, createPolyString("someName"));
    QueryType convertedQueryType = toQueryType(query);
    System.out.println("Re-converted query type");
    System.out.println(convertedQueryType.debugDump());
    SearchFilterType convertedFilterType = convertedQueryType.getFilter();
    MapXNode xFilter = convertedFilterType.serializeToXNode();
    PrismAsserts.assertSize(xFilter, 1);
    PrismAsserts.assertSubnode(xFilter, AndFilter.ELEMENT_NAME, MapXNode.class);
    MapXNode xandmap = (MapXNode) xFilter.get(AndFilter.ELEMENT_NAME);
    PrismAsserts.assertSize(xandmap, 1);
    PrismAsserts.assertSubnode(xandmap, EqualFilter.ELEMENT_NAME, ListXNode.class);
    ListXNode xequalsList = (ListXNode) xandmap.get(EqualFilter.ELEMENT_NAME);
    PrismAsserts.assertSize(xequalsList, 2);
    Element filterClauseElement = convertedFilterType.getFilterClauseAsElement(getPrismContext());
    System.out.println("Serialized filter (JAXB->DOM)");
    System.out.println(DOMUtil.serializeDOMToString(filterClauseElement));
    DomAsserts.assertElementQName(filterClauseElement, AndFilter.ELEMENT_NAME);
    DomAsserts.assertSubElements(filterClauseElement, 2);
    Element firstSubelement = DOMUtil.getChildElement(filterClauseElement, 0);
    DomAsserts.assertElementQName(firstSubelement, EqualFilter.ELEMENT_NAME);
    Element firstValueElement = DOMUtil.getChildElement(firstSubelement, PrismConstants.Q_VALUE);
    DomAsserts.assertTextContent(firstValueElement, "add");
    Element secondSubelement = DOMUtil.getChildElement(filterClauseElement, 1);
    DomAsserts.assertElementQName(secondSubelement, EqualFilter.ELEMENT_NAME);
    Element secondValueElement = DOMUtil.getChildElement(secondSubelement, PrismConstants.Q_VALUE);
    DomAsserts.assertTextContent(secondValueElement, "someName");
}
Also used : SearchFilterType(com.evolveum.prism.xml.ns._public.query_3.SearchFilterType) ListXNode(com.evolveum.midpoint.prism.xnode.ListXNode) Element(org.w3c.dom.Element) MapXNode(com.evolveum.midpoint.prism.xnode.MapXNode) QueryType(com.evolveum.prism.xml.ns._public.query_3.QueryType) ItemPath(com.evolveum.midpoint.prism.path.ItemPath) Test(org.testng.annotations.Test)

Example 7 with ListXNode

use of com.evolveum.midpoint.prism.xnode.ListXNode in project midpoint by Evolveum.

the class AbstractJsonLexicalProcessor method parseToList.

private ListXNode parseToList(JsonParsingContext ctx) throws SchemaException, IOException {
    Validate.notNull(ctx.parser.currentToken());
    ListXNode list = new ListXNode();
    Object tid = ctx.parser.getTypeId();
    if (tid != null) {
        list.setTypeQName(tagToTypeName(tid, ctx));
    }
    for (; ; ) {
        JsonToken token = ctx.parser.nextToken();
        if (token == null) {
            ctx.prismParsingContext.warnOrThrow(LOGGER, "Unexpected end of data while parsing a list structure at " + getPositionSuffix(ctx));
            return list;
        } else if (token == JsonToken.END_ARRAY) {
            return list;
        } else {
            list.add(parseValue(ctx));
        }
    }
}
Also used : ListXNode(com.evolveum.midpoint.prism.xnode.ListXNode)

Example 8 with ListXNode

use of com.evolveum.midpoint.prism.xnode.ListXNode in project midpoint by Evolveum.

the class AbstractJsonLexicalProcessor method processDefaultNamespaces.

// Default namespaces (@ns properties) are processed in the second pass, because they might be present within an object
// at any place, even at the end.
private void processDefaultNamespaces(XNode xnode, String parentDefault, JsonParsingContext ctx) {
    if (xnode instanceof MapXNode) {
        MapXNode map = (MapXNode) xnode;
        final String currentDefault = ctx.defaultNamespaces.containsKey(map) ? ctx.defaultNamespaces.get(map) : parentDefault;
        for (Entry<QName, XNode> entry : map.entrySet()) {
            QName fieldName = entry.getKey();
            XNode subnode = entry.getValue();
            if (StringUtils.isNotEmpty(currentDefault) && StringUtils.isEmpty(fieldName.getNamespaceURI()) && !ctx.noNamespaceEntries.containsKey(entry)) {
                map.qualifyKey(fieldName, currentDefault);
            }
            processDefaultNamespaces(subnode, currentDefault, ctx);
        }
        qualifyElementNameIfNeeded(map, currentDefault, ctx);
    } else {
        qualifyElementNameIfNeeded(xnode, parentDefault, ctx);
        if (xnode instanceof ListXNode) {
            for (XNode item : (ListXNode) xnode) {
                processDefaultNamespaces(item, parentDefault, ctx);
            }
        }
    }
}
Also used : ListXNode(com.evolveum.midpoint.prism.xnode.ListXNode) QName(javax.xml.namespace.QName) SchemaXNode(com.evolveum.midpoint.prism.xnode.SchemaXNode) RootXNode(com.evolveum.midpoint.prism.xnode.RootXNode) XNode(com.evolveum.midpoint.prism.xnode.XNode) MapXNode(com.evolveum.midpoint.prism.xnode.MapXNode) PrimitiveXNode(com.evolveum.midpoint.prism.xnode.PrimitiveXNode) ListXNode(com.evolveum.midpoint.prism.xnode.ListXNode) PolyString(com.evolveum.midpoint.prism.polystring.PolyString) MapXNode(com.evolveum.midpoint.prism.xnode.MapXNode)

Example 9 with ListXNode

use of com.evolveum.midpoint.prism.xnode.ListXNode in project midpoint by Evolveum.

the class AbstractJsonLexicalProcessor method serializeFromList.

private void serializeFromList(ListXNode list, JsonSerializationContext ctx) throws IOException {
    writeInlineTypeIfNeeded(list, ctx);
    ctx.generator.writeStartArray();
    resetInlineTypeIfPossible(ctx);
    for (XNode item : list) {
        serialize(item, ctx, false);
    }
    ctx.generator.writeEndArray();
}
Also used : SchemaXNode(com.evolveum.midpoint.prism.xnode.SchemaXNode) RootXNode(com.evolveum.midpoint.prism.xnode.RootXNode) XNode(com.evolveum.midpoint.prism.xnode.XNode) MapXNode(com.evolveum.midpoint.prism.xnode.MapXNode) PrimitiveXNode(com.evolveum.midpoint.prism.xnode.PrimitiveXNode) ListXNode(com.evolveum.midpoint.prism.xnode.ListXNode)

Example 10 with ListXNode

use of com.evolveum.midpoint.prism.xnode.ListXNode in project midpoint by Evolveum.

the class TestQueryConvertors method testFilterUserAndJaxb.

@Test
public void testFilterUserAndJaxb() throws Exception {
    displayTestTitle("testFilterUserAndJaxb");
    SearchFilterType filterType = PrismTestUtil.parseAnyValue(FILTER_USER_AND_FILE);
    ObjectQuery query = toObjectQuery(UserType.class, filterType);
    displayQuery(query);
    assertNotNull(query);
    ObjectFilter filter = query.getFilter();
    PrismAsserts.assertAndFilter(filter, 2);
    ObjectFilter first = getFilterCondition(filter, 0);
    PrismAsserts.assertEqualsFilter(first, UserType.F_GIVEN_NAME, DOMUtil.XSD_STRING, new ItemPath(new QName(null, UserType.F_GIVEN_NAME.getLocalPart())));
    PrismAsserts.assertEqualsFilterValue((EqualFilter) first, "Jack");
    ObjectFilter second = getFilterCondition(filter, 1);
    PrismAsserts.assertEqualsFilter(second, UserType.F_LOCALITY, DOMUtil.XSD_STRING, new ItemPath(new QName(null, UserType.F_LOCALITY.getLocalPart())));
    PrismAsserts.assertEqualsFilterValue((EqualFilter) second, "Caribbean");
    QueryType convertedQueryType = toQueryType(query);
    System.out.println("Re-converted query type");
    System.out.println(convertedQueryType.debugDump());
    SearchFilterType convertedFilterType = convertedQueryType.getFilter();
    MapXNode xFilter = convertedFilterType.serializeToXNode();
    PrismAsserts.assertSize(xFilter, 1);
    PrismAsserts.assertSubnode(xFilter, AndFilter.ELEMENT_NAME, MapXNode.class);
    MapXNode xandmap = (MapXNode) xFilter.get(AndFilter.ELEMENT_NAME);
    PrismAsserts.assertSize(xandmap, 1);
    PrismAsserts.assertSubnode(xandmap, EqualFilter.ELEMENT_NAME, ListXNode.class);
    ListXNode xequalsList = (ListXNode) xandmap.get(EqualFilter.ELEMENT_NAME);
    PrismAsserts.assertSize(xequalsList, 2);
    Element filterClauseElement = convertedFilterType.getFilterClauseAsElement(getPrismContext());
    System.out.println("Serialized filter (JAXB->DOM)");
    System.out.println(DOMUtil.serializeDOMToString(filterClauseElement));
    DomAsserts.assertElementQName(filterClauseElement, AndFilter.ELEMENT_NAME);
    DomAsserts.assertSubElements(filterClauseElement, 2);
    Element firstSubelement = DOMUtil.getChildElement(filterClauseElement, 0);
    DomAsserts.assertElementQName(firstSubelement, EqualFilter.ELEMENT_NAME);
    Element firstValueElement = DOMUtil.getChildElement(firstSubelement, PrismConstants.Q_VALUE);
    DomAsserts.assertTextContent(firstValueElement, "Jack");
    Element secondSubelement = DOMUtil.getChildElement(filterClauseElement, 1);
    DomAsserts.assertElementQName(secondSubelement, EqualFilter.ELEMENT_NAME);
    Element secondValueElement = DOMUtil.getChildElement(secondSubelement, PrismConstants.Q_VALUE);
    DomAsserts.assertTextContent(secondValueElement, "Caribbean");
}
Also used : SearchFilterType(com.evolveum.prism.xml.ns._public.query_3.SearchFilterType) ListXNode(com.evolveum.midpoint.prism.xnode.ListXNode) QName(javax.xml.namespace.QName) Element(org.w3c.dom.Element) MapXNode(com.evolveum.midpoint.prism.xnode.MapXNode) QueryType(com.evolveum.prism.xml.ns._public.query_3.QueryType) ItemPath(com.evolveum.midpoint.prism.path.ItemPath) Test(org.testng.annotations.Test)

Aggregations

ListXNode (com.evolveum.midpoint.prism.xnode.ListXNode)12 MapXNode (com.evolveum.midpoint.prism.xnode.MapXNode)10 RootXNode (com.evolveum.midpoint.prism.xnode.RootXNode)8 XNode (com.evolveum.midpoint.prism.xnode.XNode)8 PrimitiveXNode (com.evolveum.midpoint.prism.xnode.PrimitiveXNode)7 SchemaXNode (com.evolveum.midpoint.prism.xnode.SchemaXNode)5 QName (javax.xml.namespace.QName)5 Test (org.testng.annotations.Test)5 Element (org.w3c.dom.Element)4 QueryType (com.evolveum.prism.xml.ns._public.query_3.QueryType)3 SearchFilterType (com.evolveum.prism.xml.ns._public.query_3.SearchFilterType)3 ItemPath (com.evolveum.midpoint.prism.path.ItemPath)2 SchemaException (com.evolveum.midpoint.util.exception.SchemaException)2 PrismContext (com.evolveum.midpoint.prism.PrismContext)1 PrimitiveXNodeImpl (com.evolveum.midpoint.prism.impl.xnode.PrimitiveXNodeImpl)1 DomLexicalProcessor (com.evolveum.midpoint.prism.lex.dom.DomLexicalProcessor)1 PolyString (com.evolveum.midpoint.prism.polystring.PolyString)1 AbstractUnitTest (com.evolveum.midpoint.tools.testng.AbstractUnitTest)1 PipelineDataType (com.evolveum.midpoint.xml.ns._public.model.scripting_3.PipelineDataType)1 NotNull (org.jetbrains.annotations.NotNull)1