Skip to content

Commit

Permalink
adding support for manual connector in new resource wizard
Browse files Browse the repository at this point in the history
  • Loading branch information
skublik committed Aug 30, 2023
1 parent cf187f8 commit e5d798c
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 36 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,6 @@ protected ObjectQuery getCustomizeContentQuery() {
.not()
.item(ConnectorType.F_CONNECTOR_TYPE)
.eq("AsyncProvisioningConnector")
.and()
.not()
.item(ConnectorType.F_CONNECTOR_TYPE)
.eq("ManualConnector")
.build();
}
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,22 +53,22 @@ public int getOrder() {
return 10;
}

@Override
protected List<? extends ItemDefinition> getItemDefinitions(PrismContainerWrapper parent, PrismContainerValue value) {
List<PrismContainerDefinition> relevantDefinitions = new ArrayList<>();
List<? extends ItemDefinition> defs = parent.getDefinitions();
for (ItemDefinition<?> def : defs) {
if (def instanceof PrismContainerDefinition) {
relevantDefinitions.add((PrismContainerDefinition) def);
}
}
relevantDefinitions.sort((o1, o2) -> {
int ord1 = o1.getDisplayOrder() != null ? o1.getDisplayOrder() : Integer.MAX_VALUE;
int ord2 = o2.getDisplayOrder() != null ? o2.getDisplayOrder() : Integer.MAX_VALUE;
return Integer.compare(ord1, ord2);
});
return relevantDefinitions;
}
// @Override
// protected List<? extends ItemDefinition> getItemDefinitions(PrismContainerWrapper parent, PrismContainerValue value) {
// List<PrismContainerDefinition> relevantDefinitions = new ArrayList<>();
// List<? extends ItemDefinition> defs = parent.getDefinitions();
// for (ItemDefinition<?> def : defs) {
// if (def instanceof PrismContainerDefinition) {
// relevantDefinitions.add((PrismContainerDefinition) def);
// }
// }
// relevantDefinitions.sort((o1, o2) -> {
// int ord1 = o1.getDisplayOrder() != null ? o1.getDisplayOrder() : Integer.MAX_VALUE;
// int ord2 = o2.getDisplayOrder() != null ? o2.getDisplayOrder() : Integer.MAX_VALUE;
// return Integer.compare(ord1, ord2);
// });
// return relevantDefinitions;
// }

@Override
public PrismContainerWrapper<ConnectorConfigurationType> createWrapper(PrismContainerValueWrapper<?> parent, ItemDefinition<?> def, WrapperContext context) throws SchemaException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,9 +94,10 @@ protected void onSubmitPerformed(AjaxRequestTarget target) {

PrismObject<ConnectorType> connector = WebModelServiceUtils.loadObject(getAssignmentHolderModel().getObjectType().getConnectorRef(), getPageBase());

CapabilityCollectionType capabilities
= ProvisioningObjectsUtil.getNativeCapabilities(getAssignmentHolderModel().getObjectType(), getPageBase());

if (connector != null && SchemaConstants.ICF_FRAMEWORK_URI.equals(connector.asObjectable().getFramework())) {
CapabilityCollectionType capabilities
= ProvisioningObjectsUtil.getNativeCapabilities(getAssignmentHolderModel().getObjectType(), getPageBase());

if (capabilities.getDiscoverConfiguration() != null) {
steps.add(new PartialConfigurationStepPanel(getAssignmentHolderModel()));
Expand All @@ -108,25 +109,33 @@ protected void onSubmitPerformed(AjaxRequestTarget target) {
}
});
} else {
steps.add(new ConfigurationStepPanel(getAssignmentHolderModel()) {
steps.add(new ConfigurationStepPanel(getAssignmentHolderModel(), true) {
@Override
protected void onSubmitPerformed(AjaxRequestTarget target) {
target.add(getFeedback());
BasicResourceWizardPanel.this.onFinishBasicWizardPerformed(target);
}
});
}
} else {
steps.add(new ConfigurationStepPanel(getAssignmentHolderModel(), false) {
@Override
protected void onSubmitPerformed(AjaxRequestTarget target) {
target.add(getFeedback());
BasicResourceWizardPanel.this.onFinishBasicWizardPerformed(target);
}
});
}

if (capabilities.getSchema() != null) {
steps.add(new SelectObjectClassesStepPanel(getAssignmentHolderModel()) {
@Override
protected void onSubmitPerformed(AjaxRequestTarget target) {
target.add(getFeedback());
super.onSubmitPerformed(target);
BasicResourceWizardPanel.this.onFinishBasicWizardPerformed(target);
}
});
}
if (capabilities.getSchema() != null) {
steps.add(new SelectObjectClassesStepPanel(getAssignmentHolderModel()) {
@Override
protected void onSubmitPerformed(AjaxRequestTarget target) {
target.add(getFeedback());
super.onSubmitPerformed(target);
BasicResourceWizardPanel.this.onFinishBasicWizardPerformed(target);
}
});
}

return steps;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,21 @@
*/
package com.evolveum.midpoint.gui.impl.page.admin.resource.component.wizard.basic;

import com.evolveum.midpoint.gui.api.prism.wrapper.PrismContainerWrapper;
import com.evolveum.midpoint.gui.impl.page.admin.resource.ResourceDetailsModel;
import com.evolveum.midpoint.prism.path.ItemPath;
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;

import com.evolveum.midpoint.web.model.PrismContainerWrapperModel;
import com.evolveum.midpoint.xml.ns._public.common.common_3.ConnectorConfigurationType;
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.model.IModel;

/**
* @author lskublik
*/
Expand All @@ -26,16 +31,18 @@
display = @PanelDisplay(
label = "PageResource.wizard.step.configuration",
icon = "fa fa-cog"),
containerPath = "connectorConfiguration/configurationProperties",
containerPath = "empty",
expanded = true)
public class ConfigurationStepPanel extends AbstractConfigurationStepPanel {

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

private static final String PANEL_TYPE = "rw-connectorConfiguration";
private final boolean isConnId;

public ConfigurationStepPanel(ResourceDetailsModel model) {
public ConfigurationStepPanel(ResourceDetailsModel model, boolean isConnId) {
super(model);
this.isConnId = isConnId;
}

protected String getPanelType() {
Expand All @@ -46,4 +53,14 @@ protected String getPanelType() {
public String getStepId() {
return PANEL_TYPE;
}

@Override
protected IModel<? extends PrismContainerWrapper> getContainerFormModel() {
ItemPath path = ItemPath.create("connectorConfiguration");
if (isConnId) {
path = path.append("configurationProperties");
}

return PrismContainerWrapperModel.fromContainerWrapper(getDetailsModel().getObjectWrapperModel(), path);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,11 @@ protected String getIcon() {
}
return "fa fa-circle";
}

@Override
protected boolean isVisibleSubContainer(PrismContainerWrapper c) {
return VerticalFormDefaultContainerablePanel.this.isVisibleSubContainer(c);
}
};
panel.setOutputMarkupId(true);
container.add(new VisibleEnableBehaviour() {
Expand Down

0 comments on commit e5d798c

Please sign in to comment.