Class GroovyJaxrsPublisher

java.lang.Object
org.exoplatform.services.rest.ext.groovy.GroovyJaxrsPublisher
Direct Known Subclasses:
GroovyScript2RestLoader.InnerGroovyJaxrsPublisher

public class GroovyJaxrsPublisher extends Object
Manage via ResourceBinder Groovy based RESTful services.
Version:
$Id$
Author:
Andrey Parfonov
  • Field Details

    • DEFAULT_CHARSET_NAME

      protected static final String DEFAULT_CHARSET_NAME
      Default character set name.
      See Also:
    • DEFAULT_CHARSET

      protected static final Charset DEFAULT_CHARSET
      Default character set.
    • binder

      protected final org.exoplatform.services.rest.impl.ResourceBinder binder
    • instantiator

      protected final GroovyScriptInstantiator instantiator
    • classLoaderProvider

      protected final GroovyClassLoaderProvider classLoaderProvider
    • resources

      protected final Map<ResourceId,String> resources
  • Constructor Details

    • GroovyJaxrsPublisher

      public GroovyJaxrsPublisher(org.exoplatform.services.rest.impl.ResourceBinder binder, GroovyScriptInstantiator instantiator, GroovyClassLoaderProvider classLoaderProvider)
    • GroovyJaxrsPublisher

      public GroovyJaxrsPublisher(org.exoplatform.services.rest.impl.ResourceBinder binder, GroovyScriptInstantiator instantiator)
      Create GroovyJaxrsPublisher which is able publish per-request and singleton resources. Any required dependencies for per-request resource injected by PerRequestObjectFactory, instance of singleton resources will be created by GroovyScriptInstantiator.
      Parameters:
      binder - resource binder
      instantiator - instantiate java object from given groovy source
  • Method Details

    • getGroovyClassLoader

      @Deprecated public groovy.lang.GroovyClassLoader getGroovyClassLoader()
      Deprecated.
      Returns:
      get underling groovy class loader
    • setGroovyClassLoader

      @Deprecated public void setGroovyClassLoader(groovy.lang.GroovyClassLoader gcl)
      Deprecated.
      Set groovy class loader.
      Parameters:
      gcl - groovy class loader
      Throws:
      NullPointerException - if gcl == null
    • getResource

      public org.exoplatform.services.rest.ObjectFactory<org.exoplatform.services.rest.resource.AbstractResourceDescriptor> getResource(ResourceId resourceId)
      Get resource corresponded to specified id resourceId .
      Parameters:
      resourceId - resource id
      Returns:
      resource or null
    • isPublished

      public boolean isPublished(ResourceId resourceId)
      Check is groovy resource with specified id is published or not
      Parameters:
      resourceId - id of resource to be checked
      Returns:
      true if resource is published and false otherwise
    • publishPerRequest

      public void publishPerRequest(InputStream in, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties)
      Parse given stream and publish result as per-request RESTful service.
      Parameters:
      in - stream which contains groovy source code of RESTful service
      resourceId - id to be assigned to resource
      properties - optional resource properties. This parameter may be null
      Throws:
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Class, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishPerRequest

      public void publishPerRequest(InputStream in, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties, SourceFolder[] src, SourceFile[] files)
      Parse given stream and publish result as per-request RESTful service.
      Parameters:
      in - stream which contains Groovy source code of RESTful service
      resourceId - id to be assigned to resource
      properties - optional resource properties. This parameter may be null
      src - additional path to Groovy sources
      files - Groovy source files to be added in build path directly
      Throws:
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Class, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishPerRequest

      public final void publishPerRequest(String source, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties)
      Parse given source and publish result as per-request RESTful service.
      Parameters:
      source - groovy source code of RESTful service
      resourceId - id to be assigned to resource
      properties - optional resource properties. This parameter may be null
      Throws:
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Class, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishPerRequest

      public final void publishPerRequest(String source, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties, SourceFolder[] src, SourceFile[] files)
      Parse given source and publish result as per-request RESTful service.
      Parameters:
      source - groovy source code of RESTful service
      resourceId - id to be assigned to resource
      properties - optional resource properties. This parameter may be null
      src - additional path to Groovy sources
      files - Groovy source files to be added in build path directly
      Throws:
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Class, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishPerRequest

      public final void publishPerRequest(String source, String charset, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties)
      Parse given source and publish result as per-request RESTful service.
      Parameters:
      source - groovy source code of RESTful service
      charset - source string charset. May be null than default charset will be in use
      resourceId - id to be assigned to resource
      properties - optional resource properties. This parameter may be null.
      Throws:
      UnsupportedCharsetException - if charset is unsupported
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Class, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishPerRequest

      public final void publishPerRequest(String source, String charset, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties, SourceFolder[] src, SourceFile[] files)
      Parse given source and publish result as per-request RESTful service.
      Parameters:
      source - groovy source code of RESTful service
      charset - source string charset. May be null than default charset will be in use
      resourceId - id to be assigned to resource
      properties - optional resource properties. This parameter may be null.
      src - additional path to Groovy sources
      files - Groovy source files to be added in build path directly
      Throws:
      UnsupportedCharsetException - if charset is unsupported
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Class, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishSingleton

      public void publishSingleton(InputStream in, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties)
      Parse given stream and publish result as singleton RESTful service.
      Parameters:
      in - stream which contains groovy source code of RESTful service
      resourceId - id to be assigned to resource
      properties - optional resource properties. This parameter may be null
      Throws:
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Object, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishSingleton

      public void publishSingleton(InputStream in, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties, SourceFolder[] src, SourceFile[] files)
      Parse given stream and publish result as singleton RESTful service.
      Parameters:
      in - stream which contains groovy source code of RESTful service
      resourceId - id to be assigned to resource
      properties - optional resource properties. This parameter may be null
      src - additional path to Groovy sources
      files - Groovy source files to be added in build path directly
      Throws:
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Object, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishSingleton

      public final void publishSingleton(String source, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties)
      Parse given source and publish result as singleton RESTful service.
      Parameters:
      source - groovy source code of RESTful service
      resourceId - name of resource
      properties - optional resource properties. This parameter may be null.
      Throws:
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Object, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishSingleton

      public final void publishSingleton(String source, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties, SourceFolder[] src, SourceFile[] files)
      Parse given source and publish result as singleton RESTful service.
      Parameters:
      source - groovy source code of RESTful service
      resourceId - name of resource
      properties - optional resource properties. This parameter may be null.
      src - additional path to Groovy sources
      files - Groovy source files to be added in build path directly
      Throws:
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Object, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishSingleton

      public final void publishSingleton(String source, String charset, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties)
      Parse given source and publish result as singleton RESTful service.
      Parameters:
      source - groovy source code of RESTful service
      charset - source string charset. May be null than default charset will be in use
      resourceId - name of resource
      properties - optional resource properties. This parameter may be null.
      Throws:
      UnsupportedCharsetException - if charset is unsupported
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Object, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • publishSingleton

      public final void publishSingleton(String source, String charset, ResourceId resourceId, javax.ws.rs.core.MultivaluedMap<String,String> properties, SourceFolder[] src, SourceFile[] files)
      Parse given source and publish result as singleton RESTful service.
      Parameters:
      source - groovy source code of RESTful service
      charset - source string charset. May be null than default charset will be in use
      resourceId - name of resource
      properties - optional resource properties. This parameter may be null.
      src - additional path to Groovy sources
      files - Groovy source files to be added in build path directly
      Throws:
      UnsupportedCharsetException - if charset is unsupported
      NullPointerException - if resourceId == null
      org.exoplatform.services.rest.impl.ResourcePublicationException - see ResourceBinder.addResource(Object, MultivaluedMap)
      org.codehaus.groovy.control.CompilationFailedException - if compilation fails from source errors
    • unpublishResource

      public org.exoplatform.services.rest.ObjectFactory<org.exoplatform.services.rest.resource.AbstractResourceDescriptor> unpublishResource(ResourceId resourceId)
      Unpublish resource with specified id.
      Parameters:
      resourceId - id of resource to be unpublished
      Returns:
      true if resource was published and false otherwise, e.g. because there is not resource corresponded to supplied resourceId
    • validateResource

      public void validateResource(InputStream in, String name, SourceFolder[] src, SourceFile[] files) throws MalformedScriptException
      Validate does stream contain Groovy source code which is conforms with requirement to JAX-RS resource.
      Parameters:
      in - Groovy source stream
      name - script name. This name will be used by GroovyClassLoader to identify script, e.g. specified name will be used in error message in compilation of Groovy fails. If this parameter is null then GroovyClassLoader will use automatically generated name
      src - additional path to Groovy sources
      files - Groovy source files to be added in build path directly
      Throws:
      MalformedScriptException - if source has errors or there is no required JAX-RS annotation
    • validateResource

      public void validateResource(InputStream in, String name) throws MalformedScriptException
      Validate does stream contain Groovy source code which is conforms with requirement to JAX-RS resource.
      Parameters:
      in - Groovy source stream
      name - script name. This name will be used by GroovyClassLoader to identify script, e.g. specified name will be used in error message in compilation of Groovy fails. If this parameter is null then GroovyClassLoader will use automatically generated name
      Throws:
      MalformedScriptException - if source has errors or there is no required JAX-RS annotation
    • validateResource

      public final void validateResource(String source, String charset, String name, SourceFolder[] src, SourceFile[] files) throws MalformedScriptException
      Validate does source contain Groovy source code which is conforms with requirement to JAX-RS resource.
      Parameters:
      source - Groovy source code as String
      charset - source string charset. May be null than default charset will be in use
      name - script name. This name will be used by GroovyClassLoader to identify script, e.g. specified name will be used in error message in compilation of Groovy fails. If this parameter is null then GroovyClassLoader will use automatically generated name
      src - additional path to Groovy sources
      files - Groovy source files to be added in build path directly
      Throws:
      MalformedScriptException - if source has errors or there is no required JAX-RS annotation
    • validateResource

      public final void validateResource(String source, String name, SourceFolder[] src, SourceFile[] files) throws MalformedScriptException
      Validate does source contain Groovy source code which is conforms with requirement to JAX-RS resource.
      Parameters:
      source - Groovy source code as String
      name - script name. This name will be used by GroovyClassLoader to identify script, e.g. specified name will be used in error message in compilation of Groovy fails. If this parameter is null then GroovyClassLoader will use automatically generated name
      src - additional path to Groovy sources
      files - Groovy source files to be added in build path directly
      Throws:
      MalformedScriptException - if source has errors or there is no required JAX-RS annotation
    • validateResource

      public final void validateResource(String source, String name) throws MalformedScriptException
      Validate does source contain Groovy source code which is conforms with requirement to JAX-RS resource.
      Parameters:
      source - Groovy source code as String
      name - script name. This name will be used by GroovyClassLoader to identify script, e.g. specified name will be used in error message in compilation of Groovy fails. If this parameter is null then GroovyClassLoader will use automatically generated name
      Throws:
      MalformedScriptException - if source has errors or there is no required JAX-RS annotation
    • createInstance

      Throws:
      IllegalArgumentException
      InstantiationException
      IllegalAccessException
      InvocationTargetException
    • createCodeSource

      protected groovy.lang.GroovyCodeSource createCodeSource(URL url) throws IOException
      Create GroovyCodeSource from given location (URL).
      Parameters:
      url - groovy source url
      Returns:
      GroovyCodeSource
      Throws:
      IOException