Skip to content

Commit

Permalink
Merge branch 'support-3.9' of https://github.com/Evolveum/midpoint in…
Browse files Browse the repository at this point in the history
…to support-3.9

# Conflicts:
#	provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ConnectorManager.java
#	provisioning/provisioning-impl/src/main/java/com/evolveum/midpoint/provisioning/impl/ResourceManager.java
#	provisioning/ucf-api/src/main/java/com/evolveum/midpoint/provisioning/ucf/api/ConnectorInstance.java
#	provisioning/ucf-impl-connid/src/main/java/com/evolveum/midpoint/provisioning/ucf/impl/connid/ConnectorInstanceConnIdImpl.java
  • Loading branch information
katkav committed Apr 23, 2019
2 parents ee34105 + 3bbd751 commit a36de5f
Show file tree
Hide file tree
Showing 70 changed files with 6,006 additions and 4,120 deletions.
2 changes: 1 addition & 1 deletion build-system/pom.xml
Expand Up @@ -83,7 +83,7 @@
<activiti-spring.version>5.22.0</activiti-spring.version>
<commons-email.version>1.3</commons-email.version>
<xmlsec.version>2.0.6</xmlsec.version>
<connid.version>1.5.0.8</connid.version>
<connid.version>1.5.0.10</connid.version>
<jasper.version>6.5.0</jasper.version>
<derby.version>10.11.1.1</derby.version>
<wro4j.version>1.8.0</wro4j.version>
Expand Down
Expand Up @@ -367,7 +367,7 @@ protected List<IColumn<SelectableBean<O>, String>> initColumns() {
columns.add(checkboxColumn);
}

IColumn<SelectableBean<O>, String> iconColumn = (IColumn) ColumnUtils.createIconColumn(type.getClassDefinition());
IColumn<SelectableBean<O>, String> iconColumn = createIconColumn();
columns.add(iconColumn);

IColumn<SelectableBean<O>, String> nameColumn = createNameColumn(null, null);
Expand Down Expand Up @@ -639,6 +639,10 @@ public StringResourceModel createStringResource(String resourceKey, Object... ob

protected abstract IColumn<SelectableBean<O>, String> createCheckboxColumn();

protected IColumn<SelectableBean<O>, String> createIconColumn(){
return (IColumn) ColumnUtils.createIconColumn(type.getClassDefinition());
}

protected abstract IColumn<SelectableBean<O>, String> createNameColumn(IModel<String> columnNameModel, String itemPath);

protected abstract List<IColumn<SelectableBean<O>, String>> createColumns();
Expand Down
Expand Up @@ -2539,8 +2539,11 @@ public static boolean isSubscriptionIdCorrect(String subscriptionId){
String expDateStr = subscriptionId.substring(2, 6);
dateFormat = new SimpleDateFormat("MMyy");
Date expDate = dateFormat.parse(expDateStr);
Calendar expireCalendarValue = Calendar.getInstance();
expireCalendarValue.setTime(expDate);
expireCalendarValue.add(Calendar.MONTH, 1);
Date currentDate = new Date(System.currentTimeMillis());
if (expDate.before(currentDate)) {
if (expireCalendarValue.getTime().before(currentDate) || expireCalendarValue.getTime().equals(currentDate)) {
return false;
}
} catch (Exception ex) {
Expand Down
Expand Up @@ -152,6 +152,7 @@ protected void configure(HttpSecurity http) throws Exception {
}

http.headers().disable();
http.headers().frameOptions().sameOrigin();

if (Arrays.stream(environment.getActiveProfiles()).anyMatch(p -> p.equalsIgnoreCase("cas"))) {
http.addFilterAt(casFilter(), CasAuthenticationFilter.class);
Expand Down
Expand Up @@ -33,6 +33,7 @@
import com.evolveum.midpoint.web.component.data.column.LinkColumn;
import com.evolveum.midpoint.web.page.admin.workflow.PageWorkItem;
import com.evolveum.midpoint.web.page.admin.workflow.PageWorkItems;
import com.evolveum.midpoint.web.page.admin.workflow.dto.ProtectedWorkItemId;
import com.evolveum.midpoint.web.page.admin.workflow.dto.WorkItemDtoProvider;
import com.evolveum.midpoint.web.page.admin.workflow.dto.WorkItemDto;
import com.evolveum.midpoint.web.session.UserProfileStorage;
Expand Down Expand Up @@ -194,7 +195,8 @@ protected IModel<String> createLinkModel(IModel<WorkItemDto> rowModel) {
@Override
public void onClick(AjaxRequestTarget target, IModel<WorkItemDto> rowModel) {
PageParameters parameters = new PageParameters();
parameters.add(OnePageParameterEncoder.PARAMETER, rowModel.getObject().getWorkItemId());
parameters.add(OnePageParameterEncoder.PARAMETER,
ProtectedWorkItemId.createExternalForm(rowModel.getObject().getWorkItem()));
PageWorkItem page = Session.get().getPageFactory().newPage(PageWorkItem.class, parameters);
page.setPowerDonor(determinePowerDonor());
getPageBase().navigateToNext(page);
Expand Down
Expand Up @@ -19,6 +19,7 @@
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.model.api.ModelExecuteOptions;
import com.evolveum.midpoint.model.api.context.AssignmentPath;
import com.evolveum.midpoint.model.api.context.EvaluatedAssignment;
import com.evolveum.midpoint.model.api.context.EvaluatedAssignmentTarget;
import com.evolveum.midpoint.model.api.context.EvaluatedConstruction;
Expand Down Expand Up @@ -854,16 +855,14 @@ public List<AssignmentInfoDto> showAllAssignmentsPerformed(AjaxRequestTarget aja
private AssignmentInfoDto createAssignmentsPreviewDto(EvaluatedAssignmentTarget evaluatedAbstractRole,
Task task, OperationResult result) {
return createAssignmentsPreviewDto(evaluatedAbstractRole.getTarget(), evaluatedAbstractRole.isDirectlyAssigned(),
evaluatedAbstractRole.getAssignment(), task, result);
evaluatedAbstractRole.getAssignmentPath(), evaluatedAbstractRole.getAssignment(), task, result);
}

protected AssignmentInfoDto createAssignmentsPreviewDto(ObjectReferenceType reference,
Task task, OperationResult result) {
protected AssignmentInfoDto createAssignmentsPreviewDto(ObjectReferenceType reference, Task task, OperationResult result) {
PrismObject<? extends FocusType> targetObject = WebModelServiceUtils.resolveReferenceNoFetch(reference,
PageAdminFocus.this, task, result);

return createAssignmentsPreviewDto(targetObject, true,
null, task, result);
return createAssignmentsPreviewDto(targetObject, true, null, null, task, result);
}

protected AssignmentInfoDto createDelegableAssignmentsPreviewDto(AssignmentType assignment, Task task, OperationResult result) {
Expand All @@ -878,15 +877,15 @@ protected AssignmentInfoDto createDelegableAssignmentsPreviewDto(AssignmentType
isDelegable = targetObject.getRealValue().isDelegable();
}
if (Boolean.TRUE.equals(isDelegable)) {
return createAssignmentsPreviewDto(targetObject, true, assignment, task, result);
return createAssignmentsPreviewDto(targetObject, true, null, assignment, task, result);
}
}
}
return null;
}

private AssignmentInfoDto createAssignmentsPreviewDto(PrismObject<? extends FocusType> targetObject,
boolean isDirectlyAssigned, AssignmentType assignment,
boolean isDirectlyAssigned, AssignmentPath assignmentPath, AssignmentType assignment,
Task task, OperationResult result) {
AssignmentInfoDto dto = new AssignmentInfoDto();
dto.setTargetOid(targetObject.getOid());
Expand All @@ -895,6 +894,7 @@ private AssignmentInfoDto createAssignmentsPreviewDto(PrismObject<? extends Focu
dto.setTargetClass(targetObject.getCompileTimeClass());
dto.setTargetType(WebComponentUtil.classToQName(getPrismContext(), targetObject.getCompileTimeClass()));
dto.setDirect(isDirectlyAssigned);
dto.setAssignmentParent(assignmentPath);
if (assignment != null) {
if (assignment.getTenantRef() != null) {
dto.setTenantName(nameFromReference(assignment.getTenantRef(),
Expand Down Expand Up @@ -955,6 +955,7 @@ private AssignmentInfoDto createAssignmentsPreviewDto(EvaluatedConstruction eval
dto.setTargetDescription(resource.asObjectable().getDescription());
dto.setTargetClass(resource.getCompileTimeClass());
dto.setDirect(evaluatedConstruction.isDirectlyAssigned());
dto.setAssignmentParent(evaluatedConstruction.getAssignmentPath());
dto.setKind(evaluatedConstruction.getKind());
dto.setIntent(evaluatedConstruction.getIntent());
return dto;
Expand Down
Expand Up @@ -1141,7 +1141,7 @@ private void changeOwner(ShadowType selected, AjaxRequestTarget target, FocusTyp
ObjectTypeUtil.createObjectRef(shadow, getPageBase().getPrismContext()).asReferenceValue());

((Collection) modifications).add(delta);
changeOwnerInternal(owner.getOid(), modifications, target);
changeOwnerInternal(owner.getOid(), owner.getClass(), modifications, target);
}
}
break;
Expand All @@ -1157,14 +1157,14 @@ private void changeOwner(ShadowType selected, AjaxRequestTarget target, FocusTyp
getFocusDefinition(), ObjectTypeUtil.createObjectRef(shadow, getPageBase().getPrismContext()).asReferenceValue());

((Collection) modifications).add(delta);
changeOwnerInternal(owner.getOid(), modifications, target);
changeOwnerInternal(owner.getOid(), owner.getClass(), modifications, target);
}
modifications = new ArrayList<>();

delta = ReferenceDelta.createModificationAdd(FocusType.F_LINK_REF, getFocusDefinition(),
ObjectTypeUtil.createObjectRef(shadow, getPageBase().getPrismContext()).asReferenceValue());
((Collection) modifications).add(delta);
changeOwnerInternal(ownerToChange.getOid(), modifications, target);
changeOwnerInternal(ownerToChange.getOid(),ownerToChange.getClass(), modifications, target);

break;
}
Expand All @@ -1185,11 +1185,11 @@ private boolean isSatisfyConstraints(List selected) {
return true;
}

private void changeOwnerInternal(String ownerOid, Collection<? extends ItemDelta> modifications,
private void changeOwnerInternal(String ownerOid, Class<? extends FocusType> ownerType, Collection<? extends ItemDelta> modifications,
AjaxRequestTarget target) {
OperationResult result = new OperationResult(OPERATION_CHANGE_OWNER);
Task task = pageBase.createSimpleTask(OPERATION_CHANGE_OWNER);
ObjectDelta objectDelta = ObjectDelta.createModifyDelta(ownerOid, modifications, FocusType.class,
ObjectDelta objectDelta = ObjectDelta.createModifyDelta(ownerOid, modifications, ownerType,
pageBase.getPrismContext());
Collection deltas = new ArrayList<>();
deltas.add(objectDelta);
Expand Down
Expand Up @@ -26,6 +26,7 @@

import com.evolveum.midpoint.web.component.AjaxIconButton;
import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
import com.evolveum.midpoint.web.component.data.column.ColumnUtils;
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.page.admin.configuration.component.HeaderMenuAction;
Expand Down Expand Up @@ -194,8 +195,11 @@ private void initMemberTable(Form<?> form) {
form.add(memberContainer);

PageBase pageBase = getPageBase();
Class type = getMemberPanelStorage() != null && getMemberPanelStorage().getType() != null ?
getMemberPanelStorage().getType().getClassDefinition() : ObjectType.class;
MainObjectListPanel<ObjectType> childrenListPanel = new MainObjectListPanel<ObjectType>(
ID_MEMBER_TABLE, ObjectType.class, getTableId(getComplexTypeQName()), getSearchOptions(), pageBase) {
ID_MEMBER_TABLE, type
, getTableId(getComplexTypeQName()), getSearchOptions(), pageBase) {

private static final long serialVersionUID = 1L;

Expand Down Expand Up @@ -237,6 +241,11 @@ public void onClick(AjaxRequestTarget target) {
return buttonsList;
}

@Override
protected IColumn<SelectableBean<ObjectType>, String> createIconColumn(){
return (IColumn) ColumnUtils.createIconColumn(ObjectType.class);
}

@Override
protected List<IColumn<SelectableBean<ObjectType>, String>> createColumns() {
return createMembersColumns();
Expand All @@ -249,7 +258,8 @@ protected List<InlineMenuItem> createInlineMenu() {

@Override
protected Search createSearch() {
return SearchFactory.createSearch(getDefaultObjectType(), pageBase);
return getMemberPanelStorage() != null && getMemberPanelStorage().getSearch() != null ?
getMemberPanelStorage().getSearch() : SearchFactory.createSearch(getDefaultObjectType(), pageBase);
}

@Override
Expand Down Expand Up @@ -427,7 +437,7 @@ private boolean isAuthorized(String action) {
return WebComponentUtil.isAuthorized(memeberAuthz.get(action));
}

protected <O extends ObjectType> void assignMembers(AjaxRequestTarget target, List<QName> availableRelationList) {
protected void assignMembers(AjaxRequestTarget target, List<QName> availableRelationList) {
MemberOperationsHelper.assignMembers(getPageBase(), getModelObject(), target, availableRelationList);
}

Expand Down
Expand Up @@ -18,6 +18,7 @@

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.model.api.context.AssignmentPath;
import com.evolveum.midpoint.web.component.util.Selectable;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.Component;
Expand Down Expand Up @@ -54,6 +55,7 @@ public class AssignmentInfoDto extends Selectable<AssignmentInfoDto> implements
private String targetDescription;
private Class<? extends ObjectType> targetClass;
private boolean direct; // true if directly assigned; used only in some contexts
private ObjectType assignmentParent;
private QName targetType;
// for resource assignments
private ShadowKindType kind;
Expand Down Expand Up @@ -107,6 +109,16 @@ public void setDirect(boolean direct) {
this.direct = direct;
}

public void setAssignmentParent(AssignmentPath assignmentPath) {
if (assignmentPath.size() > 1 ) {
assignmentParent = assignmentPath.last().getSource();
}
}

public ObjectType getAssignmentParent() {
return assignmentParent;
}

public ShadowKindType getKind() {
return kind;
}
Expand Down
Expand Up @@ -33,6 +33,7 @@
import com.evolveum.midpoint.web.page.admin.users.PageOrgUnit;
import com.evolveum.midpoint.web.util.ObjectTypeGuiDescriptor;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.OrgType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.RoleType;
Expand All @@ -55,6 +56,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.wicket.AttributeModifier;

/**
* Abstract superclass for dialogs that display a list of assignments.
Expand Down Expand Up @@ -156,6 +158,10 @@ public String getObject() {
createStringResource("AssignmentPreviewDialog.type.indirect").getString();
}
}));
ObjectType assignmentParent = rowModel.getObject().getAssignmentParent();
if (assignmentParent != null) {
cellItem.add(AttributeModifier.replace("title", createStringResource("AssignmentPreviewDialog.tooltip.indirect.parent").getString() + ": " + assignmentParent.getName()));
}
}
});
}
Expand Down
Expand Up @@ -100,7 +100,7 @@ protected SearchBoxScopeType getOrgSearchScope() {
}

@Override
protected <O extends ObjectType> void assignMembers(AjaxRequestTarget target, List<QName> availableRelationList) {
protected void assignMembers(AjaxRequestTarget target, List<QName> availableRelationList) {
MemberOperationsHelper.assignOrgMembers(getPageBase(), getModelObject(), target, availableRelationList);
}

Expand Down
Expand Up @@ -44,6 +44,7 @@
import com.evolveum.midpoint.web.component.DefaultAjaxSubmitButton;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.page.admin.workflow.dto.WorkItemDto;
import com.evolveum.midpoint.web.page.admin.workflow.dto.ProtectedWorkItemId;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import org.apache.wicket.RestartResponseException;
Expand Down Expand Up @@ -100,13 +101,13 @@ public class PageWorkItem extends PageAdminWorkItems {
private static final String ID_CANCEL = "cancel";

private LoadableModel<WorkItemDto> workItemDtoModel;
private String taskId;
private String externalizedProtectedId;
private PrismObject<UserType> powerDonor;

public PageWorkItem(PageParameters parameters) {

taskId = parameters.get(OnePageParameterEncoder.PARAMETER).toString();
if (taskId == null) {
externalizedProtectedId = parameters.get(OnePageParameterEncoder.PARAMETER).toString();
if (externalizedProtectedId == null) {
throw new IllegalStateException("Work item ID not specified.");
}

Expand Down Expand Up @@ -142,25 +143,27 @@ private WorkItemDto loadWorkItemDtoIfNecessary() {
OperationResult result = task.getResult();
WorkItemDto workItemDto = null;
try {
final ObjectQuery query = QueryBuilder.queryFor(WorkItemType.class, getPrismContext())
.item(F_EXTERNAL_ID).eq(taskId)
ProtectedWorkItemId protectedWorkItemId = ProtectedWorkItemId.fromExternalForm(externalizedProtectedId);
final ObjectQuery query = QueryBuilder.queryFor(WorkItemType.class, getPrismContext())
.item(F_EXTERNAL_ID).eq(protectedWorkItemId.id)
.build();
final Collection<SelectorOptions<GetOperationOptions>> options =
resolveItemsNamed(F_ASSIGNEE_REF, F_ORIGINAL_ASSIGNEE_REF);
List<WorkItemType> workItems = getModelService().searchContainers(WorkItemType.class, query, options, task, result);
if (workItems.size() > 1) {
throw new SystemException("More than one work item with ID of " + taskId);
throw new SystemException("More than one work item with ID of " + protectedWorkItemId.id);
} else if (workItems.size() == 0) {
throw new ObjectNotFoundException("No work item with ID of " + taskId);
throw new ObjectNotFoundException("No work item with ID of " + protectedWorkItemId.id);
}
final WorkItemType workItem = workItems.get(0);

final String taskOid = WfContextUtil.getTaskOid(workItem);
String taskOid = WfContextUtil.getTaskOid(workItem);
if (taskOid == null) {
// this is a problem ... most probably we will not be able to do anything reasonable - let's give it up
result.recordFatalError(getString("PageWorkItem.noRequest"));
showResult(result, false);
throw redirectBackViaRestartResponseException();
} else if (!protectedWorkItemId.isCorrect(workItem)) {
throw new IllegalArgumentException("Wrong work item hash");
}
TaskType taskType = null;
List<TaskType> relatedTasks = new ArrayList<>();
Expand Down

0 comments on commit a36de5f

Please sign in to comment.