Skip to content

Bump plexus from 10 to 13 #161

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

Merged
merged 3 commits into from
May 26, 2023
Merged
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
105 changes: 45 additions & 60 deletions plexus-java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,58 +11,6 @@

<name>Plexus Languages :: Java</name>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.sisu</groupId>
<artifactId>sisu-maven-plugin</artifactId>
<version>0.3.5</version>
<executions>
<execution>
<id>index-project</id>
<goals>
<goal>main-index</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Rerun unittests with the multirelease jar, cannot be done with exploded directory of classes -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>**/*Test.java</include>
<include>**/*IT.java</include>
</includes>
</configuration>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>org.ow2.asm</groupId>
Expand All @@ -82,16 +30,16 @@
</dependency>

<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.2</version>
<scope>test</scope>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>2.2</version>
<scope>test</scope>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-library</artifactId>
<version>2.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
Expand All @@ -113,6 +61,43 @@
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.eclipse.sisu</groupId>
<artifactId>sisu-maven-plugin</artifactId>
<version>0.3.5</version>
<executions>
<execution>
<id>index-project</id>
<goals>
<goal>main-index</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Rerun unittests with the multirelease jar, cannot be done with exploded directory of classes -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<configuration>
<includes>
<include>**/*Test.java</include>
<include>**/*IT.java</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

<profiles>
<profile>
<id>jdk9</id>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,54 +29,41 @@

import org.codehaus.plexus.languages.java.version.JavaVersion;

abstract class AbstractBinaryModuleInfoParser implements ModuleInfoParser
{
abstract class AbstractBinaryModuleInfoParser implements ModuleInfoParser {
@Override
public JavaModuleDescriptor getModuleDescriptor( Path modulePath )
throws IOException
{
return getModuleDescriptor( modulePath, JavaVersion.JAVA_SPECIFICATION_VERSION );
public JavaModuleDescriptor getModuleDescriptor(Path modulePath) throws IOException {
return getModuleDescriptor(modulePath, JavaVersion.JAVA_SPECIFICATION_VERSION);
}

@Override
public JavaModuleDescriptor getModuleDescriptor( Path modulePath, JavaVersion jdkVersion )
throws IOException
{
public JavaModuleDescriptor getModuleDescriptor(Path modulePath, JavaVersion jdkVersion) throws IOException {
JavaModuleDescriptor descriptor;
if ( Files.isDirectory( modulePath ) )
{
try ( InputStream in = Files.newInputStream( modulePath.resolve( "module-info.class" ) ) )
{
descriptor = parse( in );
if (Files.isDirectory(modulePath)) {
try (InputStream in = Files.newInputStream(modulePath.resolve("module-info.class"))) {
descriptor = parse(in);
}
}
else
{
try ( JarFile jarFile = new JarFile( modulePath.toFile() ) )
{
} else {
try (JarFile jarFile = new JarFile(modulePath.toFile())) {
JarEntry moduleInfo;
if ( modulePath.toString().toLowerCase().endsWith( ".jmod" ) )
{
moduleInfo = jarFile.getJarEntry( "classes/module-info.class" );
}
else
{
moduleInfo = jarFile.getJarEntry( "module-info.class" );
if (modulePath.toString().toLowerCase().endsWith(".jmod")) {
moduleInfo = jarFile.getJarEntry("classes/module-info.class");
} else {
moduleInfo = jarFile.getJarEntry("module-info.class");

if ( moduleInfo == null )
{
Manifest manifest = jarFile.getManifest();
if (moduleInfo == null) {
Manifest manifest = jarFile.getManifest();

if ( manifest != null && "true".equalsIgnoreCase( manifest.getMainAttributes().getValue( "Multi-Release" ) ) )
{
int javaVersion = Integer.valueOf( jdkVersion.asMajor().getValue( 1 ) );

for ( int version = javaVersion; version >= 9; version-- )
{
if (manifest != null
&& "true"
.equalsIgnoreCase(
manifest.getMainAttributes().getValue("Multi-Release"))) {
int javaVersion =
Integer.valueOf(jdkVersion.asMajor().getValue(1));

for (int version = javaVersion; version >= 9; version--) {
String resource = "META-INF/versions/" + version + "/module-info.class";
JarEntry entry = jarFile.getJarEntry( resource );
if ( entry != null )
{
JarEntry entry = jarFile.getJarEntry(resource);
if (entry != null) {
moduleInfo = entry;
break;
}
Expand All @@ -85,18 +72,15 @@ public JavaModuleDescriptor getModuleDescriptor( Path modulePath, JavaVersion jd
}
}

if ( moduleInfo != null )
{
descriptor = parse( jarFile.getInputStream( moduleInfo ) );
}
else
{
if (moduleInfo != null) {
descriptor = parse(jarFile.getInputStream(moduleInfo));
} else {
descriptor = null;
}
}
}
return descriptor;
}

abstract JavaModuleDescriptor parse( InputStream in ) throws IOException;
abstract JavaModuleDescriptor parse(InputStream in) throws IOException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,89 +35,73 @@

/**
* Extract information from module with ASM
*
*
*
*
* @author Robert Scholte
* @since 1.0.0
*/
class AsmModuleInfoParser extends AbstractBinaryModuleInfoParser
{
class AsmModuleInfoParser extends AbstractBinaryModuleInfoParser {
@Override
JavaModuleDescriptor parse( InputStream in )
throws IOException
{
JavaModuleDescriptor parse(InputStream in) throws IOException {
final JavaModuleDescriptorWrapper wrapper = new JavaModuleDescriptorWrapper();

ClassReader reader = new ClassReader( in );
reader.accept( new ClassVisitor( Opcodes.ASM9 )
{
@Override
public ModuleVisitor visitModule( String name, int arg1, String arg2 )
{
wrapper.builder = JavaModuleDescriptor.newModule( name );

return new ModuleVisitor( Opcodes.ASM9 )
{
ClassReader reader = new ClassReader(in);
reader.accept(
new ClassVisitor(Opcodes.ASM9) {
@Override
public void visitRequire( String module, int access, String version )
{
if ( ( access & ( Opcodes.ACC_STATIC_PHASE | Opcodes.ACC_TRANSITIVE ) ) != 0 )
{
Set<JavaModuleDescriptor.JavaRequires.JavaModifier> modifiers = new LinkedHashSet<>();
if ( ( access & Opcodes.ACC_STATIC_PHASE ) != 0 )
{
modifiers.add( JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC );
public ModuleVisitor visitModule(String name, int arg1, String arg2) {
wrapper.builder = JavaModuleDescriptor.newModule(name);

return new ModuleVisitor(Opcodes.ASM9) {
@Override
public void visitRequire(String module, int access, String version) {
if ((access & (Opcodes.ACC_STATIC_PHASE | Opcodes.ACC_TRANSITIVE)) != 0) {
Set<JavaModuleDescriptor.JavaRequires.JavaModifier> modifiers =
new LinkedHashSet<>();
if ((access & Opcodes.ACC_STATIC_PHASE) != 0) {
modifiers.add(JavaModuleDescriptor.JavaRequires.JavaModifier.STATIC);
}
if ((access & Opcodes.ACC_TRANSITIVE) != 0) {
modifiers.add(JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE);
}

wrapper.builder.requires(modifiers, module);
} else {
wrapper.builder.requires(module);
}
}
if ( ( access & Opcodes.ACC_TRANSITIVE ) != 0 )
{
modifiers.add( JavaModuleDescriptor.JavaRequires.JavaModifier.TRANSITIVE );

@Override
public void visitExport(String pn, int ms, String... targets) {
if (targets == null || targets.length == 0) {
wrapper.builder.exports(pn.replace('/', '.'));
} else {
wrapper.builder.exports(
pn.replace('/', '.'), new HashSet<>(Arrays.asList(targets)));
}
}

wrapper.builder.requires( modifiers, module );
}
else
{
wrapper.builder.requires( module );
}
}
@Override
public void visitUse(String service) {
wrapper.builder.uses(service.replace('/', '.'));
}

@Override
public void visitExport( String pn, int ms, String... targets )
{
if ( targets == null || targets.length == 0 )
{
wrapper.builder.exports( pn.replace( '/', '.' ) );
}
else
{
wrapper.builder.exports( pn.replace( '/', '.' ), new HashSet<>( Arrays.asList( targets ) ) );
}
}

@Override
public void visitUse( String service )
{
wrapper.builder.uses( service.replace( '/', '.' ) );
}

@Override
public void visitProvide( String service, String... providers )
{
List<String> renamedProvides = new ArrayList<>( providers.length );
for ( String provider : providers )
{
renamedProvides.add( provider.replace( '/', '.' ) );
}
wrapper.builder.provides( service.replace( '/', '.' ), renamedProvides );
@Override
public void visitProvide(String service, String... providers) {
List<String> renamedProvides = new ArrayList<>(providers.length);
for (String provider : providers) {
renamedProvides.add(provider.replace('/', '.'));
}
wrapper.builder.provides(service.replace('/', '.'), renamedProvides);
}
};
}
};
}
}, 0 );
},
0);
return wrapper.builder.build();
}

private static class JavaModuleDescriptorWrapper
{
private static class JavaModuleDescriptorWrapper {
private JavaModuleDescriptor.Builder builder;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,4 @@
* specific language governing permissions and limitations
* under the License.
*/
class BinaryModuleInfoParser extends AsmModuleInfoParser
{

}
class BinaryModuleInfoParser extends AsmModuleInfoParser {}
Loading