Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
mederly committed Jul 1, 2022
2 parents 4caa3d5 + 47ac6d9 commit bddc242
Show file tree
Hide file tree
Showing 48 changed files with 622 additions and 100 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ private void initLayout() {
// }).build();
//
// try {
// Panel panel = getPageBase().initItemPanel(ID_PANEL, UserType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModel(), path), settings);
// Panel panel = getPageBase().initItemPanel(ID_PANEL, UserType.COMPLEX_TYPE, PrismContainerWrapperModel.fromContainerWrapper(getModelService(), path), settings);
// add(panel);
// } catch (SchemaException e) {
// //TODO:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public class LinkPrismPropertyColumn<C extends Containerable, T> { //extends Pri
// @Override
// protected void populate(ListItem<PrismPropertyValueWrapper<T>> item, IModel<?> rowModel) {
// AjaxLinkPanel linkPanel = new AjaxLinkPanel(ID_LABEL,
// new ItemRealValueModel(item.getModel())) {
// new ItemRealValueModel(item.getModelService())) {
// private static final long serialVersionUID = 1L;
//
// @Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ public void register() {

@Override
protected InputPanel getPanel(PrismPropertyPanelContext<T> panelCtx) {
return new UploadDownloadPanel(panelCtx.getComponentId(), false) { //getModel().getObject().isReadonly()
return new UploadDownloadPanel(panelCtx.getComponentId(), false) { //getModelService().getObject().isReadonly()

private static final long serialVersionUID = 1L;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@
import com.evolveum.midpoint.web.util.validation.SimpleValidationError;
import com.evolveum.midpoint.xml.ns._public.common.common_3.*;

import org.apache.wicket.RestartResponseException;
import org.apache.wicket.model.IDetachable;
import org.apache.wicket.model.LoadableDetachableModel;
import org.jetbrains.annotations.NotNull;

public class ObjectDetailsModels<O extends ObjectType> implements Serializable, IDetachable {

Expand Down Expand Up @@ -323,6 +323,17 @@ protected PrismObject<O> getPrismObject() {
return getObjectWrapper().getObject();
}

public void reloadPrismObjectModel(@NotNull PrismObject<O> newObject) {
prismObjectModel.detach();
prismObjectModel = new LoadableDetachableModel<>(){

@Override
protected PrismObject<O> load() {
return newObject;
}
};
}

public LoadableModel<GuiObjectDetailsPageType> getObjectDetailsPageConfiguration() {
return detailsPageConfigurationModel;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,14 +46,14 @@ protected void initLayout() {
// builder.headerVisibility(false);
//
// Panel main = getPageBase().initItemPanel(ID_MAIN_PANEL, getModelObject().getTypeName(),
// PrismContainerWrapperModel.fromContainerWrapper(getModel(), ItemPath.EMPTY_PATH), builder.build());
// PrismContainerWrapperModel.fromContainerWrapper(getModelService(), ItemPath.EMPTY_PATH), builder.build());
// add(main);
//
// RepeatingView view = new RepeatingView(ID_VIRTUAL_PANELS);
// if (getPanelConfiguration() != null) {
// List<VirtualContainersSpecificationType> virtualContainers = getPanelConfiguration().getContainer();
// for (VirtualContainersSpecificationType virtualContainer : virtualContainers) {
// PrismContainerWrapperModel virtualContainerModel = PrismContainerWrapperModel.fromContainerWrapper(getModel(), virtualContainer.getIdentifier());
// PrismContainerWrapperModel virtualContainerModel = PrismContainerWrapperModel.fromContainerWrapper(getModelService(), virtualContainer.getIdentifier());
// Panel virtualPanel = new PrismContainerPanel<>(view.newChildId(), virtualContainerModel, builder.build());
// view.add(virtualPanel);
// }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import com.evolveum.midpoint.gui.impl.page.admin.DetailsFragment;
import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.PageAssignmentHolderDetails;
import com.evolveum.midpoint.gui.impl.page.admin.component.ResourceOperationalButtonsPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.*;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.*;
import com.evolveum.midpoint.prism.PrismObject;
import com.evolveum.midpoint.security.api.AuthorizationConstants;
import com.evolveum.midpoint.authentication.api.authorization.AuthorizationAction;
Expand Down Expand Up @@ -127,7 +127,9 @@ public boolean onBackPerformed(AjaxRequestTarget target) {

DiscoveryStepPanel discover = new DiscoveryStepPanel(getObjectDetailsModels());

return List.of(basicSettings, configuration, discover);
SelectObjectClassesStepPanel selectObjectClasses = new SelectObjectClassesStepPanel(getObjectDetailsModels());

return List.of(basicSettings, configuration, discover, selectObjectClasses);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,12 @@
import com.evolveum.midpoint.gui.api.util.ModelServiceLocator;
import com.evolveum.midpoint.gui.api.util.WebModelServiceUtils;
import com.evolveum.midpoint.gui.impl.page.admin.assignmentholder.AssignmentHolderDetailsModel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.ObjectClassWrapper;
import com.evolveum.midpoint.prism.*;
import com.evolveum.midpoint.prism.schema.PrismSchema;
import com.evolveum.midpoint.provisioning.api.DiscoveredConfiguration;
import com.evolveum.midpoint.schema.processor.ResourceObjectClassDefinition;
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;
Expand All @@ -26,19 +29,28 @@
import com.evolveum.midpoint.util.exception.ConfigurationException;
import com.evolveum.midpoint.util.exception.SchemaException;
import com.evolveum.midpoint.util.exception.SystemException;
import com.evolveum.midpoint.web.component.wizard.resource.dto.ObjectClassDto;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ConnectorConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ConnectorType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.GuiObjectDetailsPageType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;

import org.apache.wicket.model.IModel;
import org.apache.wicket.model.LoadableDetachableModel;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ResourceDetailsModel extends AssignmentHolderDetailsModel<ResourceType> {

private static final String DOT_CLASS = ResourceDetailsModel.class.getName() + ".";
private static final String OPERATION_CREATE_CONFIGURATION_WRAPPERS = DOT_CLASS + "loadConnectorWrapper";
private static final String OPERATION_FETCH_SCHEMA = DOT_CLASS + "fetchSchema";

private final LoadableModel<PrismContainerWrapper<ConnectorConfigurationType>> configurationModel;

private final LoadableModel<List<ObjectClassWrapper>> objectClassesModel;
private DiscoveredConfiguration connectorConfigurationSuggestions;

public ResourceDetailsModel(LoadableDetachableModel<PrismObject<ResourceType>> prismObjectModel, ModelServiceLocator serviceLocator) {
Expand All @@ -57,6 +69,36 @@ protected PrismContainerWrapper<ConnectorConfigurationType> load() {
}
}
};

this.objectClassesModel = new LoadableModel<>() {
@Override
protected List<ObjectClassWrapper> load() {
List<ObjectClassWrapper> list = new ArrayList<>();

ResourceSchema schema = null;
OperationResult result = new OperationResult(OPERATION_FETCH_SCHEMA);
try {
schema = getPageBase().getModelService().fetchSchema(getObjectWrapper().getObjectApplyDelta(), result);
} catch (SchemaException | RuntimeException e) {
result.recordFatalError("Cannot load schema object classes, " + e.getMessage());
result.computeStatus();
getPageBase().showResult(result);
}


if (schema == null) {
return list;
}

for(ResourceObjectClassDefinition definition: schema.getObjectClassDefinitions()){
list.add(new ObjectClassWrapper(definition));
}

Collections.sort(list);

return list;
}
};
}

private PrismContainerWrapper<ConnectorConfigurationType> createConfigContainerWrappers(OperationResult result) throws SchemaException {
Expand Down Expand Up @@ -128,6 +170,7 @@ public ResourceSchema getRefinedSchema() throws SchemaException, ConfigurationEx
public void reset() {
super.reset();
configurationModel.reset();
objectClassesModel.reset();
}

@Override
Expand All @@ -145,4 +188,8 @@ public void setConnectorConfigurationSuggestions(DiscoveredConfiguration connect
protected void customizationWrapperContext(WrapperContext ctx) {
ctx.setConnectorConfigurationSuggestions(this.connectorConfigurationSuggestions);
}

public IModel<List<ObjectClassWrapper>> getObjectClassesModel() {
return objectClassesModel;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public List<ConnectorOperationalStatus> getObject() {
private static final long serialVersionUID = 1L;

protected void populateItem(ListItem<ConnectorOperationalStatus> item) {
// item.add(new Label("label", item.getModel()));
// item.add(new Label("label", item.getModelService()));
IModel<ConnectorOperationalStatus> statModel = item.getModel();
item.add(createLabel(statModel, ID_CONNECTOR_NAME, ConnectorOperationalStatus.F_CONNECTOR_NAME));
item.add(createLabel(statModel, ID_CONNECOTR_CLASS, ConnectorOperationalStatus.F_CONNECTOR_CLASS_NAME));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.impl.page.admin.resource.component;
package com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard;

import com.evolveum.midpoint.gui.api.component.wizard.BasicWizardPanel;
import com.evolveum.midpoint.gui.api.prism.wrapper.ItemVisibilityHandler;
Expand Down Expand Up @@ -50,7 +50,7 @@ public String appendCssToWizard() {
return "mt-5 mx-auto col-8";
}

protected void initLayout() {
private void initLayout() {
ItemPanelSettings settings = new ItemPanelSettingsBuilder()
.visibilityHandler(getVisibilityHandler())
.mandatoryHandler(w -> checkMandatory(w))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.impl.page.admin.resource.component;
package com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard;

import com.evolveum.midpoint.gui.api.prism.wrapper.ItemVisibilityHandler;
import com.evolveum.midpoint.gui.api.prism.wrapper.ItemWrapper;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.impl.page.admin.resource.component;
package com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard;

import com.evolveum.midpoint.gui.impl.page.admin.resource.ResourceDetailsModel;
import com.evolveum.midpoint.web.application.PanelDisplay;
Expand All @@ -23,7 +23,6 @@
@PanelInstance(identifier = "connectorConfigurationWizard",
applicableForType = ResourceType.class,
applicableForOperation = OperationTypeType.ADD,
defaultPanel = true,
display = @PanelDisplay(
label = "PageResource.wizard.step.configuration",
icon = "fa fa-cog"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.impl.page.admin.resource.component;
package com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard;

import com.evolveum.midpoint.gui.api.GuiStyleConstants;
import com.evolveum.midpoint.gui.api.component.BasePanel;
Expand All @@ -14,6 +14,8 @@
import com.evolveum.midpoint.gui.impl.component.search.Search;
import com.evolveum.midpoint.gui.impl.component.search.SearchFactory;
import com.evolveum.midpoint.gui.impl.component.search.SearchPanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.ResourceTilePanel;
import com.evolveum.midpoint.gui.impl.page.admin.resource.component.TemplateTile;
import com.evolveum.midpoint.gui.impl.util.GuiDisplayNameUtil;
import com.evolveum.midpoint.prism.PrismContext;
import com.evolveum.midpoint.prism.PrismObject;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* This work is dual-licensed under the Apache License 2.0
* and European Union Public License. See LICENSE file for details.
*/
package com.evolveum.midpoint.gui.impl.page.admin.resource.component;
package com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard;

import com.evolveum.midpoint.gui.api.page.PageBase;
import com.evolveum.midpoint.gui.api.prism.wrapper.ItemVisibilityHandler;
Expand All @@ -13,7 +13,10 @@
import com.evolveum.midpoint.provisioning.api.DiscoveredConfiguration;
import com.evolveum.midpoint.schema.result.OperationResult;
import com.evolveum.midpoint.task.api.Task;
import com.evolveum.midpoint.util.DisplayableValue;
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.application.PanelDisplay;
import com.evolveum.midpoint.web.application.PanelInstance;
import com.evolveum.midpoint.web.application.PanelType;
Expand All @@ -22,6 +25,7 @@
import com.evolveum.midpoint.xml.ns._public.common.common_3.OperationTypeType;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ResourceType;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;

/**
Expand All @@ -31,14 +35,16 @@
@PanelInstance(identifier = "discoverConnectorConfigurationWizard",
applicableForType = ResourceType.class,
applicableForOperation = OperationTypeType.ADD,
defaultPanel = true,
display = @PanelDisplay(label = "PageResource.wizard.step.discovery", icon = "fa fa-list-check"),
containerPath = "connectorConfiguration/configurationProperties",
expanded = true)
public class DiscoveryStepPanel extends AbstractResourceWizardStepPanel {

private static final Trace LOGGER = TraceManager.getTrace(DiscoveryStepPanel.class);

private static final String DOT_CLASS = DiscoveryStepPanel.class.getName() + ".";
private static final String OPERATION_DISCOVER_CONFIGURATION = DOT_CLASS + "discoverConfiguration";
private static final String OPERATION_RESOURCE_TEST = DOT_CLASS + "partialConfigurationTest";

private static final String PANEL_TYPE = "discoverConnectorConfigurationWizard";

Expand All @@ -51,11 +57,17 @@ protected void onBeforeRender() {
PageBase pageBase = getPageBase();
OperationResult result = new OperationResult(OPERATION_DISCOVER_CONFIGURATION);

DiscoveredConfiguration discoverProperties =
pageBase.getModelService().discoverResourceConnectorConfiguration(getResourceModel().getObjectWrapper().getObject(), result);
try {
DiscoveredConfiguration discoverProperties = pageBase.getModelService().discoverResourceConnectorConfiguration(
getResourceModel().getObjectWrapper().getObjectApplyDelta(), result);

getResourceModel().reloadPrismObjectModel(getResourceModel().getObjectWrapper().getObjectApplyDelta());
getResourceModel().setConnectorConfigurationSuggestions(discoverProperties);
getResourceModel().getObjectWrapperModel().reset();

getResourceModel().setConnectorConfigurationSuggestions(discoverProperties);
getResourceModel().getObjectWrapperModel().reset();
} catch (SchemaException e) {
result.recordFatalError("Couldn't get discovered configuration.", e);
}

super.onBeforeRender();
}
Expand Down Expand Up @@ -93,4 +105,27 @@ protected ItemVisibilityHandler getVisibilityHandler() {
return ItemVisibility.AUTO;
};
}

@Override
public boolean onNextPerformed(AjaxRequestTarget target) {
PageBase pageBase = getPageBase();
Task task = pageBase.createSimpleTask(OPERATION_RESOURCE_TEST);
OperationResult result = task.getResult();

try {
pageBase.getModelService().testResource(getResourceModel().getObjectWrapper().getObjectApplyDelta(), task, result);
} catch (Exception e) {
LoggingUtils.logUnexpectedException(LOGGER, "Failed to test resource connection", e);
result.recordFatalError(getString("TestConnectionMessagesPanel.message.testConnection.fatalError"), e);
}
result.computeStatus();

if (result.isSuccess()) {
return super.onNextPerformed(target);
}
pageBase.showResult(result);
target.add(getFeedback());

return false;
}
}

0 comments on commit bddc242

Please sign in to comment.