class InterDependencyHandler @@reactorHandler = ReactorHandler.new @@dependencyHandler = DependencyHandler.new @@mvnReactorization = MvnReactorization.new @@pluginManagementHandler = PluginManagementHandler.new def handleInterDependecy(project_directory_path) pomArr = @@reactorHandler.fetchGidArtifactIdAndVersionFromChildModule(project_directory_path,false) fullSignatureArr = getGidAndArtifactIdOfProject(pomArr) putCommentForinterDepedency(pomArr,fullSignatureArr) putCommentForinterDepedencyManagement(pomArr,fullSignatureArr) @@pluginManagementHandler.executeShortPom() end def getGidAndArtifactIdOfProject(pomArr) fullSignatureArr = Array.new if (!pomArr.nil? and !pomArr.empty?) pomArr.each do |eachPomPath| pom_document = @@reactorHandler.parse_xml_from_file(eachPomPath) grpId = pom_document.at("project/groupId").text artifactId = pom_document.at("project/artifactId").text fullSignature = "#{grpId}:#{artifactId}" fullSignatureArr.push(fullSignature) end end return fullSignatureArr end def putCommentForinterDepedency(pomArr,fullSignatureArr) pomArr.each do |eachPomPath| pom_document = @@reactorHandler.parse_xml_from_file(eachPomPath) nokObj = Nokogiri::XML::Node commentObj = Nokogiri::XML::Comment dependenciesNode = pom_document.at("project/dependencies") pom_document.css("project/dependencies/dependency").each do |eachDepedency| grpId = eachDepedency.at("groupId").text artifactId = eachDepedency.at("artifactId").text fullSignature = "#{grpId}:#{artifactId}" if (fullSignatureArr.include?fullSignature and !eachDepedency.at("version").nil?) version = eachDepedency.at("version").text eachDepedency.at("version").remove versionNode = nokObj.new("version",eachDepedency) versionNode.content=version commentNode = commentObj.new(versionNode, " TODO: Version should be removed and managed by reactor pom version") versionNode.add_previous_sibling(commentNode) eachDepedency.add_child(commentNode) eachDepedency.add_child(versionNode) dependenciesNode.add_child(eachDepedency) end end @@dependencyHandler.add_node_element('//project', dependenciesNode, pom_document) @@mvnReactorization.write_nokogiri_to_xml(eachPomPath, pom_document) end puts "Comments added for sibling module dependency" end def putCommentForinterDepedencyManagement(pomArr,fullSignatureArr) pomArr.each do |eachPomPath| pom_document = @@reactorHandler.parse_xml_from_file(eachPomPath) nokObj = Nokogiri::XML::Node commentObj = Nokogiri::XML::Comment dependencyManagementNode = pom_document.at("project/dependencyManagement") dependenciesNode = pom_document.at("project/dependencyManagement/dependencies") pom_document.css("project/dependencyManagement/dependencies/dependency").each do |eachDepedency| grpId = eachDepedency.at("groupId").text artifactId = eachDepedency.at("artifactId").text fullSignature = "#{grpId}:#{artifactId}" if (fullSignatureArr.include?fullSignature and !eachDepedency.at("version").nil?) version = eachDepedency.at("version").text eachDepedency.at("version").remove versionNode = nokObj.new("version",eachDepedency) versionNode.content=version commentNode = commentObj.new(versionNode, " TODO: Version should be removed and managed by reactor pom version") versionNode.add_previous_sibling(commentNode) eachDepedency.add_child(commentNode) eachDepedency.add_child(versionNode) dependenciesNode.add_child(eachDepedency) end end if !dependencyManagementNode.nil? dependencyManagementNode.add_child(dependenciesNode) @@dependencyHandler.add_node_element('//project', dependencyManagementNode, pom_document) @@mvnReactorization.write_nokogiri_to_xml(eachPomPath, pom_document) end end puts "Comments added for sibling module dependency" end end