/******************************************************************************* * Copyright (c) 2013, 2014 Sonatype, Inc. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Sonatype, Inc. - initial API and implementation *******************************************************************************/ package org.eclipse.aether.transport.file; import javax.inject.Inject; import javax.inject.Named; import org.eclipse.aether.RepositorySystemSession; import org.eclipse.aether.repository.RemoteRepository; import org.eclipse.aether.spi.connector.transport.Transporter; import org.eclipse.aether.spi.connector.transport.TransporterFactory; import org.eclipse.aether.spi.locator.Service; import org.eclipse.aether.spi.locator.ServiceLocator; import org.eclipse.aether.spi.log.Logger; import org.eclipse.aether.spi.log.LoggerFactory; import org.eclipse.aether.spi.log.NullLoggerFactory; import org.eclipse.aether.transfer.NoTransporterException; /** * A transporter factory for repositories using the {@code file:} protocol. */ @Named( "file" ) public final class FileTransporterFactory implements TransporterFactory, Service { private Logger logger = NullLoggerFactory.LOGGER; private float priority; /** * Creates an (uninitialized) instance of this transporter factory. <em>Note:</em> In case of manual instantiation * by clients, the new factory needs to be configured via its various mutators before first use or runtime errors * will occur. */ public FileTransporterFactory() { // enables default constructor } @Inject FileTransporterFactory( LoggerFactory loggerFactory ) { setLoggerFactory( loggerFactory ); } public void initService( ServiceLocator locator ) { setLoggerFactory( locator.getService( LoggerFactory.class ) ); } /** * Sets the logger factory to use for this component. * * @param loggerFactory The logger factory to use, may be {@code null} to disable logging. * @return This component for chaining, never {@code null}. */ public FileTransporterFactory setLoggerFactory( LoggerFactory loggerFactory ) { this.logger = NullLoggerFactory.getSafeLogger( loggerFactory, FileTransporter.class ); return this; } public float getPriority() { return priority; } /** * Sets the priority of this component. * * @param priority The priority. * @return This component for chaining, never {@code null}. */ public FileTransporterFactory setPriority( float priority ) { this.priority = priority; return this; } public Transporter newInstance( RepositorySystemSession session, RemoteRepository repository ) throws NoTransporterException { return new FileTransporter( repository, logger ); } }