Tuesday, 28 August 2018

ATG DeploymentEventListener BCC

ATG DeploymentEventListener

We can add DeploymentEventListener in either following two components.
1)DeploymentServer
2)DeploymentAgent


DeploymentServer:
atg\epub\DeploymentServer.properties
allowMissingNonEssentialAgents=true
deploymentEventListeners+=\
/com/xyzpath/deployment/listener/xxDeploymentEventListener

Sample code of xxDeploymentEventListener
At the Deployment server/CA side listner, can get the project and  from project we can get assets.

public class xxDeploymentEventListener extends GenericService implements DeploymentEventListener
{

public void deploymentEvent(DeploymentEvent pDeploymentevent) {

Map<String, Set<String>> affectedRepositoriesFromThisDeployment = pDeploymentevent.getAffectedItemTypes();
//if deployment is completed
if(pDeploymentevent != null && pDeploymentevent.getNewState() == DeploymentEvent.DEPLOYMENT_COMPLETE) {
if (affectedRepositoriesFromThisDeployment != null && !affectedRepositoriesFromThisDeployment.isEmpty()) {

Iterator<String> iterator = affectedRepositoriesFromThisDeployment.keySet().iterator();
while (iterator.hasNext()) {
String repositoryPath = iterator.next();
if (StringUtils.isNotBlank(repositoryPath) && "/com/xyzpath/componentName".equalsIgnoreCase(repositoryPath)) {
String[] projectIds = pDeploymentevent.getDeploymentProjectIDs();
Project project = null;
Set workSpaceAssets = null;
Iterator<AssetVersion> workspaceAssetsIterator = null;
RepositoryItem promoRepItem = null;

try {
if (projectIds != null && projectIds.length >= CommonConstants.ONE) {
EPubHomes.initialize();
EPubHomes persistentHomes = ProjectConstants.getPersistentHomes();
ProjectHome home = persistentHomes.getProjectHome();
try {
project = home.findById(projectIds[CommonConstants.ZERO]);
} catch (EJBException | FinderException exception) {
vlogError("Cannot find project with Id " + projectIds[CommonConstants.ZERO], exception);
}
}
RepositoryItem repositoryItem =null;
if (project != null) {
workSpaceAssets = project.getAssets();
}
if (workSpaceAssets != null) {
workspaceAssetsIterator = (Iterator<AssetVersion>) workSpaceAssets.iterator();
}

if (workspaceAssetsIterator != null) {
while (workspaceAssetsIterator.hasNext()) {
AssetVersion assetVersion = workspaceAssetsIterator.next();


try {
if (assetVersion != null) {

repositoryItem = assetVersion.getRepositoryItem();
}
}catch (RepositoryException repoExc) {
vlogError("Repository Exception while accessing item " , repoExc);
}

}
}


}catch (VersionException | DataModelException Exc) {

}

}

}

}

}



DeploymentAgent:
atg/epub/DeploymentAgent.properties
switchableDataStores+=/atg/dynamo/service/jdbc/SwitchingDataSource,/atg/epub/file/ConfigFileSystem
deploymentEventListeners+=/com/xyzpath/deployment/listener/yyyDeploymentEventListener


The DeploymentAgent side listener doesnot have Project and can't access the assets from project.


Sample code of yyyDeploymentEventListener

In this case we can verify  only the affected repository path

public class yyyDeploymentEventListener extends GenericService implements DeploymentEventListener {

public void deploymentEvent(DeploymentEvent pDepEvent) {
if(DeploymentEvent.DEPLOYMENT_COMPLETE == pDepEvent.getNewState()){

Map<String,Set<String>> affectedRepositoriesFromThisDeployment = pDepEvent.getAffectedItemTypes();
if(affectedRepositoriesFromThisDeployment != null && !affectedRepositoriesFromThisDeployment.isEmpty()){
String repositoryPathAsKey = null;
Iterator<String> iterator =  affectedRepositoriesFromThisDeployment.keySet().iterator();
while(iterator.hasNext()){
repositoryPathAsKey = iterator.next();
vlogDebug("repositoryPathAsKey :{0}", repositoryPathAsKey);
//checking the repository
if((StringUtils.isNotBlank(repositoryPathAsKey) &"com/xx/zzcompoentPath".equalsIgnoreCase(repositoryPathAsKey)) ||(StringUtils.isNotBlank(repositoryPathAsKey) && repositoryPath.equalsIgnoreCase(repositoryPathAsKey))){
//need to write project requirem,ent logic
}
}
}
}

}


}


No comments:

Post a Comment