Skip to content

Commit

Permalink
RW update - raw loading of resource when creating new resource in Nam…
Browse files Browse the repository at this point in the history
…eStep to prevent schema loading (that does not exist yet)
  • Loading branch information
Erik Suta committed Nov 14, 2014
1 parent e28d287 commit 8da0923
Showing 1 changed file with 18 additions and 2 deletions.
Expand Up @@ -23,6 +23,8 @@
import com.evolveum.midpoint.prism.PrismReferenceValue;
import com.evolveum.midpoint.prism.delta.DiffUtil;
import com.evolveum.midpoint.prism.delta.ObjectDelta;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.constants.SchemaConstants;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.util.logging.LoggingUtils;
Expand Down Expand Up @@ -389,6 +391,7 @@ private void discoverConnectors(ConnectorHostType host) {
public void applyState() {
PageBase page = (PageBase) getPage();
OperationResult result = new OperationResult(OPERATION_SAVE_RESOURCE);
boolean newResource;

try {
PrismObject<ResourceType> resource = resourceModel.getObject();
Expand All @@ -414,8 +417,14 @@ public void applyState() {
}
}

if(StringUtils.isNotEmpty(resource.getOid())){
newResource = false;
} else {
newResource = true;
}

ObjectDelta delta;
if (StringUtils.isNotEmpty(resource.getOid())) {
if (!newResource) {
PrismObject<ResourceType> oldResource = WebModelUtils.loadObject(ResourceType.class, resource.getOid(),
result, page);

Expand All @@ -426,8 +435,15 @@ public void applyState() {

WebModelUtils.save(delta, ModelExecuteOptions.createRaw(), result, page);

resource = WebModelUtils.loadObject(ResourceType.class, delta.getOid(), result, page);
if(!newResource){
resource = WebModelUtils.loadObject(ResourceType.class, delta.getOid(), result, page);
} else {
Collection<SelectorOptions<GetOperationOptions>> options = SelectorOptions.createCollection(GetOperationOptions.createRaw());
resource = WebModelUtils.loadObject(ResourceType.class, delta.getOid(), options ,result, page);
}

resourceModel.setObject(resource);

} catch (Exception ex) {
LoggingUtils.logException(LOGGER, "Couldn't save resource", ex);
result.recordFatalError("Couldn't save resource, reason: " + ex.getMessage(), ex);
Expand Down

0 comments on commit 8da0923

Please sign in to comment.