Class BlobAwareContentRepository
- java.lang.Object
-
- org.craftercms.studio.impl.v2.repository.blob.BlobAwareContentRepository
-
- All Implemented Interfaces:
ContentRepository
,ContentRepository
public class BlobAwareContentRepository extends Object implements ContentRepository, ContentRepository
Implementation ofContentRepository
,ContentRepository
that delegates calls to aStudioBlobStore
when appropriate- Since:
- 3.1.6
- Author:
- joseross
-
-
Field Summary
Fields Modifier and Type Field Description protected StudioBlobStoreResolver
blobStoreResolver
protected String
fileExtension
The extension for the blob filesprotected GitContentRepository
localRepositoryV1
protected GitContentRepository
localRepositoryV2
protected com.fasterxml.jackson.databind.ObjectMapper
objectMapper
-
Constructor Summary
Constructors Constructor Description BlobAwareContentRepository()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
addRemote(String siteId, String remoteName, String remoteUrl, String authenticationType, String remoteUsername, String remotePassword, String remoteToken, String remotePrivateKey)
Add remote repository for site content repositoryvoid
cancelPublishAll(String siteId, String publishingTarget)
Performs the cleanup after a failed publish all operation for the given site & targetvoid
checkContentExists(String site, String path)
Checks if a content exists at a given path and throw an exception if it does not.void
cleanupRepositories(String siteId)
Performs a cleanup all repositories for the given siteboolean
commitIdExists(String site, String commitId)
Check if given commit id existsboolean
commitIdExists(String site, GitRepositories repoType, String commitId)
Check if given commit id existsvoid
completePublishAll(String siteId, String publishingTarget, RepositoryChanges changes, String comment)
Performs the actual publish of all changes for the given site & targetboolean
contentExists(String site, String path)
Determine if content exists in the repository at a given pathString
copyContent(String site, String fromPath, String toPath)
copy content from PathA to pathBint
countUnprocessedCommits(String siteId, long marker)
Count unprocessed commits from databaseString
createFolder(String site, String path, String name)
create a folderboolean
createSiteCloneRemote(String siteId, String sandboxBranch, String remoteName, String remoteUrl, String remoteBranch, boolean singleBranch, String authenticationType, String remoteUsername, String remotePassword, String remoteToken, String remotePrivateKey, Map<String,String> params, boolean createAsOrphan, String creator)
Create new site as a clone from remote repositoryboolean
createSiteFromBlueprint(String blueprintLocation, String siteId, String sandboxBranch, Map<String,String> params, String creator)
Create a new site based on a blueprintString
createVersion(String site, String path, boolean majorVersion)
create a versionString
createVersion(String site, String path, String comment, boolean majorVersion)
create a versionString
deleteContent(String site, String path, String approver)
delete contentvoid
deleteGitLogForSite(String siteId)
Delete Git log for siteboolean
deleteSite(String siteId)
Deletes an existing site.protected Collection<String>
findCompatiblePaths(org.craftercms.commons.file.blob.BlobStore blobStore, Collection<String> paths)
protected StudioBlobStore
getBlobStore(String site, String... paths)
Map<String,String>
getChangeSetPathsFromDelta(String site, String commitIdFrom, String commitIdTo)
Get a list of paths that changed since the commit ID provided to commit ID providedInputStream
getContent(String site, String path)
get document from wcm contentOptional<org.springframework.core.io.Resource>
getContentByCommitId(String site, String path, String commitId)
return a specific version of the contentRepositoryItem[]
getContentChildren(String site, String path)
get immediate children for pathlong
getContentSize(String site, String path)
get file sizeVersionTO[]
getContentVersionHistory(String site, String path)
get the version history for an itemList<String>
getEditCommitIds(String site, String path, String commitIdFrom, String commitIdTo)
Get a list of commits for updates on a contentGitLog
getGitLog(String siteId, String commitId)
Get git log object from databaseorg.craftercms.core.service.Item
getItem(String siteId, String path, boolean flatten)
DetailedItem.Environment
getItemEnvironmentProperties(String siteId, GitRepositories repo, String environment, String path)
Get environment properties for itemString
getLastEditCommitId(String siteId, String path)
List<RepoOperation>
getOperations(String site, String commitIdFrom, String commitIdTo)
Get a list of operations since the commit ID provided (compare that commit to HEAD)List<RepoOperation>
getOperationsFromDelta(String site, String commitIdFrom, String commitIdTo)
Get a list of operations since the commit ID provided (compare that commit to HEAD)protected String
getOriginalPath(String path)
protected String
getPathFromPointerPath(String siteId, String pointerPath)
protected String
getPointerPath(String siteId, String path)
String
getPreviousCommitId(String siteId, String commitId)
Get the previous commit id from repository for given a site id and a commit idList<PublishingHistoryItem>
getPublishingHistory(String siteId, String environment, String path, String publisher, ZonedDateTime fromDate, ZonedDateTime toDate, int limit)
Get publishing historyString
getRepoFirstCommitId(String site)
Get first id from repository for given siteString
getRepoLastCommitId(String site)
Get last commit id from repository for given site.protected String
getRepoPath(String blobPath)
Gets an asset path and translate it to the actual file path in git repo.List<String>
getSubtreeItems(String site, String path)
List subtree items for give site and pathList<GitLog>
getUnauditedCommits(String siteId, int batchSize)
Get unaudited commits from databaseList<GitLog>
getUnprocessedCommits(String siteId, long marker)
Get unprocessed commits from databasevoid
initialPublish(String siteId)
Execute initial publish for given sitevoid
initialPublish(String site, String sandboxBranch, String environment, String author, String comment)
Initial publish to specified environment.void
insertFullGitLog(String siteId, int processed)
Insert Full Git Logvoid
insertGitLog(String siteId, String commitId, int processed)
Insert Git Logvoid
insertGitLog(String siteId, String commitId, int processed, int audited)
Insert Git Logboolean
isFolder(String siteId, String path)
Check if content at given path is foldervoid
itemUnlock(String site, String path)
unlock an itemList<RemoteRepositoryInfoTO>
listRemote(String siteId, String sandboxBranch)
List remote repositories for given sitevoid
lockItem(String site, String path)
lock an item NOTE: site will be removed from this interfacevoid
lockItemForPublishing(String site, String path)
lock an item NOTE: site will be removed from this interfaceprotected DeploymentItemTO
mapDeploymentItem(DeploymentItemTO item)
void
markGitLogAudited(String siteId, String commitId)
Mark Git log as auditedvoid
markGitLogProcessedBeforeMarker(String siteId, long marker, int processed)
Mark all git logs as processed if they are inserted before markervoid
markGitLogVerifiedProcessed(String siteId, String commitId)
Mark Git log as verifiedvoid
markGitLogVerifiedProcessedBulk(String siteId, List<String> commitIds)
Mark Git logs as verifiedMap<String,String>
moveContent(String site, String fromPath, String toPath, String newName)
move content from PathA to pathBprotected String
normalize(String path)
protected boolean
pointersExist(String siteId, String... paths)
void
populateGitLog(String siteId)
Populates the full git log of the sandbox repository into the databaseRepositoryChanges
preparePublishAll(String siteId, String publishingTarget)
Prepares the repository to publish all changes for the given site & targetvoid
publish(String site, String sandboxBranch, List<DeploymentItemTO> deploymentItems, String environment, String author, String comment)
Publish content to specified environment.RepositoryChanges
publishAll(String siteId, String publishingTarget, String comment)
Publishes all changes for the given site & targetboolean
publishedRepositoryExists(String siteId)
Check if published repository exists for given site.boolean
pullFromRemote(String siteId, String remoteName, String remoteBranch)
Pull from remote repositoryboolean
pushToRemote(String siteId, String remoteName, String remoteBranch)
Push content to remote repositoryvoid
reloadRepository(String siteId)
Reload repository for given siteboolean
removeRemote(String siteId, String remoteName)
Remove remote with given name for sitevoid
removeRemoteRepositoriesForSite(String siteId)
Remove all remotes for given siteboolean
repositoryExists(String site)
Check if repository exists for given sitevoid
resetStagingRepository(String siteId)
Reset staging repository to live for given siteString
revertContent(String site, String path, String version, boolean major, String comment)
revert a version (create a new version based on an old version)void
setBlobStoreResolver(StudioBlobStoreResolver blobStoreResolver)
void
setFileExtension(String fileExtension)
void
setLocalRepositoryV1(GitContentRepository localRepositoryV1)
void
setLocalRepositoryV2(GitContentRepository localRepositoryV2)
boolean
shallowContentExists(String site, String path)
This is a faster, but less accurate, version of contentExists.protected Collection<String>
translatePaths(Collection<String> paths)
void
unLockItem(String site, String path)
unlock an item for publishing NOTE: site will be removed from this interfacevoid
unLockItemForPublishing(String site, String path)
unlock an item for publishing NOTE: site will be removed from this interfacevoid
updateGitlog(String siteId, String lastProcessedCommitId, int batchSize)
Update gitlog table with commit ids from repositoryvoid
upsertGitLogList(String siteId, List<String> commitIds, boolean processed, boolean audited)
Upsert git logs as processed and auditedString
writeContent(String site, String path, InputStream content)
write content-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.craftercms.studio.api.v1.repository.ContentRepository
moveContent
-
-
-
-
Field Detail
-
fileExtension
protected String fileExtension
The extension for the blob files
-
localRepositoryV1
protected GitContentRepository localRepositoryV1
-
localRepositoryV2
protected GitContentRepository localRepositoryV2
-
blobStoreResolver
protected StudioBlobStoreResolver blobStoreResolver
-
objectMapper
protected final com.fasterxml.jackson.databind.ObjectMapper objectMapper
-
-
Method Detail
-
setFileExtension
public void setFileExtension(String fileExtension)
-
setLocalRepositoryV1
public void setLocalRepositoryV1(GitContentRepository localRepositoryV1)
-
setLocalRepositoryV2
public void setLocalRepositoryV2(GitContentRepository localRepositoryV2)
-
setBlobStoreResolver
public void setBlobStoreResolver(StudioBlobStoreResolver blobStoreResolver)
-
getBlobStore
protected StudioBlobStore getBlobStore(String site, String... paths) throws ServiceLayerException
- Throws:
ServiceLayerException
-
contentExists
public boolean contentExists(String site, String path)
Description copied from interface:ContentRepository
Determine if content exists in the repository at a given path- Specified by:
contentExists
in interfaceContentRepository
- Specified by:
contentExists
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path to check if content exists- Returns:
- true if site has content object at path
-
checkContentExists
public void checkContentExists(String site, String path) throws ServiceLayerException
Description copied from interface:ContentRepository
Checks if a content exists at a given path and throw an exception if it does not.- Specified by:
checkContentExists
in interfaceContentRepository
- Parameters:
site
- id of the sitepath
- the content path- Throws:
ServiceLayerException
- if no content is found at the given path
-
shallowContentExists
public boolean shallowContentExists(String site, String path)
Description copied from interface:ContentRepository
This is a faster, but less accurate, version of contentExists. This prioritizes performance over checking the actual underlying repository if the content is actually in the store or we simply hold a reference to the object in the actual store.- Specified by:
shallowContentExists
in interfaceContentRepository
- Returns:
- true if site has content object at path
-
getContent
public InputStream getContent(String site, String path)
Description copied from interface:ContentRepository
get document from wcm content- Specified by:
getContent
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path of the content- Returns:
- document
-
getContentSize
public long getContentSize(String site, String path)
Description copied from interface:ContentRepository
get file size- Specified by:
getContentSize
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path to content- Returns:
- Size in bytes
-
writeContent
public String writeContent(String site, String path, InputStream content) throws ServiceLayerException
Description copied from interface:ContentRepository
write content- Specified by:
writeContent
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path to contentcontent
- stream of content to write- Returns:
- Commit Id if successful, null otherwise
- Throws:
ServiceLayerException
- if error happens during write
-
createFolder
public String createFolder(String site, String path, String name)
Description copied from interface:ContentRepository
create a folder- Specified by:
createFolder
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path to create a folder inname
- a folder name to create- Returns:
- Commit Id if successful, null otherwise
-
deleteContent
public String deleteContent(String site, String path, String approver)
Description copied from interface:ContentRepository
delete content- Specified by:
deleteContent
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path to contentapprover
- user that approves delete content- Returns:
- Commit ID if successful, null otherwise
-
moveContent
public Map<String,String> moveContent(String site, String fromPath, String toPath, String newName)
Description copied from interface:ContentRepository
move content from PathA to pathB- Specified by:
moveContent
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedfromPath
- source contenttoPath
- target pathnewName
- new file name for rename- Returns:
- Commit ID if successful, empty string otherwise
-
copyContent
public String copyContent(String site, String fromPath, String toPath)
Description copied from interface:ContentRepository
copy content from PathA to pathB- Specified by:
copyContent
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedfromPath
- paths to contenttoPath
- target path- Returns:
- Commit ID if successful, empty string otherwise
-
getContentChildren
public RepositoryItem[] getContentChildren(String site, String path)
Description copied from interface:ContentRepository
get immediate children for path- Specified by:
getContentChildren
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path to content- Returns:
- a list of children
-
getContentVersionHistory
public VersionTO[] getContentVersionHistory(String site, String path)
Description copied from interface:ContentRepository
get the version history for an item- Specified by:
getContentVersionHistory
in interfaceContentRepository
- Parameters:
site
- - the project IDpath
- - the path of the item- Returns:
- a list of versions
-
createVersion
public String createVersion(String site, String path, boolean majorVersion)
Description copied from interface:ContentRepository
create a version- Specified by:
createVersion
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- location of contentmajorVersion
- true if major- Returns:
- the created version ID or null on failure
-
createVersion
public String createVersion(String site, String path, String comment, boolean majorVersion)
Description copied from interface:ContentRepository
create a version- Specified by:
createVersion
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- location of contentcomment
- version history commentmajorVersion
- true if major- Returns:
- the created version ID or null on failure
-
revertContent
public String revertContent(String site, String path, String version, boolean major, String comment)
Description copied from interface:ContentRepository
revert a version (create a new version based on an old version)- Specified by:
revertContent
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- - the path of the item to "revert"version
- - old version ID to base to version onmajor
- flag if it is major versioncomment
- add comment when committing content- Returns:
- Commit ID if successful, empty string otherwise
-
getContentByCommitId
public Optional<org.springframework.core.io.Resource> getContentByCommitId(String site, String path, String commitId)
Description copied from interface:ContentRepository
return a specific version of the content- Specified by:
getContentByCommitId
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path of the contentcommitId
- version to return- Returns:
- the resource if available
-
lockItem
public void lockItem(String site, String path)
Description copied from interface:ContentRepository
lock an item NOTE: site will be removed from this interface- Specified by:
lockItem
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path of the item
-
lockItemForPublishing
public void lockItemForPublishing(String site, String path)
Description copied from interface:ContentRepository
lock an item NOTE: site will be removed from this interface- Specified by:
lockItemForPublishing
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path of the item
-
unLockItem
public void unLockItem(String site, String path)
Description copied from interface:ContentRepository
unlock an item for publishing NOTE: site will be removed from this interface- Specified by:
unLockItem
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path of the item
-
unLockItemForPublishing
public void unLockItemForPublishing(String site, String path)
Description copied from interface:ContentRepository
unlock an item for publishing NOTE: site will be removed from this interface- Specified by:
unLockItemForPublishing
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path of the item
-
isFolder
public boolean isFolder(String siteId, String path)
Description copied from interface:ContentRepository
Check if content at given path is folder- Specified by:
isFolder
in interfaceContentRepository
- Parameters:
siteId
- site identifierpath
- content path- Returns:
- true if path is folder, otherwise false
-
deleteSite
public boolean deleteSite(String siteId)
Description copied from interface:ContentRepository
Deletes an existing site.- Specified by:
deleteSite
in interfaceContentRepository
- Parameters:
siteId
- site to delete- Returns:
- true if successful, false otherwise
-
initialPublish
public void initialPublish(String site, String sandboxBranch, String environment, String author, String comment) throws DeploymentException
Description copied from interface:ContentRepository
Initial publish to specified environment.- Specified by:
initialPublish
in interfaceContentRepository
- Parameters:
site
- site identifiersandboxBranch
- sandbox branch nameenvironment
- environment to publishauthor
- authorcomment
- comment- Throws:
DeploymentException
- deployment error
-
mapDeploymentItem
protected DeploymentItemTO mapDeploymentItem(DeploymentItemTO item)
-
getRepoLastCommitId
public String getRepoLastCommitId(String site)
Description copied from interface:ContentRepository
Get last commit id from repository for given site.- Specified by:
getRepoLastCommitId
in interfaceContentRepository
- Specified by:
getRepoLastCommitId
in interfaceContentRepository
- Parameters:
site
- site id- Returns:
- last commit id (current HEAD)
-
getRepoFirstCommitId
public String getRepoFirstCommitId(String site)
Description copied from interface:ContentRepository
Get first id from repository for given site- Specified by:
getRepoFirstCommitId
in interfaceContentRepository
- Specified by:
getRepoFirstCommitId
in interfaceContentRepository
- Parameters:
site
- site id- Returns:
- first commit id
-
getEditCommitIds
public List<String> getEditCommitIds(String site, String path, String commitIdFrom, String commitIdTo)
Description copied from interface:ContentRepository
Get a list of commits for updates on a content- Specified by:
getEditCommitIds
in interfaceContentRepository
- Parameters:
site
- site idpath
- pathcommitIdFrom
- range from commit id (inclusive)commitIdTo
- range to commit id (inclusive)- Returns:
- list of edit commit ids
-
insertFullGitLog
public void insertFullGitLog(String siteId, int processed)
Description copied from interface:ContentRepository
Insert Full Git Log- Specified by:
insertFullGitLog
in interfaceContentRepository
- Parameters:
siteId
- siteprocessed
- processed
-
deleteGitLogForSite
public void deleteGitLogForSite(String siteId)
Description copied from interface:ContentRepository
Delete Git log for site- Specified by:
deleteGitLogForSite
in interfaceContentRepository
- Parameters:
siteId
- site identifier
-
addRemote
public boolean addRemote(String siteId, String remoteName, String remoteUrl, String authenticationType, String remoteUsername, String remotePassword, String remoteToken, String remotePrivateKey) throws InvalidRemoteUrlException, ServiceLayerException
Description copied from interface:ContentRepository
Add remote repository for site content repository- Specified by:
addRemote
in interfaceContentRepository
- Parameters:
siteId
- site identifierremoteName
- remote nameremoteUrl
- remote urlauthenticationType
- authentication typeremoteUsername
- remote usernameremotePassword
- remote passwordremoteToken
- remote tokenremotePrivateKey
- remote private key- Returns:
- true if operation was successful
- Throws:
InvalidRemoteUrlException
- invalid url for remote repositoryServiceLayerException
- general service error
-
removeRemoteRepositoriesForSite
public void removeRemoteRepositoriesForSite(String siteId)
Description copied from interface:ContentRepository
Remove all remotes for given site- Specified by:
removeRemoteRepositoriesForSite
in interfaceContentRepository
- Parameters:
siteId
- site identifier
-
listRemote
public List<RemoteRepositoryInfoTO> listRemote(String siteId, String sandboxBranch) throws ServiceLayerException
Description copied from interface:ContentRepository
List remote repositories for given site- Specified by:
listRemote
in interfaceContentRepository
- Parameters:
siteId
- site identifiersandboxBranch
- sandbox branch name- Returns:
- list of names of remote repositories
- Throws:
ServiceLayerException
- general service error
-
pushToRemote
public boolean pushToRemote(String siteId, String remoteName, String remoteBranch) throws ServiceLayerException, InvalidRemoteUrlException
Description copied from interface:ContentRepository
Push content to remote repository- Specified by:
pushToRemote
in interfaceContentRepository
- Parameters:
siteId
- site identifierremoteName
- remote nameremoteBranch
- remote branch- Returns:
- true if operation was successful
- Throws:
ServiceLayerException
- general service errorInvalidRemoteUrlException
- invalid url for remote repository
-
pullFromRemote
public boolean pullFromRemote(String siteId, String remoteName, String remoteBranch) throws ServiceLayerException, InvalidRemoteUrlException
Description copied from interface:ContentRepository
Pull from remote repository- Specified by:
pullFromRemote
in interfaceContentRepository
- Parameters:
siteId
- site identifierremoteName
- remote nameremoteBranch
- remote branch- Returns:
- true if operation was successful
- Throws:
ServiceLayerException
- general service errorInvalidRemoteUrlException
- invalid url for remote repository
-
resetStagingRepository
public void resetStagingRepository(String siteId) throws ServiceLayerException
Description copied from interface:ContentRepository
Reset staging repository to live for given site- Specified by:
resetStagingRepository
in interfaceContentRepository
- Parameters:
siteId
- site identifier to use for resetting- Throws:
ServiceLayerException
- general service error
-
reloadRepository
public void reloadRepository(String siteId)
Description copied from interface:ContentRepository
Reload repository for given site- Specified by:
reloadRepository
in interfaceContentRepository
- Parameters:
siteId
- site identifier
-
cleanupRepositories
public void cleanupRepositories(String siteId)
Description copied from interface:ContentRepository
Performs a cleanup all repositories for the given site- Specified by:
cleanupRepositories
in interfaceContentRepository
- Parameters:
siteId
- site identifier
-
createSiteFromBlueprint
public boolean createSiteFromBlueprint(String blueprintLocation, String siteId, String sandboxBranch, Map<String,String> params, String creator)
Description copied from interface:ContentRepository
Create a new site based on a blueprint- Specified by:
createSiteFromBlueprint
in interfaceContentRepository
- Parameters:
blueprintLocation
- blueprint locationsiteId
- site identifiersandboxBranch
- sandbox branch nameparams
- site parameterscreator
- site creator- Returns:
- true if successful, false otherwise
-
publish
public void publish(String site, String sandboxBranch, List<DeploymentItemTO> deploymentItems, String environment, String author, String comment) throws DeploymentException
Description copied from interface:ContentRepository
Publish content to specified environment.- Specified by:
publish
in interfaceContentRepository
- Parameters:
site
- site identifiersandboxBranch
- sandbox branch namedeploymentItems
- items to be publishedenvironment
- environment to publish toauthor
- authorcomment
- submission comment- Throws:
DeploymentException
- deployment error
-
commitIdExists
public boolean commitIdExists(String site, String commitId)
Description copied from interface:ContentRepository
Check if given commit id exists- Specified by:
commitIdExists
in interfaceContentRepository
- Parameters:
site
- site idcommitId
- commit id to check- Returns:
- true if it exists in site repository, otherwise false
-
commitIdExists
public boolean commitIdExists(String site, GitRepositories repoType, String commitId)
Description copied from interface:ContentRepository
Check if given commit id exists- Specified by:
commitIdExists
in interfaceContentRepository
- Parameters:
site
- site idrepoType
- repository typecommitId
- commit id to check- Returns:
- true if it exists in site repository, otherwise false
-
createSiteCloneRemote
public boolean createSiteCloneRemote(String siteId, String sandboxBranch, String remoteName, String remoteUrl, String remoteBranch, boolean singleBranch, String authenticationType, String remoteUsername, String remotePassword, String remoteToken, String remotePrivateKey, Map<String,String> params, boolean createAsOrphan, String creator) throws InvalidRemoteRepositoryException, InvalidRemoteRepositoryCredentialsException, RemoteRepositoryNotFoundException, ServiceLayerException
Description copied from interface:ContentRepository
Create new site as a clone from remote repository- Specified by:
createSiteCloneRemote
in interfaceContentRepository
- Parameters:
siteId
- site identifiersandboxBranch
- sandbox branch nameremoteName
- remote nameremoteUrl
- remote repository urlremoteBranch
- remote branch namesingleBranch
- flag to signal if clone single branch or full repositoryauthenticationType
- type of authentication to use to connect remote repositoryremoteUsername
- remote usernameremotePassword
- remote passwordremoteToken
- remote tokenremotePrivateKey
- remote private keyparams
- site parameterscreateAsOrphan
- create as orphancreator
- site creator- Returns:
- true if success
- Throws:
InvalidRemoteRepositoryException
- invalid remote repositoryInvalidRemoteRepositoryCredentialsException
- invalid credentials for remote repositoryRemoteRepositoryNotFoundException
- remote repository not foundServiceLayerException
- general service error
-
removeRemote
public boolean removeRemote(String siteId, String remoteName)
Description copied from interface:ContentRepository
Remove remote with given name for site- Specified by:
removeRemote
in interfaceContentRepository
- Parameters:
siteId
- site identifierremoteName
- remote name- Returns:
- true if operation was successful
-
repositoryExists
public boolean repositoryExists(String site)
Description copied from interface:ContentRepository
Check if repository exists for given site- Specified by:
repositoryExists
in interfaceContentRepository
- Parameters:
site
- site id- Returns:
- true if repository exists, otherwise false
-
getGitLog
public GitLog getGitLog(String siteId, String commitId)
Description copied from interface:ContentRepository
Get git log object from database- Specified by:
getGitLog
in interfaceContentRepository
- Parameters:
siteId
- site idcommitId
- commit ID- Returns:
- git log object
-
markGitLogVerifiedProcessed
public void markGitLogVerifiedProcessed(String siteId, String commitId)
Description copied from interface:ContentRepository
Mark Git log as verified- Specified by:
markGitLogVerifiedProcessed
in interfaceContentRepository
- Parameters:
siteId
- site identifiercommitId
- commit id
-
insertGitLog
public void insertGitLog(String siteId, String commitId, int processed)
Description copied from interface:ContentRepository
Insert Git Log- Specified by:
insertGitLog
in interfaceContentRepository
- Parameters:
siteId
- sitecommitId
- commit IDprocessed
- processed
-
insertGitLog
public void insertGitLog(String siteId, String commitId, int processed, int audited)
Description copied from interface:ContentRepository
Insert Git Log- Specified by:
insertGitLog
in interfaceContentRepository
- Parameters:
siteId
- sitecommitId
- commit IDprocessed
- processedaudited
- audited
-
getSubtreeItems
public List<String> getSubtreeItems(String site, String path)
Description copied from interface:ContentRepository
List subtree items for give site and path- Specified by:
getSubtreeItems
in interfaceContentRepository
- Parameters:
site
- site identifierpath
- path for subtree root- Returns:
- list of item paths contained in the subtree
-
getOperations
public List<RepoOperation> getOperations(String site, String commitIdFrom, String commitIdTo)
Description copied from interface:ContentRepository
Get a list of operations since the commit ID provided (compare that commit to HEAD)- Specified by:
getOperations
in interfaceContentRepository
- Parameters:
site
- site to usecommitIdFrom
- commit ID to start atcommitIdTo
- commit ID to end at- Returns:
- commit ID of current HEAD, updated operationsSinceCommit
-
getOperationsFromDelta
public List<RepoOperation> getOperationsFromDelta(String site, String commitIdFrom, String commitIdTo)
Description copied from interface:ContentRepository
Get a list of operations since the commit ID provided (compare that commit to HEAD)- Specified by:
getOperationsFromDelta
in interfaceContentRepository
- Parameters:
site
- site to usecommitIdFrom
- commit ID to start atcommitIdTo
- commit ID to end at- Returns:
- commit ID of current HEAD, updated operationsSinceCommit
-
getPublishingHistory
public List<PublishingHistoryItem> getPublishingHistory(String siteId, String environment, String path, String publisher, ZonedDateTime fromDate, ZonedDateTime toDate, int limit)
Description copied from interface:ContentRepository
Get publishing history- Specified by:
getPublishingHistory
in interfaceContentRepository
- Parameters:
siteId
- site identifierenvironment
- environmentpath
- path regular expression to use as filterpublisher
- user to filter byfromDate
- lower boundary for published datetoDate
- upper boundary for published datelimit
- number of records to return- Returns:
- publishing history
-
getItem
public org.craftercms.core.service.Item getItem(String siteId, String path, boolean flatten)
- Specified by:
getItem
in interfaceContentRepository
-
getLastEditCommitId
public String getLastEditCommitId(String siteId, String path)
- Specified by:
getLastEditCommitId
in interfaceContentRepository
-
getChangeSetPathsFromDelta
public Map<String,String> getChangeSetPathsFromDelta(String site, String commitIdFrom, String commitIdTo)
Description copied from interface:ContentRepository
Get a list of paths that changed since the commit ID provided to commit ID provided- Specified by:
getChangeSetPathsFromDelta
in interfaceContentRepository
- Parameters:
site
- site to usecommitIdFrom
- commit ID to start atcommitIdTo
- commit ID to end at- Returns:
- list of paths of files that changed between two commits
-
markGitLogAudited
public void markGitLogAudited(String siteId, String commitId)
Description copied from interface:ContentRepository
Mark Git log as audited- Specified by:
markGitLogAudited
in interfaceContentRepository
- Parameters:
siteId
- site identifiercommitId
- commit id
-
updateGitlog
public void updateGitlog(String siteId, String lastProcessedCommitId, int batchSize)
Description copied from interface:ContentRepository
Update gitlog table with commit ids from repository- Specified by:
updateGitlog
in interfaceContentRepository
- Parameters:
siteId
- site identifierlastProcessedCommitId
- last processed commit idbatchSize
- size of a batch to update
-
getUnauditedCommits
public List<GitLog> getUnauditedCommits(String siteId, int batchSize)
Description copied from interface:ContentRepository
Get unaudited commits from database- Specified by:
getUnauditedCommits
in interfaceContentRepository
- Parameters:
siteId
- site identifierbatchSize
- size of a batch to retrieve- Returns:
- list of gitlog records
-
getUnprocessedCommits
public List<GitLog> getUnprocessedCommits(String siteId, long marker)
Description copied from interface:ContentRepository
Get unprocessed commits from database- Specified by:
getUnprocessedCommits
in interfaceContentRepository
- Parameters:
siteId
- site identifiermarker
- id of last verified commit Id- Returns:
- list of gitlog records
-
getItemEnvironmentProperties
public DetailedItem.Environment getItemEnvironmentProperties(String siteId, GitRepositories repo, String environment, String path)
Description copied from interface:ContentRepository
Get environment properties for item- Specified by:
getItemEnvironmentProperties
in interfaceContentRepository
- Parameters:
siteId
- site identifierrepo
- repository typeenvironment
- branchpath
- path of the item- Returns:
- environment properties
-
countUnprocessedCommits
public int countUnprocessedCommits(String siteId, long marker)
Description copied from interface:ContentRepository
Count unprocessed commits from database- Specified by:
countUnprocessedCommits
in interfaceContentRepository
- Parameters:
siteId
- site identifiermarker
- id of last verified commit Id- Returns:
- number of unprocessed gitlog records
-
markGitLogProcessedBeforeMarker
public void markGitLogProcessedBeforeMarker(String siteId, long marker, int processed)
Description copied from interface:ContentRepository
Mark all git logs as processed if they are inserted before marker- Specified by:
markGitLogProcessedBeforeMarker
in interfaceContentRepository
- Parameters:
siteId
- site identifiermarker
- marker git commitprocessed
- value for processed
-
getPreviousCommitId
public String getPreviousCommitId(String siteId, String commitId)
Description copied from interface:ContentRepository
Get the previous commit id from repository for given a site id and a commit id- Specified by:
getPreviousCommitId
in interfaceContentRepository
- Parameters:
siteId
- site identifiercommitId
- commit Id- Returns:
-
itemUnlock
public void itemUnlock(String site, String path)
Description copied from interface:ContentRepository
unlock an item- Specified by:
itemUnlock
in interfaceContentRepository
- Parameters:
site
- site id where the operation will be executedpath
- path of the item
-
markGitLogVerifiedProcessedBulk
public void markGitLogVerifiedProcessedBulk(String siteId, List<String> commitIds)
Description copied from interface:ContentRepository
Mark Git logs as verified- Specified by:
markGitLogVerifiedProcessedBulk
in interfaceContentRepository
- Parameters:
siteId
- site identifiercommitIds
- list of commit ids
-
upsertGitLogList
public void upsertGitLogList(String siteId, List<String> commitIds, boolean processed, boolean audited)
Description copied from interface:ContentRepository
Upsert git logs as processed and audited- Specified by:
upsertGitLogList
in interfaceContentRepository
- Parameters:
siteId
- site identifiercommitIds
- commit idsprocessed
- true if already processedaudited
- true if already audited
-
publishedRepositoryExists
public boolean publishedRepositoryExists(String siteId)
Description copied from interface:ContentRepository
Check if published repository exists for given site.- Specified by:
publishedRepositoryExists
in interfaceContentRepository
- Parameters:
siteId
- site identifier- Returns:
- true if PUBLISHED repository exists, otherwise false
-
initialPublish
public void initialPublish(String siteId) throws SiteNotFoundException
Description copied from interface:ContentRepository
Execute initial publish for given site- Specified by:
initialPublish
in interfaceContentRepository
- Parameters:
siteId
- site identifier- Throws:
SiteNotFoundException
-
publishAll
public RepositoryChanges publishAll(String siteId, String publishingTarget, String comment) throws ServiceLayerException
Description copied from interface:ContentRepository
Publishes all changes for the given site & target- Specified by:
publishAll
in interfaceContentRepository
- Parameters:
siteId
- the id of the sitepublishingTarget
- the publishing targetcomment
- submission comment- Throws:
ServiceLayerException
-
getRepoPath
protected String getRepoPath(String blobPath)
Gets an asset path and translate it to the actual file path in git repo. e.g.: /static-assets/test/my-image.png to static-assets/test/my-image.png.blob- Parameters:
blobPath
- the asset path- Returns:
- the git repo path
-
translatePaths
protected Collection<String> translatePaths(Collection<String> paths)
-
findCompatiblePaths
protected Collection<String> findCompatiblePaths(org.craftercms.commons.file.blob.BlobStore blobStore, Collection<String> paths)
-
preparePublishAll
public RepositoryChanges preparePublishAll(String siteId, String publishingTarget)
Description copied from interface:ContentRepository
Prepares the repository to publish all changes for the given site & target- Specified by:
preparePublishAll
in interfaceContentRepository
- Parameters:
siteId
- the id of the sitepublishingTarget
- the publishing target- Returns:
- the set of changed files
-
completePublishAll
public void completePublishAll(String siteId, String publishingTarget, RepositoryChanges changes, String comment)
Description copied from interface:ContentRepository
Performs the actual publish of all changes for the given site & target- Specified by:
completePublishAll
in interfaceContentRepository
- Parameters:
siteId
- the id of the sitepublishingTarget
- the publishing targetchanges
- the set of changed filescomment
- submission comment
-
cancelPublishAll
public void cancelPublishAll(String siteId, String publishingTarget)
Description copied from interface:ContentRepository
Performs the cleanup after a failed publish all operation for the given site & target- Specified by:
cancelPublishAll
in interfaceContentRepository
- Parameters:
siteId
- the id of the sitepublishingTarget
- the publishing target
-
populateGitLog
public void populateGitLog(String siteId) throws org.eclipse.jgit.api.errors.GitAPIException, IOException
Description copied from interface:ContentRepository
Populates the full git log of the sandbox repository into the database- Specified by:
populateGitLog
in interfaceContentRepository
- Parameters:
siteId
- the id of the site- Throws:
org.eclipse.jgit.api.errors.GitAPIException
- if there is any error reading the git logIOException
- if there is any error executing the db script
-
-