org.faktorips.runtime.productdataprovider
Class DetachedContentRuntimeRepository

java.lang.Object
  extended by org.faktorips.runtime.internal.AbstractRuntimeRepository
      extended by org.faktorips.runtime.internal.AbstractCachingRuntimeRepository
          extended by org.faktorips.runtime.internal.AbstractTocBasedRuntimeRepository
              extended by org.faktorips.runtime.internal.AbstractClassLoadingRuntimeRepository
                  extended by org.faktorips.runtime.productdataprovider.DetachedContentRuntimeRepository
All Implemented Interfaces:
IRuntimeRepository, IDetachedContentRuntimeRepository

public class DetachedContentRuntimeRepository
extends AbstractClassLoadingRuntimeRepository
implements IDetachedContentRuntimeRepository

/** The DetachedContentRuntimeRepository is a runtime repository that is able to parse the product data provided from a IProductDataProvider and instantiates the necessary objects.

Because the data from an IProductDataProvider could change over time the DetachedContentRuntimeRepository have to look for modifications and reinstantiates the classes if necessary. Once product data has changed, this repository only provides the already cached data. If the user requests new data it gets a DataModifiedRuntimeException.

This implements a optimistic locking mechanism. That means that nothing happens until the requested data is invalid. Once the product data has changed, this repository could still get cached data. That means every request that only calls data from the cache would continue without errors. To guarantee that a client does not work on out-dated data it has to get the actual DetachedContentRuntimeRepository from DetachedContentRuntimeRepositoryManager for every new request.

Author:
dirmeier

Method Summary
protected
<T> Element
getDocumentElement(CustomTocEntryObject<T> tocEntry)
          This method returns the xml element of the product component identified by the tocEntry
protected  Element getDocumentElement(GenerationTocEntry tocEntry)
          This method returns the xml element of the product component generation identified by the tocEntry
protected  Element getDocumentElement(ProductCmptTocEntry tocEntry)
          This method returns the xml element of the product component identified by the tocEntry
protected  Element getDocumentElement(TestCaseTocEntry tocEntry)
          This method returns the xml element of the test case identified by the tocEntry
 IFormulaEvaluatorFactory getFormulaEvaluatorFactory()
          Getting the IFormulaEvaluatorFactory set in the constructor.
protected  String getProductComponentGenerationImplClass(GenerationTocEntry tocEntry)
          This method returns the name of the product component generation implementation class identified by the tocEntry.
 String getProductDataVersion()
          Returning the actual version set in the product data provider.
protected  InputStream getXmlAsStream(EnumContentTocEntry tocEntry)
          Returns the XML data for the specified tocEntry as InputStream
protected  InputStream getXmlAsStream(TableContentTocEntry tocEntry)
          Returns the XML data for the specified tocEntry as InputStream
 boolean isModifiable()
          Returns true if the repository's content is modifiable.
protected  IReadonlyTableOfContents loadTableOfContents()
           
 
Methods inherited from class org.faktorips.runtime.internal.AbstractClassLoadingRuntimeRepository
createCustomObject, createEnumValues, createProductCmpt, createProductCmptGeneration, createProductComponentGenerationInstance, createProductComponentInstance, createTable, createTestCase, getAllProductComponentsInternal, getClassLoader, getProductVariantHelper, initClRepositoryObject
 
Methods inherited from class org.faktorips.runtime.internal.AbstractTocBasedRuntimeRepository
createEnumXmlAdapter, getAllIpsTestCases, getAllModelTypeImplementationClasses, getAllProductComponentIds, getAllProductComponents, getAllProductComponents, getAllTables, getClass, getIpsTestCaseInternal, getIpsTestCasesStartingWith, getLatestProductComponentGenerationInternal, getNextProductComponentGenerationInternal, getNotCachedCustomObject, getNotCachedEnumValues, getNotCachedEnumXmlAdapter, getNotCachedProductComponent, getNotCachedProductComponentGeneration, getNotCachedTable, getNumberOfProductComponentGenerationsInternal, getPreviousProductComponentGenerationInternal, getProductComponentGenerationInternal, getProductComponentGenerations, getProductComponentInternal, getTableInternal, getTableOfContents, initialize
 
Methods inherited from class org.faktorips.runtime.internal.AbstractCachingRuntimeRepository
getAllInternalEnumXmlAdapters, getCustomRuntimeObjectInternal, getEnumValuesInternal, getProductComponentGenerationInternal, getProductComponentInternal, getTableInternal, initCaches
 
Methods inherited from class org.faktorips.runtime.internal.AbstractRuntimeRepository
addDirectlyReferencedRepository, addEnumValueLookupService, getAllIpsTestCases, getAllModelTypeImplementationClasses, getAllProductComponentIds, getAllProductComponents, getAllProductComponents, getAllProductComponents, getAllReferencedRepositories, getAllTables, getCustomRuntimeObject, getDirectlyReferencedRepositories, getEnumValue, getEnumValue, getEnumValueLookupService, getEnumValues, getEnumValuesDefinedInType, getExistingProductComponent, getExistingProductComponentGeneration, getIpsTest, getIpsTest, getIpsTestCase, getIpsTestCase, getIpsTestCasesStartingWith, getIpsTestSuite, getIpsTestSuite, getLatestProductComponentGeneration, getModelType, getModelType, getModelType, getModelType, getName, getNextProductComponentGeneration, getNumberOfProductComponentGenerations, getPreviousProductComponentGeneration, getProductComponent, getProductComponent, getProductComponentGeneration, getProductComponentGenerations, getRuntimeRepositoryLookup, getTable, getTable, newJAXBContext, newJAXBContext, removeEnumValueLookupService, setFormulaEvaluatorFactory, setRuntimeRepositoryLookup, toString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.faktorips.runtime.IRuntimeRepository
addDirectlyReferencedRepository, addEnumValueLookupService, getAllIpsTestCases, getAllModelTypeImplementationClasses, getAllProductComponentIds, getAllProductComponents, getAllProductComponents, getAllProductComponents, getAllReferencedRepositories, getAllTables, getClassLoader, getCustomRuntimeObject, getDirectlyReferencedRepositories, getEnumValue, getEnumValue, getEnumValueLookupService, getEnumValues, getExistingProductComponent, getExistingProductComponentGeneration, getIpsTest, getIpsTest, getIpsTestCase, getIpsTestCase, getIpsTestCasesStartingWith, getIpsTestSuite, getIpsTestSuite, getLatestProductComponentGeneration, getModelType, getModelType, getModelType, getName, getNextProductComponentGeneration, getNumberOfProductComponentGenerations, getPreviousProductComponentGeneration, getProductComponent, getProductComponent, getProductComponentGeneration, getProductComponentGenerations, getRuntimeRepositoryLookup, getTable, getTable, newJAXBContext, removeEnumValueLookupService, setRuntimeRepositoryLookup
 

Method Detail

loadTableOfContents

protected IReadonlyTableOfContents loadTableOfContents()
Specified by:
loadTableOfContents in class AbstractTocBasedRuntimeRepository

getFormulaEvaluatorFactory

public IFormulaEvaluatorFactory getFormulaEvaluatorFactory()
Getting the IFormulaEvaluatorFactory set in the constructor. This could be null if formula should not be evaluated on the fly. The repository would load the classes containing the compiled formula.

Specified by:
getFormulaEvaluatorFactory in interface IRuntimeRepository
Overrides:
getFormulaEvaluatorFactory in class AbstractRuntimeRepository
Returns:
the IFormulaEvaluatorFactory of this repository or null if formula should not be evaluated

getDocumentElement

protected Element getDocumentElement(ProductCmptTocEntry tocEntry)
Description copied from class: AbstractClassLoadingRuntimeRepository
This method returns the xml element of the product component identified by the tocEntry

Specified by:
getDocumentElement in class AbstractClassLoadingRuntimeRepository

getDocumentElement

protected Element getDocumentElement(GenerationTocEntry tocEntry)
Description copied from class: AbstractClassLoadingRuntimeRepository
This method returns the xml element of the product component generation identified by the tocEntry

Specified by:
getDocumentElement in class AbstractClassLoadingRuntimeRepository

getDocumentElement

protected Element getDocumentElement(TestCaseTocEntry tocEntry)
Description copied from class: AbstractClassLoadingRuntimeRepository
This method returns the xml element of the test case identified by the tocEntry

Specified by:
getDocumentElement in class AbstractClassLoadingRuntimeRepository

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(EnumContentTocEntry tocEntry)
Description copied from class: AbstractClassLoadingRuntimeRepository
Returns the XML data for the specified tocEntry as InputStream

Specified by:
getXmlAsStream in class AbstractClassLoadingRuntimeRepository
Parameters:
tocEntry - Specifying the requested EnumContent
Returns:
An InputStream containing the XML data - should not return null!

getXmlAsStream

protected InputStream getXmlAsStream(TableContentTocEntry tocEntry)
Description copied from class: AbstractClassLoadingRuntimeRepository
Returns the XML data for the specified tocEntry as InputStream

Specified by:
getXmlAsStream in class AbstractClassLoadingRuntimeRepository
Parameters:
tocEntry - Specifying the requested TableContent
Returns:
An InputStream containing the XML data - should not return null!

getProductDataVersion

public String getProductDataVersion()
Returning the actual version set in the product data provider.

Specified by:
getProductDataVersion in interface IDetachedContentRuntimeRepository
Returns:
version of the product data provider
See Also:
IProductDataProvider.getVersion()

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 programatically. Returns false otherwise.

Specified by:
isModifiable in interface IRuntimeRepository

getDocumentElement

protected <T> Element getDocumentElement(CustomTocEntryObject<T> tocEntry)
Description copied from class: AbstractClassLoadingRuntimeRepository
This method returns the xml element of the product component identified by the tocEntry

Specified by:
getDocumentElement in class AbstractClassLoadingRuntimeRepository


Copyright © 2015. All rights reserved.