001 package org.apache.maven.repository.legacy.repository;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import java.util.Map;
023
024 import org.apache.maven.artifact.UnknownRepositoryLayoutException;
025 import org.apache.maven.artifact.repository.ArtifactRepository;
026 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
027 import org.apache.maven.artifact.repository.MavenArtifactRepository;
028 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
029 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout2;
030 import org.codehaus.plexus.component.annotations.Component;
031 import org.codehaus.plexus.component.annotations.Requirement;
032
033 /**
034 * @author jdcasey
035 */
036 @Component( role = ArtifactRepositoryFactory.class )
037 public class DefaultArtifactRepositoryFactory
038 implements ArtifactRepositoryFactory
039 {
040 // TODO: use settings?
041 private String globalUpdatePolicy;
042
043 private String globalChecksumPolicy;
044
045 @Requirement( role = ArtifactRepositoryLayout.class )
046 private Map<String,ArtifactRepositoryLayout> repositoryLayouts;
047
048 public ArtifactRepositoryLayout getLayout( String layoutId )
049 throws UnknownRepositoryLayoutException
050 {
051 return repositoryLayouts.get( layoutId );
052 }
053
054 public ArtifactRepository createDeploymentArtifactRepository( String id, String url, String layoutId,
055 boolean uniqueVersion )
056 throws UnknownRepositoryLayoutException
057 {
058 ArtifactRepositoryLayout layout = repositoryLayouts.get( layoutId );
059
060 checkLayout( id, layoutId, layout );
061
062 return createDeploymentArtifactRepository( id, url, layout, uniqueVersion );
063 }
064
065 private void checkLayout( String repositoryId, String layoutId, ArtifactRepositoryLayout layout )
066 throws UnknownRepositoryLayoutException
067 {
068 if ( layout == null )
069 {
070 throw new UnknownRepositoryLayoutException( repositoryId, layoutId );
071 }
072 }
073
074 public ArtifactRepository createDeploymentArtifactRepository( String id, String url,
075 ArtifactRepositoryLayout repositoryLayout,
076 boolean uniqueVersion )
077 {
078 return createArtifactRepository( id, url, repositoryLayout, null, null );
079 }
080
081 public ArtifactRepository createArtifactRepository( String id, String url, String layoutId,
082 ArtifactRepositoryPolicy snapshots,
083 ArtifactRepositoryPolicy releases )
084 throws UnknownRepositoryLayoutException
085 {
086 ArtifactRepositoryLayout layout = repositoryLayouts.get( layoutId );
087
088 checkLayout( id, layoutId, layout );
089
090 return createArtifactRepository( id, url, layout, snapshots, releases );
091 }
092
093 public ArtifactRepository createArtifactRepository( String id, String url,
094 ArtifactRepositoryLayout repositoryLayout,
095 ArtifactRepositoryPolicy snapshots,
096 ArtifactRepositoryPolicy releases )
097 {
098 if ( snapshots == null )
099 {
100 snapshots = new ArtifactRepositoryPolicy();
101 }
102
103 if ( releases == null )
104 {
105 releases = new ArtifactRepositoryPolicy();
106 }
107
108 if ( globalUpdatePolicy != null )
109 {
110 snapshots.setUpdatePolicy( globalUpdatePolicy );
111 releases.setUpdatePolicy( globalUpdatePolicy );
112 }
113
114 if ( globalChecksumPolicy != null )
115 {
116 snapshots.setChecksumPolicy( globalChecksumPolicy );
117 releases.setChecksumPolicy( globalChecksumPolicy );
118 }
119
120 ArtifactRepository repository;
121 if ( repositoryLayout instanceof ArtifactRepositoryLayout2 )
122 {
123 repository =
124 ( (ArtifactRepositoryLayout2) repositoryLayout ).newMavenArtifactRepository( id, url, snapshots,
125 releases );
126 }
127 else
128 {
129 repository = new MavenArtifactRepository( id, url, repositoryLayout, snapshots, releases );
130 }
131
132 return repository;
133 }
134
135 public void setGlobalUpdatePolicy( String updatePolicy )
136 {
137 globalUpdatePolicy = updatePolicy;
138 }
139
140 public void setGlobalChecksumPolicy( String checksumPolicy )
141 {
142 globalChecksumPolicy = checksumPolicy;
143 }
144 }