You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by fm...@apache.org on 2016/04/18 10:05:56 UTC
[4/7] syncope git commit: [SYNCOPE-156,
SYNCOPE-817] provides wizard to manage resources and connectors
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
new file mode 100644
index 0000000..281b0b7
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceMappingPanel.java
@@ -0,0 +1,642 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wizards.resources;
+
+import de.agilecoders.wicket.core.markup.html.bootstrap.components.TooltipConfig;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.apache.commons.collections4.IterableUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.syncope.client.console.commons.ConnIdSpecialAttributeName;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.rest.AnyTypeClassRestClient;
+import org.apache.syncope.client.console.rest.AnyTypeRestClient;
+import org.apache.syncope.client.console.rest.ConnectorRestClient;
+import org.apache.syncope.client.console.wicket.ajax.form.IndicatorAjaxFormComponentUpdatingBehavior;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLinksPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.MappingPurposePanel;
+import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.lib.to.AnyTypeTO;
+import org.apache.syncope.common.lib.to.ConnIdObjectClassTO;
+import org.apache.syncope.common.lib.to.ConnInstanceTO;
+import org.apache.syncope.common.lib.to.MappingItemTO;
+import org.apache.syncope.common.lib.to.MappingTO;
+import org.apache.syncope.common.lib.to.ProvisionTO;
+import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.common.lib.types.ConnConfProperty;
+import org.apache.syncope.common.lib.types.IntMappingType;
+import org.apache.syncope.common.lib.types.MappingPurpose;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.form.AjaxButton;
+import org.apache.wicket.extensions.ajax.markup.html.IndicatingAjaxButton;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.markup.html.panel.Panel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.ResourceModel;
+
+/**
+ * Resource mapping panel.
+ */
+public class ResourceMappingPanel extends Panel {
+
+ private static final long serialVersionUID = -7982691107029848579L;
+
+ /**
+ * Mapping field style sheet.
+ */
+ private static final String DEF_FIELD_STYLE = "";
+
+ /**
+ * Any type rest client.
+ */
+ private final AnyTypeRestClient anyTypeRestClient = new AnyTypeRestClient();
+
+ /**
+ * Any type class rest client.
+ */
+ private final AnyTypeClassRestClient anyTypeClassRestClient = new AnyTypeClassRestClient();
+
+ /**
+ * ConnInstance rest client.
+ */
+ private final ConnectorRestClient connRestClient = new ConnectorRestClient();
+
+ /**
+ * Resource schema name.
+ */
+ private final List<String> schemaNames;
+
+ private final Label passwordLabel;
+
+ /**
+ * Add mapping button.
+ */
+ private final AjaxButton addMappingBtn;
+
+ /**
+ * All mappings.
+ */
+ private final ListView<MappingItemTO> mappings;
+
+ /**
+ * External resource to be updated.
+ */
+ private final ResourceTO resourceTO;
+
+ /**
+ * External resource provisioning configuration instance to be updated.
+ */
+ private final ProvisionTO provisionTO;
+
+ /**
+ * Mapping container.
+ */
+ private final WebMarkupContainer mappingContainer;
+
+ private MappingTO getMapping() {
+ if (provisionTO.getMapping() == null) {
+ provisionTO.setMapping(new MappingTO());
+ }
+
+ return provisionTO.getMapping();
+ }
+
+ /**
+ * Attribute Mapping Panel.
+ *
+ * @param id panel id
+ * @param resourceTO external resource to be updated.
+ * @param provisionTO external resource provisioning configuration instance.
+ */
+ public ResourceMappingPanel(final String id, final ResourceTO resourceTO, final ProvisionTO provisionTO) {
+ super(id);
+ setOutputMarkupId(true);
+
+ this.resourceTO = resourceTO;
+ this.provisionTO = provisionTO == null ? new ProvisionTO() : provisionTO;
+
+ this.mappingContainer = new WebMarkupContainer("mappingContainer");
+ this.mappingContainer.setOutputMarkupId(true);
+ add(this.mappingContainer);
+
+ if (resourceTO.getConnector() != null && resourceTO.getConnector() > 0) {
+ schemaNames = getSchemaNames(resourceTO.getConnector(), resourceTO.getConfOverride());
+ setEnabled();
+ } else {
+ schemaNames = Collections.<String>emptyList();
+ }
+
+ mappingContainer.add(Constants.getJEXLPopover(this, TooltipConfig.Placement.bottom));
+
+ passwordLabel = new Label("passwordLabel", new ResourceModel("password"));
+ mappingContainer.add(passwordLabel);
+
+ Collections.sort(getMapping().getItems(), new Comparator<MappingItemTO>() {
+
+ @Override
+ public int compare(final MappingItemTO left, final MappingItemTO right) {
+ int compared;
+ if (left == null && right == null) {
+ compared = 0;
+ } else if (left == null) {
+ compared = 1;
+ } else if (right == null) {
+ compared = -1;
+ } else if (left.getPurpose() == MappingPurpose.BOTH && right.getPurpose() != MappingPurpose.BOTH) {
+ compared = -1;
+ } else if (left.getPurpose() != MappingPurpose.BOTH && right.getPurpose() == MappingPurpose.BOTH) {
+ compared = 1;
+ } else if (left.getPurpose() == MappingPurpose.PROPAGATION
+ && (right.getPurpose() == MappingPurpose.PULL
+ || right.getPurpose() == MappingPurpose.NONE)) {
+ compared = -1;
+ } else if (left.getPurpose() == MappingPurpose.PULL
+ && right.getPurpose() == MappingPurpose.PROPAGATION) {
+ compared = 1;
+ } else if (left.getPurpose() == MappingPurpose.PULL
+ && right.getPurpose() == MappingPurpose.NONE) {
+ compared = -1;
+ } else if (left.getPurpose() == MappingPurpose.NONE
+ && right.getPurpose() != MappingPurpose.NONE) {
+ compared = 1;
+ } else if (left.isConnObjectKey()) {
+ compared = -1;
+ } else if (right.isConnObjectKey()) {
+ compared = 1;
+ } else if (left.isPassword()) {
+ compared = -1;
+ } else if (right.isPassword()) {
+ compared = 1;
+ } else {
+ compared = left.getIntAttrName().compareTo(right.getIntAttrName());
+ }
+ return compared;
+ }
+ });
+
+ mappings = new ListView<MappingItemTO>("mappings", getMapping().getItems()) {
+
+ private static final long serialVersionUID = 4949588177564901031L;
+
+ @Override
+ protected void populateItem(final ListItem<MappingItemTO> item) {
+ final MappingItemTO mapItem = item.getModelObject();
+ if (mapItem.getPurpose() == null) {
+ mapItem.setPurpose(MappingPurpose.BOTH);
+ }
+
+ AnyTypeKind entity = null;
+ if (provisionTO.getAnyType().equals(AnyTypeKind.GROUP.name())) {
+ // support for clone
+ entity = AnyTypeKind.GROUP;
+ } else if (mapItem.getIntMappingType() != null) {
+ entity = mapItem.getIntMappingType().getAnyTypeKind();
+ }
+
+ // it will happen just in case of clone to create a new mapping for group object
+ if (mapItem.getIntMappingType() != null && mapItem.getIntMappingType().getAnyTypeKind() != entity) {
+ mapItem.setIntMappingType(null);
+ mapItem.setIntAttrName(null);
+ }
+
+ //--------------------------------
+ // Entity
+ // -------------------------------
+ final AjaxDropDownChoicePanel<AnyTypeKind> entitiesPanel = new AjaxDropDownChoicePanel<>(
+ "entities",
+ new ResourceModel("entities", "entities").getObject(),
+ new Model<>(entity));
+
+ entitiesPanel.hideLabel();
+ entitiesPanel.setChoices(provisionTO.getAnyType().equals(AnyTypeKind.GROUP.name())
+ ? Collections.<AnyTypeKind>singletonList(AnyTypeKind.GROUP)
+ : Arrays.asList(AnyTypeKind.values()));
+
+ entitiesPanel.setStyleSheet(false, DEF_FIELD_STYLE);
+ item.add(entitiesPanel);
+ // -------------------------------
+
+ //--------------------------------
+ // Internal attribute type
+ // -------------------------------
+ final List<IntMappingType> attrTypes = new ArrayList<>(getAttributeTypes(entity));
+ final AjaxDropDownChoicePanel<IntMappingType> intMappingTypes = new AjaxDropDownChoicePanel<>(
+ "intMappingTypes",
+ new ResourceModel("intMappingTypes", "intMappingTypes").getObject(),
+ new PropertyModel<IntMappingType>(mapItem, "intMappingType"),
+ false);
+ intMappingTypes.setNullValid(true).setRequired(true).hideLabel();
+ intMappingTypes.setChoices(attrTypes);
+ item.add(intMappingTypes);
+ // -------------------------------
+
+ //--------------------------------
+ // Internal attribute
+ // -------------------------------
+ final AjaxDropDownChoicePanel<String> intAttrNames = new AjaxDropDownChoicePanel<>(
+ "intAttrNames",
+ getString("intAttrNames"),
+ new PropertyModel<String>(mapItem, "intAttrName"),
+ false);
+ intAttrNames.setChoices(Collections.<String>emptyList());
+ intAttrNames.setNullValid(true).setRequired(true).hideLabel();
+ item.add(intAttrNames);
+ // -------------------------------
+
+ //--------------------------------
+ // External attribute
+ // -------------------------------
+ final AjaxTextFieldPanel extAttrNames = new AjaxTextFieldPanel(
+ "extAttrName",
+ new ResourceModel("extAttrNames", "extAttrNames").getObject(),
+ new PropertyModel<String>(mapItem, "extAttrName"));
+ extAttrNames.setChoices(schemaNames);
+
+ boolean required = !mapItem.isPassword();
+ extAttrNames.setRequired(required).hideLabel();
+ extAttrNames.setEnabled(required);
+ item.add(extAttrNames);
+ // -------------------------------
+
+ //--------------------------------
+ // Mandatory
+ // -------------------------------
+ final AjaxTextFieldPanel mandatory = new AjaxTextFieldPanel(
+ "mandatoryCondition",
+ new ResourceModel("mandatoryCondition", "mandatoryCondition").getObject(),
+ new PropertyModel<String>(mapItem, "mandatoryCondition"));
+ mandatory.hideLabel();
+ mandatory.setChoices(Arrays.asList(new String[] { "true", "false" }));
+ item.add(mandatory);
+ // -------------------------------
+
+ //--------------------------------
+ // Connector object key
+ // -------------------------------
+ final AjaxCheckBoxPanel connObjectKey = new AjaxCheckBoxPanel(
+ "connObjectKey",
+ new ResourceModel("connObjectKey", "connObjectKey").getObject(),
+ new PropertyModel<Boolean>(mapItem, "connObjectKey"), false);
+ connObjectKey.hideLabel();
+ item.add(connObjectKey);
+ // -------------------------------
+
+ //--------------------------------
+ // Password
+ // -------------------------------
+ final AjaxCheckBoxPanel password = new AjaxCheckBoxPanel(
+ "password",
+ new ResourceModel("password", "password").getObject(),
+ new PropertyModel<Boolean>(mapItem, "password"), false);
+ item.add(password.hideLabel());
+ // -------------------------------
+
+ //--------------------------------
+ // Purpose
+ // -------------------------------
+ final WebMarkupContainer purpose = new WebMarkupContainer("purpose");
+ purpose.setOutputMarkupId(Boolean.TRUE);
+
+ final MappingPurposePanel panel = new MappingPurposePanel(
+ "purposeActions", new PropertyModel<MappingPurpose>(mapItem, "purpose"), purpose);
+
+ purpose.add(panel.setRenderBodyOnly(true));
+ item.add(purpose);
+ // -------------------------------
+
+ //--------------------------------
+ // Remove
+ // -------------------------------
+ final ActionLinksPanel.Builder<Serializable> actions = ActionLinksPanel.builder();
+ actions.add(new ActionLink<Serializable>() {
+
+ private static final long serialVersionUID = -3722207913631435501L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final Serializable ignore) {
+ int index = -1;
+ for (int i = 0; i < getMapping().getItems().size() && index == -1; i++) {
+ if (mapItem.equals(getMapping().getItems().get(i))) {
+ index = i;
+ }
+ }
+
+ if (index != -1) {
+ getMapping().getItems().remove(index);
+ item.getParent().removeAll();
+ target.add(ResourceMappingPanel.this);
+ }
+ }
+ }, ActionLink.ActionType.DELETE, StandardEntitlement.RESOURCE_UPDATE);
+ item.add(actions.build("toRemove"));
+ // -------------------------------
+
+ entitiesPanel.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306810L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ attrTypes.clear();
+ attrTypes.addAll(getAttributeTypes(entitiesPanel.getModelObject()));
+ intMappingTypes.setChoices(attrTypes);
+
+ intAttrNames.setChoices(Collections.<String>emptyList());
+
+ target.add(intMappingTypes);
+ target.add(intAttrNames);
+ }
+ });
+
+ intMappingTypes.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306810L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ setAttrNames(intMappingTypes.getModelObject(), intAttrNames);
+ target.add(intAttrNames);
+
+ setConnObjectKey(intMappingTypes.getModelObject(), connObjectKey, password);
+ target.add(connObjectKey);
+ }
+ });
+
+ intAttrNames.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306810L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ }
+ });
+
+ connObjectKey.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306810L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ if (connObjectKey.getModelObject()) {
+ mapItem.setMandatoryCondition("true");
+ mandatory.setEnabled(false);
+ } else {
+ mapItem.setMandatoryCondition("false");
+ mandatory.setEnabled(true);
+ }
+ target.add(mandatory);
+ }
+ });
+
+ password.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {
+
+ private static final long serialVersionUID = -1107858522700306810L;
+
+ @Override
+ protected void onUpdate(final AjaxRequestTarget target) {
+ extAttrNames.setEnabled(!mapItem.isConnObjectKey() && !password.getModelObject());
+ extAttrNames.setModelObject(password.getModelObject()
+ ? ConnIdSpecialAttributeName.PASSWORD : extAttrNames.getModelObject());
+ extAttrNames.setRequired(!password.getModelObject());
+ target.add(extAttrNames);
+
+ setConnObjectKey(intMappingTypes.getModelObject(), connObjectKey, password);
+ target.add(connObjectKey);
+ }
+ });
+
+ setAttrNames(mapItem.getIntMappingType(), intAttrNames);
+ setConnObjectKey(mapItem.getIntMappingType(), connObjectKey, password);
+
+ if (!AnyTypeKind.USER.name().equals(provisionTO.getAnyType())) {
+ password.setVisible(false);
+
+ // Changes required by clone ....
+ extAttrNames.setEnabled(!mapItem.isConnObjectKey());
+ if (mapItem.isPassword()) {
+ // re-enable if and only if cloned objec mapping item was a password
+ intAttrNames.setEnabled(true);
+ }
+ mapItem.setPassword(false);
+ }
+ }
+ };
+
+ mappings.setReuseItems(true);
+ mappingContainer.add(mappings);
+
+ addMappingBtn = new IndicatingAjaxButton("addMappingBtn", new ResourceModel("add")) {
+
+ private static final long serialVersionUID = -4804368561204623354L;
+
+ @Override
+ protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
+ getMapping().getItems().add(new MappingItemTO());
+ target.add(ResourceMappingPanel.this);
+ }
+ };
+ addMappingBtn.setDefaultFormProcessing(false);
+ addMappingBtn.setEnabled(resourceTO.getConnector() != null && resourceTO.getConnector() > 0);
+ mappingContainer.add(addMappingBtn);
+ }
+
+ @Override
+ protected void onBeforeRender() {
+ super.onBeforeRender();
+ passwordLabel.setVisible(AnyTypeKind.USER.name().equals(this.provisionTO.getAnyType()));
+ }
+
+ private List<String> getSchemaNames(final Long connectorId, final Set<ConnConfProperty> conf) {
+ final ConnInstanceTO connInstanceTO = new ConnInstanceTO();
+ connInstanceTO.setKey(connectorId);
+ connInstanceTO.getConf().addAll(conf);
+
+ // SYNCOPE-156: use provided info to give schema names (and type!) by ObjectClass
+ ConnIdObjectClassTO clazz = IterableUtils.find(
+ connRestClient.buildObjectClassInfo(connInstanceTO, true), new Predicate<ConnIdObjectClassTO>() {
+
+ @Override
+ public boolean evaluate(final ConnIdObjectClassTO object) {
+ return object.getType().equalsIgnoreCase(ResourceMappingPanel.this.provisionTO.getObjectClass());
+ }
+ });
+
+ return clazz == null ? new ArrayList<String>()
+ : IterableUtils.toList(IterableUtils.filteredIterable(clazz.getAttributes(), new Predicate<String>() {
+
+ @Override
+ public boolean evaluate(final String object) {
+ return !(ConnIdSpecialAttributeName.NAME.equals(object)
+ || ConnIdSpecialAttributeName.ENABLE.equals(object)
+ || ConnIdSpecialAttributeName.PASSWORD.equals(object));
+ }
+ }));
+ }
+
+ private void setEnabled() {
+ ConnInstanceTO connInstanceTO = new ConnInstanceTO();
+ connInstanceTO.setKey(resourceTO.getConnector());
+ connInstanceTO.getConf().addAll(resourceTO.getConfOverride());
+
+ boolean enabled = provisionTO != null;
+
+ this.mappingContainer.setEnabled(enabled);
+ this.mappingContainer.setVisible(enabled);
+
+ if (!enabled) {
+ getMapping().getItems().clear();
+ getMapping().setConnObjectLink(null);
+ }
+ }
+
+ /**
+ * Set attribute names for a drop down choice list.
+ *
+ * @param type attribute type.
+ * @param toBeUpdated drop down choice to be updated.
+ */
+ private void setAttrNames(final IntMappingType type, final AjaxDropDownChoicePanel<String> toBeUpdated) {
+ toBeUpdated.setRequired(true);
+ toBeUpdated.setEnabled(true);
+
+ if (type == null || type.getAnyTypeKind() == null) {
+ toBeUpdated.setChoices(Collections.<String>emptyList());
+ } else {
+ AnyTypeTO anyTypeTO = anyTypeRestClient.read(provisionTO.getAnyType());
+
+ List<AnyTypeClassTO> anyTypeClassTOs = new ArrayList<>();
+ anyTypeClassTOs.addAll(anyTypeClassRestClient.list(anyTypeTO.getClasses()));
+ for (String auxClass : provisionTO.getAuxClasses()) {
+ anyTypeClassTOs.add(anyTypeClassRestClient.read(auxClass));
+ }
+
+ List<String> choices;
+ switch (type) {
+ case UserPlainSchema:
+ case GroupPlainSchema:
+ case AnyObjectPlainSchema:
+ final Set<String> plains = new HashSet<>();
+ for (AnyTypeClassTO anyTypeClassTO : anyTypeClassTOs) {
+ plains.addAll(anyTypeClassTO.getPlainSchemas());
+ }
+ choices = new ArrayList<>(plains);
+ break;
+
+ case UserDerivedSchema:
+ case GroupDerivedSchema:
+ case AnyObjectDerivedSchema:
+ final Set<String> deriveds = new HashSet<>();
+ for (AnyTypeClassTO anyTypeClassTO : anyTypeClassTOs) {
+ deriveds.addAll(anyTypeClassTO.getDerSchemas());
+ }
+ choices = new ArrayList<>(deriveds);
+ break;
+
+ case UserVirtualSchema:
+ case GroupVirtualSchema:
+ case AnyObjectVirtualSchema:
+ final Set<String> virtuals = new HashSet<>();
+ for (AnyTypeClassTO anyTypeClassTO : anyTypeClassTOs) {
+ virtuals.addAll(anyTypeClassTO.getVirSchemas());
+ }
+ choices = new ArrayList<>(virtuals);
+ break;
+
+ case UserKey:
+ case Password:
+ case Username:
+ case GroupKey:
+ case GroupName:
+ case AnyObjectKey:
+ default:
+ toBeUpdated.setRequired(false);
+ toBeUpdated.setEnabled(false);
+ choices = Collections.<String>emptyList();
+ }
+ Collections.sort(choices);
+ toBeUpdated.setChoices(choices);
+ }
+ }
+
+ /**
+ * Enable/Disable connObjectKey checkbox.
+ *
+ * @param type attribute type.
+ * @param connObjectKey connObjectKey checkbox.
+ * @param password password checkbox.
+ */
+ private void setConnObjectKey(
+ final IntMappingType type, final AjaxCheckBoxPanel connObjectKey, final AjaxCheckBoxPanel password) {
+
+ if (type != null && type.getAnyTypeKind() != null) {
+ switch (type) {
+ case UserVirtualSchema:
+ case GroupVirtualSchema:
+ case AnyObjectVirtualSchema:
+ // Virtual connObjectKey is not permitted
+ case Password:
+ // connObjectKey cannot be derived from password.
+ connObjectKey.setReadOnly(true);
+ connObjectKey.setModelObject(false);
+ break;
+
+ default:
+ if (password.getModelObject()) {
+ connObjectKey.setReadOnly(true);
+ connObjectKey.setModelObject(false);
+ } else {
+ connObjectKey.setReadOnly(false);
+ }
+ }
+ }
+ }
+
+ /**
+ * Get all attribute types from a selected attribute type.
+ *
+ * @param kind entity.
+ * @return all attribute types.
+ */
+ private List<IntMappingType> getAttributeTypes(final AnyTypeKind kind) {
+ final List<IntMappingType> res = new ArrayList<>();
+
+ if (kind != null) {
+ res.addAll(IntMappingType.getAttributeTypes(kind));
+ }
+
+ return res;
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
new file mode 100644
index 0000000..67aaf9b
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceProvisionPanel.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wizards.resources;
+
+import java.util.List;
+import org.apache.commons.collections4.IteratorUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.commons.lang3.SerializationUtils;
+import org.apache.syncope.client.console.panels.ListViewPanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.ActionLink;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
+import org.apache.syncope.common.lib.to.ProvisionTO;
+import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.lib.types.StandardEntitlement;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.event.Broadcast;
+import org.apache.wicket.extensions.wizard.WizardStep;
+
+public class ResourceProvisionPanel extends WizardStep {
+
+ private static final long serialVersionUID = -7982691107029848579L;
+
+ public ResourceProvisionPanel(final ResourceTO resourceTO, final PageReference pageRef) {
+ super();
+ setOutputMarkupId(true);
+
+ final ListViewPanel.Builder<ProvisionTO> builder = new ListViewPanel.Builder<ProvisionTO>(
+ ProvisionTO.class, pageRef) {
+
+ private static final long serialVersionUID = 4907732721283972943L;
+
+ @Override
+ protected ProvisionTO getActualItem(final ProvisionTO item, final List<ProvisionTO> list) {
+ return item == null
+ ? null
+ : IteratorUtils.find(list.iterator(), new Predicate<ProvisionTO>() {
+
+ @Override
+ public boolean evaluate(final ProvisionTO in) {
+ return ((item.getKey() == null && in.getKey() == null)
+ || (in.getKey() != null && in.getKey().equals(item.getKey())))
+ && ((item.getAnyType() == null && in.getAnyType() == null)
+ || (in.getAnyType() != null && in.getAnyType().equals(item.getAnyType())));
+ }
+ });
+ }
+ };
+
+ builder.setItems(resourceTO.getProvisions());
+ builder.includes("anyType", "objectClass", "auxClasses");
+ builder.setReuseItem(false);
+
+ builder.
+ addAction(new ActionLink<ProvisionTO>() {
+
+ private static final long serialVersionUID = -3722207913631435504L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ProvisionTO provisionTO) {
+ send(pageRef.getPage(), Broadcast.DEPTH,
+ new AjaxWizard.NewItemActionEvent<>(provisionTO, 2, target));
+ }
+ }, ActionLink.ActionType.MAPPING, StandardEntitlement.RESOURCE_UPDATE).
+ addAction(new ActionLink<ProvisionTO>() {
+
+ private static final long serialVersionUID = -3722207913631435524L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ProvisionTO provisionTO) {
+ provisionTO.setSyncToken(null);
+ send(pageRef.getPage(), Broadcast.DEPTH, new ListViewPanel.ListViewReload(target));
+ }
+ }, ActionLink.ActionType.RESET_TIME, StandardEntitlement.RESOURCE_UPDATE).
+ addAction(new ActionLink<ProvisionTO>() {
+
+ private static final long serialVersionUID = -3722207913631435534L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ProvisionTO provisionTO) {
+ final ProvisionTO clone = SerializationUtils.clone(provisionTO);
+ clone.setKey(0L);
+ clone.setAnyType(null);
+ clone.setObjectClass(null);
+ send(pageRef.getPage(), Broadcast.DEPTH, new AjaxWizard.NewItemActionEvent<>(clone, target));
+ }
+ }, ActionLink.ActionType.CLONE, StandardEntitlement.RESOURCE_CREATE).
+ addAction(new ActionLink<ProvisionTO>() {
+
+ private static final long serialVersionUID = -3722207913631435544L;
+
+ @Override
+ public void onClick(final AjaxRequestTarget target, final ProvisionTO provisionTO) {
+ resourceTO.getProvisions().remove(provisionTO);
+ send(pageRef.getPage(), Broadcast.DEPTH, new ListViewPanel.ListViewReload(target));
+ }
+ }, ActionLink.ActionType.DELETE, StandardEntitlement.RESOURCE_DELETE);
+
+ builder.addNewItemPanelBuilder(new ProvisionWizardBuilder(resourceTO, pageRef));
+ add(builder.build("provision"));
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java
new file mode 100644
index 0000000..1661893
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceSecurityPanel.java
@@ -0,0 +1,137 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wizards.resources;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.syncope.client.console.rest.PolicyRestClient;
+import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel;
+import org.apache.syncope.client.console.wicket.markup.html.form.PolicyRenderer;
+import org.apache.syncope.common.lib.policy.AbstractPolicyTO;
+import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.lib.types.PolicyType;
+import org.apache.wicket.extensions.wizard.WizardStep;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.LoadableDetachableModel;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.ResourceModel;
+
+public class ResourceSecurityPanel extends WizardStep {
+
+ private static final long serialVersionUID = -7982691107029848579L;
+
+ private final PolicyRestClient policyRestClient = new PolicyRestClient();
+
+ private final IModel<Map<Long, String>> passwordPolicies = new LoadableDetachableModel<Map<Long, String>>() {
+
+ private static final long serialVersionUID = 5275935387613157437L;
+
+ @Override
+ protected Map<Long, String> load() {
+ Map<Long, String> res = new HashMap<>();
+ for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.PASSWORD)) {
+ res.put(policyTO.getKey(), policyTO.getDescription());
+ }
+ return res;
+ }
+ };
+
+ private final IModel<Map<Long, String>> accountPolicies = new LoadableDetachableModel<Map<Long, String>>() {
+
+ private static final long serialVersionUID = -2012833443695917883L;
+
+ @Override
+ protected Map<Long, String> load() {
+ Map<Long, String> res = new HashMap<>();
+ for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.ACCOUNT)) {
+ res.put(policyTO.getKey(), policyTO.getDescription());
+ }
+ return res;
+ }
+ };
+
+ private final IModel<Map<Long, String>> pullPolicies = new LoadableDetachableModel<Map<Long, String>>() {
+
+ private static final long serialVersionUID = -2012833443695917883L;
+
+ @Override
+ protected Map<Long, String> load() {
+ Map<Long, String> res = new HashMap<>();
+ for (AbstractPolicyTO policyTO : policyRestClient.getPolicies(PolicyType.PULL)) {
+ res.put(policyTO.getKey(), policyTO.getDescription());
+ }
+ return res;
+ }
+ };
+
+ public ResourceSecurityPanel(final ResourceTO resourceTO) {
+ super();
+ setOutputMarkupId(true);
+
+ final WebMarkupContainer container = new WebMarkupContainer("container");
+ container.setOutputMarkupId(true);
+ container.setRenderBodyOnly(true);
+ add(container);
+
+ // -------------------------------
+ // Password policy selection
+ // -------------------------------
+ AjaxDropDownChoicePanel<Long> passwordPolicy = new AjaxDropDownChoicePanel<>(
+ "passwordPolicy",
+ new ResourceModel("passwordPolicy", "passwordPolicy").getObject(),
+ new PropertyModel<Long>(resourceTO, "passwordPolicy"),
+ false);
+ passwordPolicy.setChoiceRenderer(new PolicyRenderer(passwordPolicies));
+ passwordPolicy.setChoices(new ArrayList<>(passwordPolicies.getObject().keySet()));
+ ((DropDownChoice<?>) passwordPolicy.getField()).setNullValid(true);
+ container.add(passwordPolicy);
+ // -------------------------------
+
+ // -------------------------------
+ // Account policy selection
+ // -------------------------------
+ AjaxDropDownChoicePanel<Long> accountPolicy = new AjaxDropDownChoicePanel<>(
+ "accountPolicy",
+ new ResourceModel("accountPolicy", "accountPolicy").getObject(),
+ new PropertyModel<Long>(resourceTO, "accountPolicy"),
+ false);
+ accountPolicy.setChoiceRenderer(new PolicyRenderer(accountPolicies));
+ accountPolicy.setChoices(new ArrayList<>(accountPolicies.getObject().keySet()));
+ ((DropDownChoice<?>) accountPolicy.getField()).setNullValid(true);
+ container.add(accountPolicy);
+ // -------------------------------
+
+ // -------------------------------
+ // Pull policy selection
+ // -------------------------------
+ AjaxDropDownChoicePanel<Long> pullPolicy = new AjaxDropDownChoicePanel<>(
+ "pullPolicy",
+ new ResourceModel("pullPolicy", "pullPolicy").getObject(),
+ new PropertyModel<Long>(resourceTO, "pullPolicy"),
+ false);
+ pullPolicy.setChoiceRenderer(new PolicyRenderer(pullPolicies));
+ pullPolicy.setChoices(new ArrayList<>(pullPolicies.getObject().keySet()));
+ ((DropDownChoice<?>) pullPolicy.getField()).setNullValid(true);
+ container.add(pullPolicy);
+ // -------------------------------
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceWizardBuilder.java
----------------------------------------------------------------------
diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceWizardBuilder.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceWizardBuilder.java
new file mode 100644
index 0000000..e46201f
--- /dev/null
+++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ResourceWizardBuilder.java
@@ -0,0 +1,144 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.syncope.client.console.wizards.resources;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.Collection;
+import org.apache.commons.collections4.IterableUtils;
+import org.apache.commons.collections4.Predicate;
+import org.apache.syncope.client.console.SyncopeConsoleSession;
+import org.apache.syncope.client.console.commons.Constants;
+import org.apache.syncope.client.console.rest.ConnectorRestClient;
+import org.apache.syncope.client.console.rest.ResourceRestClient;
+import org.apache.syncope.client.console.topology.TopologyNode;
+import org.apache.syncope.client.console.wizards.AjaxWizard;
+import org.apache.syncope.common.lib.to.MappingItemTO;
+import org.apache.syncope.common.lib.to.ProvisionTO;
+import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.wicket.PageReference;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.wizard.WizardModel;
+import org.apache.wicket.markup.ComponentTag;
+import org.apache.wicket.model.StringResourceModel;
+
+/**
+ * Resource wizard builder.
+ */
+public class ResourceWizardBuilder extends AbstractResourceWizardBuilder<ResourceTO> {
+
+ private static final long serialVersionUID = 1734415311027284221L;
+
+ private final ResourceRestClient resourceRestClient = new ResourceRestClient();
+
+ private final ConnectorRestClient connectorRestClient = new ConnectorRestClient();
+
+ private boolean createFlag;
+
+ public ResourceWizardBuilder(final ResourceTO resourceTO, final PageReference pageRef) {
+ super(resourceTO, pageRef);
+ }
+
+ @Override
+ public AjaxWizard<Serializable> build(final AjaxWizard.Mode mode) {
+ this.createFlag = mode == AjaxWizard.Mode.CREATE;
+ return super.build(mode);
+ }
+
+ @Override
+ protected WizardModel buildModelSteps(final Serializable modelObject, final WizardModel wizardModel) {
+ final ResourceTO resourceTO = ResourceTO.class.cast(modelObject);
+ wizardModel.add(new ResourceDetailsPanel(resourceTO, createFlag));
+ wizardModel.add(new ResourceProvisionPanel(resourceTO, pageRef));
+ wizardModel.add(new ResourceConnConfPanel(resourceTO, createFlag) {
+
+ private static final long serialVersionUID = -1128269449868933504L;
+
+ @Override
+ protected void check(final AjaxRequestTarget target) {
+ if (connectorRestClient.check(modelObject)) {
+ info(getString(Constants.OPERATION_SUCCEEDED));
+ } else {
+ error(getString("error_connection"));
+ }
+ SyncopeConsoleSession.get().getNotificationPanel().refresh(target);
+ }
+
+ @Override
+ protected void onComponentTag(final ComponentTag tag) {
+ tag.append("class", "scrollable-tab-content", " ");
+ }
+
+ });
+ wizardModel.add(new ResourceConnCapabilitiesPanel(
+ resourceTO, connectorRestClient.read(resourceTO.getConnector()).getCapabilities()));
+
+ wizardModel.add(new ResourceSecurityPanel(resourceTO));
+ return wizardModel;
+ }
+
+ @Override
+ protected ResourceTO onApplyInternal(final Serializable modelObject) {
+ final ResourceTO resourceTO = ResourceTO.class.cast(modelObject);
+ boolean connObjectKeyError = false;
+
+ final Collection<ProvisionTO> provisions = new ArrayList<>(resourceTO.getProvisions());
+
+ for (ProvisionTO provision : provisions) {
+ if (provision != null) {
+ if (provision.getMapping() == null || provision.getMapping().getItems().isEmpty()) {
+ resourceTO.getProvisions().remove(provision);
+ } else {
+ long uConnObjectKeyCount = IterableUtils.countMatches(
+ provision.getMapping().getItems(), new Predicate<MappingItemTO>() {
+
+ @Override
+ public boolean evaluate(final MappingItemTO item) {
+ return item.isConnObjectKey();
+ }
+ });
+
+ connObjectKeyError = uConnObjectKeyCount != 1;
+ }
+ }
+ }
+
+ final ResourceTO res;
+ if (connObjectKeyError) {
+ throw new RuntimeException(new StringResourceModel("connObjectKeyValidation").getString());
+ } else if (createFlag) {
+ res = resourceRestClient.create(resourceTO);
+ } else {
+ resourceRestClient.update(resourceTO);
+ res = resourceTO;
+ }
+ return res;
+ }
+
+ @Override
+ protected Serializable getCreateCustomPayloadEvent(final Serializable afterObject, final AjaxRequestTarget target) {
+ final ResourceTO actual = ResourceTO.class.cast(afterObject);
+ return new CreateEvent(
+ actual.getKey(),
+ actual.getKey(),
+ TopologyNode.Kind.RESOURCE,
+ actual.getConnector(),
+ target);
+ }
+}
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
index 05183af..fb8431a 100644
--- a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
+++ b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css
@@ -163,7 +163,14 @@ div.wicket-modal div.w_content_3 {
.scrollable-tab-content {
overflow-y: auto;
- max-height: 400px;
+ max-height: 480px;
+}
+
+.inner-scrollable-tab-content {
+ height: 440px;
+ margin-top: 40px;
+ overflow-x: hidden;
+ overflow-y: auto;
}
a.help {
@@ -229,6 +236,19 @@ a.help span a {
padding: 0px 5px 0px 5px;
}
+div.wizard-view div.wizard-view{
+ max-height: 380px;
+ height: 380px;
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding: 50px 20px 50px 20px;
+}
+
+.wizard-view .wizard-form{
+ max-height: 450px;
+ height: 450px;
+}
+
.modal-body .tab-content .wizard-view {
max-height: 330px !important;
height: 330px !important;
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractConnConfPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractConnConfPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractConnConfPanel.html
deleted file mode 100644
index 974c9aa..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractConnConfPanel.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <span wicket:id="connectorPropertiesContainer">
- <div class="form-group" wicket:id="connectorProperties">
- <span wicket:id="panel">[panel]</span>
- </div>
-
- <div>
- <a style="position: fixed; top: 70px; right:60px;" wicket:id="check" href="#">
- <i class="fa fa-heartbeat fa-2x"></i>
- </a>
- </div>
- </span>
- </wicket:panel>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractResourceModal.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractResourceModal.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractResourceModal.html
deleted file mode 100644
index bd4cd4b..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/AbstractResourceModal.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:extend>
- <div wicket:id="tabbedPanel"></div>
- </wicket:extend>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnCapabilitiesPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnCapabilitiesPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnCapabilitiesPanel.html
deleted file mode 100644
index ed50fa5..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnCapabilitiesPanel.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <span wicket:id="capabilitiesPalette"/>
- </wicket:panel>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorDetailsPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorDetailsPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorDetailsPanel.html
deleted file mode 100644
index 87fc624..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorDetailsPanel.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <head>
- <title>Connector details panel</title>
- </head>
- <body>
- <wicket:panel>
- <div class="form-group">
- <span wicket:id="displayName">[displayName]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="location">[location]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="bundleName">[bundleName]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="version">[version]</span>
- </div>
-
- <div class="form-group" style="padding: 30px 0px 0px 0px">
- <table class="table">
- <tbody>
- <tr>
- <td><span wicket:id="connRequestTimeout">[connRequestTimeout]</span></td>
- <td><span wicket:id="poolMaxObjects">[poolMaxObjects]</span></td>
- </tr>
- <tr>
- <td><span wicket:id="poolMinIdle">[poolMinIdle]</span></td>
- <td><span wicket:id="poolMaxIdle">[poolMaxIdle]</span></td>
- </tr>
- <tr>
- <td><span wicket:id="poolMaxWait">[poolMaxWait]</span></td>
- <td><span wicket:id="poolMinEvictableIdleTime">[poolMinEvictableIdleTime]</span></td>
- </tr>
- </tbody>
- </table>
- </div>
- </wicket:panel>
- </body>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal.properties
deleted file mode 100644
index 91dae7b..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal.properties
+++ /dev/null
@@ -1,45 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-general=General
-configuration=Configuration
-capabilities=Capabilities
-
-displayName=Display name
-bundleName=Bundle
-version=Version
-connRequestTimeout=Request timeout (sec)
-action=Action
-edit=Edit
-edit_attribute=Edit attribute
-serviceName=Service name
-endpoint=Endpoint
-title=Connector
-overridable=Overridable
-property=Property
-value=Value
-
-success_connection=Successful connection
-error_connection=Connection failure
-check=Check connection
-location=Location
-poolMaxObjects=Max objects (idle+active)
-poolMinIdle=Min idle objects
-poolMaxIdle=Max idle objects
-poolMaxWait=Max waiting time (msec)
-poolMinEvictableIdleTime=Min eviction time (msec)
-new=New
-connectorName=Connector Bundle
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_it.properties
deleted file mode 100644
index b012649..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_it.properties
+++ /dev/null
@@ -1,45 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-general=Generale
-configuration=Configurazione
-capabilities=Capability
-
-bundleName=Bundle
-version=Versione
-connRequestTimeout=Timeout richiesta (sec)
-action=Azione
-edit=Edit
-edit_attribute=Edit attribute
-serviceName=Nome servizio
-endpoint=Endpoint
-title=Connettore
-displayName=Nome visualizzato
-overridable=Sovrascrivibile
-property=Propriet\u00e0
-value=Valore
-
-success_connection=Connessione avvenuta con successo
-error_connection=Connessione non riuscita
-check=Verifica connessione
-location=Posizione
-poolMaxObjects=Max oggetti (attivi e non)
-poolMinIdle=Max oggetti attivi
-poolMaxIdle=Max oggetti inattivi
-poolMaxWait=Tempo max attesa
-poolMinEvictableIdleTime=Tempo min espulsione
-new=Nuovo
-connectorName=Connector Bundle
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_pt_BR.properties
deleted file mode 100644
index a209703..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_pt_BR.properties
+++ /dev/null
@@ -1,45 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-general=Geral
-configuration=Configura\u00e7\u00e3o
-capabilities=Capacidades
-
-displayName=Mostrar Nome
-bundleName=Bundle
-version=Vers\u00e3o
-connRequestTimeout=Timeout da Requisi\u00e7\u00e3o (seg)
-action=A\u00e7\u00e3o
-edit=Alterar
-edit_attribute=Alterar Atributo
-serviceName=Nome de Servi\u00e7o
-endpoint=Endpoint
-title=Conector
-overridable=Alter\u00e1vel
-property=Propriedade
-value=Valor
-
-success_connection=Sucesso na Conex\u00e3o
-error_connection=Falha na Conex\u00e3o
-check=Verificar a Conex\u00e3o
-location=Localiza\u00e7\u00e3o
-poolMaxObjects=Max objects (idle+active)
-poolMinIdle=Min idle objects
-poolMaxIdle=Max idle objects
-poolMaxWait=Max waiting time (msec)
-poolMinEvictableIdleTime=Min eviction time (msec)
-new=Novo
-connectorName=Connector Bundle
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_ru.properties
deleted file mode 100644
index 8b27977..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ConnectorModal_ru.properties
+++ /dev/null
@@ -1,73 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-# general=Основное
-general=\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0435
-# configuration=Конфигурация
-configuration=\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f
-# capabilities=Действия
-capabilities=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044f
-
-# displayName=Название
-displayName=\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435
-# bundleName=Название пакета
-bundleName=\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430
-# version=Версия
-version=\u0412\u0435\u0440\u0441\u0438\u044f
-# connRequestTimeout=Таймаут запроса (сек)
-connRequestTimeout=\u0422\u0430\u0439\u043c\u0430\u0443\u0442 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 (\u0441\u0435\u043a)
-# action=Действие
-action=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u0435
-# edit=Изменить
-edit=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c
-# edit_attribute=Изменить атрибут
-edit_attribute=\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442
-# serviceName=Наименование сервиса
-serviceName=\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0435\u0440\u0432\u0438\u0441\u0430
-# endpoint=Конечная точка подключения
-endpoint=\u041a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f
-# title=Коннектор
-title=\u041a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0440
-# overridable=Переопределяемый
-overridable=\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0439
-# property=Параметр
-property=\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440
-# value=Значение
-value=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435
-
-# success_connection=Подключение выполнено успешно
-success_connection=\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e
-# error_connection=Во время подключения произошла ошибка
-error_connection=\u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430
-# check=Проверить подключение
-check=\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435
-# location=Расположение
-location=\u0420\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435
-# poolMaxObjects=Максимум объектов (в ожидании + активные)
-poolMaxObjects=\u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 (\u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438 + \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435)
-# poolMinIdle=Минимум объектов в ожидании
-poolMinIdle=\u041c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438
-# poolMaxIdle=Максимум объектов в ожидании
-poolMaxIdle=\u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0432 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0438
-# poolMaxWait=Максимальное время ожидания (мс)
-poolMaxWait=\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f (\u043c\u0441)
-# poolMinEvictableIdleTime=Минимальное время ожидания (мс)
-poolMinEvictableIdleTime=\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f (\u043c\u0441)
-# new=Создать
-new=\u0421\u043e\u0437\u0434\u0430\u0442\u044c
-# connectorName=Название пакета
-connectorName=\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043a\u0435\u0442\u0430
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel.html
deleted file mode 100644
index a37390e..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div class="form-group">
- <span wicket:id="overrideCapabilities">[overrideCapabilities]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="capabilitiesOverride">[capabilitiesOverride]</span>
- </div>
- </wicket:panel>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel.properties
deleted file mode 100644
index 7e36b0c..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-overrideCapabilities=Override Capabilities?
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_it.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_it.properties
deleted file mode 100644
index 7e36b0c..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_it.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-overrideCapabilities=Override Capabilities?
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_pt_BR.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_pt_BR.properties
deleted file mode 100644
index 7e36b0c..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_pt_BR.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-overrideCapabilities=Override Capabilities?
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_ru.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_ru.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_ru.properties
deleted file mode 100644
index c23bd33..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceConnCapabilitiesPanel_ru.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-# overrideCapabilities=Переопределить действия?
-overrideCapabilities=\u041f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f?
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceDetailsPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceDetailsPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceDetailsPanel.html
deleted file mode 100644
index caefa9a..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceDetailsPanel.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
-
- <div wicket:id="container" class="summarize">
- <div class="form-group">
- <span wicket:id="name">[name]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="connector">[connector]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="enforceMandatoryCondition">[enforceMandatoryCondition]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="propagationPriority">[propagationPriority]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="randomPwdIfNotProvided">[randomPwdIfNotProvided]</span>
- </div>
-
- <div class="form-group form-palette">
- <span wicket:id="propagationActionsClassNames">[propagationActionsClassNames]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="createTraceLevel">[createTraceLevel]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="updateTraceLevel">[updateTraceLevel]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="deleteTraceLevel">[deleteTraceLevel]</span>
- </div>
-
- <div class="form-group">
- <span wicket:id="pullTraceLevel">[pullTraceLevel]</span>
- </div>
- </div>
-
- <span wicket:id="systeminformation">[System Information]</span>
- </wicket:panel>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceMappingPanel.html
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceMappingPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceMappingPanel.html
deleted file mode 100644
index 2b717e2..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceMappingPanel.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org">
- <wicket:panel>
- <div class="table-responsive no-padding">
- <table id="mappings"
- class="table table-hover"
- style="font-size: 1em;margin-top:2px;"
- wicket:id="mappingContainer">
- <tbody>
- <tr>
- <th><wicket:message key="entity"/></th>
- <th><wicket:message key="intMappingTypes"/></th>
- <th><wicket:message key="intAttrNames"/></th>
- <th><wicket:message key="extAttrNames"/></th>
- <th>
- <wicket:message key="mandatoryCondition"/>
- <span id="popover" wicket:id="jexlInfo" class="glyphicon glyphicon-info-sign"></span>
- </th>
- <th><wicket:message key="connObjectKey"/></th>
- <th><label wicket:id="passwordLabel"/></th>
- <th><wicket:message key="purpose"/></th>
- <th><i class="fa fa-trash"></i></th>
- </tr>
- <tr wicket:id="mappings">
- <td>
- <span wicket:id="entities">[entities]</span>
- </td>
- <td>
- <span wicket:id="intMappingTypes">[intMappingTypes]</span>
- </td>
- <td>
- <span wicket:id="intAttrNames">[intAttrNames]</span>
- </td>
- <td>
- <span wicket:id="extAttrName">[extAttrName]</span>
- </td>
- <td>
- <span wicket:id="mandatoryCondition">[mandatoryCondition]</span>
- </td>
- <td>
- <span wicket:id="connObjectKey">[connObjectKey]</span>
- </td>
- <td>
- <span wicket:id="password">[password]</span>
- </td>
- <td>
- <div wicket:id="purpose" style="margin: 10px 0px 10px 0px">
- <span wicket:id="purposeActions">[purpose]</span>
- </div>
- </td>
- <td>
- <div style="margin: 10px 0px 10px 0px">
- <span wicket:id="toRemove"/>
- </div>
- </td>
- </tr>
- </tbody>
-
- <tfoot>
- <tr>
- <td colspan="9" style="padding: 5px; text-align: right">
- <input type="submit" class="btn btn-primary" wicket:id="addMappingBtn" />
- </td>
- </tr>
- </tfoot>
- </table>
- </div>
- </wicket:panel>
-</html>
http://git-wip-us.apache.org/repos/asf/syncope/blob/1735c44c/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceModal.properties
----------------------------------------------------------------------
diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceModal.properties b/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceModal.properties
deleted file mode 100644
index 9a91557..0000000
--- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/ResourceModal.properties
+++ /dev/null
@@ -1,68 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-general=Resource details
-provisions=Provisioning
-connectorProperties=Connector Properties
-security=Security
-
-umapping=User mapping
-required_alert=All form fields are required
-connector=Connector
-existing_resources=Existing resources
-action=Action
-edit_attribute=Edit resource
-title=Resource
-extAttrNames=External attributes
-intMappingTypes=Internal mapping types
-entity=Entity
-groupSchema=Group Schema
-connObjectKey=ConnObjectKey
-mandatoryCondition=Mandatory
-password=Password
-purpose=Purpose
-mappingUserSchema=Mapping User Schema
-mappingGroupSchema=Mapping Group Schema
-delete=Delete
-intAttrNames=Internal attributes
-enforceMandatoryCondition=Enforce mandatory condition
-fieldName=Field name
-
-connObjectKeyValidation=There must be exactly one ConnObjectKey
-propagationMode=Propagation mode
-connObjectLink=ConnObjectLink
-enable=Enable
-
-createTraceLevel=Create trace level
-updateTraceLevel=Update trace level
-deleteTraceLevel=Delete trace level
-pullTraceLevel=Pull trace level
-propagationPriority=Propagation priority
-
-success_connection=Successful connection
-error_connection=Connection failure
-check=Check connection
-propagationActionsClassNames=Propagation Actions
-gmapping=Group mapping
-new=New resource
-randomPwdIfNotProvided=Generate random passwords when missing
-
-anyType=Object Type
-objectClass= Object Class
-__ACCOUNT__=ACCOUNT
-__GROUP__=GROUP
-connectorCapabilities=Connector Capabilities
-auxClasses=Auxiliary Classes