Skip to content

Commit

Permalink
Merge branch 'feature/prism-api' into feature/prism-api-new-module
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Nov 17, 2018
2 parents 6fe645c + d871b95 commit f6dae50
Show file tree
Hide file tree
Showing 113 changed files with 810 additions and 869 deletions.
Expand Up @@ -38,6 +38,7 @@
import com.evolveum.midpoint.prism.delta.PrismValueDeltaSetTriple;
import com.evolveum.midpoint.prism.match.MatchingRuleRegistry;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.QueryConverter;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.prism.query.builder.S_FilterEntryOrEmpty;
import com.evolveum.midpoint.repo.api.CacheDispatcher;
Expand Down Expand Up @@ -468,6 +469,10 @@ public PrismContext getPrismContext() {
return getMidpointApplication().getPrismContext();
}

public QueryConverter getQueryConverter() {
return getPrismContext().getQueryConverter();
}

public RelationRegistry getRelationRegistry() {
return getMidpointApplication().getRelationRegistry();
}
Expand Down
Expand Up @@ -96,7 +96,6 @@
import org.apache.wicket.util.string.StringValue;
import org.apache.wicket.util.visit.IVisit;
import org.apache.wicket.util.visit.IVisitor;
import org.bouncycastle.asn1.ocsp.ServiceLocator;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.joda.time.format.DateTimeFormat;
Expand Down Expand Up @@ -564,7 +563,7 @@ public static TaskType createSingleRecurrenceTask(String taskName, QName applica
PrismObject<TaskType> prismTask = task.asPrismObject();
ItemPath path = new ItemPath(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_OBJECT_QUERY);
PrismProperty objectQuery = prismTask.findOrCreateProperty(path);
QueryType queryType = QueryJaxbConvertor.createQueryType(query, pageBase.getPrismContext());
QueryType queryType = pageBase.getQueryConverter().createQueryType(query);
objectQuery.addRealValue(queryType);

path = new ItemPath(TaskType.F_EXTENSION, SchemaConstants.MODEL_EXTENSION_OBJECT_TYPE);
Expand Down Expand Up @@ -2844,7 +2843,7 @@ private Map<QName, Object> prepareExtensionValues(Collection<String> oids) throw
ObjectQuery objectQuery = QueryBuilder.queryFor(ObjectType.class, prismContext)
.id(oids.toArray(new String[0]))
.build();
QueryType queryBean = QueryJaxbConvertor.createQueryType(objectQuery, prismContext);
QueryType queryBean = pageBase.getQueryConverter().createQueryType(objectQuery);
extensionValues.put(SchemaConstants.MODEL_EXTENSION_OBJECT_QUERY, queryBean);
return extensionValues;
}
Expand Down
Expand Up @@ -18,12 +18,8 @@

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.function.Supplier;
import java.util.stream.Collectors;

import javax.xml.namespace.QName;

Expand All @@ -37,7 +33,6 @@
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.PrismReferenceDefinition;
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.marshaller.QueryConvertor;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyStringNormalizer;
import com.evolveum.midpoint.prism.query.AndFilter;
Expand Down Expand Up @@ -367,7 +362,7 @@ private ObjectFilter createAdvancedObjectFilter(PrismContext ctx) throws SchemaE
}

SearchFilterType search = ctx.parserFor(advancedQuery).type(SearchFilterType.COMPLEX_TYPE).parseRealValue();
return QueryConvertor.parseFilter(search, (Class<? extends ObjectType>) type, ctx);
return ctx.getQueryConverter().parseFilter(search, type);
}

public boolean isAdvancedQueryValid(PrismContext ctx) {
Expand Down
Expand Up @@ -21,7 +21,6 @@
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.marshaller.QueryConvertor;
import com.evolveum.midpoint.prism.util.CloneUtil;
import com.evolveum.midpoint.prism.xml.XmlTypeConverter;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
Expand Down Expand Up @@ -346,7 +345,7 @@ public void updateScopeDefinition(PrismContext prismContext) {
if (parsedSearchFilter != null) {
// check if everything is OK
try {
QueryConvertor.parseFilterPreliminarily(parsedSearchFilter.getFilterClauseXNode(), null, prismContext);
prismContext.getQueryConverter().parseFilterPreliminarily(parsedSearchFilter.getFilterClauseXNode(), null);
} catch (SchemaException e) {
throw new SystemException("Couldn't parse search filter: " + e.getMessage(), e);
}
Expand Down
Expand Up @@ -21,7 +21,6 @@
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.PrismPropertyDefinitionImpl;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.QueryJaxbConvertor;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
Expand Down Expand Up @@ -65,7 +64,7 @@ protected String deleteObjectsAsync(QName type, ObjectQuery objectQuery, boolean
objectQuery = new ObjectQuery();
}

QueryType query = QueryJaxbConvertor.createQueryType(objectQuery, getPrismContext());
QueryType query = getQueryConverter().createQueryType(objectQuery);

PrismPropertyDefinition queryDef = new PrismPropertyDefinitionImpl(
SchemaConstants.MODEL_EXTENSION_OBJECT_QUERY, QueryType.COMPLEX_TYPE, getPrismContext());
Expand Down
Expand Up @@ -22,7 +22,6 @@

import javax.xml.namespace.QName;

import com.evolveum.midpoint.prism.PrismPropertyDefinitionImpl;
import com.evolveum.midpoint.prism.query.builder.QueryBuilder;
import com.evolveum.midpoint.web.component.dialog.*;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
Expand All @@ -41,7 +40,6 @@
import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
import org.apache.wicket.extensions.markup.html.repeater.data.table.AbstractColumn;
import org.apache.wicket.extensions.markup.html.repeater.data.table.DataTable;
Expand All @@ -65,27 +63,19 @@
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.api.ModelPublicConstants;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.PrismProperty;
import com.evolveum.midpoint.prism.PrismPropertyDefinition;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.AndFilter;
import com.evolveum.midpoint.prism.query.InOidFilter;
import com.evolveum.midpoint.prism.query.NotFilter;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectPaging;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.QueryJaxbConvertor;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.task.api.TaskManager;
import com.evolveum.midpoint.util.DOMUtil;
import com.evolveum.midpoint.util.exception.ObjectAlreadyExistsException;
import com.evolveum.midpoint.util.exception.ObjectNotFoundException;
import com.evolveum.midpoint.util.exception.SchemaException;
Expand Down Expand Up @@ -115,7 +105,6 @@
import com.evolveum.midpoint.web.session.ConfigurationStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor;
import com.evolveum.prism.xml.ns._public.query_3.QueryType;

/**
* @author lazyman
Expand Down
Expand Up @@ -23,10 +23,8 @@
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.marshaller.QueryConvertor;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.QueryJaxbConvertor;
import com.evolveum.midpoint.schema.*;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
Expand Down Expand Up @@ -377,7 +375,7 @@ private void useInObjectListPerformed(AjaxRequestTarget target) {
ObjectFilter parsedFilter = request.getQuery().getFilter();
String filterAsString;
if (parsedFilter != null) {
SearchFilterType filterType = QueryConvertor.createSearchFilterType(parsedFilter, getPrismContext());
SearchFilterType filterType = getQueryConverter().createSearchFilterType(parsedFilter);
filterAsString = getPrismContext().xmlSerializer().serializeRealValue(filterType, SchemaConstantsGenerated.Q_FILTER);
// TODO remove extra xmlns from serialized value
} else {
Expand Down Expand Up @@ -518,7 +516,7 @@ private void updateRequestWithMidpointQuery(RepositoryQueryDiagRequest request,
}
QueryType queryType = prismContext.parserFor(queryText).xml().parseRealValue(QueryType.class);
request.setType(clazz);
ObjectQuery objectQuery = QueryJaxbConvertor.createObjectQuery(clazz, queryType, prismContext);
ObjectQuery objectQuery = prismContext.getQueryConverter().createObjectQuery(clazz, queryType);
ObjectQuery queryWithExprEvaluated = ExpressionUtil.evaluateQueryExpressions(objectQuery, new ExpressionVariables(),
getExpressionFactory(), getPrismContext(), "evaluate query expressions", task, result);
request.setQuery(queryWithExprEvaluated);
Expand Down
Expand Up @@ -15,10 +15,8 @@
*/
package com.evolveum.midpoint.web.page.admin.users;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.marshaller.QueryConvertor;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
Expand All @@ -31,11 +29,8 @@
import com.evolveum.midpoint.web.application.AuthorizationAction;
import com.evolveum.midpoint.web.application.PageDescriptor;
import com.evolveum.midpoint.web.application.Url;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectCollectionType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.UserType;
import org.apache.catalina.User;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.util.string.StringValue;

Expand Down Expand Up @@ -88,7 +83,7 @@ protected ObjectFilter getUsersViewFilter(){
}
ObjectFilter filter = null;
try {
filter = QueryConvertor.parseFilter(collectionValue.getFilter(), UserType.class, getPrismContext());
filter = getQueryConverter().parseFilter(collectionValue.getFilter(), UserType.class);
} catch (SchemaException ex){
result.recomputeStatus();
result.recordFatalError("Couldn't parse filter. Filter: " + collectionValue.getFilter(), ex);
Expand Down
Expand Up @@ -19,7 +19,6 @@
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.EqualFilter;
import com.evolveum.midpoint.prism.query.QueryJaxbConvertor;
import com.evolveum.midpoint.prism.xnode.*;
import com.evolveum.midpoint.schema.SchemaConstantsGenerated;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
Expand Down Expand Up @@ -410,7 +409,7 @@ public static void updateAssociationTargetSearchValue(ExpressionType expression,
SearchObjectExpressionEvaluatorType associationTargetSearchType = new SearchObjectExpressionEvaluatorType();
EqualFilter pathFilter = EqualFilter.createEqual(new ItemPath(newPath), null, null, prismContext, newValue);

SearchFilterType filterType = QueryJaxbConvertor.createSearchFilterType(pathFilter, prismContext);
SearchFilterType filterType = prismContext.getQueryConverter().createSearchFilterType(pathFilter);
associationTargetSearchType.setFilter(filterType);
JAXBElement<SearchObjectExpressionEvaluatorType> evaluator = new ObjectFactory().createAssociationTargetSearch(associationTargetSearchType);

Expand Down
Expand Up @@ -17,7 +17,6 @@

import com.evolveum.midpoint.common.ResourceObjectPattern;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.marshaller.QueryConvertor;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
Expand Down Expand Up @@ -876,18 +875,20 @@ static RefinedObjectClassDefinition parse(ResourceObjectTypeDefinitionType entTy
return rObjectClassDef;
}

private static void parseProtected(RefinedObjectClassDefinition rAccountDef, ResourceObjectTypeDefinitionType accountTypeDefType) throws SchemaException {
private static void parseProtected(RefinedObjectClassDefinition rAccountDef,
ResourceObjectTypeDefinitionType accountTypeDefType, PrismContext prismContext) throws SchemaException {
for (ResourceObjectPatternType protectedType: accountTypeDefType.getProtected()) {
ResourceObjectPattern protectedPattern = convertToPattern(protectedType, rAccountDef);
ResourceObjectPattern protectedPattern = convertToPattern(protectedType, rAccountDef, prismContext);
rAccountDef.getProtectedObjectPatterns().add(protectedPattern);
}
}

private static ResourceObjectPattern convertToPattern(ResourceObjectPatternType patternType, RefinedObjectClassDefinition rAccountDef) throws SchemaException {
private static ResourceObjectPattern convertToPattern(ResourceObjectPatternType patternType,
RefinedObjectClassDefinition rAccountDef, PrismContext prismContext) throws SchemaException {
ResourceObjectPattern resourceObjectPattern = new ResourceObjectPattern(rAccountDef);
SearchFilterType filterType = patternType.getFilter();
if (filterType != null) {
ObjectFilter filter = QueryConvertor.parseFilter(filterType, rAccountDef.getObjectDefinition());
ObjectFilter filter = prismContext.getQueryConverter().parseFilter(filterType, rAccountDef.getObjectDefinition());
resourceObjectPattern.addFilter(filter);
return resourceObjectPattern;
}
Expand Down Expand Up @@ -1044,7 +1045,7 @@ void parseAttributes(RefinedResourceSchema rSchema, String contextDescription) t
}
}

parseProtected(this, schemaHandlingObjectTypeDefinitionType);
parseProtected(this, schemaHandlingObjectTypeDefinitionType, getPrismContext());
}

private void parseAttributesFrom(RefinedResourceSchema rSchema, ObjectClassComplexTypeDefinition ocDef, boolean auxiliary,
Expand Down
Expand Up @@ -25,6 +25,7 @@
import com.evolveum.midpoint.prism.polystring.PolyStringNormalizer;
import com.evolveum.midpoint.prism.polystring.AlphanumericPolyStringNormalizer;
import com.evolveum.midpoint.prism.polystring.ConfigurableNormalizer;
import com.evolveum.midpoint.prism.query.QueryConverter;
import com.evolveum.midpoint.prism.schema.SchemaDefinitionFactory;
import com.evolveum.midpoint.prism.schema.SchemaRegistry;
import com.evolveum.midpoint.prism.schema.SchemaRegistryImpl;
Expand Down Expand Up @@ -61,6 +62,7 @@ public class PrismContextImpl implements PrismContext {
private static boolean extraValidation = false; // TODO replace by something serious

@NotNull private final SchemaRegistryImpl schemaRegistry;
@NotNull private final QueryConverterImpl queryConverter;
@NotNull private final LexicalProcessorRegistry lexicalProcessorRegistry;
@NotNull private PolyStringNormalizer defaultPolyStringNormalizer;
@NotNull private final PrismUnmarshaller prismUnmarshaller;
Expand Down Expand Up @@ -90,6 +92,7 @@ public class PrismContextImpl implements PrismContext {
private PrismContextImpl(@NotNull SchemaRegistryImpl schemaRegistry) {
this.schemaRegistry = schemaRegistry;
schemaRegistry.setPrismContext(this);
this.queryConverter = new QueryConverterImpl(this);
this.lexicalProcessorRegistry = new LexicalProcessorRegistry(schemaRegistry);
this.prismUnmarshaller = new PrismUnmarshaller(this);
PrismBeanInspector inspector = new PrismBeanInspector(this);
Expand Down Expand Up @@ -256,7 +259,13 @@ public void setDefaultProtector(Protector defaultProtector) {
this.defaultProtector = defaultProtector;
}

@Override
@NotNull
@Override
public QueryConverter getQueryConverter() {
return queryConverter;
}

@Override
public PrismMonitor getMonitor() {
return monitor;
}
Expand Down
Expand Up @@ -162,7 +162,6 @@ public interface Definition extends Serializable, DebugDumpable, Revivable {
*/
String getDocumentationPreview();


PrismContext getPrismContext();

default SchemaRegistry getSchemaRegistry() {
Expand Down
Expand Up @@ -22,6 +22,7 @@
import com.evolveum.midpoint.prism.marshaller.ParsingMigrator;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.polystring.PolyStringNormalizer;
import com.evolveum.midpoint.prism.query.QueryConverter;
import com.evolveum.midpoint.prism.schema.SchemaRegistry;
import com.evolveum.midpoint.prism.util.PrismMonitor;
import com.evolveum.midpoint.prism.xnode.RootXNode;
Expand Down Expand Up @@ -73,6 +74,9 @@ public interface PrismContext {
*/
Protector getDefaultProtector();

@NotNull
QueryConverter getQueryConverter();

//region Parsing

/**
Expand Down

0 comments on commit f6dae50

Please sign in to comment.