/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.beans.reflect; import java.util.Collection; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; /** * Reflection transcoder for an object that implements {@link Set}. * * @author Middleware Services */ public class SetReflectionTranscoder extends AbstractCollectionReflectionTranscoder { /** * Creates a new set reflection transcoder. * * @param c class that is a set * @param transcoder to operate on elements of the set */ public SetReflectionTranscoder(final Class<?> c, final SingleValueReflectionTranscoder<?> transcoder) { super(c, transcoder); } /** * Creates a new set reflection transcoder. * * @param c class that is a set * @param transcoder to operate on elements of the set */ public SetReflectionTranscoder(final Class<?> c, final ArrayReflectionTranscoder transcoder) { super(c, transcoder); } @Override protected <T> Collection<T> createCollection(final Class<T> clazz) { final Class<?> type = getType(); Set<T> s; if (LinkedHashSet.class.isAssignableFrom(type)) { s = new LinkedHashSet<>(); } else if (TreeSet.class.isAssignableFrom(type)) { s = new TreeSet<>(); } else { s = new HashSet<>(); } return s; } }