Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Optimize (and fix in some places) shared module detection #549

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,27 +1,12 @@
package com.tibco.bw.maven.plugin.application;

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.jar.Attributes;
import java.util.jar.Manifest;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.apache.commons.io.FileUtils;
import com.tibco.bw.maven.plugin.osgi.helpers.ManifestParser;
import com.tibco.bw.maven.plugin.osgi.helpers.ManifestWriter;
import com.tibco.bw.maven.plugin.osgi.helpers.Version;
import com.tibco.bw.maven.plugin.osgi.helpers.VersionParser;
import com.tibco.bw.maven.plugin.utils.BWModulesParser;
import com.tibco.bw.maven.plugin.utils.BWProjectUtils;
import com.tibco.bw.maven.plugin.utils.Constants;
import org.apache.maven.archiver.MavenArchiveConfiguration;
import org.apache.maven.archiver.MavenArchiver;
import org.apache.maven.artifact.Artifact;
Expand All @@ -32,11 +17,7 @@
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.DefaultDependencyResolutionRequest;
import org.apache.maven.project.DependencyResolutionException;
import org.apache.maven.project.DependencyResolutionResult;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectDependenciesResolver;
import org.apache.maven.project.*;
import org.codehaus.plexus.archiver.jar.JarArchiver;
import org.codehaus.plexus.archiver.util.DefaultFileSet;
import org.eclipse.aether.graph.Dependency;
Expand All @@ -45,13 +26,19 @@
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import com.tibco.bw.maven.plugin.osgi.helpers.ManifestParser;
import com.tibco.bw.maven.plugin.osgi.helpers.ManifestWriter;
import com.tibco.bw.maven.plugin.osgi.helpers.Version;
import com.tibco.bw.maven.plugin.osgi.helpers.VersionParser;
import com.tibco.bw.maven.plugin.utils.BWModulesParser;
import com.tibco.bw.maven.plugin.utils.BWProjectUtils;
import com.tibco.bw.maven.plugin.utils.Constants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.FileFilter;
import java.io.FileOutputStream;
import java.util.*;
import java.util.jar.Attributes;
import java.util.jar.Manifest;

@Mojo(name = "bwear", defaultPhase = LifecyclePhase.PACKAGE)
public class BWEARPackagerMojo extends AbstractMojo {
Expand Down Expand Up @@ -182,13 +169,14 @@ private void addModules() throws Exception {
File moduleJar = artifact.getFile();

Manifest mf = ManifestParser.parseManifestFromJAR( moduleJar );
if( mf.getMainAttributes().containsKey("TIBCO-BW-SharedModule") )
if( ManifestParser.isSharedModule(mf) )
{
getLog().debug("Adding Artifact JAR with name " + artifact.getArtifactId() + " with version " + artifact.getBaseVersion());
jarchiver.addFile(moduleJar, artifact.getArtifactId()+ "_" + artifact.getBaseVersion()+ ".jar");

}
else
{
getLog().debug("Adding JAR file with name " + moduleJar.getName());
jarchiver.addFile(moduleJar, moduleJar.getName());
}

Expand Down Expand Up @@ -231,18 +219,10 @@ private void addModules() throws Exception {
String dependencyVersion = BWProjectUtils.getModuleVersion(artifact.getFile());

Manifest mf = ManifestParser.parseManifestFromJAR( f);
for( Object str : mf.getMainAttributes().keySet())
{
getLog().debug( str.toString() );
if( "TIBCO-BW-SharedModule".equals(str.toString() ))
{
moduleVersionMap.put(artifact.getArtifactId(), dependencyVersion);
artifactFiles.add(artifact.getFile());
break;

}
}

if(ManifestParser.isSharedModule(mf)) {
moduleVersionMap.put(artifact.getArtifactId(), dependencyVersion);
artifactFiles.add(artifact.getFile());
}
}
}

Expand All @@ -261,17 +241,10 @@ private void addModules() throws Exception {
Manifest mf = ManifestParser.parseManifestFromJAR( dependency.getArtifact().getFile() );

if(mf !=null){
for( Object str : mf.getMainAttributes().keySet())
{
getLog().debug( str.toString() );
if( "TIBCO-BW-SharedModule".equals(str.toString() ))
{
String dependencyVersion = BWProjectUtils.getModuleVersion(dependency.getArtifact().getFile());
moduleVersionMap.put(dependency.getArtifact().getArtifactId(), dependencyVersion);
artifactFiles.add(dependency.getArtifact().getFile());
break;

}
if(ManifestParser.isSharedModule(mf)) {
String dependencyVersion = BWProjectUtils.getModuleVersion(dependency.getArtifact().getFile());
moduleVersionMap.put(dependency.getArtifact().getArtifactId(), dependencyVersion);
artifactFiles.add(dependency.getArtifact().getFile());
}
}

Expand Down Expand Up @@ -560,7 +533,7 @@ private void cleanup() {
private void updateManifestVersion() {
String version = manifest.getMainAttributes().getValue(Constants.BUNDLE_VERSION);
String qualifierVersion = VersionParser.getcalculatedOSGiVersion(version, Constants.TIMESTAMP);
getLog().info("The OSGi verion is " + qualifierVersion + " for Maven version of " + version);
getLog().info("The OSGi version is " + qualifierVersion + " for Maven version of " + version);
manifest.getMainAttributes().putValue(Constants.BUNDLE_VERSION, qualifierVersion);
}
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package com.tibco.bw.maven.plugin.module;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.jar.Manifest;

import com.tibco.bw.maven.plugin.build.BuildProperties;
import com.tibco.bw.maven.plugin.build.BuildPropertiesParser;
import com.tibco.bw.maven.plugin.osgi.helpers.ManifestParser;
import com.tibco.bw.maven.plugin.osgi.helpers.ManifestWriter;
import com.tibco.bw.maven.plugin.osgi.helpers.VersionParser;
import com.tibco.bw.maven.plugin.utils.Constants;
import org.apache.maven.archiver.MavenArchiveConfiguration;
import org.apache.maven.archiver.MavenArchiver;
import org.apache.maven.artifact.Artifact;
Expand All @@ -21,11 +18,7 @@
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.DefaultDependencyResolutionRequest;
import org.apache.maven.project.DependencyResolutionException;
import org.apache.maven.project.DependencyResolutionResult;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectDependenciesResolver;
import org.apache.maven.project.*;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
import org.apache.maven.shared.dependency.graph.DependencyNode;
Expand All @@ -38,14 +31,13 @@
import org.codehaus.plexus.archiver.util.DefaultFileSet;
import org.eclipse.aether.graph.Dependency;

import com.tibco.bw.maven.plugin.build.BuildProperties;
import com.tibco.bw.maven.plugin.build.BuildPropertiesParser;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.jar.Manifest;

//import com.tibco.bw.maven.plugin.classpath.ClassPathFile;
//import com.tibco.bw.maven.plugin.classpath.ClassPathFileParser;
import com.tibco.bw.maven.plugin.osgi.helpers.ManifestParser;
import com.tibco.bw.maven.plugin.osgi.helpers.ManifestWriter;
import com.tibco.bw.maven.plugin.osgi.helpers.VersionParser;
import com.tibco.bw.maven.plugin.utils.Constants;

@Mojo(name = "bwmodule", defaultPhase = LifecyclePhase.PACKAGE)
public class BWModulePackageMojo extends AbstractMojo {
Expand Down Expand Up @@ -195,15 +187,8 @@ private void addDependencies() throws Exception {
if(mf == null){
throw new Exception("Failed to get Manifest for - "+ file.getName() +". Please verify if jar file is valid, the MANIFEST.MF should be first or second entry in the jar file. Use Command - jar tf <Jar_File_Path> to verify.");
}
for( Object str : mf.getMainAttributes().keySet())
{
getLog().debug( str.toString() );
if( Constants.TIBCO_SHARED_MODULE.equals(str.toString() ))
{
isSharedModule = true;
break;
}
}
isSharedModule = ManifestParser.isSharedModule(mf);

if(!isSharedModule) {
getLog().debug("Dependency added with name " + file.toString());
jarArchiver.addFile(file, "lib/" + file.getName());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
package com.tibco.bw.maven.plugin.osgi.helpers;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import com.tibco.bw.maven.plugin.utils.Constants;

import java.io.*;
import java.util.jar.JarInputStream;
import java.util.jar.Manifest;

import com.tibco.bw.maven.plugin.utils.Constants;

public class ManifestParser {

public static Manifest parseManifest(File baseDir) {
Expand Down Expand Up @@ -96,4 +92,10 @@ public static String getUpdatedProvideCapabilities(Manifest manifest, String old

return updatedProvidesCapabilities;
}

public static boolean isSharedModule(Manifest mf) {

//mf.getMainAttributes().containsKey() require an Object not a String and don't return right value
return (mf.getMainAttributes().getValue(Constants.TIBCO_SHARED_MODULE) != null);
}
}
Original file line number Diff line number Diff line change
@@ -1,27 +1,12 @@
package com.tibco.bw.maven.plugin.test.setupenterprise;

import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.jar.Attributes;
import java.util.jar.Manifest;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.apache.commons.io.FileUtils;
import com.tibco.bw.maven.plugin.osgi.helpers.ManifestParser;
import com.tibco.bw.maven.plugin.osgi.helpers.ManifestWriter;
import com.tibco.bw.maven.plugin.osgi.helpers.Version;
import com.tibco.bw.maven.plugin.osgi.helpers.VersionParser;
import com.tibco.bw.maven.plugin.utils.BWModulesParser;
import com.tibco.bw.maven.plugin.utils.BWProjectUtils;
import com.tibco.bw.maven.plugin.utils.Constants;
import org.apache.maven.archiver.MavenArchiveConfiguration;
import org.apache.maven.archiver.MavenArchiver;
import org.apache.maven.artifact.Artifact;
Expand All @@ -32,11 +17,7 @@
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.DefaultDependencyResolutionRequest;
import org.apache.maven.project.DependencyResolutionException;
import org.apache.maven.project.DependencyResolutionResult;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectDependenciesResolver;
import org.apache.maven.project.*;
import org.codehaus.plexus.archiver.jar.JarArchiver;
import org.codehaus.plexus.archiver.util.DefaultFileSet;
import org.eclipse.aether.graph.Dependency;
Expand All @@ -45,13 +26,19 @@
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import com.tibco.bw.maven.plugin.osgi.helpers.ManifestParser;
import com.tibco.bw.maven.plugin.osgi.helpers.ManifestWriter;
import com.tibco.bw.maven.plugin.osgi.helpers.Version;
import com.tibco.bw.maven.plugin.osgi.helpers.VersionParser;
import com.tibco.bw.maven.plugin.utils.BWModulesParser;
import com.tibco.bw.maven.plugin.utils.BWProjectUtils;
import com.tibco.bw.maven.plugin.utils.Constants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.FileFilter;
import java.io.FileOutputStream;
import java.util.*;
import java.util.jar.Attributes;
import java.util.jar.Manifest;

@Mojo(name = "bwtestear", defaultPhase = LifecyclePhase.GENERATE_TEST_RESOURCES)
public class BWEARTestPackagerMojo extends AbstractMojo {
Expand Down Expand Up @@ -182,10 +169,9 @@ private void addModules() throws Exception {
File moduleJar = artifact.getFile();

Manifest mf = ManifestParser.parseManifestFromJAR( moduleJar );
if( mf.getMainAttributes().containsKey("TIBCO-BW-SharedModule") )
if( ManifestParser.isSharedModule(mf) )
{
jarchiver.addFile(moduleJar, artifact.getArtifactId()+ "_" + artifact.getBaseVersion()+ ".jar");

}
else
{
Expand Down Expand Up @@ -231,18 +217,10 @@ private void addModules() throws Exception {
String dependencyVersion = BWProjectUtils.getModuleVersion(artifact.getFile());

Manifest mf = ManifestParser.parseManifestFromJAR( f);
for( Object str : mf.getMainAttributes().keySet())
{
getLog().debug( str.toString() );
if( "TIBCO-BW-SharedModule".equals(str.toString() ))
{
moduleVersionMap.put(artifact.getArtifactId(), dependencyVersion);
artifactFiles.add(artifact.getFile());
break;

}
}

if(ManifestParser.isSharedModule(mf)) {
moduleVersionMap.put(artifact.getArtifactId(), dependencyVersion);
artifactFiles.add(artifact.getFile());
}
}
}

Expand All @@ -260,17 +238,10 @@ private void addModules() throws Exception {

Manifest mf = ManifestParser.parseManifestFromJAR( dependency.getArtifact().getFile() );

for( Object str : mf.getMainAttributes().keySet())
{
getLog().debug( str.toString() );
if( "TIBCO-BW-SharedModule".equals(str.toString() ))
{
String dependencyVersion = BWProjectUtils.getModuleVersion(dependency.getArtifact().getFile());
moduleVersionMap.put(dependency.getArtifact().getArtifactId(), dependencyVersion);
artifactFiles.add(dependency.getArtifact().getFile());
break;

}
if(ManifestParser.isSharedModule(mf)) {
String dependencyVersion = BWProjectUtils.getModuleVersion(dependency.getArtifact().getFile());
moduleVersionMap.put(dependency.getArtifact().getArtifactId(), dependencyVersion);
artifactFiles.add(dependency.getArtifact().getFile());
}

}
Expand Down
Loading