/** * Search for a particular filter using a set of known indentification values in the Map of * filters. * * @param filters The filters map that should be searched. * @param filterIds The aliases for the target filter to be located. * @return the filter if found in the mapping or null if not found. */ public static Map.Entry<Symbol, DescribedType> findFilter( Map<Symbol, Object> filters, Object[] filterIds) { if (filterIds == null || filterIds.length == 0) { StringBuilder ids = new StringBuilder(); if (filterIds != null) { for (Object filterId : filterIds) { ids.append(filterId).append(" "); } } throw new IllegalArgumentException("Invalid Filter Ids array passed: " + ids); } if (filters == null || filters.isEmpty()) { return null; } for (Map.Entry<Symbol, Object> filter : filters.entrySet()) { if (filter.getValue() instanceof DescribedType) { DescribedType describedType = ((DescribedType) filter.getValue()); Object descriptor = describedType.getDescriptor(); for (Object filterId : filterIds) { if (descriptor.equals(filterId)) { return new AbstractMap.SimpleImmutableEntry<>(filter.getKey(), describedType); } } } } return null; }
public TypeEncoding<DescribedType> getEncoding(final DescribedType val) { TypeEncoding underlyingEncoding = _encoder.getType(val.getDescribed()).getEncoding(val.getDescribed()); TypeEncoding encoding = _encodings.get(underlyingEncoding); if (encoding == null) { encoding = new DynamicDescribedTypeEncoding(underlyingEncoding); _encodings.put(underlyingEncoding, encoding); } return encoding; }