コード例 #1
0
  /** {@inheritDoc} */
  @SuppressWarnings("unchecked")
  public Endpoint selectEndpoint() {
    if (getEntityRoleMetadata() == null) {
      return null;
    }

    List<? extends Endpoint> endpoints = getEntityRoleMetadata().getEndpoints(getEndpointType());
    if (endpoints == null || endpoints.size() == 0) {
      return null;
    }

    Endpoint selectedEndpoint;
    endpoints = filterEndpointsByProtocolBinding(endpoints);
    if (endpoints == null || endpoints.size() == 0) {
      return null;
    }
    if (endpoints.get(0) instanceof IndexedEndpoint) {
      selectedEndpoint = selectIndexedEndpoint((List<IndexedEndpoint>) endpoints);
    } else {
      selectedEndpoint = selectNonIndexedEndpoint((List<Endpoint>) endpoints);
    }

    log.debug("Selected endpoint {} for request", selectedEndpoint.getLocation());
    return selectedEndpoint;
  }
コード例 #2
0
  /**
   * Filters the list of possible endpoints by supported outbound bindings.
   *
   * @param endpoints raw list of endpoints
   * @return filtered endpoints
   */
  protected List<? extends Endpoint> filterEndpointsByProtocolBinding(
      List<? extends Endpoint> endpoints) {
    List<Endpoint> filteredEndpoints = new ArrayList<Endpoint>(endpoints);
    Iterator<Endpoint> endpointItr = filteredEndpoints.iterator();
    Endpoint endpoint;
    while (endpointItr.hasNext()) {
      endpoint = endpointItr.next();
      if (!getSupportedIssuerBindings().contains(endpoint.getBinding())) {
        endpointItr.remove();
        continue;
      }
    }

    return filteredEndpoints;
  }