Example usage for org.springframework.util ClassUtils resolvePrimitiveIfNecessary

List of usage examples for org.springframework.util ClassUtils resolvePrimitiveIfNecessary

Introduction

In this page you can find the example usage for org.springframework.util ClassUtils resolvePrimitiveIfNecessary.

Prototype

public static Class<?> resolvePrimitiveIfNecessary(Class<?> clazz) 

Source Link

Document

Resolve the given class if it is a primitive class, returning the corresponding primitive wrapper type instead.

Usage

From source file:org.jdal.swing.ListTableModel.java

/**
 * {@inheritDoc}/*ww w.j  a va  2 s  .  c om*/
 */
public Class<?> getColumnClass(int columnIndex) {
    Class clazz = Object.class;

    if (isCheckColum(columnIndex)) {
        clazz = Boolean.class;
    } else if (isPropertyColumn(columnIndex)) {
        if (pds.size() > 0) {
            clazz = pds.get(columnToPropertyIndex(columnIndex)).getPropertyType();
        }
    } else if (isActionColumn(columnIndex)) {
        clazz = actions.get(columntoToActionIndex(columnIndex)).getClass();
    }

    // JTable hangs if we return a primitive type here
    return ClassUtils.resolvePrimitiveIfNecessary(clazz);
}

From source file:org.syncope.console.pages.panels.ResourceConnConfPanel.java

public ResourceConnConfPanel(final String id, final ResourceTO resourceTO, final boolean createFlag) {

    super(id);//from ww  w . j  ava2  s.c o m
    setOutputMarkupId(true);

    this.createFlag = createFlag;
    this.resourceTO = resourceTO;

    connConfProperties = getConnConfProperties();

    connConfPropContainer = new WebMarkupContainer("connectorPropertiesContainer");
    connConfPropContainer.setOutputMarkupId(true);
    add(connConfPropContainer);

    check = new IndicatingAjaxLink("check", new ResourceModel("check")) {

        private static final long serialVersionUID = -4199438518229098169L;

        @Override
        public void onClick(final AjaxRequestTarget target) {

            ConnInstanceTO connectorTO = connRestClient.read(resourceTO.getConnectorId());

            connectorTO.setConfiguration(
                    ConnConfPropUtils.joinConnInstanceProperties(connectorTO.getConfigurationMap(),
                            ConnConfPropUtils.getConnConfPropertyMap(resourceTO.getConnConfProperties())));

            if (connRestClient.check(connectorTO).booleanValue()) {
                info(getString("success_connection"));
            } else {
                error(getString("error_connection"));
            }

            target.add(((BaseModalPage) getPage()).getFeedbackPanel());
        }
    };

    check.setEnabled(!connConfProperties.isEmpty());
    connConfPropContainer.add(check);

    /*
     * the list of overridable connector properties
     */
    connConfPropContainer.add(new ListView<ConnConfProperty>("connectorProperties",
            new PropertyModel(this, "connConfProperties")) {

        private static final long serialVersionUID = 9101744072914090143L;

        @Override
        protected void populateItem(final ListItem<ConnConfProperty> item) {
            final ConnConfProperty property = item.getModelObject();

            final Label label = new Label("connPropAttrSchema",
                    property.getSchema().getDisplayName() == null
                            || property.getSchema().getDisplayName().isEmpty() ? property.getSchema().getName()
                                    : property.getSchema().getDisplayName());

            item.add(label);

            final FieldPanel field;

            boolean required = false;

            boolean isArray = false;

            if (GUARDED_STRING.equalsIgnoreCase(property.getSchema().getType())
                    || GUARDED_BYTE_ARRAY.equalsIgnoreCase(property.getSchema().getType())) {

                field = new AjaxPasswordFieldPanel("panel", label.getDefaultModelObjectAsString(), new Model(),
                        true);

                ((PasswordTextField) field.getField()).setResetPassword(false);

                required = property.getSchema().isRequired();

            } else {
                Class propertySchemaClass;

                try {
                    propertySchemaClass = ClassUtils.forName(property.getSchema().getType(),
                            ClassUtils.getDefaultClassLoader());
                } catch (Exception e) {
                    LOG.error("Error parsing attribute type", e);
                    propertySchemaClass = String.class;
                }

                if (NUMBER.contains(propertySchemaClass)) {
                    field = new AjaxNumberFieldPanel("panel", label.getDefaultModelObjectAsString(),
                            new Model(), ClassUtils.resolvePrimitiveIfNecessary(propertySchemaClass), true);

                    required = property.getSchema().isRequired();
                } else if (Boolean.class.equals(propertySchemaClass)
                        || boolean.class.equals(propertySchemaClass)) {
                    field = new AjaxCheckBoxPanel("panel", label.getDefaultModelObjectAsString(), new Model(),
                            true);
                } else {

                    field = new AjaxTextFieldPanel("panel", label.getDefaultModelObjectAsString(), new Model(),
                            true);

                    required = property.getSchema().isRequired();
                }

                if (String[].class.equals(propertySchemaClass)) {
                    isArray = true;
                }
            }

            field.setTitle(property.getSchema().getHelpMessage());

            if (isArray) {
                field.removeRequiredLabel();

                if (property.getValues().isEmpty()) {
                    property.getValues().add(null);
                }

                final MultiValueSelectorPanel multiFields = new MultiValueSelectorPanel<String>("panel",
                        new PropertyModel<List<String>>(property, "values"), String.class, field, true);

                item.add(multiFields);
            } else {
                if (required) {
                    field.addRequiredLabel();
                }

                field.getField().add(new AjaxFormComponentUpdatingBehavior("onchange") {

                    private static final long serialVersionUID = -1107858522700306810L;

                    @Override
                    protected void onUpdate(final AjaxRequestTarget target) {
                        send(getPage(), Broadcast.BREADTH, new ConnConfModEvent(target, connConfProperties));
                    }
                });

                field.setNewModel(property.getValues());
                item.add(field);
            }

            resourceTO.getConnConfProperties().add(property);
        }
    });
}

From source file:org.syncope.console.pages.ConnectorModalPage.java

public ConnectorModalPage(final PageReference callerPageRef, final ModalWindow window,
        final ConnInstanceTO connectorTO) {

    super();/*from   w w w . ja  v  a  2s  .c o  m*/

    selectedCapabilities = new ArrayList(connectorTO.getId() == 0 ? EnumSet.noneOf(ConnectorCapability.class)
            : connectorTO.getCapabilities());

    final IModel<List<ConnectorCapability>> capabilities = new LoadableDetachableModel<List<ConnectorCapability>>() {

        private static final long serialVersionUID = 5275935387613157437L;

        @Override
        protected List<ConnectorCapability> load() {
            return Arrays.asList(ConnectorCapability.values());
        }
    };

    final IModel<List<ConnBundleTO>> bundles = new LoadableDetachableModel<List<ConnBundleTO>>() {

        private static final long serialVersionUID = 5275935387613157437L;

        @Override
        protected List<ConnBundleTO> load() {
            return restClient.getAllBundles();
        }
    };

    bundleTO = getSelectedBundleTO(bundles.getObject(), connectorTO);
    properties = getProperties(bundleTO, connectorTO);

    final AjaxTextFieldPanel connectorName = new AjaxTextFieldPanel("connectorName", "connector name",
            new PropertyModel<String>(connectorTO, "connectorName"), false);

    connectorName.setOutputMarkupId(true);
    connectorName.setEnabled(false);

    final AjaxTextFieldPanel displayName = new AjaxTextFieldPanel("displayName", "display name",
            new PropertyModel<String>(connectorTO, "displayName"), false);

    displayName.setOutputMarkupId(true);
    displayName.addRequiredLabel();

    final AjaxTextFieldPanel version = new AjaxTextFieldPanel("version", "version",
            new PropertyModel<String>(connectorTO, "version"), false);

    displayName.setOutputMarkupId(true);
    version.setEnabled(false);

    final AjaxDropDownChoicePanel<ConnBundleTO> bundle = new AjaxDropDownChoicePanel<ConnBundleTO>("bundle",
            "bundle", new Model<ConnBundleTO>(bundleTO), false);

    bundle.setStyleShet("long_dynamicsize");

    bundle.setChoices(bundles.getObject());

    bundle.setChoiceRenderer(new ChoiceRenderer<ConnBundleTO>() {

        private static final long serialVersionUID = -1945543182376191187L;

        @Override
        public Object getDisplayValue(final ConnBundleTO object) {
            return object.getBundleName() + " " + object.getVersion();
        }

        @Override
        public String getIdValue(final ConnBundleTO object, final int index) {
            // idValue must include version as well in order to cope
            // with multiple version of the same bundle.
            return object.getBundleName() + "#" + object.getVersion();
        }
    });

    ((DropDownChoice) bundle.getField()).setNullValid(true);
    bundle.setRequired(true);

    bundle.getField().add(new AjaxFormComponentUpdatingBehavior("onchange") {

        private static final long serialVersionUID = -1107858522700306810L;

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            //reset all informations stored in connectorTO
            connectorTO.setConfiguration(new HashSet<ConnConfProperty>());

            ((DropDownChoice) bundle.getField()).setNullValid(false);
            target.add(bundle.getField());

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

            target.add(propertiesContainer);
        }
    });

    bundle.getField().setModel(new IModel<ConnBundleTO>() {

        private static final long serialVersionUID = -3736598995576061229L;

        @Override
        public ConnBundleTO getObject() {
            return bundleTO;
        }

        @Override
        public void setObject(final ConnBundleTO object) {
            if (object != null && connectorTO != null) {
                connectorTO.setBundleName(object.getBundleName());
                connectorTO.setVersion(object.getVersion());
                connectorTO.setConnectorName(object.getConnectorName());
                properties = getProperties(object, connectorTO);
                bundleTO = object;
            }
        }

        @Override
        public void detach() {
        }
    });

    bundle.addRequiredLabel();
    bundle.setEnabled(connectorTO.getId() == 0);

    final ListView<ConnConfProperty> view = new ListView<ConnConfProperty>("connectorProperties",
            new PropertyModel(this, "properties")) {

        private static final long serialVersionUID = 9101744072914090143L;

        @Override
        protected void populateItem(final ListItem<ConnConfProperty> item) {
            final ConnConfProperty property = item.getModelObject();

            final Label label = new Label("connPropAttrSchema",
                    property.getSchema().getDisplayName() == null
                            || property.getSchema().getDisplayName().isEmpty() ? property.getSchema().getName()
                                    : property.getSchema().getDisplayName());

            item.add(label);

            final FieldPanel field;

            boolean required = false;

            boolean isArray = false;

            if (GUARDED_STRING.equalsIgnoreCase(property.getSchema().getType())
                    || GUARDED_BYTE_ARRAY.equalsIgnoreCase(property.getSchema().getType())) {

                field = new AjaxPasswordFieldPanel("panel", label.getDefaultModelObjectAsString(), new Model(),
                        true);

                ((PasswordTextField) field.getField()).setResetPassword(false);

                required = property.getSchema().isRequired();

            } else {
                Class propertySchemaClass;

                try {
                    propertySchemaClass = ClassUtils.forName(property.getSchema().getType(),
                            ClassUtils.getDefaultClassLoader());
                } catch (Exception e) {
                    LOG.error("Error parsing attribute type", e);
                    propertySchemaClass = String.class;
                }

                if (NUMBER.contains(propertySchemaClass)) {
                    field = new AjaxNumberFieldPanel("panel", label.getDefaultModelObjectAsString(),
                            new Model(), ClassUtils.resolvePrimitiveIfNecessary(propertySchemaClass), true);

                    required = property.getSchema().isRequired();
                } else if (Boolean.class.equals(propertySchemaClass)
                        || boolean.class.equals(propertySchemaClass)) {
                    field = new AjaxCheckBoxPanel("panel", label.getDefaultModelObjectAsString(), new Model(),
                            true);
                } else {

                    field = new AjaxTextFieldPanel("panel", label.getDefaultModelObjectAsString(), new Model(),
                            true);

                    required = property.getSchema().isRequired();
                }

                if (String[].class.equals(propertySchemaClass)) {
                    isArray = true;
                }
            }

            field.setTitle(property.getSchema().getHelpMessage());

            if (isArray) {
                field.removeRequiredLabel();

                if (property.getValues().isEmpty()) {
                    property.getValues().add(null);
                }

                item.add(new MultiValueSelectorPanel<String>("panel",
                        new PropertyModel<List<String>>(property, "values"), String.class, field));
            } else {
                if (required) {
                    field.addRequiredLabel();
                }

                field.setNewModel(property.getValues());
                item.add(field);
            }

            final AjaxCheckBoxPanel overridable = new AjaxCheckBoxPanel("connPropAttrOverridable",
                    "connPropAttrOverridable", new PropertyModel(property, "overridable"), true);

            item.add(overridable);
            connectorTO.getConfiguration().add(property);
        }
    };

    final Form connectorForm = new Form("form");
    connectorForm.setModel(new CompoundPropertyModel(connectorTO));

    final Form connectorPropForm = new Form("connectorPropForm");
    connectorPropForm.setModel(new CompoundPropertyModel(connectorTO));
    connectorPropForm.setOutputMarkupId(true);

    propertiesContainer = new WebMarkupContainer("container");
    propertiesContainer.setOutputMarkupId(true);
    propertiesContainer.add(connectorPropForm);

    connectorForm.add(propertiesContainer);
    connectorPropForm.add(view);

    final AjaxLink check = new IndicatingAjaxLink("check", new ResourceModel("check")) {

        private static final long serialVersionUID = -7978723352517770644L;

        @Override
        public void onClick(final AjaxRequestTarget target) {

            connectorTO.setBundleName(bundleTO.getBundleName());
            connectorTO.setVersion(bundleTO.getVersion());

            if (restClient.check(connectorTO).booleanValue()) {
                info(getString("success_connection"));
            } else {
                error(getString("error_connection"));
            }

            target.add(feedbackPanel);
        }
    };

    connectorPropForm.add(check);

    final AjaxButton submit = new IndicatingAjaxButton("apply", new Model(getString("submit"))) {

        private static final long serialVersionUID = -958724007591692537L;

        @Override
        protected void onSubmit(final AjaxRequestTarget target, final Form form) {

            final ConnInstanceTO conn = (ConnInstanceTO) form.getDefaultModelObject();

            conn.setBundleName(bundleTO.getBundleName());

            // Set the model object's capabilites to
            // capabilitiesPalette's converted Set
            if (!selectedCapabilities.isEmpty()) {
                // exception if selectedCapabilities is empy
                conn.setCapabilities(EnumSet.copyOf(selectedCapabilities));
            } else {
                conn.setCapabilities(EnumSet.noneOf(ConnectorCapability.class));
            }
            try {
                if (connectorTO.getId() == 0) {
                    restClient.create(conn);
                } else {
                    restClient.update(conn);
                }

                ((Resources) callerPageRef.getPage()).setModalResult(true);
                window.close(target);
            } catch (SyncopeClientCompositeErrorException e) {
                error(getString("error") + ":" + e.getMessage());
                target.add(feedbackPanel);
                ((Resources) callerPageRef.getPage()).setModalResult(false);
                LOG.error("While creating or updating connector {}", conn);
            }
        }

        @Override
        protected void onError(final AjaxRequestTarget target, final Form form) {

            target.add(feedbackPanel);
        }
    };

    String roles = connectorTO.getId() == 0 ? xmlRolesReader.getAllAllowedRoles("Connectors", "create")
            : xmlRolesReader.getAllAllowedRoles("Connectors", "update");

    MetaDataRoleAuthorizationStrategy.authorize(submit, ENABLE, roles);

    connectorForm.add(connectorName);
    connectorForm.add(displayName);
    connectorForm.add(bundle);
    connectorForm.add(version);

    capabilitiesPalette = new CheckBoxMultipleChoice("capabilitiesPalette",
            new PropertyModel(this, "selectedCapabilities"), capabilities);
    connectorForm.add(capabilitiesPalette);

    connectorForm.add(submit);

    add(connectorForm);
}

From source file:org.apache.syncope.client.console.pages.ReportletConfModalPage.java

@SuppressWarnings({ "unchecked", "rawtypes" })
private FieldPanel buildSinglePanel(final Class<?> type, final String fieldName, final String id) {
    FieldPanel result = null;//w  w w . j  a  v a 2s.co m
    PropertyModel model = new PropertyModel(ReportletConfModalPage.this.reportletConf, fieldName);
    if (ClassUtils.isAssignable(Boolean.class, type)) {
        result = new AjaxCheckBoxPanel(id, fieldName, model);
    } else if (ClassUtils.isAssignable(Number.class, type)) {
        result = new SpinnerFieldPanel<Number>(id, fieldName,
                (Class<Number>) ClassUtils.resolvePrimitiveIfNecessary(type), model, null, null);
    } else if (Date.class.equals(type)) {
        result = new DateTimeFieldPanel(id, fieldName, model, SyncopeConstants.DEFAULT_DATE_PATTERN);
    } else if (type.isEnum()) {
        result = new AjaxDropDownChoicePanel(id, fieldName, model)
                .setChoices(Arrays.asList(type.getEnumConstants()));
    }

    // treat as String if nothing matched above
    if (result == null) {
        result = new AjaxTextFieldPanel(id, fieldName, model);
    }

    return result;
}

From source file:org.apache.syncope.client.console.panels.BeanPanel.java

@SuppressWarnings({ "unchecked", "rawtypes" })
private FieldPanel buildSinglePanel(final Serializable bean, final Class<?> type, final String fieldName,
        final String id) {
    FieldPanel result = null;/*from w w w  .ja v  a  2 s .  c  o m*/
    PropertyModel model = new PropertyModel(bean, fieldName);
    if (ClassUtils.isAssignable(Boolean.class, type)) {
        result = new AjaxCheckBoxPanel(id, fieldName, model);
    } else if (ClassUtils.isAssignable(Number.class, type)) {
        result = new AjaxSpinnerFieldPanel.Builder<>().build(id, fieldName,
                (Class<Number>) ClassUtils.resolvePrimitiveIfNecessary(type), model);
    } else if (Date.class.equals(type)) {
        result = new AjaxDateTimeFieldPanel(id, fieldName, model, SyncopeConstants.DEFAULT_DATE_PATTERN);
    } else if (type.isEnum()) {
        result = new AjaxDropDownChoicePanel(id, fieldName, model)
                .setChoices(Arrays.asList(type.getEnumConstants()));
    }

    // treat as String if nothing matched above
    if (result == null) {
        result = new AjaxTextFieldPanel(id, fieldName, model);
    }

    result.hideLabel();
    return result;
}

From source file:org.springframework.core.convert.support.GenericConversionService.java

private GenericConverter findConverterForClassPair(TypeDescriptor sourceType, TypeDescriptor targetType) {
    Class<?> sourceObjectType = sourceType.getObjectType();
    if (sourceObjectType.isInterface()) {
        LinkedList<Class<?>> classQueue = new LinkedList<Class<?>>();
        classQueue.addFirst(sourceObjectType);
        while (!classQueue.isEmpty()) {
            Class<?> currentClass = classQueue.removeLast();
            if (logger.isTraceEnabled()) {
                logger.trace("Searching for converters indexed by sourceType [" + currentClass.getName() + "]");
            }/*from   ww  w  .j ava 2 s.  c  o m*/
            Map<Class<?>, MatchableConverters> converters = getTargetConvertersForSource(currentClass);
            GenericConverter converter = getMatchingConverterForTarget(sourceType, targetType, converters);
            if (converter != null) {
                return converter;
            }
            Class<?>[] interfaces = currentClass.getInterfaces();
            for (Class<?> ifc : interfaces) {
                classQueue.addFirst(ifc);
            }
        }
        Map<Class<?>, MatchableConverters> objectConverters = getTargetConvertersForSource(Object.class);
        return getMatchingConverterForTarget(sourceType, targetType, objectConverters);
    } else {
        LinkedList<Class<?>> classQueue = new LinkedList<Class<?>>();
        classQueue.addFirst(sourceObjectType);
        while (!classQueue.isEmpty()) {
            Class<?> currentClass = classQueue.removeLast();
            if (logger.isTraceEnabled()) {
                logger.trace("Searching for converters indexed by sourceType [" + currentClass.getName() + "]");
            }
            Map<Class<?>, MatchableConverters> converters = getTargetConvertersForSource(currentClass);
            GenericConverter converter = getMatchingConverterForTarget(sourceType, targetType, converters);
            if (converter != null) {
                return converter;
            }
            if (currentClass.isArray()) {
                Class<?> componentType = ClassUtils
                        .resolvePrimitiveIfNecessary(currentClass.getComponentType());
                if (componentType.getSuperclass() != null) {
                    classQueue.addFirst(Array.newInstance(componentType.getSuperclass(), 0).getClass());
                } else if (componentType.isInterface()) {
                    classQueue.addFirst(Object[].class);
                }
            } else {
                Class<?>[] interfaces = currentClass.getInterfaces();
                for (Class<?> ifc : interfaces) {
                    addInterfaceHierarchy(ifc, classQueue);
                }
                if (currentClass.getSuperclass() != null) {
                    classQueue.addFirst(currentClass.getSuperclass());
                }
            }
        }
        return null;
    }
}

From source file:org.springframework.core.convert.support.GenericConversionService.java

private GenericConverter getMatchingConverterForTarget(TypeDescriptor sourceType, TypeDescriptor targetType,
        Map<Class<?>, MatchableConverters> converters) {

    Class<?> targetObjectType = targetType.getObjectType();
    if (targetObjectType.isInterface()) {
        LinkedList<Class<?>> classQueue = new LinkedList<Class<?>>();
        classQueue.addFirst(targetObjectType);
        while (!classQueue.isEmpty()) {
            Class<?> currentClass = classQueue.removeLast();
            if (logger.isTraceEnabled()) {
                logger.trace("and indexed by targetType [" + currentClass.getName() + "]");
            }//from  w  w  w  .  j av  a2  s .c o m
            MatchableConverters matchable = converters.get(currentClass);
            GenericConverter converter = matchConverter(matchable, sourceType, targetType);
            if (converter != null) {
                return converter;
            }
            Class<?>[] interfaces = currentClass.getInterfaces();
            for (Class<?> ifc : interfaces) {
                classQueue.addFirst(ifc);
            }
        }
        if (logger.isTraceEnabled()) {
            logger.trace("and indexed by [java.lang.Object]");
        }
        return matchConverter(converters.get(Object.class), sourceType, targetType);
    } else {
        LinkedList<Class<?>> classQueue = new LinkedList<Class<?>>();
        classQueue.addFirst(targetObjectType);
        while (!classQueue.isEmpty()) {
            Class<?> currentClass = classQueue.removeLast();
            if (logger.isTraceEnabled()) {
                logger.trace("and indexed by targetType [" + currentClass.getName() + "]");
            }
            MatchableConverters matchable = converters.get(currentClass);
            GenericConverter converter = matchConverter(matchable, sourceType, targetType);
            if (converter != null) {
                return converter;
            }
            if (currentClass.isArray()) {
                Class<?> componentType = ClassUtils
                        .resolvePrimitiveIfNecessary(currentClass.getComponentType());
                if (componentType.getSuperclass() != null) {
                    classQueue.addFirst(Array.newInstance(componentType.getSuperclass(), 0).getClass());
                } else if (componentType.isInterface()) {
                    classQueue.addFirst(Object[].class);
                }
            } else {
                Class<?>[] interfaces = currentClass.getInterfaces();
                for (Class<?> ifc : interfaces) {
                    addInterfaceHierarchy(ifc, classQueue);
                }
                if (currentClass.getSuperclass() != null) {
                    classQueue.addFirst(currentClass.getSuperclass());
                }
            }
        }
        return null;
    }
}