Skip to content

Commit

Permalink
MID-8738:fix for redirect back from wizard to details panel
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Apr 5, 2023
1 parent 38d9426 commit d7abb8f
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ protected O load() {
};
}

public WrapperContext createWrapperContext(){
public WrapperContext createWrapperContext() {
Task task = getModelServiceLocator().createSimpleTask("createWrapper");
OperationResult result = task.getResult();
WrapperContext context = createWrapperContext(task, result);
Expand All @@ -133,6 +133,7 @@ public List<? extends ContainerPanelConfigurationType> getPanelConfigurations()
}
return detailsPage.getPanel();
}

private void loadParentOrgs(PrismObject<O> object) {
Task task = getModelServiceLocator().createSimpleTask(OPERATION_LOAD_PARENT_ORG);
OperationResult subResult = task.getResult();
Expand Down Expand Up @@ -169,7 +170,6 @@ private void loadParentOrgs(PrismObject<O> object) {
subResult.computeStatus();
}


protected PageBase getPageBase() {
return (PageBase) getModelServiceLocator();
}
Expand Down Expand Up @@ -206,51 +206,51 @@ private Collection<ObjectDelta<? extends ObjectType>> collectDeltasFromObject(Op
WebComponentUtil.encryptCredentials(delta, true, modelServiceLocator);
switch (objectWrapper.getStatus()) {
case ADDED:
PrismObject<O> objectToAdd = delta.getObjectToAdd();
PrismObject<O> objectToAdd = delta.getObjectToAdd();
// WebComponentUtil.encryptCredentials(objectToAdd, true, modelServiceLocator);
prepareObjectForAdd(objectToAdd);
getPrismContext().adopt(objectToAdd, objectWrapper.getCompileTimeClass());
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Delta before add user:\n{}", delta.debugDump(3));
}
prepareObjectForAdd(objectToAdd);
getPrismContext().adopt(objectToAdd, objectWrapper.getCompileTimeClass());
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Delta before add user:\n{}", delta.debugDump(3));
}

if (!delta.isEmpty()) {
delta.revive(getPrismContext());
if (!delta.isEmpty()) {
delta.revive(getPrismContext());

final Collection<ObjectDelta<? extends ObjectType>> deltas = MiscUtil.createCollection(delta);
validationErrors = performCustomValidation(objectToAdd, deltas);
return deltas;
final Collection<ObjectDelta<? extends ObjectType>> deltas = MiscUtil.createCollection(delta);
validationErrors = performCustomValidation(objectToAdd, deltas);
return deltas;

// if (checkValidationErrors(target, validationErrors)) {
// return null;
// }
}
}
break;

case NOT_CHANGED:
// WebComponentUtil.encryptCredentials(delta, true, modelServiceLocator);
prepareObjectDeltaForModify(delta); //preparing of deltas for projections (ADD, DELETE, UNLINK)
prepareObjectDeltaForModify(delta); //preparing of deltas for projections (ADD, DELETE, UNLINK)

if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Delta before modify user:\n{}", delta.debugDump(3));
}
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Delta before modify user:\n{}", delta.debugDump(3));
}

Collection<ObjectDelta<? extends ObjectType>> deltas = new ArrayList<>();
if (!delta.isEmpty()) {
delta.revive(getPrismContext());
deltas.add(delta);
}
Collection<ObjectDelta<? extends ObjectType>> deltas = new ArrayList<>();
if (!delta.isEmpty()) {
delta.revive(getPrismContext());
deltas.add(delta);
}

List<ObjectDelta<? extends ObjectType>> additionalDeltas = getAdditionalModifyDeltas(result);
if (additionalDeltas != null) {
for (ObjectDelta additionalDelta : additionalDeltas) {
if (!additionalDelta.isEmpty()) {
additionalDelta.revive(getPrismContext());
deltas.add(additionalDelta);
}
List<ObjectDelta<? extends ObjectType>> additionalDeltas = getAdditionalModifyDeltas(result);
if (additionalDeltas != null) {
for (ObjectDelta additionalDelta : additionalDeltas) {
if (!additionalDelta.isEmpty()) {
additionalDelta.revive(getPrismContext());
deltas.add(additionalDelta);
}
}
return deltas;
}
return deltas;
// support for add/delete containers (e.g. delete credentials)
default:
throw new UnsupportedOperationException("Unsupported state");
Expand Down Expand Up @@ -311,7 +311,6 @@ protected List<ObjectDelta<? extends ObjectType>> getAdditionalModifyDeltas(Oper
return new ArrayList<>();
}


public void reset() {
prismObjectModel.detach();
objectWrapperModel.reset();
Expand Down Expand Up @@ -348,7 +347,7 @@ public void reloadPrismObjectModel(@NotNull PrismObject<O> newObject) {
savedDeltas.forEach(delta -> {
try {
if (delta.isAdd()) {
if (newObject.isEmpty()) {
if (newObject.getOid() == null) {
newObject.getValue().mergeContent(delta.getObjectToAdd().getValue(), List.of());
}
} else {
Expand All @@ -359,7 +358,7 @@ public void reloadPrismObjectModel(@NotNull PrismObject<O> newObject) {
}
});
}
prismObjectModel = new LoadableDetachableModel<>(){
prismObjectModel = new LoadableDetachableModel<>() {

@Override
protected PrismObject<O> load() {
Expand Down Expand Up @@ -442,10 +441,16 @@ private void mergeDeltas(
.findFirst();
if (match.isPresent()) {
ObjectDelta<? extends ObjectType> newDelta = delta.clone();
newDelta.merge(match.get());
if (newDelta.getOid() == null) {
newDelta.setOid(match.get().getOid());
newDelta.setChangeType(match.get().getChangeType());
if (match.get().isAdd() && match.get().getOid() == null
&& delta.isAdd() && delta.getOid() == null) {
newDelta = match.get().clone();
} else {
newDelta.merge(match.get());

if (newDelta.getOid() == null) {
newDelta.setOid(match.get().getOid());
newDelta.setChangeType(match.get().getChangeType());
}
}
if (!newDelta.isEmpty()) {
retDeltas.add(newDelta);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -389,18 +389,8 @@ public OperationResult onSaveObjectPerformed(AjaxRequestTarget target) {
}

private void backToDetailsFromWizard(AjaxRequestTarget target) {
//TODO change it and use parameter, when it will be implemented
ObjectDetailsStorage storage =
getSessionStorage().getObjectDetailsStorage("details" + ResourceType.class.getSimpleName());
ContainerPanelConfigurationType defaultConfig = null;
if (storage != null) {
defaultConfig = storage.getDefaultConfiguration();
}
DetailsFragment detailsFragment = createDetailsFragment();
PageAssignmentHolderDetails.this.addOrReplace(detailsFragment);
if (defaultConfig != null) {
replacePanel(defaultConfig, target);
}
target.add(detailsFragment);

getFeedbackPanel().setVisible(true);
Expand Down

0 comments on commit d7abb8f

Please sign in to comment.