private static Map<String, GraphNode<?>> makeSafeGraphNodeMapCopy( Map<String, GraphNode<?>> graphNodeMap) { if (graphNodeMap == null) { return null; } final HashMap<String, GraphNode<?>> copy = new HashMap<String, GraphNode<?>>(CollectionHelper.determineProperSizing(graphNodeMap)); for (Map.Entry<String, GraphNode<?>> attributeNodeEntry : graphNodeMap.entrySet()) { copy.put(attributeNodeEntry.getKey(), attributeNodeEntry.getValue().makeImmutableCopy()); } return copy; }
/** * Package-protected method to centralize checking of criteria query multi-selects as defined by * the {@link CriteriaQuery#multiselect(List)} method. * * @param selections The selection varargs to check * @throws IllegalArgumentException If the selection items are not valid per {@link * CriteriaQuery#multiselect} documentation. <i>"An argument to the multiselect method * must not be a tuple- or array-valued compound selection item."</i> */ void checkMultiselect(List<Selection<?>> selections) { final HashSet<String> aliases = new HashSet<String>(CollectionHelper.determineProperSizing(selections.size())); for (Selection<?> selection : selections) { if (selection.isCompoundSelection()) { if (selection.getJavaType().isArray()) { throw new IllegalArgumentException( "Selection items in a multi-select cannot contain compound array-valued elements"); } if (Tuple.class.isAssignableFrom(selection.getJavaType())) { throw new IllegalArgumentException( "Selection items in a multi-select cannot contain compound tuple-valued elements"); } } if (StringHelper.isNotEmpty(selection.getAlias())) { boolean added = aliases.add(selection.getAlias()); if (!added) { throw new IllegalArgumentException( "Multi-select expressions defined duplicate alias : " + selection.getAlias()); } } } }