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 13KB

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