package org.jboss.resteasy.core;

import org.jboss.resteasy.annotations.Form;
import org.jboss.resteasy.resteasy_jaxrs.i18n.Messages;
import org.jboss.resteasy.spi.ResteasyProviderFactory;

import java.lang.annotation.Annotation;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Pattern;

Can inject maps.
/** * Can inject maps. */
public class MapFormInjector extends AbstractCollectionFormInjector<Map> { private final StringParameterInjector keyInjector;
Constructor.
Params:
  • collectionType – collection type
  • keyType – key type
  • valueType – value type
  • prefix – prefix
  • factory – provider factory
/** * Constructor. * @param collectionType collection type * @param keyType key type * @param valueType value type * @param prefix prefix * @param factory provider factory */
public MapFormInjector(final Class collectionType, final Class keyType, final Class valueType, final String prefix, final ResteasyProviderFactory factory) { super(collectionType, valueType, prefix, Pattern.compile("^" + prefix + "\\[([0-9a-zA-Z_\\-\\.~]+)\\]"), factory); keyInjector = new StringParameterInjector(keyType, keyType, null, Form.class, null, null, new Annotation[0], factory); }
{@inheritDoc}
/** * {@inheritDoc} */
@SuppressWarnings(value = "unchecked") @Override protected Map createInstance(Class collectionType) { if (collectionType.isAssignableFrom(LinkedHashMap.class)) { return new LinkedHashMap(); } if (collectionType.isAssignableFrom(TreeMap.class)) { return new TreeMap(); } throw new RuntimeException(Messages.MESSAGES.unsupportedCollectionType(collectionType)); }
{@inheritDoc}
/** * {@inheritDoc} */
@SuppressWarnings(value = "unchecked") @Override protected void addTo(Map collection, String key, Object value) { collection.put(keyInjector.extractValue(key), value); } }