diff --git a/build-system/pom.xml b/build-system/pom.xml
index 7b89445ce4b..48f36326290 100644
--- a/build-system/pom.xml
+++ b/build-system/pom.xml
@@ -74,7 +74,7 @@
9.4.1212.jre7
1.5.5
6.0.5
- 7.6.0
+ 7.9.0-SNAPSHOT
2.4.0
5.22.0
5.22.0
@@ -84,7 +84,7 @@
6.4.1
10.11.1.1
1.8.0
- 2.8.6
+ 2.8.9
1.15
2.20
@@ -272,6 +272,11 @@
stax-api
1.0-2
+
+ org.codehaus.staxmate
+ staxmate
+ 2.0.1
+
stax
stax-api
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OpResult.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OpResult.java
index 383520158a2..7a2dc21465c 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OpResult.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/component/result/OpResult.java
@@ -39,6 +39,7 @@
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -100,11 +101,11 @@ public static OpResult getOpResult(PageBase page, OperationResult result){
}
if (result.getParams() != null) {
- for (Map.Entry entry : result.getParams().entrySet()) {
+ for (Map.Entry> entry : result.getParams().entrySet()) {
String paramValue = null;
- Object value = entry.getValue();
- if (value != null) {
- paramValue = value.toString();
+ Collection values = entry.getValue();
+ if (values != null) {
+ paramValue = values.toString();
}
opResult.getParams().add(new Param(entry.getKey(), paramValue));
@@ -112,11 +113,11 @@ public static OpResult getOpResult(PageBase page, OperationResult result){
}
if(result.getContext() != null){
- for (Map.Entry entry : result.getContext().entrySet()) {
+ for (Map.Entry> entry : result.getContext().entrySet()) {
String contextValue = null;
- Object value = entry.getValue();
- if (value != null) {
- contextValue = value.toString();
+ Collection values = entry.getValue();
+ if (values != null) {
+ contextValue = values.toString();
}
opResult.getContexts().add(new Context(entry.getKey(), contextValue));
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java
index c48278cc29c..71dfa8b8941 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/page/PageBase.java
@@ -1079,25 +1079,29 @@ public RestartResponseException getRestartResponseException(Class extends Page
}
// TODO untangle this brutal code (list vs objectable vs other cases)
- public void validateObject(String lexicalRepresentation, final Holder objectHolder,
- String language, boolean validateSchema, Class clazz, OperationResult result) {
+ public void parseObject(String lexicalRepresentation, final Holder objectHolder,
+ String language, boolean validateSchema, boolean skipChecks, Class clazz, OperationResult result) {
boolean isListOfObjects = List.class.isAssignableFrom(clazz);
boolean isObjectable = Objectable.class.isAssignableFrom(clazz);
- if (language == null || PrismContext.LANG_JSON.equals(language) || PrismContext.LANG_YAML.equals(language)
+ if (skipChecks || language == null || PrismContext.LANG_JSON.equals(language) || PrismContext.LANG_YAML.equals(language)
|| (!isObjectable && !isListOfObjects)) {
T object;
try {
if (isListOfObjects) {
List> prismObjects = getPrismContext().parserFor(lexicalRepresentation)
.language(language).parseObjects();
- for (PrismObject extends Objectable> prismObject : prismObjects) {
- prismObject.checkConsistence();
+ if (!skipChecks) {
+ for (PrismObject extends Objectable> prismObject : prismObjects) {
+ prismObject.checkConsistence();
+ }
}
object = (T) prismObjects;
} else if (isObjectable) {
PrismObject prismObject = getPrismContext().parserFor(lexicalRepresentation).language(language).parse();
- prismObject.checkConsistence();
+ if (!skipChecks) {
+ prismObject.checkConsistence();
+ }
object = (T) prismObject.asObjectable();
} else {
object = getPrismContext().parserFor(lexicalRepresentation).language(language).type(clazz).parseRealValue();
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java
index bb7ecc6fe41..f9206199481 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/gui/api/util/WebComponentUtil.java
@@ -1100,8 +1100,10 @@ public static boolean isSuccessOrHandledError(OperationResult result) {
}
public static boolean isSuccessOrHandledError(OperationResultType resultType) {
- OperationResult result = OperationResult.createOperationResult(resultType);
- return isSuccessOrHandledError(result);
+ if (resultType == null) {
+ return false;
+ }
+ return resultType.getStatus() == OperationResultStatusType.SUCCESS || resultType.getStatus() == OperationResultStatusType.HANDLED_ERROR;
}
public static boolean isSuccessOrHandledErrorOrWarning(OperationResult result) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/ObjectPolicyConfigurationEditor.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/ObjectPolicyConfigurationEditor.java
index adcd434afaf..43d4f5998e2 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/ObjectPolicyConfigurationEditor.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/ObjectPolicyConfigurationEditor.java
@@ -256,11 +256,21 @@ public String load() {
if(config != null){
ObjectReferenceType ref = config.getTemplateRef();
- if(ref != null){
- sb.append(WebComponentUtil.getOrigStringFromPoly(ref.getTargetName())).append(": ");
+ if (ref != null) {
+ sb.append(WebComponentUtil.getOrigStringFromPoly(ref.getTargetName()));
}
- if(config.getType() != null){
+ if (config.getConflictResolution() != null) {
+ if (sb.length() > 0) {
+ sb.append(" ");
+ }
+ sb.append(getString("ObjectPolicyConfigurationEditor.conflictResolution"));
+ }
+
+ if(config.getType() != null) {
+ if (sb.length() > 0) {
+ sb.append(": ");
+ }
sb.append(config.getType().getLocalPart());
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java
index fe5d3d2b22e..db3f1dcef11 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/data/SelectableBeanObjectDataProvider.java
@@ -39,6 +39,8 @@
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
+import com.evolveum.midpoint.util.exception.SchemaException;
+import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
@@ -209,11 +211,15 @@ protected Iterator> handleNotSuccessOrHandledErrorInIterator(O
public SelectableBean createDataObjectWrapper(O obj) {
SelectableBean selectable = new SelectableBean(obj);
- if (!WebComponentUtil.isSuccessOrHandledError(obj.getFetchResult())){
- selectable.setResult(obj.getFetchResult());
+ if (!WebComponentUtil.isSuccessOrHandledError(obj.getFetchResult())) {
+ try {
+ selectable.setResult(obj.getFetchResult());
+ } catch (SchemaException e) {
+ throw new SystemException(e.getMessage(), e);
+ }
}
for (O s : selected){
- if (s.getOid().equals(obj.getOid())){
+ if (s.getOid().equals(obj.getOid())) {
selectable.setSelected(true);
}
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/DataLanguagePanel.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/DataLanguagePanel.java
index 1cb2b7a8d38..af6646796f1 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/DataLanguagePanel.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/input/DataLanguagePanel.java
@@ -20,7 +20,7 @@
import com.evolveum.midpoint.prism.Objectable;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
-import com.evolveum.midpoint.schema.constants.SchemaConstants;
+import com.evolveum.midpoint.prism.PrismSerializer;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.Holder;
import org.apache.commons.lang3.StringUtils;
@@ -76,23 +76,27 @@ protected void onStateChanged(int updatedIndex, AjaxRequestTarget target) {
return;
}
- OperationResult result = new OperationResult(DataLanguagePanel.class.getName() + ".validateObject");
+ OperationResult result = new OperationResult(DataLanguagePanel.class.getName() + ".parseObject");
Holder objectHolder = new Holder<>(null);
try {
- pageBase.validateObject(currentObjectString, objectHolder, LANGUAGES.get(currentLanguageIndex), isValidateSchema(), dataType, result);
+ pageBase.parseObject(currentObjectString, objectHolder, LANGUAGES.get(currentLanguageIndex), false, true, dataType, result);
if (result.isAcceptable()) {
Object updatedObject = objectHolder.getValue();
String updatedObjectString;
+ PrismSerializer serializer = pageBase.getPrismContext().serializerFor(updatedLanguage);
if (List.class.isAssignableFrom(dataType)) {
- updatedObjectString = pageBase.getPrismContext().serializerFor(updatedLanguage)
- .serializeObjects((List>) updatedObject, SchemaConstants.C_OBJECTS);
+ @SuppressWarnings({ "unchecked", "raw" })
+ List> list = (List>) updatedObject;
+ if (list.size() != 1) {
+ updatedObjectString = serializer.serializeObjects(list, null);
+ } else {
+ updatedObjectString = serializer.serialize(list.get(0));
+ }
} else if (Objectable.class.isAssignableFrom(dataType)) {
- updatedObjectString = pageBase.getPrismContext().serializerFor(updatedLanguage)
- .serialize(((Objectable) updatedObject).asPrismObject());
+ updatedObjectString = serializer.serialize(((Objectable) updatedObject).asPrismObject());
} else {
- updatedObjectString = pageBase.getPrismContext().serializerFor(updatedLanguage)
- .serializeRealValue(updatedObject);
+ updatedObjectString = serializer.serializeRealValue(updatedObject);
}
processLanguageSwitch(target, updatedIndex, updatedLanguage, updatedObjectString);
} else {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/SelectableBean.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/SelectableBean.java
index 05998647efb..6ca0fa4656c 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/SelectableBean.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/component/util/SelectableBean.java
@@ -25,6 +25,7 @@
import com.evolveum.midpoint.schema.util.MiscSchemaUtil;
import com.evolveum.midpoint.util.DebugDumpable;
import com.evolveum.midpoint.util.DebugUtil;
+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.web.component.data.column.InlineMenuable;
@@ -77,7 +78,7 @@ public void setResult(OperationResult result) {
this.result = result;
}
- public void setResult(OperationResultType resultType) {
+ public void setResult(OperationResultType resultType) throws SchemaException {
this.result = OperationResult.createOperationResult(resultType);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageBulkAction.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageBulkAction.java
index 96ee04a99d0..70c4388cd78 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageBulkAction.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageBulkAction.java
@@ -142,7 +142,7 @@ private void startPerformed(AjaxRequestTarget target) {
getScriptingService().evaluateExpression((ScriptingExpressionType) parsed, task, result);
result.recordStatus(OperationResultStatus.SUCCESS, "Action executed. Returned " + executionResult.getDataOutput().size() + " item(s). Console and data output available via 'Export to XML' function.");
result.addReturn("console", executionResult.getConsoleOutput());
- result.addCollectionOfSerializablesAsReturn("data", executionResult.getDataOutput());
+ result.addArbitraryObjectCollectionAsReturn("data", executionResult.getDataOutput());
} catch (ScriptExecutionException|SchemaException|SecurityViolationException e) {
result.recordFatalError("Couldn't execute bulk action", e);
LoggingUtils.logUnexpectedException(LOGGER, "Couldn't execute bulk action", e);
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugView.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugView.java
index 463482e289f..df2773f1323 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugView.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageDebugView.java
@@ -410,6 +410,6 @@ public void savePerformed(AjaxRequestTarget target) {
}
private void validateObject(OperationResult result, Holder objectHolder) {
- validateObject(objectViewDto.getXml(), objectHolder, dataLanguage, validateSchema.getObject(), Objectable.class, result);
+ parseObject(objectViewDto.getXml(), objectHolder, dataLanguage, validateSchema.getObject(), false, Objectable.class, result);
}
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageImportObject.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageImportObject.java
index 73fda8c9ff7..b1390a72f33 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageImportObject.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageImportObject.java
@@ -92,13 +92,13 @@ public class PageImportObject extends PageAdminConfiguration {
private static final Integer INPUT_FILE = 1;
private static final Integer INPUT_XML = 2;
- private LoadableModel model;
+ private LoadableModel optionsModel;
private IModel xmlEditorModel;
private String dataLanguage;
public PageImportObject() {
- model = new LoadableModel(false) {
+ optionsModel = new LoadableModel(false) {
@Override
protected ImportOptionsType load() {
@@ -114,7 +114,7 @@ private void initLayout() {
Form mainForm = new Form(ID_MAIN_FORM);
add(mainForm);
- ImportOptionsPanel importOptions = new ImportOptionsPanel(ID_IMPORT_OPTIONS, model);
+ ImportOptionsPanel importOptions = new ImportOptionsPanel(ID_IMPORT_OPTIONS, optionsModel);
mainForm.add(importOptions);
final WebMarkupContainer input = new WebMarkupContainer(ID_INPUT);
@@ -336,7 +336,7 @@ private void savePerformed(boolean raw, String operationName, AjaxRequestTarget
Task task = createSimpleTask(operationName);
InputDescription inputDescription = getInputDescription(raw);
stream = inputDescription.inputStream;
- getModelService().importObjectsFromStream(stream, inputDescription.dataLanguage, model.getObject(), task, result);
+ getModelService().importObjectsFromStream(stream, inputDescription.dataLanguage, optionsModel.getObject(), task, result);
result.recomputeStatus();
} catch (Exception ex) {
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java
index bd343d11302..8c6dd7fa0c0 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/PageSystemConfiguration.java
@@ -341,6 +341,7 @@ private void saveObjectPolicies(SystemConfigurationType systemConfig) {
}
newObjectPolicyConfig.getPropertyConstraint().addAll(constraintList);
+ newObjectPolicyConfig.setConflictResolution(o.getConflictResolution());
confList.add(newObjectPolicyConfig);
}
diff --git a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/ImportOptionsPanel.html b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/ImportOptionsPanel.html
index a1d5e8cdd18..378f61c2617 100644
--- a/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/ImportOptionsPanel.html
+++ b/gui/admin-gui/src/main/java/com/evolveum/midpoint/web/page/admin/configuration/component/ImportOptionsPanel.html
@@ -54,28 +54,22 @@
-
-
-
-