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
  • Field Details

  • Method Details

    • parseTemplateVars

      Map<String,String> parseTemplateVars(Map<String,String> templateVars)
      Parameters:
      templateVars -
      Returns:
    • 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.