Skip to content

Commit

Permalink
It compiles again (Script variables)
Browse files Browse the repository at this point in the history
  • Loading branch information
semancik committed Mar 18, 2019
1 parent 414cdb3 commit c3e8f04
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 38 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2010-2018 Evolveum
* Copyright (c) 2010-2019 Evolveum
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -16,23 +16,10 @@
package com.evolveum.midpoint.report.impl;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.xml.namespace.QName;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

import com.evolveum.midpoint.model.common.expression.script.ScriptExpressionEvaluator;
import com.evolveum.midpoint.model.common.expression.script.ScriptExpressionEvaluatorFactory;
import com.evolveum.midpoint.model.common.expression.script.ScriptExpressionUtil;
import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluatorFactory;
import com.evolveum.midpoint.repo.common.expression.ExpressionUtil;
import com.evolveum.midpoint.report.api.ReportService;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.util.exception.CommunicationException;
import com.evolveum.midpoint.util.exception.ConfigurationException;
import com.evolveum.midpoint.util.exception.ExpressionEvaluationException;
Expand All @@ -41,19 +28,13 @@
import com.evolveum.midpoint.util.exception.SecurityViolationException;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.ibm.icu.text.ChineseDateFormat.Field;

import net.sf.jasperreports.engine.JRDataset;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExpression;
import net.sf.jasperreports.engine.JRExpressionChunk;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.fill.ExpressionValues;
import net.sf.jasperreports.engine.fill.FillExpressionDefaultValues;
import net.sf.jasperreports.engine.fill.FillExpressionEstimatedValues;
import net.sf.jasperreports.engine.fill.FillExpressionOldValues;
import net.sf.jasperreports.engine.fill.JREvaluator;
import net.sf.jasperreports.engine.fill.JRExpressionEvalException;
import net.sf.jasperreports.engine.fill.JRFillField;
Expand Down Expand Up @@ -117,7 +98,7 @@ public Object evaluate(JRExpression expression) throws JRExpressionEvalException
}
JRExpressionChunk[] ch = expression.getChunks();

Map<QName, Object> parameters = new HashMap<>();
VariablesMap parameters = new VariablesMap();

String groovyCode = "";

Expand All @@ -130,17 +111,17 @@ public Object evaluate(JRExpression expression) throws JRExpressionEvalException
case JRExpressionChunk.TYPE_FIELD:
groovyCode += chunk.getText();
JRFillField field = fieldsMap.get(chunk.getText());
parameters.put(new QName(field.getName()), field.getValue());
parameters.put(field.getName(), field.getValue(), field.getValueClass());
break;
case JRExpressionChunk.TYPE_PARAMETER:
groovyCode += chunk.getText();
JRFillParameter param = parametersMap.get(chunk.getText());
parameters.put(new QName(param.getName()), param.getValue());
parameters.put(param.getName(), param.getValue(), param.getValueClass());
break;
case JRExpressionChunk.TYPE_VARIABLE:
groovyCode += chunk.getText();
JRFillVariable var = variablesMap.get(chunk.getText());
parameters.put(new QName(var.getName()), var.getValue());
parameters.put(var.getName(), var.getValue(), var.getValueClass());
break;
case JRExpressionChunk.TYPE_TEXT:
groovyCode += chunk.getText();
Expand Down
Expand Up @@ -17,9 +17,7 @@

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

Expand Down Expand Up @@ -182,6 +180,7 @@ public Collection<PrismObject<? extends ObjectType>> searchObjects(ObjectQuery q

}

@Override
public Collection<PrismContainerValue<? extends Containerable>> evaluateScript(String script,
VariablesMap parameters) throws SchemaException, ExpressionEvaluationException,
ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException {
Expand Down Expand Up @@ -227,15 +226,14 @@ public Collection<PrismContainerValue<? extends Containerable>> evaluateScript(S
}

@Override
public Object evaluate(String script,
Map<QName, Object> parameters) throws SchemaException, ExpressionEvaluationException,
public Object evaluate(String script, VariablesMap parameters) throws SchemaException, ExpressionEvaluationException,
ObjectNotFoundException, CommunicationException, ConfigurationException, SecurityViolationException {

ExpressionVariables variables = new ExpressionVariables();
variables.addVariableDefinitions(parameters);

// special variable for audit report
variables.addVariableDefinition(new QName("auditParams"), getConvertedParams(parameters));
variables.put("auditParams", getConvertedParams(parameters));

Task task = taskManager.createTaskInstance(ReportService.class.getName() + ".evaluateScript");
OperationResult parentResult = task.getResult();
Expand Down
Expand Up @@ -24,6 +24,7 @@
import com.evolveum.midpoint.repo.common.expression.ExpressionEvaluationContext;
import com.evolveum.midpoint.repo.common.expression.ExpressionFactory;
import com.evolveum.midpoint.repo.common.expression.ExpressionVariables;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.task.api.TaskManager;
Expand All @@ -37,7 +38,6 @@
import javax.xml.namespace.QName;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
*
Expand All @@ -51,7 +51,7 @@ public class UcfExpressionEvaluatorImpl implements UcfExpressionEvaluator {

@NotNull
@Override
public <O> List<O> evaluate(ExpressionType expressionBean, Map<QName, Object> variables, QName outputPropertyName,
public <O> List<O> evaluate(ExpressionType expressionBean, VariablesMap variables, QName outputPropertyName,
String ctxDesc) throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException,
ConfigurationException, ExpressionEvaluationException {
// TODO consider getting the task instance from the caller
Expand All @@ -61,7 +61,7 @@ public <O> List<O> evaluate(ExpressionType expressionBean, Map<QName, Object> va
Expression<PrismPropertyValue<O>, PrismPropertyDefinition<O>> expression =
expressionFactory.makePropertyExpression(expressionBean, outputPropertyName, ctxDesc, task, result);
ExpressionVariables exprVariables = new ExpressionVariables();
exprVariables.addVariableDefinitions(variables);
exprVariables.putAll(variables);
ExpressionEvaluationContext context = new ExpressionEvaluationContext(null, exprVariables, ctxDesc, task, result);
PrismValueDeltaSetTriple<PrismPropertyValue<O>> exprResultTriple = expression.evaluate(context);
List<O> list = new ArrayList<>();
Expand Down
Expand Up @@ -16,13 +16,13 @@

package com.evolveum.midpoint.provisioning.ucf.api;

import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.util.annotation.Experimental;
import com.evolveum.midpoint.util.exception.*;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ExpressionType;

import javax.xml.namespace.QName;
import java.util.List;
import java.util.Map;

/**
*
Expand All @@ -33,7 +33,7 @@ public interface UcfExpressionEvaluator {
/**
* Evaluates given expression.
*/
<O> List<O> evaluate(ExpressionType expressionBean, Map<QName, Object> variables, QName outputPropertyName,
<O> List<O> evaluate(ExpressionType expressionBean, VariablesMap variables, QName outputPropertyName,
String contextDescription)
throws SchemaException, ObjectNotFoundException, SecurityViolationException, CommunicationException,
ConfigurationException, ExpressionEvaluationException;
Expand Down
Expand Up @@ -27,6 +27,7 @@
import com.evolveum.midpoint.provisioning.ucf.api.ChangeListener;
import com.evolveum.midpoint.schema.DeltaConvertor;
import com.evolveum.midpoint.schema.SchemaConstantsGenerated;
import com.evolveum.midpoint.schema.expression.VariablesMap;
import com.evolveum.midpoint.schema.processor.ObjectClassComplexTypeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceAttribute;
import com.evolveum.midpoint.schema.processor.ResourceAttributeDefinition;
Expand Down Expand Up @@ -55,7 +56,7 @@ public class TransformationalAsyncUpdateMessageListener implements AsyncUpdateMe

private static final Trace LOGGER = TraceManager.getTrace(TransformationalAsyncUpdateMessageListener.class);

private static final QName VAR_MESSAGE = new QName("message");
private static final String VAR_MESSAGE = "message";

@NotNull private final ChangeListener changeListener;
@NotNull private final AsyncUpdateConnectorInstance connectorInstance;
Expand All @@ -69,8 +70,8 @@ public class TransformationalAsyncUpdateMessageListener implements AsyncUpdateMe
@Override
public boolean onMessage(AsyncUpdateMessageType message) throws SchemaException {
LOGGER.trace("Got {}", message);
Map<QName, Object> variables = new HashMap<>();
variables.put(VAR_MESSAGE, message);
VariablesMap variables = new VariablesMap();
variables.put(VAR_MESSAGE, message, AsyncUpdateMessageType.class);
List<UcfChangeType> changeBeans;
try {
ExpressionType transformExpression = connectorInstance.getTransformExpression();
Expand Down

0 comments on commit c3e8f04

Please sign in to comment.