Interface ResourceLocator

  • All Known Implementing Classes:
    ResourceLookupDictionary

    public interface ResourceLocator
    Locates rest resources in the system. It can locate Entity,Relationship and Action resources. It can also find embedded resources on a value object. Additionally, it supports locating multiple relationship resources at the same time.
    Author:
    Gethin James
    • Method Detail

      • locateEntityResource

        ResourceWithMetadata locateEntityResource​(Api api,
                                                  String resourceName,
                                                  org.springframework.http.HttpMethod httpMethod)
                                           throws InvalidArgumentException,
                                                  UnsupportedResourceOperationException
        Finds an Entity Resource and returns it in ResourceWithMetadata wrapper.
        Parameters:
        api - - The API being used.
        resourceName - - The entity resource name - this is the "name" property on the @EntityResource annotation.
        httpMethod - - A permitted HttpMethod
        Returns:
        ResourceWithMetadata - The resource and its metadata.
        Throws:
        InvalidArgumentException - - thrown if either the api or resourceName's are invalid. ie. A resource doesn't exist.
        UnsupportedResourceOperationException - - throw if the resource does not support the specified HttpMethod.
      • locateRelationPropertyResource

        ResourceWithMetadata locateRelationPropertyResource​(Api api,
                                                            String entityResource,
                                                            String relationResource,
                                                            String property,
                                                            org.springframework.http.HttpMethod httpMethod)
                                                     throws InvalidArgumentException,
                                                            UnsupportedResourceOperationException
        Finds a property or action on a Relationship Resource and returns it in ResourceWithMetadata wrapper.
        Parameters:
        api - - The API being used.
        resourceName - - The entity resource name - this is the "entityResourceName" property on the @RelationshipResource annotation.
        relationName - - The relationship resource name - this is the "name" property on the @RelationshipResource annotation.
        property - - The property resource name - can be either an action or a @BinaryProperty
        httpMethod - - A permitted HttpMethod
        Returns:
        ResourceWithMetadata - The resource and its metadata.
        Throws:
        InvalidArgumentException - - thrown if either the api or resourceName's are invalid. ie. A resource doesn't exist.
        UnsupportedResourceOperationException - - throw if the resource does not support the specified HttpMethod.
      • locateRelationResource

        ResourceWithMetadata locateRelationResource​(Api api,
                                                    String resourceName,
                                                    String relationName,
                                                    org.springframework.http.HttpMethod httpMethod)
                                             throws InvalidArgumentException,
                                                    UnsupportedResourceOperationException
        Finds an Relationship Resource and returns it in ResourceWithMetadata wrapper.
        Parameters:
        api - - The API being used.
        resourceName - - The entity resource name - this is the "entityResourceName" property on the @RelationshipResource annotation.
        relationName - - The relationship resource name - this is the "name" property on the @RelationshipResource annotation.
        httpMethod - - A permitted HttpMethod
        Returns:
        ResourceWithMetadata - The resource and its metadata.
        Throws:
        InvalidArgumentException - - thrown if either the api or resourceName's are invalid. ie. A resource doesn't exist.
        UnsupportedResourceOperationException - - throw if the resource does not support the specified HttpMethod.
      • locateResource

        ResourceWithMetadata locateResource​(Api api,
                                            Map<String,​String> templateVars,
                                            org.springframework.http.HttpMethod httpMethod)
        Used by webscripts to locate a resource based on the URL template variables.
        Parameters:
        api - - The API being used.
        templateVars - A map of variables representing the request
        httpMethod - - A permitted HttpMethod
        Returns:
        ResourceWithMetadata - The resource and its metadata.
      • locateEmbeddedResources

        Map<String,​ResourceWithMetadata> locateEmbeddedResources​(Api api,
                                                                       Map<String,​String> embeddedKeys)
        For a given Map finds any resources that should be embedded inside a class.
        Parameters:
        api - - The API being used.
        embeddedKeys - - Likely to be the result of a call to ResourceInspector.findEmbeddedResources()
        Returns:
        ResourceWithMetadata - The resources with metadata.
      • locateRelationResource

        Map<String,​ResourceWithMetadata> locateRelationResource​(Api api,
                                                                      String entityKey,
                                                                      Collection<String> relationshipKeys,
                                                                      org.springframework.http.HttpMethod httpMethod)
                                                               throws InvalidArgumentException,
                                                                      UnsupportedResourceOperationException
        Finds multiple relationship Resources and returns them as a Map of ResourceWithMetadata.
        Parameters:
        api - - The API being used.
        entityKey - - this is the "entityResourceName" property on the @RelationshipResource annotation.
        relationshipKeys - - The relationship resource names - this is the "name" property on the @RelationshipResource annotation.
        httpMethod - - A permitted HttpMethod
        Returns:
        ResourceWithMetadata - The resource and its metadata.
        Throws:
        InvalidArgumentException - - thrown if either the api or resourceName's are invalid. ie. A resource doesn't exist.
        UnsupportedResourceOperationException - - throw if the resource does not support the specified HttpMethod.