All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.osvaldopina.signedcontract.enforcer.jsonhal.HalDocumentDSLHelper Maven / Gradle / Ivy

There is a newer version: 0.0.5
Show newest version
package com.github.osvaldopina.signedcontract.enforcer.jsonhal;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.osvaldopina.signedcontract.enforcer.Clause;
import com.github.osvaldopina.signedcontract.enforcer.SignedContractException;
import com.github.osvaldopina.signedcontract.enforcer.json.jsonpath.JsonPathClauseEnforcer;
import com.github.osvaldopina.signedcontract.enforcer.uritemplate.UriTemplateDSLHelper;
import com.github.osvaldopina.signedcontract.enforcer.uritemplate.UriTemplateVariablePropertyClauseEnforcer;
import com.github.osvaldopina.signedcontract.enforcer.uritemplate.UriTemplatedVariableClauseEnforcer;

import java.io.IOException;
import java.util.Arrays;

public class HalDocumentDSLHelper {

    public static  Clause halDocument(String document, E... halClauses) {

        HalDocumentClauseEnforcer halDocumentClauseEnforcer = new HalDocumentClauseEnforcer(Arrays.asList(halClauses));

        ObjectMapper mapper = new ObjectMapper();

        try {
            JsonNode documentJsonNode = mapper.readTree(document);
            return halDocumentClauseEnforcer.enforce(documentJsonNode);
        } catch (IOException e) {
            throw new SignedContractException("Error reading document " + e, e);
        }
    }

    public static HalLinkListClauseEnforcer links(HalLinksClauseEnforcer... halLinkClauseEnforcers) {
        return new HalLinkListClauseEnforcer(Arrays.asList(halLinkClauseEnforcers));
    }

    public static HalResourceClauseEnforcer resource(JsonPathClauseEnforcer... jsonPathClauseEnforcers) {
        return new HalResourceClauseEnforcer(Arrays.asList(jsonPathClauseEnforcers));
    }

    public static HalDocumentPartClauseEnforcer emptyResource() {
        return new HalEmptyResourceClauseEnforcer();
    }

    public static  HalEmbeddedListClauseEnforcer embeds(HalBaseEmbeddedResourceClauseEnforcer... subDocuments) {
        return new HalEmbeddedListClauseEnforcer(Arrays.asList(subDocuments));
    }

    public static  HalBaseEmbeddedResourceClauseEnforcer embedded(String rel, E... subDocuments) {
        return new HalEmbeddedResourceClauseEnforcer(rel, Arrays.asList(subDocuments));
    }

    public static HalEmbeddedArrayClauseEnforcer embeddedArray(String rel, HalEmbeddedArrayItemBaseClauseEnforcer... subDocuments) {
        return new HalEmbeddedArrayClauseEnforcer( rel, Arrays.asList(subDocuments));
    }

    public static HalEmbeddedArrayItemCountClauseEnforcer embeddedItemCount(int arrayItemCount) {
        return new HalEmbeddedArrayItemCountClauseEnforcer((arrayItemCount));
    }


    public static  HalEmbeddedArrayItemClauseEnforcer embeddedItem(HalEmbeddedPartClauseEnforcer... subDocuments) {
        return new HalEmbeddedArrayItemClauseEnforcer(Arrays.asList(subDocuments));
    }

    public static HalDocumentPartClauseEnforcer emptyEmbedded() {
        return new HalEmptyEmbeddedClauseEnforcer();
    }



    public static HalLinkCountClauseEnforcer linkCount(int linkCount) {
        return new HalLinkCountClauseEnforcer(linkCount);
    }


    public static  HalLinkFindByRelClauseEnforcer link(String rel, E... linkPropertyClauses) {
        return new HalLinkFindByRelClauseEnforcer(rel, Arrays.asList(linkPropertyClauses));
    }

    public static HalLinkValidRelClauseEnforcer validRel() {
        return new HalLinkValidRelClauseEnforcer();
    }

    public static HalLinkPropertyClauseEnforcer validHref() {
        return new HalLinkValidHRefClauseEnforcer();
    }

    public static HalLinkPropertyClauseEnforcer href(String href) {
        return new HalLinkHRefClauseEnforcer(href);
    }

    public static HalLinkPropertyClauseEnforcer templated(UriTemplatedVariableClauseEnforcer... variables) {

        return new HalLinkPropertyAggregatorClause(Arrays.asList(
                new HalLinkPropertyValueClauseEnforcer("templated", true),
                new HalLinkTemplatedUriClauseEnforcer(Arrays.asList(variables))

        ));
    }

    public static HalLinkPropertyClauseEnforcer notTemplated() {
        return new HalLinkPropertyValueClauseEnforcer("templated", false, false);
    }

    public static HalLinkPropertyClauseEnforcer hasName(String name) {
        return new HalLinkPropertyValueClauseEnforcer("name", name);
    }

    public static HalLinkPropertyClauseEnforcer hasProfile(String profile) {
        return new HalLinkPropertyValueClauseEnforcer("profile", profile);
    }

    public static HalLinkPropertyClauseEnforcer hasHrefLang(String hrefLang) {
        return new HalLinkPropertyValueClauseEnforcer("hreflang", hrefLang);
    }

    public static UriTemplatedVariableClauseEnforcer variable(String variable,
                                                              UriTemplateVariablePropertyClauseEnforcer... uriTemplateVariablePropertyClauseEnforcers) {
        return UriTemplateDSLHelper.variable(variable, uriTemplateVariablePropertyClauseEnforcers);
    }

    public static UriTemplateVariablePropertyClauseEnforcer exploded() {
        return UriTemplateDSLHelper.exploded();
    }

    public static UriTemplateVariablePropertyClauseEnforcer defaulExpansion() {
        return UriTemplateDSLHelper.defaulExpansion();
    }

    public static UriTemplateVariablePropertyClauseEnforcer pathExpansion() {
        return UriTemplateDSLHelper.pathExpansion();
    }

    public static UriTemplateVariablePropertyClauseEnforcer queryExpansion() {
        return UriTemplateDSLHelper.queryExpansion();
    }

    public static UriTemplateVariablePropertyClauseEnforcer matrixExpansion() {
        return UriTemplateDSLHelper.matrixExpansion();
    }

    public static UriTemplateVariablePropertyClauseEnforcer continuationExpansion() {
        return UriTemplateDSLHelper.continuationExpansion();
    }

    public static UriTemplateVariablePropertyClauseEnforcer fragmentExpansion() {
        return UriTemplateDSLHelper.fragmentExpansion();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy