public SimpleDictionary(final String name, final boolean caseSensitive, final String... values) { this(name, createValueSet(values, caseSensitive), caseSensitive); }
public SimpleDictionary(final String name, final Collection<String> values, final boolean caseSensitive) { super(name); if (caseSensitive) { _valueSet = Sets.newHashSet(values); } else { _valueSet = createValueSet(values.iterator(), caseSensitive); } _caseSensitive = caseSensitive; }
private static Set<String> createValueSet(final Object[] array, final boolean caseSensitive) { return createValueSet(Iterators.forArray(array), caseSensitive); }
private void readObject(final ObjectInputStream stream) throws IOException, ClassNotFoundException { final Adaptor adaptor = (getField, serializable) -> { final boolean caseSensitive = getField.get("_caseSensitive", true); // handle potentially missing caseSensitive flag { final Field caseSensitiveField = SimpleDictionary.class.getDeclaredField("_caseSensitive"); caseSensitiveField.setAccessible(true); caseSensitiveField.set(serializable, caseSensitive); } // handle legacy SimpleReferenceValues based data try { final Object oldValues = getField.get("_values", null); if (oldValues != null) { @SuppressWarnings("deprecation") final SimpleReferenceValues srv = (SimpleReferenceValues) oldValues; @SuppressWarnings("deprecation") final Object[] values = srv.getValues(); final Set<String> valueSet = createValueSet(values, caseSensitive); final Field valuesField = SimpleDictionary.class.getDeclaredField("_valueSet"); valuesField.setAccessible(true); valuesField.set(serializable, valueSet); } } catch (final IllegalArgumentException e) { // happens for newer versions of the object type. } }; ReadObjectBuilder.create(this, SimpleDictionary.class).readObject(stream, adaptor); }