public ConnectorDetailsPanel()

in client/idm/console/src/main/java/org/apache/syncope/client/console/wizards/resources/ConnectorDetailsPanel.java [52:206]


    public ConnectorDetailsPanel(final ConnInstanceTO connInstanceTO, final List<ConnIdBundle> bundles) {
        super();
        setOutputMarkupId(true);

        boolean fullRealmsTree = SyncopeWebApplication.get().fullRealmsTree(realmRestClient);

        AutoCompleteSettings settings = new AutoCompleteSettings();
        settings.setShowCompleteListOnFocusGain(fullRealmsTree);
        settings.setShowListOnEmptyInput(fullRealmsTree);

        AjaxSearchFieldPanel realm = new AjaxSearchFieldPanel(
                "adminRealm", "adminRealm", new PropertyModel<>(connInstanceTO, "adminRealm"), settings) {

            private static final long serialVersionUID = -6390474600233486704L;

            @Override
            protected Iterator<String> getChoices(final String input) {
                return (RealmsUtils.checkInput(input)
                        ? (realmRestClient.search(fullRealmsTree
                                ? RealmsUtils.buildBaseQuery()
                                : RealmsUtils.buildKeywordQuery(input)).getResult())
                        : List.<RealmTO>of()).stream().
                        map(RealmTO::getFullPath).iterator();
            }
        };
        add(realm.addRequiredLabel().setOutputMarkupId(true));

        AjaxTextFieldPanel displayName = new AjaxTextFieldPanel(
                "displayName",
                "displayName",
                new PropertyModel<>(connInstanceTO, "displayName"), false);
        add(displayName.addRequiredLabel().setOutputMarkupId(true));

        AjaxTextFieldPanel location = new AjaxTextFieldPanel(
                "location", "location", new PropertyModel<>(connInstanceTO, "location"), false);
        add(location.addRequiredLabel().setOutputMarkupId(true).setEnabled(false));

        AjaxDropDownChoicePanel<String> bundleName = new AjaxDropDownChoicePanel<>(
                "bundleName",
                "bundleName",
                new PropertyModel<>(connInstanceTO, "bundleName"), false);
        bundleName.setEnabled(connInstanceTO.getKey() == null || connInstanceTO.isErrored());
        bundleName.setChoices(bundles.stream().map(ConnIdBundle::getBundleName).
                distinct().sorted().collect(Collectors.toList()));
        bundleName.getField().setOutputMarkupId(true);
        add(bundleName.addRequiredLabel().setOutputMarkupId(true));

        AjaxDropDownChoicePanel<String> connectorName = new AjaxDropDownChoicePanel<>(
                "connectorName",
                "connectorName",
                new PropertyModel<>(connInstanceTO, "connectorName"), false);
        connectorName.setEnabled(connInstanceTO.getBundleName() == null || connInstanceTO.isErrored());
        Optional.ofNullable(connInstanceTO.getConnectorName()).ifPresent(v -> connectorName.setChoices(List.of(v)));
        connectorName.getField().setOutputMarkupId(true);
        add(connectorName.addRequiredLabel().setOutputMarkupId(true));

        AjaxDropDownChoicePanel<String> version = new AjaxDropDownChoicePanel<>(
                "version", "version", new PropertyModel<>(connInstanceTO, "version"), false);
        version.setEnabled(connInstanceTO.getConnectorName() == null || connInstanceTO.isErrored());
        Optional.ofNullable(connInstanceTO.getVersion()).ifPresent(v -> version.setChoices(List.of(v)));
        version.getField().setOutputMarkupId(true);
        add(version.addRequiredLabel().setOutputMarkupId(true));

        bundleName.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

            private static final long serialVersionUID = -1107858522700306810L;

            @Override
            protected void onUpdate(final AjaxRequestTarget target) {
                connectorName.setEnabled(true);

                List<Pair<String, String>> connectors = bundles.stream().
                        filter(bundle -> bundle.getBundleName().equals(connInstanceTO.getBundleName())).
                        map(bundle -> Pair.of(bundle.getConnectorName(), bundle.getVersion())).
                    toList();
                if (connectors.size() == 1) {
                    Pair<String, String> entry = connectors.getFirst();

                    connInstanceTO.setConnectorName(entry.getLeft());
                    connectorName.getField().setModelObject(entry.getLeft());
                    connectorName.setChoices(List.of(entry.getLeft()));

                    connInstanceTO.setVersion(entry.getRight());
                    version.getField().setModelObject(entry.getRight());
                    version.setChoices(List.of(entry.getRight()));
                } else {
                    connectorName.setChoices(connectors.stream().
                            map(Pair::getLeft).distinct().sorted().collect(Collectors.toList()));

                    List<String> versions = connectors.stream().
                            map(Pair::getRight).distinct().sorted().collect(Collectors.toList());
                    version.setChoices(versions);

                    if (versions.size() == 1) {
                        connInstanceTO.setVersion(versions.getFirst());
                        version.getField().setModelObject(versions.getFirst());
                    } else {
                        connInstanceTO.setVersion(null);
                        version.getField().setModelObject(null);
                    }
                }

                target.add(version);
                target.add(connectorName);
            }
        });

        connectorName.getField().add(new IndicatorAjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) {

            private static final long serialVersionUID = -1107858522700306810L;

            @Override
            protected void onUpdate(final AjaxRequestTarget target) {
                List<String> versions = bundles.stream().
                        filter(bundle -> bundle.getBundleName().equals(connInstanceTO.getBundleName())
                        && bundle.getConnectorName().equals(connInstanceTO.getConnectorName())).
                        map(ConnIdBundle::getVersion).collect(Collectors.toList());
                if (versions.size() == 1) {
                    connInstanceTO.setVersion(versions.getFirst());
                    version.getField().setModelObject(versions.getFirst());
                }
                version.setChoices(versions);

                target.add(version);
            }
        });

        if (connInstanceTO.getPoolConf() == null) {
            connInstanceTO.setPoolConf(new ConnPoolConf());
        }

        add(new AjaxNumberFieldPanel.Builder<Integer>().min(0).max(Integer.MAX_VALUE).build(
                "connRequestTimeout", "connRequestTimeout", Integer.class,
                new PropertyModel<>(connInstanceTO, "connRequestTimeout")));

        add(new AjaxNumberFieldPanel.Builder<Integer>().min(0).max(Integer.MAX_VALUE).build(
                "poolMaxObjects", "poolMaxObjects", Integer.class,
                new PropertyModel<>(connInstanceTO.getPoolConf(), "maxObjects")));

        add(new AjaxNumberFieldPanel.Builder<Integer>().min(0).max(Integer.MAX_VALUE).build(
                "poolMinIdle", "poolMinIdle", Integer.class,
                new PropertyModel<>(connInstanceTO.getPoolConf(), "minIdle")));

        add(new AjaxNumberFieldPanel.Builder<Integer>().min(0).max(Integer.MAX_VALUE).build(
                "poolMaxIdle", "poolMaxIdle", Integer.class,
                new PropertyModel<>(connInstanceTO.getPoolConf(), "maxIdle")));

        add(new AjaxNumberFieldPanel.Builder<Long>().min(0L).max(Long.MAX_VALUE).build(
                "poolMaxWait", "poolMaxWait", Long.class,
                new PropertyModel<>(connInstanceTO.getPoolConf(), "maxWait")));

        add(new AjaxNumberFieldPanel.Builder<Long>().min(0L).max(Long.MAX_VALUE).build(
                "poolMinEvictableIdleTime", "poolMinEvictableIdleTime", Long.class,
                new PropertyModel<>(connInstanceTO.getPoolConf(), "minEvictableIdleTimeMillis")));
    }