1 package org.eclipse.aether.internal.impl;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 import javax.inject.Named;
23
24 import org.eclipse.aether.RepositorySystemSession;
25 import org.eclipse.aether.repository.LocalRepository;
26 import org.eclipse.aether.repository.LocalRepositoryManager;
27 import org.eclipse.aether.repository.NoLocalRepositoryManagerException;
28 import org.eclipse.aether.spi.localrepo.LocalRepositoryManagerFactory;
29
30 /**
31 * Creates enhanced local repository managers for repository types {@code "default"} or {@code "" (automatic)}. Enhanced
32 * local repository manager is built upon the classical Maven 2.0 local repository structure but additionally keeps
33 * track of from what repositories a cached artifact was resolved. Resolution of locally cached artifacts will be
34 * rejected in case the current resolution request does not match the known source repositories of an artifact, thereby
35 * emulating physically separated artifact caches per remote repository.
36 */
37 @Named( "enhanced" )
38 public class EnhancedLocalRepositoryManagerFactory
39 implements LocalRepositoryManagerFactory
40 {
41 private float priority = 10.0f;
42
43 public EnhancedLocalRepositoryManagerFactory()
44 {
45 // enable no-arg constructor
46 }
47
48 public LocalRepositoryManager newInstance( RepositorySystemSession session, LocalRepository repository )
49 throws NoLocalRepositoryManagerException
50 {
51 if ( "".equals( repository.getContentType() ) || "default".equals( repository.getContentType() ) )
52 {
53 return new EnhancedLocalRepositoryManager( repository.getBasedir(), session );
54 }
55 else
56 {
57 throw new NoLocalRepositoryManagerException( repository );
58 }
59 }
60
61 public float getPriority()
62 {
63 return priority;
64 }
65
66 /**
67 * Sets the priority of this component.
68 *
69 * @param priority The priority.
70 * @return This component for chaining, never {@code null}.
71 */
72 public EnhancedLocalRepositoryManagerFactory setPriority( float priority )
73 {
74 this.priority = priority;
75 return this;
76 }
77
78 }