001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019package org.apache.maven.resolver.examples.supplier; 020 021import java.util.HashMap; 022import java.util.LinkedHashMap; 023import java.util.Map; 024 025import org.eclipse.aether.RepositorySystem; 026import org.eclipse.aether.RepositorySystemSession; 027import org.eclipse.aether.artifact.Artifact; 028import org.eclipse.aether.generator.gnupg.GnupgSignatureArtifactGeneratorFactory; 029import org.eclipse.aether.generator.gnupg.loaders.*; 030import org.eclipse.aether.resolution.ArtifactDescriptorResult; 031import org.eclipse.aether.spi.artifact.decorator.ArtifactDecorator; 032import org.eclipse.aether.spi.artifact.decorator.ArtifactDecoratorFactory; 033import org.eclipse.aether.spi.artifact.generator.ArtifactGeneratorFactory; 034import org.eclipse.aether.spi.connector.transport.TransporterFactory; 035import org.eclipse.aether.supplier.RepositorySystemSupplier; 036import org.eclipse.aether.transport.jdk.JdkTransporterFactory; 037import org.eclipse.aether.transport.jetty.JettyTransporterFactory; 038 039/** 040 * A factory for repository system instances that employs Maven Artifact Resolver's provided supplier. 041 */ 042public class SupplierRepositorySystemFactory { 043 public static RepositorySystem newRepositorySystem() { 044 return new RepositorySystemSupplier() { 045 @Override 046 protected Map<String, ArtifactGeneratorFactory> createArtifactGeneratorFactories() { 047 Map<String, ArtifactGeneratorFactory> result = super.createArtifactGeneratorFactories(); 048 result.put( 049 GnupgSignatureArtifactGeneratorFactory.NAME, 050 new GnupgSignatureArtifactGeneratorFactory( 051 getArtifactPredicateFactory(), getGnupgSignatureArtifactGeneratorFactoryLoaders())); 052 return result; 053 } 054 055 private Map<String, GnupgSignatureArtifactGeneratorFactory.Loader> 056 getGnupgSignatureArtifactGeneratorFactoryLoaders() { 057 // order matters 058 LinkedHashMap<String, GnupgSignatureArtifactGeneratorFactory.Loader> loaders = new LinkedHashMap<>(); 059 loaders.put(GpgEnvLoader.NAME, new GpgEnvLoader()); 060 loaders.put(GpgConfLoader.NAME, new GpgConfLoader()); 061 loaders.put(GpgAgentPasswordLoader.NAME, new GpgAgentPasswordLoader()); 062 return loaders; 063 } 064 065 @Override 066 protected Map<String, ArtifactDecoratorFactory> createArtifactDecoratorFactories() { 067 Map<String, ArtifactDecoratorFactory> result = super.createArtifactDecoratorFactories(); 068 result.put("color", new ArtifactDecoratorFactory() { 069 @Override 070 public ArtifactDecorator newInstance(RepositorySystemSession session) { 071 return new ArtifactDecorator() { 072 @Override 073 public Artifact decorateArtifact(ArtifactDescriptorResult artifactDescriptorResult) { 074 Map<String, String> properties = new HashMap<>( 075 artifactDescriptorResult.getArtifact().getProperties()); 076 properties.put("color", "red"); 077 return artifactDescriptorResult.getArtifact().setProperties(properties); 078 } 079 }; 080 } 081 082 @Override 083 public float getPriority() { 084 return 0; 085 } 086 }); 087 return result; 088 } 089 090 @Override 091 protected Map<String, TransporterFactory> createTransporterFactories() { 092 Map<String, TransporterFactory> result = super.createTransporterFactories(); 093 result.put( 094 JdkTransporterFactory.NAME, 095 new JdkTransporterFactory(getChecksumExtractor(), getPathProcessor())); 096 result.put( 097 JettyTransporterFactory.NAME, 098 new JettyTransporterFactory(getChecksumExtractor(), getPathProcessor())); 099 return result; 100 } 101 }.get(); 102 } 103}