Package com.zfabrik.impl.svncr
Class ComponentRepositoryImpl
- java.lang.Object
-
- com.zfabrik.components.provider.util.AbstractExtComponentRepository<com.zfabrik.components.provider.util.FSCRDBComponent,DB>
-
- com.zfabrik.components.provider.util.AbstractComponentRepository<ComponentRepositoryDB>
-
- com.zfabrik.impl.svncr.ComponentRepositoryImpl
-
- All Implemented Interfaces:
com.zfabrik.components.provider.IComponentsRepository,com.zfabrik.util.sync.ISynchronizer
public class ComponentRepositoryImpl extends com.zfabrik.components.provider.util.AbstractComponentRepository<ComponentRepositoryDB>
Subversion based components repository based onAbstractComponentRepositoryRevision determination is a little tricky and essentially based on max(package rev, component rev) an approx of the pegrevision (http://svnbook.red-bean.com/nightly/en/svn.advanced.pegrevs.html) with a non-trivial scheme for delta updates. The reason for doing this is subversions preservation of revisions of nested objects in case of moves (renames) and branch copies.
Repository configuration (i.e. component level) properties:
svncr.url URL of the subversion root folder of the repository. E.g. something like svn://z2-environment.net/z2_base/trunk/l1svncr.user User name for Subversion authentication (optional) svncr.password Password for Subversion authentication (optional) svncr.priority Priority of the repository with the repository chain. See IComponentsRepository.System properties that have a meaning:
com.zfabrik.svncr.mode(DEPRECATED) If set to "relaxed" will only issue a warning when repository access fails during sync revision lookup (e.g. on startup) - i.e. if the repo revision cannot be determined via a repository request. This means that a given system may continue to run although a repository may not be accessible, as long no requests have to made because resources are not (yet) available in the repository cache. Defaults to strict- Author:
- hb
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringMODEIf set to "relaxed" will only issue a warning when repository access fails during sync revision lookup (e.g.static java.lang.StringMODE_RELAXEDPermissable value ofMODEstatic java.lang.StringMODE_STRICTPermissable value ofMODEstatic java.lang.StringSVNCR_PRIOpriority of the repository with the repository chain.static java.lang.StringSVNCR_PWDPassword for authentication at the repositorystatic java.lang.StringSVNCR_ROOTFolder name in cache.static java.lang.StringSVNCR_URLURL of the subversion root folder for this repository.static java.lang.StringSVNCR_USERUser name for authentication at the repository
-
Constructor Summary
Constructors Constructor Description ComponentRepositoryImpl(java.lang.String name, java.util.Properties props)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voiddownload(com.zfabrik.components.provider.util.FSCRDBComponent c, java.io.File destFolder)Download resources of a single component into the given folderprotected java.util.PropertiesgetExpectedConfiguration()provided expected repository configuration.SvnWorkResourcegetRepoSession()protected longgetRevision()Overall revision of the repository - if availableprotected java.lang.StringgetURL()Some URL style information on the external data source the repository implementation relies onComponentRepositoryDBscan(ComponentRepositoryDB current)Provide an updated DB.static ComponentRepositoryImpltest_create(java.lang.String name, java.io.File root, java.util.Properties props, com.zfabrik.svnaccess.ISvnRepository svnRepository)ComponentRepositoryDBtest_deltaScan(ComponentRepositoryDB db, long rev)ComponentRepositoryDBtest_fullScan(long rev)com.zfabrik.svnaccess.ISvnRepositorytest_getRepo()voidtest_setRepository(com.zfabrik.svnaccess.ISvnRepository accessor)java.lang.StringtoString()-
Methods inherited from class com.zfabrik.components.provider.util.AbstractExtComponentRepository
as, checkOfflineMode, complete, configure, configure, configure, findComponents, getCacheRoot, getComponent, getContext, getDB, getModules, getName, getRevision, has, isRelaxedMode, preInvalidation, preInvalidation, retrieve, setEvictionDelay, start, stop, test_setContext, test_setDb, test_setInited
-
-
-
-
Field Detail
-
MODE
public static final java.lang.String MODE
If set to "relaxed" will only issue a warning when repository access fails during sync revision lookup (e.g. on startup) - i.e. if the repo revision cannot be determined via a repository request. This means that a given system may continue to run although a repository may not be accessible, as long no requests have to made because resources are not (yet) available in the repository cache. Defaults tostrict- See Also:
- Constant Field Values
-
MODE_RELAXED
public static final java.lang.String MODE_RELAXED
Permissable value ofMODE- See Also:
- Constant Field Values
-
MODE_STRICT
public static final java.lang.String MODE_STRICT
Permissable value ofMODE- See Also:
- Constant Field Values
-
SVNCR_URL
public static final java.lang.String SVNCR_URL
URL of the subversion root folder for this repository.- See Also:
- Constant Field Values
-
SVNCR_USER
public static final java.lang.String SVNCR_USER
User name for authentication at the repository- See Also:
- Constant Field Values
-
SVNCR_PWD
public static final java.lang.String SVNCR_PWD
Password for authentication at the repository- See Also:
- Constant Field Values
-
SVNCR_PRIO
public static final java.lang.String SVNCR_PRIO
priority of the repository with the repository chain. SeeIComponentsRepository.- See Also:
- Constant Field Values
-
SVNCR_ROOT
public static final java.lang.String SVNCR_ROOT
Folder name in cache. Can and should be omitted in most cases. If omitted, will be computed.- See Also:
- Constant Field Values
-
-
Method Detail
-
getExpectedConfiguration
protected java.util.Properties getExpectedConfiguration()
Description copied from class:com.zfabrik.components.provider.util.AbstractExtComponentRepositoryprovided expected repository configuration. This property set is used by theFSComponentRepositoryHelperto make a decision on whether the repository cache is still valid. Any change in repository configuration between repository initialization will be taken as reason to completely purge the local repository. By default this method returns the complete repository configuration.- Overrides:
getExpectedConfigurationin classcom.zfabrik.components.provider.util.AbstractExtComponentRepository<com.zfabrik.components.provider.util.FSCRDBComponent,ComponentRepositoryDB>
-
scan
public ComponentRepositoryDB scan(ComponentRepositoryDB current)
Description copied from class:com.zfabrik.components.provider.util.AbstractExtComponentRepositoryProvide an updated DB. This DB will be used to compute invalidations on synchronization and it will be used to serve component meta-data. If the repository implementation needs to attach additional meta-data to the DB, it should overwrite the DB class to do so, as the result of a scan potentially will be discarded.- Specified by:
scanin classcom.zfabrik.components.provider.util.AbstractExtComponentRepository<com.zfabrik.components.provider.util.FSCRDBComponent,ComponentRepositoryDB>
-
download
public void download(com.zfabrik.components.provider.util.FSCRDBComponent c, java.io.File destFolder)Description copied from class:com.zfabrik.components.provider.util.AbstractExtComponentRepositoryDownload resources of a single component into the given folder- Specified by:
downloadin classcom.zfabrik.components.provider.util.AbstractExtComponentRepository<com.zfabrik.components.provider.util.FSCRDBComponent,ComponentRepositoryDB>
-
getURL
protected java.lang.String getURL()
Description copied from class:com.zfabrik.components.provider.util.AbstractExtComponentRepositorySome URL style information on the external data source the repository implementation relies on- Overrides:
getURLin classcom.zfabrik.components.provider.util.AbstractExtComponentRepository<com.zfabrik.components.provider.util.FSCRDBComponent,ComponentRepositoryDB>
-
getRevision
protected long getRevision()
Description copied from class:com.zfabrik.components.provider.util.AbstractExtComponentRepositoryOverall revision of the repository - if available- Overrides:
getRevisionin classcom.zfabrik.components.provider.util.AbstractExtComponentRepository<com.zfabrik.components.provider.util.FSCRDBComponent,ComponentRepositoryDB>
-
getRepoSession
public SvnWorkResource getRepoSession()
-
toString
public java.lang.String toString()
- Overrides:
toStringin classcom.zfabrik.components.provider.util.AbstractExtComponentRepository<com.zfabrik.components.provider.util.FSCRDBComponent,ComponentRepositoryDB>
-
test_create
public static ComponentRepositoryImpl test_create(java.lang.String name, java.io.File root, java.util.Properties props, com.zfabrik.svnaccess.ISvnRepository svnRepository)
-
test_setRepository
public void test_setRepository(com.zfabrik.svnaccess.ISvnRepository accessor)
-
test_getRepo
public com.zfabrik.svnaccess.ISvnRepository test_getRepo() throws java.io.IOException- Throws:
java.io.IOException
-
test_fullScan
public ComponentRepositoryDB test_fullScan(long rev) throws java.lang.Exception
- Throws:
java.lang.Exception
-
test_deltaScan
public ComponentRepositoryDB test_deltaScan(ComponentRepositoryDB db, long rev) throws java.lang.Exception
- Throws:
java.lang.Exception
-
-