Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Sep 18, 2023
2 parents 489f04e + ecfec1a commit 494810d
Show file tree
Hide file tree
Showing 50 changed files with 1,443 additions and 457 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,9 @@ private <T> void initLayout() {
public DisplayableValue<String> getObject() {
String value = null;
try {
value = getModelObject().getValue().getRealValue();
if (getModelObject() != null) {
value = getModelObject().getValue().getRealValue();
}
} catch (SchemaException e) {
LOGGER.error("Couldn't get value from " + getModelObject(), e);
}
Expand All @@ -132,7 +134,7 @@ public DisplayableValue<String> getObject() {
String finalValue = value;
return (DisplayableValue<String>) choicesModel.getObject()
.stream()
.filter(choice -> ((DisplayableValue<String>)choice).getValue().equals(finalValue))
.filter(choice -> ((DisplayableValue<String>) choice).getValue().equals(finalValue))
.findFirst()
.get();
}
Expand Down Expand Up @@ -246,6 +248,11 @@ protected String customCssClassForInputField() {

private List getChoices() {
List choices = new ArrayList();

if (getModelObject() == null) {
return choices;
}

String lookupOid = getModelObject().getPredefinedValuesOid();
if (StringUtils.isEmpty(lookupOid)) {
return choices;
Expand All @@ -266,13 +273,11 @@ private List getChoices() {
choices.add(display);
}



return choices;
}

@Override
public FormComponent getBaseFormComponent(){
public FormComponent getBaseFormComponent() {
return (FormComponent) get(ID_PANEL);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,24 @@
*/
package com.evolveum.midpoint.gui.impl.page.admin.archetype;

import com.evolveum.midpoint.gui.impl.page.admin.abstractrole.PageAbstractRole;
import com.evolveum.midpoint.gui.impl.page.admin.focus.FocusDetailsModels;
import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.PageAssignmentHolderDetails;
import com.evolveum.midpoint.authentication.api.util.AuthConstants;

import com.evolveum.midpoint.util.exception.SchemaException;

import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;

import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.security.api.AuthorizationConstants;

import com.evolveum.midpoint.authentication.api.authorization.AuthorizationAction;
import com.evolveum.midpoint.authentication.api.authorization.PageDescriptor;
import com.evolveum.midpoint.authentication.api.authorization.Url;
import com.evolveum.midpoint.authentication.api.util.AuthConstants;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.page.admin.abstractrole.PageAbstractRole;
import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.PageAssignmentHolderDetails;
import com.evolveum.midpoint.gui.impl.page.admin.focus.FocusDetailsModels;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.prism.polystring.PolyString;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
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.web.page.admin.archetype.ArchetypeSummaryPanel;
import com.evolveum.midpoint.web.util.OnePageParameterEncoder;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ArchetypeType;
Expand Down Expand Up @@ -88,4 +88,16 @@ protected PrismObject<ArchetypeType> getObjectForResolvingArchetypePolicyDisplay
}
return null;
}

@Override
protected IModel<String> createPageTitleModel() {
String string = getString("ObjectTypeGuiDescriptor.archetype");
String archetypeTitle = getLocalizationService()
.translate(PolyString.fromOrig(string), WebComponentUtil.getCurrentLocale(), true);

String archetypeObjectName = WebComponentUtil.getName(getModelWrapperObject().getObject());
return createStringResource("PageAdminObjectDetails.title.edit.readonly.${readOnly}", getModel(),
archetypeTitle.toLowerCase(), archetypeObjectName);

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ protected String load() {
};
}

private String getObjectCollectionName() {
protected String getObjectCollectionName() {
if (getModelWrapperObject() == null || getModelWrapperObject().getObject() == null) {
return null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,6 @@
import java.util.List;
import javax.xml.namespace.QName;

import com.evolveum.midpoint.gui.api.component.button.DropdownButtonDto;
import com.evolveum.midpoint.gui.api.component.button.DropdownButtonPanel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;

import com.evolveum.midpoint.gui.impl.component.button.ReloadableButton;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.gui.impl.component.input.LifecycleStatePanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.PageResource;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.objectType.ResourceObjectTypeWizardPreviewPanel;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.query.builder.S_FilterEntry;
import com.evolveum.midpoint.prism.query.builder.S_FilterExit;
import com.evolveum.midpoint.schema.processor.ResourceObjectTypeDefinition;
import com.evolveum.midpoint.schema.util.task.ActivityDefinitionBuilder;

import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItemWithCount;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;

import com.evolveum.midpoint.web.page.admin.server.PageTasks;

import org.apache.commons.lang3.StringUtils;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
Expand All @@ -49,52 +24,74 @@
import org.apache.wicket.model.LoadableDetachableModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.StringResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

import com.evolveum.midpoint.gui.api.component.button.DropdownButtonDto;
import com.evolveum.midpoint.gui.api.component.button.DropdownButtonPanel;
import com.evolveum.midpoint.gui.api.component.data.provider.ISelectableDataProvider;
import com.evolveum.midpoint.gui.api.component.form.CheckBoxPanel;
import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerValueWrapper;
import com.evolveum.midpoint.gui.api.prism.wrapper.PrismPropertyWrapper;
import com.evolveum.midpoint.gui.api.util.WebComponentUtil;
import com.evolveum.midpoint.gui.impl.component.button.ReloadableButton;
import com.evolveum.midpoint.gui.impl.component.data.provider.RepositoryShadowBeanObjectDataProvider;
import com.evolveum.midpoint.gui.impl.component.icon.CompositedIconBuilder;
import com.evolveum.midpoint.gui.impl.component.input.LifecycleStatePanel;
import com.evolveum.midpoint.gui.impl.component.search.CollectionPanelType;
import com.evolveum.midpoint.gui.impl.component.search.Search;
import com.evolveum.midpoint.gui.impl.component.search.SearchContext;
import com.evolveum.midpoint.gui.impl.page.admin.AbstractObjectMainPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.PageResource;
import com.evolveum.midpoint.gui.impl.page.admin.resource.ResourceDetailsModel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.objectType.ResourceObjectTypeWizardPreviewPanel;
import com.evolveum.midpoint.gui.impl.util.DetailsPageUtil;
import com.evolveum.midpoint.model.api.authentication.CompiledObjectCollectionView;
import com.evolveum.midpoint.model.api.authentication.CompiledShadowCollectionView;
import com.evolveum.midpoint.prism.PrismContainerValue;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.path.ItemName;
import com.evolveum.midpoint.prism.path.ItemPath;
import com.evolveum.midpoint.prism.query.ObjectFilter;
import com.evolveum.midpoint.prism.query.ObjectQuery;
import com.evolveum.midpoint.prism.query.builder.S_FilterEntry;
import com.evolveum.midpoint.prism.query.builder.S_FilterExit;
import com.evolveum.midpoint.schema.GetOperationOptions;
import com.evolveum.midpoint.schema.SelectorOptions;
import com.evolveum.midpoint.schema.processor.ResourceObjectDefinition;
import com.evolveum.midpoint.schema.processor.ResourceObjectTypeDefinition;
import com.evolveum.midpoint.schema.processor.ResourceSchema;
import com.evolveum.midpoint.schema.processor.ResourceSchemaFactory;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.schema.util.ObjectQueryUtil;
import com.evolveum.midpoint.schema.util.task.ActivityDefinitionBuilder;
import com.evolveum.midpoint.task.api.Task;

import com.evolveum.midpoint.util.exception.CommonException;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.logging.LoggingUtils;
import com.evolveum.midpoint.util.logging.Trace;
import com.evolveum.midpoint.util.logging.TraceManager;
import com.evolveum.midpoint.web.component.data.column.ColumnMenuAction;
import com.evolveum.midpoint.web.component.input.DropDownChoicePanel;
import com.evolveum.midpoint.web.component.input.ResourceObjectTypeChoiceRenderer;
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.ButtonInlineMenuItemWithCount;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItem;
import com.evolveum.midpoint.web.component.menu.cog.InlineMenuItemAction;
import com.evolveum.midpoint.web.component.util.SelectableBean;
import com.evolveum.midpoint.web.component.util.VisibleBehaviour;
import com.evolveum.midpoint.web.model.PrismContainerWrapperModel;
import com.evolveum.midpoint.web.page.admin.resources.SynchronizationTaskFlavor;
import com.evolveum.midpoint.web.page.admin.server.PageTasks;
import com.evolveum.midpoint.web.page.admin.shadows.ShadowTablePanel;
import com.evolveum.midpoint.web.session.PageStorage;
import com.evolveum.midpoint.web.session.UserProfileStorage;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;
import com.evolveum.wicket.chartjs.ChartConfiguration;
import com.evolveum.wicket.chartjs.ChartJsPanel;

import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public abstract class ResourceObjectsPanel extends AbstractObjectMainPanel<ResourceType, ResourceDetailsModel> {

private static final Trace LOGGER = TraceManager.getTrace(ResourceObjectsPanel.class);
Expand Down Expand Up @@ -140,14 +137,17 @@ private void createLifecycleStatePanel() {
IModel<PrismPropertyWrapper<String>> model = new LoadableDetachableModel<>() {
@Override
protected PrismPropertyWrapper<String> load() {
ItemPath pathToProperty = ItemPath.create(ResourceType.F_SCHEMA_HANDLING, SchemaHandlingType.F_OBJECT_TYPE)
.append(getSelectedObjectType().asPrismContainerValue().getPath())
.append(ResourceObjectTypeDefinitionType.F_LIFECYCLE_STATE);
try {
return getObjectWrapperModel().getObject().findProperty(pathToProperty);
} catch (SchemaException e) {
LOGGER.error("Couldn't find property with path " + pathToProperty);
if (getSelectedObjectType() != null) {
ItemPath pathToProperty = ItemPath.create(ResourceType.F_SCHEMA_HANDLING, SchemaHandlingType.F_OBJECT_TYPE)
.append(getSelectedObjectType().asPrismContainerValue().getPath())
.append(ResourceObjectTypeDefinitionType.F_LIFECYCLE_STATE);
try {
return getObjectWrapperModel().getObject().findProperty(pathToProperty);
} catch (SchemaException e) {
LOGGER.error("Couldn't find property with path " + pathToProperty);
}
}

return null;
}
};
Expand All @@ -159,6 +159,11 @@ protected void onInitialize() {
getBaseFormComponent().add(new OnChangeAjaxBehavior() {
@Override
protected void onUpdate(AjaxRequestTarget target) {

if (getSelectedObjectType() == null) {
return;
}

Task task = getPageBase().createSimpleTask(OP_SET_LIFECYCLE_STATE_FOR_OBJECT_TYPE);
OperationResult result = task.getResult();
ItemPath pathToProperty = ItemPath.create(ResourceType.F_SCHEMA_HANDLING, SchemaHandlingType.F_OBJECT_TYPE)
Expand Down Expand Up @@ -680,6 +685,24 @@ protected ObjectQuery getCustomizeContentQuery() {
return getResourceContentQuery();
}

@Override
protected Integer countObjects(Class<ShadowType> type, ObjectQuery query, Collection<SelectorOptions<GetOperationOptions>> currentOptions, Task task, OperationResult result) throws CommonException {
Integer count = 0;
ResourceType resource = getObjectDetailsModels().getObjectType();
ShadowKindType kind = getKind();
if (kind != null) {
ResourceSchema resourceSchema = ResourceSchemaFactory.getCompleteSchemaRequired(resource);
@Nullable ResourceObjectDefinition objectTypeDefinition = resourceSchema.findDefaultDefinitionForKind(kind);
if (objectTypeDefinition != null) {
count = super.countObjects(type, query, currentOptions, task, result);
} else {
warn(String.format("No object type definition for %s/%s in %s", kind, getIntent(), resource));
}
} else {
count = super.countObjects(type, query, currentOptions, task, result);
}
return count;
}
};
provider.setCompiledObjectCollectionView(collection);
return provider;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,7 @@ public boolean isSorted() {
@Override
public void setSorted(boolean sorted) {
this.sorted = sorted;
sortContainers();
sortContainers(nonContainers);
}

@Override
Expand Down Expand Up @@ -249,6 +249,7 @@ public List<PrismContainerDefinition<C>> getChildContainers() throws SchemaExcep
@Override
public List<PrismContainerWrapper<? extends Containerable>> getContainers() {
if (!containers.isEmpty()) {
sortContainers(containers);
return containers;
}
for (ItemWrapper<?, ?> container : items) {
Expand All @@ -265,6 +266,7 @@ public List<PrismContainerWrapper<? extends Containerable>> getContainers() {
}
}
}
sortContainers(containers);
return containers;
}

Expand Down Expand Up @@ -301,13 +303,13 @@ public List<PrismContainerWrapper<? extends Containerable>> getContainers(Contai
@Override
public List<ItemWrapper<?, ?>> getNonContainers() {
if (!nonContainers.isEmpty()) {
sortContainers();
sortContainers(nonContainers);
return nonContainers;
}

collectContainers();
collectVirtualContainers();
sortContainers();
sortContainers(nonContainers);

return nonContainers;
}
Expand Down Expand Up @@ -371,10 +373,10 @@ private void collectVirtualContainers() {
}
}

private void sortContainers() {
private void sortContainers(List<? extends ItemWrapper<?, ?>> items) {
ItemWrapperComparator<?> comparator = new ItemWrapperComparator<>(WebComponentUtil.getCollator(), sorted);
if (CollectionUtils.isNotEmpty(nonContainers)) {
nonContainers.sort((Comparator) comparator);
if (CollectionUtils.isNotEmpty(items)) {
items.sort((Comparator) comparator);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<wicket:panel>
<textarea class="form-control" wicket:id="input" cols="34" rows="2" />
<textarea class="form-control form-control-sm" wicket:id="input" cols="34" rows="2" />
</wicket:panel>
</html>
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@ public void init(Configuration configuration) {
}
resource.setMonsterization(this.configuration.isMonsterized());
resource.setUidMode(this.configuration.getUidMode());
resource.setHierarchicalObjectsEnabled(this.configuration.isHierarchicalObjectsEnabled());

if (connected) {
throw new IllegalStateException("Double connect in " + this);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,9 @@ public Set<AttributeDelta> updateDelta(final ObjectClass objectClass, final Uid
throw new org.identityconnectors.framework.common.exceptions.AlreadyExistsException(e.getMessage(), e);
}
// We need to change the returned uid here
addUidChange(sideEffectChanges, newName);
if (configuration.isUidBoundToName()) {
addUidChange(sideEffectChanges, newName);
}
}
} else if (delta.is(OperationalAttributes.PASSWORD_NAME)) {
throw new InvalidAttributeValueException("Attempt to change password on group");
Expand Down Expand Up @@ -225,7 +227,9 @@ public Set<AttributeDelta> updateDelta(final ObjectClass objectClass, final Uid
throw new org.identityconnectors.framework.common.exceptions.AlreadyExistsException(e.getMessage(), e);
}
// We need to change the returned uid here
addUidChange(sideEffectChanges, newName);
if (configuration.isUidBoundToName()) {
addUidChange(sideEffectChanges, newName);
}
}
} else if (delta.is(OperationalAttributes.PASSWORD_NAME)) {
throw new InvalidAttributeValueException("Attempt to change password on privilege");
Expand Down Expand Up @@ -266,7 +270,9 @@ public Set<AttributeDelta> updateDelta(final ObjectClass objectClass, final Uid
throw new org.identityconnectors.framework.common.exceptions.AlreadyExistsException(e.getMessage(), e);
}
// We need to change the returned uid here
addUidChange(sideEffectChanges, newName);
if (configuration.isUidBoundToName()) {
addUidChange(sideEffectChanges, newName);
}
} else if (delta.is(OperationalAttributes.PASSWORD_NAME)) {
throw new InvalidAttributeValueException("Attempt to change password on org");

Expand Down

0 comments on commit 494810d

Please sign in to comment.