Skip to content

Commit

Permalink
mid-8934 Simulation results: object icons do not use icons from arche…
Browse files Browse the repository at this point in the history
…types
  • Loading branch information
KaterynaHonchar committed Sep 29, 2023
1 parent 5c8aabb commit be201dd
Show file tree
Hide file tree
Showing 12 changed files with 38 additions and 31 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,15 @@ public static DisplayType createDisplayType(String iconCssClass, String iconColo
return displayType;
}

public static <O extends ObjectType> DisplayType getArchetypePolicyDisplayType(O object, PageAdminLTE pageBase) {
public static <O extends ObjectType> DisplayType getArchetypePolicyDisplayType(PrismObject<O> object, PageAdminLTE pageBase) {
if (object == null) {
return null;
}

return getArchetypePolicyDisplayType(object.asPrismObject(), pageBase);
return getArchetypePolicyDisplayType(object.asObjectable(), pageBase);
}

public static <O extends ObjectType> DisplayType getArchetypePolicyDisplayType(PrismObject<O> object, PageAdminLTE pageBase) {
public static <O extends ObjectType> DisplayType getArchetypePolicyDisplayType(O object, PageAdminLTE pageBase) {
if (object != null) {
try {
ArchetypePolicyType archetypePolicy = WebComponentUtil.getArchetypeSpecification(object, pageBase);
Expand Down Expand Up @@ -220,7 +220,7 @@ public static <O extends ObjectType> DisplayType getDisplayTypeForObject(O obj,
if (obj == null) {
return null;
}
DisplayType displayType = getArchetypePolicyDisplayType(obj.asPrismObject(), pageBase);
DisplayType displayType = getArchetypePolicyDisplayType(obj, pageBase);

if (displayType == null) {
displayType = createDisplayType(IconAndStylesUtil.createDefaultIcon(obj.asPrismObject()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2418,22 +2418,22 @@ private static String formatDuration(long durationMillis, boolean suppressLeadin
return duration;
}

public static <O extends ObjectType> ArchetypePolicyType getArchetypeSpecification(PrismObject<O> object, ModelServiceLocator locator) {
public static <O extends ObjectType> ArchetypePolicyType getArchetypeSpecification(O object, ModelServiceLocator locator) {
if (object == null) {
return null;
}

OperationResult result = new OperationResult("loadArchetypeSpecificationFor" + getName(object));

if (!object.canRepresent(AssignmentHolderType.class)) {
if (!AssignmentHolderType.class.isAssignableFrom(object.getClass())) {
return null;
}
ArchetypePolicyType spec = null;
try {
if (ArchetypeType.class.equals(object.getCompileTimeClass())) {
spec = locator.getModelInteractionService().mergeArchetypePolicies((PrismObject<ArchetypeType>) object, result);
if (ArchetypeType.class.equals(object.getClass())) {
spec = locator.getModelInteractionService().mergeArchetypePolicies((ArchetypeType) object, result);
} else {
spec = locator.getModelInteractionService().determineArchetypePolicy((PrismObject<? extends AssignmentHolderType>) object, result);
spec = locator.getModelInteractionService().determineArchetypePolicy((AssignmentHolderType) object, result);
}
} catch (SchemaException | ConfigurationException ex) {
result.recordPartialError(ex.getLocalizedMessage());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ protected GuiObjectDetailsPageType loadDetailsPageConfiguration() {

protected GuiObjectDetailsPageType applyArchetypePolicy(GuiObjectDetailsPageType defaultPageConfig) {
OperationResult result = new OperationResult("mergeArchetypeConfig");
PrismObject<AH> assignmentHolder = getPrismObject();
AH assignmentHolder = getObjectType();
try {
ArchetypePolicyType archetypePolicyType = getModelServiceLocator().getModelInteractionService().determineArchetypePolicy(assignmentHolder, result);
return getAdminGuiConfigurationMergeManager().mergeObjectDetailsPageConfiguration(defaultPageConfig, archetypePolicyType, result);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ protected DisplayType getIconDisplayType(IModel<PrismContainerValueWrapper<Assig
DirectAndIndirectAssignmentPanel.this.getPageBase());
if (CollectionUtils.isNotEmpty(targetObjectList) && targetObjectList.size() == 1) {
ObjectType targetObject = targetObjectList.get(0);
DisplayType displayType = GuiDisplayTypeUtil.getArchetypePolicyDisplayType(targetObject.asPrismObject(), DirectAndIndirectAssignmentPanel.this.getPageBase());
DisplayType displayType = GuiDisplayTypeUtil.getArchetypePolicyDisplayType(targetObject, DirectAndIndirectAssignmentPanel.this.getPageBase());
if (displayType != null) {
String disabledStyle;
if (targetObject instanceof FocusType) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ public static IColumn<SelectableBean<SimulationResultProcessedObjectType>, Strin
protected DisplayType createDisplayType(IModel<SelectableBean<SimulationResultProcessedObjectType>> model) {
SimulationResultProcessedObjectType object = model.getObject().getValue();
ObjectType obj = object.getBefore() != null ? object.getBefore() : object.getAfter();
if (obj == null || obj.asPrismObject() == null) {
if (obj == null) {
return new DisplayType()
.icon(new IconType().cssClass(IconAndStylesUtil.createDefaultColoredIcon(object.getType())));
}
Expand All @@ -127,8 +127,13 @@ protected DisplayType createDisplayType(IModel<SelectableBean<SimulationResultPr
if (StringUtils.isNotEmpty(iconCss)) {
return archetypeDisplayType;
}
return new DisplayType()
.icon(new IconType().cssClass(IconAndStylesUtil.createDefaultIcon(obj.asPrismObject())));
if (obj.asPrismObject() != null) {
return new DisplayType()
.icon(new IconType().cssClass(IconAndStylesUtil.createDefaultIcon(obj.asPrismObject())));
} else {
return new DisplayType()
.icon(new IconType().cssClass(IconAndStylesUtil.createDefaultColoredIcon(object.getType())));
}
}
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ private IModel<String> getDisplayNameModel() {
private IModel<String> getArchetypeModel() {
return () -> {
DisplayType archetypeDisplay =
GuiDisplayTypeUtil.getArchetypePolicyDisplayType(getModelObject().asPrismObject(), getParentPage());
GuiDisplayTypeUtil.getArchetypePolicyDisplayType(getModelObject(), getParentPage());
return GuiDisplayTypeUtil.getTranslatedLabel(archetypeDisplay);
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,8 @@ protected List<ObjectReferenceType> load() {
List<ObjectReferenceType> policyGroupsList = new ArrayList<>();
OperationResult result = new OperationResult(OPERATION_LOAD_SYS_CONFIG);
try {
ArchetypePolicyType archetypePolicy = getPageBase().getModelInteractionService().determineArchetypePolicy(getAbstractRoleModelObject(), result);
ArchetypePolicyType archetypePolicy = getPageBase().getModelInteractionService().determineArchetypePolicy(
getAbstractRoleModelObject(), result);
if (archetypePolicy == null){
return policyGroupsList;
} else {
Expand Down Expand Up @@ -95,9 +96,10 @@ protected void populateItem(ListItem<ObjectReferenceType> listItem) {
add(policyGroupsPanel);
}

private PrismObject<F> getAbstractRoleModelObject(){
private F getAbstractRoleModelObject(){
if (abstractRoleModel != null && abstractRoleModel.getObject() != null){
return abstractRoleModel.getObject().getObject();
PrismObject<F> obj = abstractRoleModel.getObject().getObject();
return obj == null ? null : obj.asObjectable();
}
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -486,9 +486,9 @@ TaskType submitTaskFromTemplate(String templateTaskOid, Map<QName, Object> exten
* and search results). Therefore this method is supposed to be very efficient.
* It should be using caching as much as possible.
*/
<O extends AssignmentHolderType> ArchetypePolicyType determineArchetypePolicy(PrismObject<O> assignmentHolder, OperationResult result) throws SchemaException, ConfigurationException;
<O extends AssignmentHolderType> ArchetypePolicyType determineArchetypePolicy(O assignmentHolder, OperationResult result) throws SchemaException, ConfigurationException;

ArchetypePolicyType mergeArchetypePolicies(PrismObject<ArchetypeType> archetype, OperationResult result)
ArchetypePolicyType mergeArchetypePolicies(ArchetypeType archetype, OperationResult result)
throws SchemaException, ConfigurationException;
/**
* Returns data structure that contains information about possible assignment targets for a particular holder object.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1956,7 +1956,7 @@ public TaskType submitTaskFromTemplate(String templateTaskOid, Map<QName, Object
}

@Override
public <O extends AssignmentHolderType> ArchetypePolicyType determineArchetypePolicy(PrismObject<O> assignmentHolder, OperationResult result) throws SchemaException, ConfigurationException {
public <O extends AssignmentHolderType> ArchetypePolicyType determineArchetypePolicy(O assignmentHolder, OperationResult result) throws SchemaException, ConfigurationException {
return archetypeManager.determineArchetypePolicy(assignmentHolder, result);
}

Expand All @@ -1966,9 +1966,9 @@ private ArchetypeType determineArchetype(PrismObject<? extends AssignmentHolderT
}

@Override
public ArchetypePolicyType mergeArchetypePolicies(PrismObject<ArchetypeType> archetype, OperationResult result)
public ArchetypePolicyType mergeArchetypePolicies(ArchetypeType archetype, OperationResult result)
throws SchemaException, ConfigurationException {
return archetypeManager.getPolicyForArchetype(asObjectable(archetype), result);
return archetypeManager.getPolicyForArchetype(archetype, result);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public void test100reconTaskArchetypePolicy() throws Exception {
.assignment(new AssignmentType(prismContext).targetRef(ARCHETYPE_RECON_TASK_OID, ArchetypeType.COMPLEX_TYPE));

// @formatter:off
assertArchetypePolicy(reconTask.asPrismObject())
assertArchetypePolicy(reconTask)
.displayType()
.assertLabel("Reconciliation task")
.assertPluralLabel("Reconciliation tasks")
Expand Down Expand Up @@ -136,7 +136,7 @@ public void test110syncTaskArchetypePolicy() throws Exception {
.assignment(new AssignmentType(prismContext).targetRef(ARCHETYPE_LIVE_SYNC_TASK_OID, ArchetypeType.COMPLEX_TYPE));

// @formatter:off
assertArchetypePolicy(syncTask.asPrismObject())
assertArchetypePolicy(syncTask)
.displayType()
.assertLabel("Live synchronization task")
.assertPluralLabel("Live synchronization tasks")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -267,7 +267,7 @@ public void test100AssignJackArchetypeEmployee() throws Exception {
// @formatter:on

and("archetype policy is recognized for jack");
assertArchetypePolicy(userAfter)
assertArchetypePolicy(userAfter.asObjectable())
.displayType()
.assertLabel(ARCHETYPE_EMPLOYEE_DISPLAY_LABEL)
.assertPluralLabel(ARCHETYPE_EMPLOYEE_DISPLAY_PLURAL_LABEL);
Expand Down Expand Up @@ -407,7 +407,7 @@ public void test109UnassignJackArchetypeEmployee() throws Exception {
// @formatter:on

// Archetype policy derived from system config (global)
assertArchetypePolicy(userAfter)
assertArchetypePolicy(userAfter.asObjectable())
.assertNoDisplay()
.assertObjectTemplate(USER_TEMPLATE_ARCHETYPES_GLOBAL_OID);
}
Expand Down Expand Up @@ -447,7 +447,7 @@ public void test110AssignJackRoleEmployeeBase() throws Exception {
.assertCostCenter(costCenterEmployee())
.getObject();

assertArchetypePolicy(userAfter).display()
assertArchetypePolicy(userAfter.asObjectable()).display()
.displayType()
.assertLabel(ARCHETYPE_EMPLOYEE_DISPLAY_LABEL)
.assertPluralLabel(ARCHETYPE_EMPLOYEE_DISPLAY_PLURAL_LABEL);
Expand Down Expand Up @@ -499,7 +499,7 @@ public void test115UnassignJackRoleEmployeeBase() throws Exception {
.getObject();

// Archetype policy derived from system config (global)
assertArchetypePolicy(userAfter)
assertArchetypePolicy(userAfter.asObjectable())
.assertNoDisplay()
.assertObjectTemplate(USER_TEMPLATE_ARCHETYPES_GLOBAL_OID);

Expand Down Expand Up @@ -719,7 +719,7 @@ public void test133AssignJackAuxiliaryManagerArchetype() throws Exception {
.assertEmployeeNumber(CONTRACTOR_EMPLOYEE_NUMBER)
.assertCostCenter("1234");

PrismObject<UserType> userJackAfter = jackAsserter.getObject();
UserType userJackAfter = jackAsserter.getObjectable();
assertArchetypePolicy(userJackAfter).display()
.displayType()
.assertLabel("Contractor")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7107,7 +7107,7 @@ protected void failAllow(String action, SecurityViolationException e) throws Sec
}
}

protected <O extends AssignmentHolderType> ArchetypePolicyAsserter<Void> assertArchetypePolicy(PrismObject<O> object) throws SchemaException, ConfigurationException {
protected <O extends AssignmentHolderType> ArchetypePolicyAsserter<Void> assertArchetypePolicy(O object) throws SchemaException, ConfigurationException {
OperationResult result = new OperationResult("assertArchetypePolicy");
ArchetypePolicyType archetypePolicy = modelInteractionService.determineArchetypePolicy(object, result);
ArchetypePolicyAsserter<Void> asserter = new ArchetypePolicyAsserter<>(archetypePolicy, null, "for " + object);
Expand Down

0 comments on commit be201dd

Please sign in to comment.