Example usage for org.springframework.hateoas TemplateVariable toString

List of usage examples for org.springframework.hateoas TemplateVariable toString

Introduction

In this page you can find the example usage for org.springframework.hateoas TemplateVariable toString.

Prototype

@Override
    public String toString() 

Source Link

Usage

From source file:de.escalon.hypermedia.spring.PartialUriTemplate.java

private UriTemplateComponents getUriTemplateComponents(Map<String, Object> parameters,
        List<String> requiredArgs) {
    Assert.notNull(parameters, "Parameters must not be null!");

    final StringBuilder baseUrl = new StringBuilder(urlComponents.get(0));
    final StringBuilder queryHead = new StringBuilder();
    final StringBuilder queryTail = new StringBuilder();
    final StringBuilder fragmentIdentifier = new StringBuilder();
    for (int i = 1; i < urlComponents.size(); i++) {
        final String part = urlComponents.get(i);
        final List<Integer> variablesInPart = variableIndices.get(i);
        if (variablesInPart.isEmpty()) {
            if (part.startsWith("?") || part.startsWith("&")) {
                queryHead.append(part);/*from www . j  av a  2 s  .c  om*/
            } else if (part.startsWith("#")) {
                fragmentIdentifier.append(part);
            } else {
                baseUrl.append(part);
            }
        } else {
            for (Integer variableInPart : variablesInPart) {
                final TemplateVariable variable = variables.get(variableInPart);
                final Object value = parameters.get(variable.getName());
                if (value == null) {
                    switch (variable.getType()) {
                    case REQUEST_PARAM:
                    case REQUEST_PARAM_CONTINUED:
                        if (requiredArgs.isEmpty() || requiredArgs.contains(variable.getName())) {
                            // query vars without value always go last (query tail)
                            if (queryTail.length() > 0) {
                                queryTail.append(',');
                            }
                            queryTail.append(variable.getName());
                        }
                        break;
                    case FRAGMENT:
                        fragmentIdentifier.append(variable.toString());
                        break;
                    default:
                        baseUrl.append(variable.toString());
                    }
                } else {
                    switch (variable.getType()) {
                    case REQUEST_PARAM:
                    case REQUEST_PARAM_CONTINUED:
                        if (queryHead.length() == 0) {
                            queryHead.append('?');
                        } else {
                            queryHead.append('&');
                        }
                        queryHead.append(variable.getName()).append('=').append(urlEncode(value.toString()));
                        break;
                    case SEGMENT:
                        baseUrl.append('/');
                        // fall through
                    case PATH_VARIABLE:
                        if (queryHead.length() != 0) {
                            // level 1 variable in query
                            queryHead.append(urlEncode(value.toString()));
                        } else {
                            baseUrl.append(urlEncode(value.toString()));
                        }
                        break;
                    case FRAGMENT:
                        fragmentIdentifier.append('#');
                        fragmentIdentifier.append(urlEncode(value.toString()));
                        break;
                    }
                }
            }
        }
    }

    return new UriTemplateComponents(baseUrl.toString(), queryHead.toString(), queryTail.toString(),
            fragmentIdentifier.toString());
}

From source file:com.github.hateoas.forms.affordance.PartialUriTemplate.java

/**
 * Applies parameters to template variables.
 *
 * @param parameters to apply to variables
 * @param requiredArgs if not empty, retains given requiredArgs
 * @return uri components/*ww  w  .j a  va 2 s . c  o  m*/
 */
private PartialUriTemplateComponents getUriTemplateComponents(Map<String, Object> parameters,
        List<String> requiredArgs) {
    Assert.notNull(parameters, "Parameters must not be null!");

    final StringBuilder baseUrl = new StringBuilder(urlComponents.get(0));
    final StringBuilder queryHead = new StringBuilder();
    final StringBuilder queryTail = new StringBuilder();
    final StringBuilder fragmentIdentifier = new StringBuilder();
    for (int i = 1; i < urlComponents.size(); i++) {
        final String part = urlComponents.get(i);
        final List<Integer> variablesInPart = variableIndices.get(i);
        if (variablesInPart.isEmpty()) {
            if (part.startsWith("?") || part.startsWith("&")) {
                queryHead.append(part);
            } else if (part.startsWith("#")) {
                fragmentIdentifier.append(part);
            } else {
                baseUrl.append(part);
            }
        } else {
            for (Integer variableInPart : variablesInPart) {
                final TemplateVariable variable = variables.get(variableInPart);
                final Object value = parameters.get(variable.getName());
                if (value == null) {
                    switch (variable.getType()) {
                    case REQUEST_PARAM:
                    case REQUEST_PARAM_CONTINUED:
                        if (requiredArgs.isEmpty() || requiredArgs.contains(variable.getName())) {
                            // query vars without value always go last (query tail)
                            if (queryTail.length() > 0) {
                                queryTail.append(',');
                            }
                            queryTail.append(variable.getName());
                        }
                        break;
                    case FRAGMENT:
                        fragmentIdentifier.append(variable.toString());
                        break;
                    default:
                        baseUrl.append(variable.toString());
                    }
                } else {
                    switch (variable.getType()) {
                    case REQUEST_PARAM:
                    case REQUEST_PARAM_CONTINUED:
                        if (queryHead.length() == 0) {
                            queryHead.append('?');
                        } else {
                            queryHead.append('&');
                        }
                        queryHead.append(variable.getName()).append('=').append(urlEncode(value.toString()));
                        break;
                    case SEGMENT:
                        baseUrl.append('/');
                        // fall through
                    case PATH_VARIABLE:
                        if (queryHead.length() != 0) {
                            // level 1 variable in query
                            queryHead.append(urlEncode(value.toString()));
                        } else {
                            baseUrl.append(urlEncode(value.toString()));
                        }
                        break;
                    case FRAGMENT:
                        fragmentIdentifier.append('#');
                        fragmentIdentifier.append(urlEncode(value.toString()));
                        break;
                    }
                }
            }
        }
    }

    return new PartialUriTemplateComponents(baseUrl.toString(), queryHead.toString(), queryTail.toString(),
            fragmentIdentifier.toString(), variableNames);
}