You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RepositoryProviderMock.java 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. package org.apache.archiva.consumers.core.mock.repository;
  2. /*
  3. * Licensed to the Apache Software Foundation (ASF) under one
  4. * or more contributor license agreements. See the NOTICE file
  5. * distributed with this work for additional information
  6. * regarding copyright ownership. The ASF licenses this file
  7. * to you under the Apache License, Version 2.0 (the
  8. * "License"); you may not use this file except in compliance
  9. * with the License. You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. * Unless required by applicable law or agreed to in writing,
  13. * software distributed under the License is distributed on an
  14. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. * KIND, either express or implied. See the License for the
  16. * specific language governing permissions and limitations
  17. * under the License.
  18. */
  19. import org.apache.archiva.configuration.model.ManagedRepositoryConfiguration;
  20. import org.apache.archiva.configuration.model.RemoteRepositoryConfiguration;
  21. import org.apache.archiva.configuration.model.RepositoryGroupConfiguration;
  22. import org.apache.archiva.event.EventHandler;
  23. import org.apache.archiva.repository.base.managed.BasicManagedRepository;
  24. import org.apache.archiva.repository.base.remote.BasicRemoteRepository;
  25. import org.apache.archiva.repository.EditableManagedRepository;
  26. import org.apache.archiva.repository.EditableRemoteRepository;
  27. import org.apache.archiva.repository.EditableRepositoryGroup;
  28. import org.apache.archiva.repository.ManagedRepository;
  29. import org.apache.archiva.repository.base.PasswordCredentials;
  30. import org.apache.archiva.repository.ReleaseScheme;
  31. import org.apache.archiva.repository.RemoteRepository;
  32. import org.apache.archiva.repository.RepositoryCredentials;
  33. import org.apache.archiva.event.Event;
  34. import org.apache.archiva.repository.RepositoryException;
  35. import org.apache.archiva.repository.RepositoryGroup;
  36. import org.apache.archiva.repository.RepositoryProvider;
  37. import org.apache.archiva.repository.RepositoryType;
  38. import org.apache.archiva.repository.event.RepositoryEvent;
  39. import org.apache.archiva.repository.features.ArtifactCleanupFeature;
  40. import org.apache.archiva.repository.features.IndexCreationFeature;
  41. import org.apache.archiva.repository.features.RemoteIndexFeature;
  42. import org.apache.archiva.repository.features.StagingRepositoryFeature;
  43. import org.springframework.stereotype.Service;
  44. import java.io.IOException;
  45. import java.net.URI;
  46. import java.nio.file.Paths;
  47. import java.time.Duration;
  48. import java.time.Period;
  49. import java.util.HashSet;
  50. import java.util.Set;
  51. /**
  52. * Just a simple mock class for the repository provider
  53. */
  54. @Service("mockRepositoryProvider")
  55. public class RepositoryProviderMock implements RepositoryProvider
  56. {
  57. private static final Set<RepositoryType> TYPES = new HashSet<>( );
  58. static
  59. {
  60. TYPES.add( RepositoryType.MAVEN );
  61. TYPES.add( RepositoryType.NPM );
  62. }
  63. @Override
  64. public Set<RepositoryType> provides( )
  65. {
  66. return TYPES;
  67. }
  68. @Override
  69. public EditableManagedRepository createManagedInstance( String id, String name )
  70. {
  71. try {
  72. return BasicManagedRepository.newFilesystemInstance( id, name, Paths.get("target/repositories").resolve(id) );
  73. } catch (IOException e) {
  74. throw new RuntimeException(e);
  75. }
  76. }
  77. @Override
  78. public EditableRemoteRepository createRemoteInstance( String id, String name )
  79. {
  80. try {
  81. return BasicRemoteRepository.newFilesystemInstance( id, name, Paths.get("target/remotes") );
  82. } catch (IOException e) {
  83. throw new RuntimeException(e);
  84. }
  85. }
  86. @Override
  87. public EditableRepositoryGroup createRepositoryGroup( String id, String name )
  88. {
  89. return null;
  90. }
  91. @Override
  92. public ManagedRepository createManagedInstance( ManagedRepositoryConfiguration configuration ) throws RepositoryException
  93. {
  94. BasicManagedRepository managedRepository = null;
  95. try {
  96. managedRepository = BasicManagedRepository.newFilesystemInstance( configuration.getId( ), configuration.getName( ), Paths.get("target/repositories").resolve(configuration.getId()) );
  97. } catch (IOException e) {
  98. throw new RepositoryException(e);
  99. }
  100. updateManagedInstance( managedRepository, configuration );
  101. return managedRepository;
  102. }
  103. @Override
  104. public void updateManagedInstance( EditableManagedRepository managedRepository, ManagedRepositoryConfiguration configuration ) throws RepositoryException
  105. {
  106. try
  107. {
  108. managedRepository.setName( managedRepository.getPrimaryLocale(), configuration.getName( ) );
  109. managedRepository.setLocation( new URI( configuration.getLocation( )==null ?"" : configuration.getLocation() ) );
  110. managedRepository.setBaseUri( new URI( "" ) );
  111. managedRepository.setBlocksRedeployment( configuration.isBlockRedeployments( ) );
  112. managedRepository.setDescription( managedRepository.getPrimaryLocale(), configuration.getDescription( ) );
  113. managedRepository.setLayout( configuration.getLayout( ) );
  114. managedRepository.setScanned( configuration.isScanned( ) );
  115. managedRepository.setSchedulingDefinition( configuration.getRefreshCronExpression( ) );
  116. if (configuration.isReleases()) {
  117. managedRepository.addActiveReleaseScheme( ReleaseScheme.RELEASE );
  118. }
  119. if (configuration.isSnapshots()) {
  120. managedRepository.addActiveReleaseScheme( ReleaseScheme.SNAPSHOT );
  121. }
  122. ArtifactCleanupFeature acf = managedRepository.getFeature( ArtifactCleanupFeature.class ).get( );
  123. acf.setRetentionPeriod( Period.ofDays( configuration.getRetentionPeriod( ) ) );
  124. acf.setDeleteReleasedSnapshots( configuration.isDeleteReleasedSnapshots( ) );
  125. acf.setRetentionCount( configuration.getRetentionCount( ) );
  126. IndexCreationFeature icf = managedRepository.getFeature( IndexCreationFeature.class ).get( );
  127. icf.setIndexPath( new URI( configuration.getIndexDir( ) ) );
  128. icf.setSkipPackedIndexCreation( configuration.isSkipPackedIndexCreation( ) );
  129. StagingRepositoryFeature srf = managedRepository.getFeature( StagingRepositoryFeature.class ).get( );
  130. srf.setStageRepoNeeded( configuration.isStageRepoNeeded( ) );
  131. }
  132. catch ( Exception e )
  133. {
  134. throw new RepositoryException( "Error", e );
  135. }
  136. }
  137. @Override
  138. public ManagedRepository createStagingInstance( ManagedRepositoryConfiguration configuration ) throws RepositoryException
  139. {
  140. String id = configuration.getId( ) + StagingRepositoryFeature.STAGING_REPO_POSTFIX;
  141. BasicManagedRepository managedRepository = null;
  142. try {
  143. managedRepository = BasicManagedRepository.newFilesystemInstance(id, configuration.getName(), Paths.get("target/repositories").resolve(id));
  144. } catch (IOException e) {
  145. throw new RepositoryException(e);
  146. }
  147. updateManagedInstance( managedRepository, configuration );
  148. return managedRepository;
  149. }
  150. @Override
  151. public RemoteRepository createRemoteInstance( RemoteRepositoryConfiguration configuration ) throws RepositoryException
  152. {
  153. BasicRemoteRepository remoteRepository = null;
  154. try {
  155. remoteRepository = BasicRemoteRepository.newFilesystemInstance( configuration.getId( ), configuration.getName( ), Paths.get("target/remotes") );
  156. } catch (IOException e) {
  157. throw new RepositoryException(e);
  158. }
  159. updateRemoteInstance( remoteRepository, configuration );
  160. return remoteRepository;
  161. }
  162. @SuppressWarnings("unchecked")
  163. @Override
  164. public void updateRemoteInstance( EditableRemoteRepository remoteRepository, RemoteRepositoryConfiguration configuration ) throws RepositoryException
  165. {
  166. try
  167. {
  168. remoteRepository.setName( remoteRepository.getPrimaryLocale(), configuration.getName( ) );
  169. remoteRepository.setBaseUri( new URI( "" ) );
  170. remoteRepository.setDescription( remoteRepository.getPrimaryLocale(), configuration.getDescription( ) );
  171. remoteRepository.setLayout( configuration.getLayout( ) );
  172. remoteRepository.setSchedulingDefinition( configuration.getRefreshCronExpression( ) );
  173. remoteRepository.setCheckPath( configuration.getCheckPath( ) );
  174. remoteRepository.setExtraHeaders( configuration.getExtraHeaders( ) );
  175. remoteRepository.setExtraParameters( configuration.getExtraParameters( ) );
  176. remoteRepository.setTimeout( Duration.ofSeconds( configuration.getTimeout( ) ) );
  177. char[] pwd = configuration.getPassword()==null ? "".toCharArray() : configuration.getPassword().toCharArray();
  178. remoteRepository.setCredentials( new PasswordCredentials( configuration.getUsername( ), pwd ) );
  179. remoteRepository.setLocation( new URI( configuration.getUrl( )==null ? "" : configuration.getUrl() ) );
  180. RemoteIndexFeature rif = remoteRepository.getFeature( RemoteIndexFeature.class ).get( );
  181. rif.setDownloadRemoteIndexOnStartup( configuration.isDownloadRemoteIndexOnStartup( ) );
  182. rif.setDownloadRemoteIndex( configuration.isDownloadRemoteIndex( ) );
  183. rif.setIndexUri( new URI( configuration.getIndexDir( ) ) );
  184. rif.setDownloadTimeout( Duration.ofSeconds( configuration.getRemoteDownloadTimeout( ) ) );
  185. rif.setProxyId( configuration.getRemoteDownloadNetworkProxyId( ) );
  186. }
  187. catch ( Exception e )
  188. {
  189. throw new RepositoryException( "Error", e );
  190. }
  191. }
  192. @Override
  193. public RepositoryGroup createRepositoryGroup( RepositoryGroupConfiguration configuration ) throws RepositoryException
  194. {
  195. return null;
  196. }
  197. @Override
  198. public void updateRepositoryGroupInstance( EditableRepositoryGroup repositoryGroup, RepositoryGroupConfiguration configuration ) throws RepositoryException
  199. {
  200. }
  201. @Override
  202. public ManagedRepositoryConfiguration getManagedConfiguration( ManagedRepository managedRepository )
  203. {
  204. ManagedRepositoryConfiguration configuration = new ManagedRepositoryConfiguration( );
  205. configuration.setId( managedRepository.getId( ) );
  206. configuration.setName(managedRepository.getName());
  207. configuration.setLocation( managedRepository.getLocation( ) == null ? "" : managedRepository.getLocation().toString( ) );
  208. configuration.setBlockRedeployments( managedRepository.blocksRedeployments( ) );
  209. configuration.setDescription( managedRepository.getDescription( ) );
  210. configuration.setScanned( managedRepository.isScanned( ) );
  211. configuration.setRefreshCronExpression( managedRepository.getSchedulingDefinition( ) );
  212. configuration.setReleases( managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.RELEASE) );
  213. configuration.setSnapshots( managedRepository.getActiveReleaseSchemes().contains(ReleaseScheme.SNAPSHOT) );
  214. configuration.setLayout( managedRepository.getLayout() );
  215. ArtifactCleanupFeature acf = managedRepository.getFeature( ArtifactCleanupFeature.class ).get( );
  216. configuration.setRetentionPeriod( acf.getRetentionPeriod( ).getDays( ) );
  217. configuration.setDeleteReleasedSnapshots( acf.isDeleteReleasedSnapshots( ) );
  218. configuration.setRetentionCount( acf.getRetentionCount( ) );
  219. IndexCreationFeature icf = managedRepository.getFeature( IndexCreationFeature.class ).get( );
  220. configuration.setSkipPackedIndexCreation( icf.isSkipPackedIndexCreation( ) );
  221. configuration.setIndexDir( icf.getIndexPath( ) == null ? "" : icf.getIndexPath().toString( ) );
  222. StagingRepositoryFeature srf = managedRepository.getFeature( StagingRepositoryFeature.class ).get( );
  223. configuration.setStageRepoNeeded( srf.isStageRepoNeeded( ) );
  224. return configuration;
  225. }
  226. @Override
  227. public RepositoryGroupConfiguration getRepositoryGroupConfiguration( RepositoryGroup repositoryGroup ) throws RepositoryException
  228. {
  229. return null;
  230. }
  231. @Override
  232. public void addRepositoryEventHandler( EventHandler<? super RepositoryEvent> eventHandler )
  233. {
  234. // do nothing
  235. }
  236. @Override
  237. public RemoteRepositoryConfiguration getRemoteConfiguration( RemoteRepository remoteRepository )
  238. {
  239. RemoteRepositoryConfiguration configuration = new RemoteRepositoryConfiguration( );
  240. configuration.setId( remoteRepository.getId( ) );
  241. configuration.setName( remoteRepository.getName( ) );
  242. configuration.setDescription( remoteRepository.getDescription( ) );
  243. configuration.setLayout( remoteRepository.getLayout( ) );
  244. configuration.setRefreshCronExpression( remoteRepository.getSchedulingDefinition( ) );
  245. configuration.setCheckPath( remoteRepository.getCheckPath( ) );
  246. configuration.setExtraHeaders( remoteRepository.getExtraHeaders( ) );
  247. configuration.setExtraParameters( remoteRepository.getExtraParameters( ) );
  248. configuration.setTimeout( (int) remoteRepository.getTimeout( ).getSeconds( ) );
  249. RepositoryCredentials creds = remoteRepository.getLoginCredentials( );
  250. if (creds!=null)
  251. {
  252. PasswordCredentials pwdCreds = (PasswordCredentials) creds;
  253. configuration.setUsername( pwdCreds.getUsername( ) );
  254. configuration.setPassword( new String( pwdCreds.getPassword( ) ) );
  255. }
  256. configuration.setUrl( remoteRepository.getLocation( ) == null ? "" : remoteRepository.getLocation().toString( ) );
  257. RemoteIndexFeature rif = remoteRepository.getFeature( RemoteIndexFeature.class ).get( );
  258. configuration.setDownloadRemoteIndex( rif.isDownloadRemoteIndex( ) );
  259. configuration.setDownloadRemoteIndexOnStartup( rif.isDownloadRemoteIndexOnStartup( ) );
  260. configuration.setIndexDir( rif.getIndexUri( )==null ? "" : rif.getIndexUri().toString( ) );
  261. configuration.setRemoteDownloadNetworkProxyId( rif.getProxyId( ) );
  262. return configuration;
  263. }
  264. @Override
  265. public void handle(Event event) {
  266. }
  267. }