package com.redhat.rcm.version.mgr.mod; import com.redhat.rcm.version.mgr.session.VersionManagerSession; import com.redhat.rcm.version.model.Project; import org.apache.maven.mae.project.key.FullProjectKey; import org.apache.maven.model.Model; import org.apache.maven.model.Parent; import org.codehaus.plexus.component.annotations.Component; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Component( role = ProjectModder.class, hint = "force-parent-realignment" ) public class ForceParentModder implements ProjectModder { private final Logger logger = LoggerFactory.getLogger( getClass() ); @Override public String getDescription() { return "Forcibly set the project's parent GAV using the declared toolchain GAV"; } @Override public boolean inject( final Project project, final VersionManagerSession session ) { boolean changed = false; if ( session.getToolchainKey() == null ) { return changed; } final Model model = project.getModel(); final FullProjectKey toolchainKey = session.getToolchainKey(); Parent parent = model.getParent(); if ( toolchainKey != null ) { logger.info( "Injecting toolchain as parent for: " + project.getKey() ); // Force relocation if its not in the same project tree (i.e. a parent inheritance to outside) if (parent == null || ! project.getGroupId().equals(parent.getGroupId() )) { parent = new Parent(); parent.setGroupId(toolchainKey.getGroupId()); parent.setArtifactId(toolchainKey.getArtifactId()); parent.setVersion(toolchainKey.getVersion()); model.setParent(parent); changed = true; } } else { logger.info( "Toolchain not specified. Skipping toolchain-parent injection..." ); } return changed; } }