This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch update-maven-in-demos
in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
The following commit(s) were added to refs/heads/update-maven-in-demos by this
push:
new e11f7fb Fix guice integration
e11f7fb is described below
commit e11f7fbc96729c5c8791937aa2755b2ef5e5af56
Author: Tamas Cservenak <[email protected]>
AuthorDate: Fri May 21 11:18:13 2021 +0200
Fix guice integration
---
.../examples/guice/DemoResolverModule.java | 7 +-
.../examples/guice/MavenResolverModule.java | 80 ++++++++++++++++++++++
2 files changed, 85 insertions(+), 2 deletions(-)
diff --git
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/guice/DemoResolverModule.java
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/guice/DemoResolverModule.java
index 0326f9f..f8e8d5a 100644
---
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/guice/DemoResolverModule.java
+++
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/guice/DemoResolverModule.java
@@ -28,7 +28,6 @@ import javax.inject.Singleton;
import org.apache.maven.model.building.DefaultModelBuilderFactory;
import org.apache.maven.model.building.ModelBuilder;
-import org.apache.maven.repository.internal.MavenResolverModule;
import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
import org.eclipse.aether.spi.connector.transport.TransporterFactory;
@@ -59,7 +58,6 @@ class DemoResolverModule
.to( BasicRepositoryConnectorFactory.class );
bind( TransporterFactory.class ).annotatedWith( Names.named( "file" )
).to( FileTransporterFactory.class );
bind( TransporterFactory.class ).annotatedWith( Names.named( "http" )
).to( HttpTransporterFactory.class );
- bind( ModelBuilder.class ).toProvider( () -> new
DefaultModelBuilderFactory().newInstance() );
}
@Provides
@@ -82,4 +80,9 @@ class DemoResolverModule
factories.add( http );
return Collections.unmodifiableSet( factories );
}
+
+ @Provides
+ ModelBuilder provideModelBuilder() {
+ return new DefaultModelBuilderFactory().newInstance();
+ }
}
diff --git
a/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/guice/MavenResolverModule.java
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/guice/MavenResolverModule.java
new file mode 100644
index 0000000..9f46c75
--- /dev/null
+++
b/maven-resolver-demos/maven-resolver-demo-snippets/src/main/java/org/apache/maven/resolver/examples/guice/MavenResolverModule.java
@@ -0,0 +1,80 @@
+package org.apache.maven.resolver.examples.guice;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Provides;
+import com.google.inject.name.Names;
+import org.apache.maven.repository.internal.DefaultArtifactDescriptorReader;
+import org.apache.maven.repository.internal.DefaultVersionRangeResolver;
+import org.apache.maven.repository.internal.DefaultVersionResolver;
+import org.apache.maven.repository.internal.SnapshotMetadataGeneratorFactory;
+import org.apache.maven.repository.internal.VersionsMetadataGeneratorFactory;
+import org.eclipse.aether.impl.ArtifactDescriptorReader;
+import org.eclipse.aether.impl.MetadataGeneratorFactory;
+import org.eclipse.aether.impl.VersionRangeResolver;
+import org.eclipse.aether.impl.VersionResolver;
+import org.eclipse.aether.impl.guice.AetherModule;
+
+/**
+ * MavenResolverModule. Note: copy of the same class from
org.apache.maven:maven-resolver-provider as there is an
+ * issue: binding to ModelBuilder makes guice attempt to inject maven-specific
things into it as well, that
+ * fails. Here, for demo purposes, we provide manually crafted instances of
ModelBuilder instead.
+ */
+public final class MavenResolverModule
+ extends AbstractModule
+{
+
+ @Override
+ protected void configure()
+ {
+ install( new AetherModule() );
+ bind( ArtifactDescriptorReader.class ).to(
DefaultArtifactDescriptorReader.class ).in( Singleton.class );
+ bind( VersionResolver.class ).to( DefaultVersionResolver.class ).in(
Singleton.class );
+ bind( VersionRangeResolver.class ).to(
DefaultVersionRangeResolver.class ).in( Singleton.class );
+ bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named(
"snapshot" ) )
+ .to( SnapshotMetadataGeneratorFactory.class ).in( Singleton.class
);
+
+ bind( MetadataGeneratorFactory.class ).annotatedWith( Names.named(
"versions" ) )
+ .to( VersionsMetadataGeneratorFactory.class ).in( Singleton.class
);
+
+ // bind( ModelBuilder.class ).toInstance( new
DefaultModelBuilderFactory().newInstance() );
+ }
+
+ @Provides
+ @Singleton
+ Set<MetadataGeneratorFactory> provideMetadataGeneratorFactories(
+ @Named( "snapshot" ) MetadataGeneratorFactory snapshot,
+ @Named( "versions" ) MetadataGeneratorFactory versions )
+ {
+ Set<MetadataGeneratorFactory> factories = new HashSet<>( 2 );
+ factories.add( snapshot );
+ factories.add( versions );
+ return Collections.unmodifiableSet( factories );
+ }
+
+}