/** * For every instance of {@link DefaultCoupledResource} associated to an operation of kind {@code OperationName}, * replaces the operation by a "real" {@link DefaultOperationMetadata} of the same name, if any. * * <p>This method updates the elements in the {@code coupledResources} collection in-place. * The other collection is unmodified.</p> * * <p>This method is invoked at unmarshalling time for resolving the {@code OperationMetadata} instance which * were identified only by a name in a {@code <srv:operationName>} element.</p> */ static void resolve(final Collection<DefaultOperationMetadata> containsOperations, final Collection<DefaultCoupledResource> coupledResources) { final Map<String,DefaultOperationMetadata> byName = new HashMap<>(); for (final DefaultOperationMetadata operation : containsOperations) { add(byName, operation.getOperationName(), operation); } for (final DefaultCoupledResource resource : coupledResources) { DefaultOperationMetadata operation = resource.getOperation(); if (operation instanceof OperationName) { final String name = operation.getOperationName(); operation = byName.get(name); if (operation == null) { operation = byName.get(name); if (operation == null) { continue; } } resource.setOperation(operation); } } }
/** * For every instance of {@link DefaultCoupledResource} associated to an operation of kind {@code OperationName}, * replaces the operation by a "real" {@link DefaultOperationMetadata} of the same name, if any. * * <p>This method updates the elements in the {@code coupledResources} collection in-place. * The other collection is unmodified.</p> * * <p>This method is invoked at unmarshalling time for resolving the {@code OperationMetadata} instance which * were identified only by a name in a {@code <srv:operationName>} element.</p> */ static void resolve(final Collection<DefaultOperationMetadata> containsOperations, final Collection<DefaultCoupledResource> coupledResources) { final Map<String,DefaultOperationMetadata> byName = new HashMap<>(); for (final DefaultOperationMetadata operation : containsOperations) { add(byName, operation.getOperationName(), operation); } for (final DefaultCoupledResource resource : coupledResources) { DefaultOperationMetadata operation = resource.getOperation(); if (operation instanceof OperationName) { final String name = operation.getOperationName(); operation = byName.get(name); if (operation == null) { operation = byName.get(name); if (operation == null) { continue; } } resource.setOperation(operation); } } }