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) {
}
}
}
}
}
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
}
}
}
}
}
}
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