Class ClassloaderRuntimeRepository

All Implemented Interfaces:
IRuntimeRepository

public class ClassloaderRuntimeRepository extends AbstractClassLoadingRuntimeRepository
A runtime repository that loads the resources by calling ClassLoader.getResourceAsStream(String)
Author:
Jan Ortmann
  • Field Details

    • REPOSITORY_XML_ELEMENT

      public static final String REPOSITORY_XML_ELEMENT
      Name of the XML element representing the product component registry.
      See Also:
    • TABLE_OF_CONTENTS_FILE

      public static final String TABLE_OF_CONTENTS_FILE
      The default name of the file describing the registry's contents.
      See Also:
  • Constructor Details

    • ClassloaderRuntimeRepository

      public ClassloaderRuntimeRepository(ClassLoader cl, String basePackage)
      Creates a new repository that loads its contents from the given classloader and the given package. Uses the default ToC resource name. Uses the default document builder available via DocumentBuilderFactory.newInstance() to parse the XML files.
      Throws:
      NullPointerException - if cl or basePackage are null.
      IllegalArgumentException - if the basePackage does not contain the table of contents file.
      RuntimeException - if the registry's table of contents file can't be read.
      See Also:
    • ClassloaderRuntimeRepository

      public ClassloaderRuntimeRepository(ClassLoader cl, String basePackage, String pathToToc)
      Creates a new repository that loads its contents from the given classloader and the given package and ToC resource using the default document builder.
      Parameters:
      cl - The classloader to use.
      basePackage - The name of the base package that contains the data.
      pathToToc - Path from the base package to the resource containing the toc, e.g. "faktorips-repository-toc.xml" or "motor/motor-repository-toc.xml"
      Throws:
      NullPointerException - if any argument is null.
      IllegalArgumentException - if the basePackage does not contain the table of contents file.
      RuntimeException - if the registry's table of contents file can't be read.
    • ClassloaderRuntimeRepository

      public ClassloaderRuntimeRepository(ClassLoader cl, String basePackage, String pathToToc, ICacheFactory cacheFactory)
      Creates a new repository that loads its contents from the given classloader and the given package using the given XML document builder.
      Parameters:
      cl - The classloader to use.
      basePackage - The name of the base package that contains the data.
      pathToToc - Path from the base package to the resource containing the toc, e.g. "faktorips-repository-toc.xml" or "motor/motor-repository-toc.xml"
      Throws:
      NullPointerException - if any argument is null.
      IllegalArgumentException - if the basePackage does not contain the table of contents file.
      RuntimeException - if the registry's table of contents file can't be read.
  • Method Details

    • create

      public static final ClassloaderRuntimeRepository create(String tocResource)
      Creates a new repository that loads it's contents from the given ToC resource using this class' classloader and the default XML document builder to parse the XML data.
      Parameters:
      tocResource - Path to the resource containing the ToC file. E.g. "org/faktorips/sample/internal/faktorips-repository-toc.xml"
      Throws:
      NullPointerException - if any argument is null.
      RuntimeException - if the registry's table of contents file can't be read.
    • create

      public static final ClassloaderRuntimeRepository create(String tocResource, ICacheFactory cacheFactory)
      Creates a new repository that loads it's contents from the given ToC resource using this class' classloader and the default XML document builder to parse the XML data.
      Parameters:
      tocResource - Path to the resource containing the ToC file. E.g. "org/faktorips/sample/internal/faktorips-repository-toc.xml"
      cacheFactory - The CacheFactory used to create the cache objects in the repository
      Throws:
      NullPointerException - if any argument is null.
      RuntimeException - if the registry's table of contents file can't be read.
    • create

      public static final ClassloaderRuntimeRepository create(String tocResource, ClassLoader cl)
      Creates a new repository that loads it's contents from the given ToC resource and classloader using the default document builder to parse the XML data.
      Parameters:
      tocResource - Path to the resource containing the ToC file. E.g. "org/faktorips/sample/internal/faktorips-repository-toc.xml"
      cl - The classloader to use.
      Throws:
      NullPointerException - if any argument is null.
      RuntimeException - if the registry's table of contents file can't be read.
    • create

      public static final ClassloaderRuntimeRepository create(String tocResource, ClassLoader cl, ICacheFactory cacheFactory)
      Creates a new repository that loads it's contents from the given ToC resource and classloader using the default document builder to parse the XML data.
      Parameters:
      tocResource - Path to the resource containing the ToC file. E.g. "org/faktorips/sample/internal/faktorips-repository-toc.xml"
      cl - The classloader to use.
      cacheFactory - The CacheFactory used to create the cache objects in the repository
      Throws:
      NullPointerException - if any argument is null.
      RuntimeException - if the registry's table of contents file can't be read.
    • loadTableOfContents

      protected ReadonlyTableOfContents loadTableOfContents()
      Specified by:
      loadTableOfContents in class AbstractTocBasedRuntimeRepository
    • getProductComponentGenerationImplClass

      protected String getProductComponentGenerationImplClass(GenerationTocEntry tocEntry)
      Description copied from class: AbstractClassLoadingRuntimeRepository
      This method returns the name of the product component generation implementation class identified by the tocEntry. This could either be an implementation class using the formula evaluation or an implementation class containing the compiled formulas.
      Specified by:
      getProductComponentGenerationImplClass in class AbstractClassLoadingRuntimeRepository
    • getXmlAsStream

      protected InputStream getXmlAsStream(TableContentTocEntry tocEntry)
      Description copied from class: AbstractXmlInputStreamRepository
      Returns the XML data for the specified TableContentTocEntry as InputStream
      Specified by:
      getXmlAsStream in class AbstractXmlInputStreamRepository
      Parameters:
      tocEntry - Specifying the requested TableContent
      Returns:
      An InputStream containing the XML data - should not return null!
    • getXmlAsStream

      protected InputStream getXmlAsStream(EnumContentTocEntry tocEntry)
      Description copied from class: AbstractXmlInputStreamRepository
      Returns the XML data for the specified EnumContentTocEntry as InputStream
      Specified by:
      getXmlAsStream in class AbstractXmlInputStreamRepository
      Parameters:
      tocEntry - Specifying the requested EnumContent
      Returns:
      An InputStream containing the XML data - should not return null!
    • isModifiable

      public boolean isModifiable()
      Description copied from interface: IRuntimeRepository
      Returns true if the repository's content is modifiable. This feature is mainly targeted for writing test cases that need to setup a repository with a test specific content programmatically. Returns false otherwise.