Skip to content

Commit

Permalink
merge conflic on OperationResult
Browse files Browse the repository at this point in the history
  • Loading branch information
katkav committed Jun 5, 2018
1 parent 8a246cb commit bda5a5d
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 32 deletions.
Expand Up @@ -15,37 +15,46 @@
*/
package com.evolveum.midpoint.schema.result;

import static org.apache.commons.collections4.CollectionUtils.emptyIfNull;

import java.io.Serializable;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
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;
import java.util.function.Function;

import javax.xml.namespace.QName;

import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;

import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.util.CloneUtil;

import com.evolveum.midpoint.schema.util.LocalizationUtil;
import com.evolveum.midpoint.util.*;

import com.evolveum.midpoint.xml.ns._public.common.common_3.LocalizableMessageType;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.Validate;

import com.evolveum.midpoint.schema.constants.ObjectTypes;
import com.evolveum.midpoint.schema.util.LocalizationUtil;
import com.evolveum.midpoint.schema.util.ParamsTypeUtil;
import com.evolveum.midpoint.util.DebugDumpable;
import com.evolveum.midpoint.util.DebugUtil;
import com.evolveum.midpoint.util.LocalizableMessage;
import com.evolveum.midpoint.util.MiscUtil;
import com.evolveum.midpoint.util.QNameUtil;
import com.evolveum.midpoint.util.exception.CommonException;
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_3.LocalizableMessageType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationResultType;

import static org.apache.commons.collections4.CollectionUtils.emptyIfNull;

/**
* Nested Operation Result.
*
Expand Down Expand Up @@ -1266,10 +1275,14 @@ public static OperationResult createOperationResult(OperationResultType result)
}

public OperationResultType createOperationResultType() {
return createOperationResultType(this);
return createOperationResultType(null);
}

public OperationResultType createOperationResultType(Function<LocalizableMessage, String> resolveKeys) {
return createOperationResultType(this, resolveKeys);
}

private OperationResultType createOperationResultType(OperationResult opResult) {
private OperationResultType createOperationResultType(OperationResult opResult, Function<LocalizableMessage, String> resolveKeys) {
OperationResultType resultType = new OperationResultType();
resultType.setToken(opResult.getToken());
resultType.setStatus(OperationResultStatus.createStatusType(opResult.getStatus()));
Expand Down Expand Up @@ -1315,7 +1328,7 @@ private OperationResultType createOperationResultType(OperationResult opResult)
}

if (opResult.getUserFriendlyMessage() != null) {
LocalizableMessageType msg = LocalizationUtil.createLocalizableMessageType(opResult.getUserFriendlyMessage());
LocalizableMessageType msg = LocalizationUtil.createLocalizableMessageType(opResult.getUserFriendlyMessage(), resolveKeys);
resultType.setUserFriendlyMessage(msg);
}

Expand All @@ -1324,7 +1337,7 @@ private OperationResultType createOperationResultType(OperationResult opResult)
resultType.setReturns(ParamsTypeUtil.toParamsType(opResult.getReturns()));

for (OperationResult subResult : opResult.getSubresults()) {
resultType.getPartialResults().add(opResult.createOperationResultType(subResult));
resultType.getPartialResults().add(opResult.createOperationResultType(subResult, resolveKeys));
}

return resultType;
Expand Down Expand Up @@ -1917,5 +1930,4 @@ public boolean equals(Object obj) {
public String toString() {
return "R(" + operation + " " + status + " " + message + ")";
}

}
Expand Up @@ -22,12 +22,15 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.LocalizableMessageListType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.LocalizableMessageType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.SingleLocalizableMessageType;

import org.apache.commons.lang.StringUtils;
import org.jetbrains.annotations.NotNull;

import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import java.util.function.Function;

/**
* @author mederly
Expand Down Expand Up @@ -56,47 +59,56 @@ public static String resolve(String key, Object... params ) {
}

public static LocalizableMessageType createLocalizableMessageType(LocalizableMessage message) {
return createLocalizableMessageType(message, null);
}

public static LocalizableMessageType createLocalizableMessageType(LocalizableMessage message, Function<LocalizableMessage, String> resolveKeys) {
if (message == null) {
return null;
} else if (message instanceof SingleLocalizableMessage) {
return createLocalizableMessageType((SingleLocalizableMessage) message);
return createLocalizableMessageType((SingleLocalizableMessage) message, resolveKeys);
} else if (message instanceof LocalizableMessageList) {
return createLocalizableMessageType((LocalizableMessageList) message);
return createLocalizableMessageType((LocalizableMessageList) message, resolveKeys);
} else {
throw new AssertionError("Unsupported localizable message type: " + message);
}
}

@NotNull
private static LocalizableMessageListType createLocalizableMessageType(@NotNull LocalizableMessageList messageList) {
private static LocalizableMessageListType createLocalizableMessageType(@NotNull LocalizableMessageList messageList, Function<LocalizableMessage, String> resolveKeys) {
LocalizableMessageListType rv = new LocalizableMessageListType();
messageList.getMessages().forEach(message -> rv.getMessage().add(createLocalizableMessageType(message)));
rv.setSeparator(createLocalizableMessageType(messageList.getSeparator()));
rv.setPrefix(createLocalizableMessageType(messageList.getPrefix()));
rv.setPostfix(createLocalizableMessageType(messageList.getPostfix()));
messageList.getMessages().forEach(message -> rv.getMessage().add(createLocalizableMessageType(message, resolveKeys)));
rv.setSeparator(createLocalizableMessageType(messageList.getSeparator(), resolveKeys));
rv.setPrefix(createLocalizableMessageType(messageList.getPrefix(), resolveKeys));
rv.setPostfix(createLocalizableMessageType(messageList.getPostfix(), resolveKeys));
return rv;
}

@NotNull
private static SingleLocalizableMessageType createLocalizableMessageType(@NotNull SingleLocalizableMessage message) {
private static SingleLocalizableMessageType createLocalizableMessageType(@NotNull SingleLocalizableMessage message, Function<LocalizableMessage, String> resolveKeys) {
SingleLocalizableMessageType rv = new SingleLocalizableMessageType();
rv.setKey(message.getKey());
if (message.getArgs() != null) {
for (Object argument : message.getArgs()) {
LocalizableMessageArgumentType messageArgument;
if (argument instanceof LocalizableMessage) {
messageArgument = new LocalizableMessageArgumentType()
.localizable(createLocalizableMessageType(((LocalizableMessage) argument)));
.localizable(createLocalizableMessageType(((LocalizableMessage) argument), resolveKeys));
} else {
messageArgument = new LocalizableMessageArgumentType().value(argument != null ? argument.toString() : null);
}
rv.getArgument().add(messageArgument);
}
}
if (message.getFallbackLocalizableMessage() != null) {
rv.setFallbackLocalizableMessage(createLocalizableMessageType(message.getFallbackLocalizableMessage()));
rv.setFallbackLocalizableMessage(createLocalizableMessageType(message.getFallbackLocalizableMessage(), resolveKeys));
}

if (StringUtils.isBlank(message.getFallbackMessage()) && resolveKeys != null) {
rv.setFallbackMessage(resolveKeys.apply(message));
} else {
rv.setFallbackMessage(message.getFallbackMessage());
}
rv.setFallbackMessage(message.getFallbackMessage());
return rv;
}

Expand Down
Expand Up @@ -23,7 +23,9 @@
import java.lang.reflect.Type;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import java.util.Optional;
import java.util.function.Function;

import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
Expand All @@ -32,13 +34,15 @@
import javax.ws.rs.ext.MessageBodyWriter;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.common.LocalizationService;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.util.exception.SystemException;
import org.apache.cxf.jaxrs.model.ClassResourceInfo;
import org.apache.cxf.jaxrs.provider.AbstractConfigurableProvider;
import org.springframework.beans.factory.annotation.Autowired;

import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.LocalizableMessage;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
Expand All @@ -49,10 +53,10 @@ public abstract class MidpointAbstractProvider<T> extends AbstractConfigurablePr

private static transient Trace LOGGER = TraceManager.getTrace(MidpointAbstractProvider.class);

@Autowired
protected PrismContext prismContext;
@Autowired protected PrismContext prismContext;
@Autowired protected LocalizationService localizationService;

// @Override
@Override
public void init(List<ClassResourceInfo> cris) {
setEnableStreaming(true);
}
Expand Down Expand Up @@ -91,7 +95,9 @@ public void writeTo(T object, Class<?> type, Type genericType,
if (object instanceof PrismObject) {
xml = serializer.serialize((PrismObject<?>) object);
} else if (object instanceof OperationResult) {
OperationResultType operationResultType = ((OperationResult) object).createOperationResultType();
// OperationResultType operationResultType = ((OperationResult) object).createOperationResultType();
Function<LocalizableMessage, String> resolveKeys = msg -> localizationService.translate(msg, Locale.US);
OperationResultType operationResultType = ((OperationResult) object).createOperationResultType(resolveKeys);
xml = serializer.serializeAnyData(operationResultType, fakeQName);
} else {
xml = serializer.serializeAnyData(object, fakeQName);
Expand Down

0 comments on commit bda5a5d

Please sign in to comment.