Class DetachedContentRuntimeRepository
- All Implemented Interfaces:
IRuntimeRepository,IDetachedContentRuntimeRepository
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
Modifier and TypeMethodDescriptionprotected <T> ElementgetDocumentElement(CustomTocEntryObject<T> tocEntry) This method returns the xml element of the product component identified by the tocEntryprotected ElementgetDocumentElement(GenerationTocEntry tocEntry) This method returns the xml element of the product component generation identified by the tocEntryprotected ElementgetDocumentElement(ProductCmptTocEntry tocEntry) This method returns the xml element of the product component identified by the tocEntryprotected ElementgetDocumentElement(TestCaseTocEntry tocEntry) This method returns the xml element of the test case identified by the tocEntryGetting theIFormulaEvaluatorFactoryset in the constructor.protected StringThis method returns the name of the product component generation implementation class identified by the tocEntry.Returning the actual version set in the product data provider.protected InputStreamgetXmlAsStream(EnumContentTocEntry tocEntry) Returns the XML data for the specified tocEntry asInputStreamprotected InputStreamgetXmlAsStream(TableContentTocEntry tocEntry) Returns the XML data for the specified tocEntry asInputStreambooleanReturnstrueif the repository's content is modifiable.protected IReadonlyTableOfContentsMethods inherited from class org.faktorips.runtime.internal.AbstractClassLoadingRuntimeRepository
createCustomObject, createEnumValues, createProductCmpt, createProductCmptGeneration, createProductComponentGenerationInstance, createProductComponentInstance, createTable, createTestCase, getAllProductComponentsInternal, getClassLoader, getProductVariantHelper, initClRepositoryObjectMethods inherited from class org.faktorips.runtime.internal.AbstractTocBasedRuntimeRepository
createEnumXmlAdapter, getAllEnumClasses, getAllIpsTestCases, getAllModelTypeImplementationClasses, getAllProductComponentIds, getAllProductComponents, getAllProductComponents, getAllTables, getClass, getIpsTestCaseInternal, getIpsTestCasesStartingWith, getLatestProductComponentGenerationInternal, getNextProductComponentGenerationInternal, getNotCachedCustomObject, getNotCachedEnumValues, getNotCachedEnumXmlAdapter, getNotCachedProductComponent, getNotCachedProductComponentGeneration, getNotCachedTable, getNumberOfProductComponentGenerationsInternal, getPreviousProductComponentGenerationInternal, getProductComponentGenerationInternal, getProductComponentGenerations, getProductComponentInternal, getTableInternal, getTableOfContents, initializeMethods inherited from class org.faktorips.runtime.internal.AbstractCachingRuntimeRepository
getAllInternalEnumXmlAdapters, getCustomRuntimeObjectInternal, getEnumValuesInternal, getProductComponentGenerationInternal, getProductComponentInternal, getTableInternal, initCachesMethods inherited from class org.faktorips.runtime.internal.AbstractRuntimeRepository
addDirectlyReferencedRepository, addEnumValueLookupService, getAllEnumClasses, getAllIpsTestCases, getAllModelTypeImplementationClasses, getAllProductComponentIds, getAllProductComponents, getAllProductComponents, getAllProductComponents, getAllReferencedRepositories, getAllTables, getCustomRuntimeObject, getDirectlyReferencedRepositories, getEnumValue, getEnumValue, getEnumValueLookupService, getEnumValues, getEnumValuesDefinedInType, getExistingEnumValue, 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, newJAXBContext, removeEnumValueLookupService, setFormulaEvaluatorFactory, setRuntimeRepositoryLookup, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.faktorips.runtime.IRuntimeRepository
addDirectlyReferencedRepository, addEnumValueLookupService, getAllEnumClasses, getAllIpsTestCases, getAllModelTypeImplementationClasses, getAllProductComponentIds, getAllProductComponents, getAllProductComponents, getAllProductComponents, getAllReferencedRepositories, getAllTables, getClassLoader, getCustomRuntimeObject, getDirectlyReferencedRepositories, getEnumValue, getEnumValue, getEnumValueLookupService, getEnumValues, getExistingEnumValue, 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 Details
-
loadTableOfContents
- Specified by:
loadTableOfContentsin classAbstractTocBasedRuntimeRepository
-
getFormulaEvaluatorFactory
Getting theIFormulaEvaluatorFactoryset 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:
getFormulaEvaluatorFactoryin interfaceIRuntimeRepository- Overrides:
getFormulaEvaluatorFactoryin classAbstractRuntimeRepository- Returns:
- the
IFormulaEvaluatorFactoryof this repository or null if formula should not be evaluated
-
getDocumentElement
Description copied from class:AbstractClassLoadingRuntimeRepositoryThis method returns the xml element of the product component identified by the tocEntry- Specified by:
getDocumentElementin classAbstractClassLoadingRuntimeRepository
-
getDocumentElement
Description copied from class:AbstractClassLoadingRuntimeRepositoryThis method returns the xml element of the product component generation identified by the tocEntry- Specified by:
getDocumentElementin classAbstractClassLoadingRuntimeRepository
-
getDocumentElement
Description copied from class:AbstractClassLoadingRuntimeRepositoryThis method returns the xml element of the test case identified by the tocEntry- Specified by:
getDocumentElementin classAbstractClassLoadingRuntimeRepository
-
getProductComponentGenerationImplClass
Description copied from class:AbstractClassLoadingRuntimeRepositoryThis 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:
getProductComponentGenerationImplClassin classAbstractClassLoadingRuntimeRepository
-
getXmlAsStream
Description copied from class:AbstractClassLoadingRuntimeRepositoryReturns the XML data for the specified tocEntry asInputStream- Specified by:
getXmlAsStreamin classAbstractClassLoadingRuntimeRepository- Parameters:
tocEntry- Specifying the requested EnumContent- Returns:
- An InputStream containing the XML data - should not return null!
-
getXmlAsStream
Description copied from class:AbstractClassLoadingRuntimeRepositoryReturns the XML data for the specified tocEntry asInputStream- Specified by:
getXmlAsStreamin classAbstractClassLoadingRuntimeRepository- Parameters:
tocEntry- Specifying the requested TableContent- Returns:
- An InputStream containing the XML data - should not return null!
-
getProductDataVersion
Returning the actual version set in the product data provider.- Specified by:
getProductDataVersionin interfaceIDetachedContentRuntimeRepository- Returns:
- version of the product data provider
- See Also:
-
isModifiable
public boolean isModifiable()Description copied from interface:IRuntimeRepositoryReturnstrueif 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. Returnsfalseotherwise.- Specified by:
isModifiablein interfaceIRuntimeRepository
-
getDocumentElement
Description copied from class:AbstractClassLoadingRuntimeRepositoryThis method returns the xml element of the product component identified by the tocEntry- Specified by:
getDocumentElementin classAbstractClassLoadingRuntimeRepository
-