Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

DefaultArchivaAdministration.java 16KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. package org.apache.archiva.admin.repository.admin;
  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 net.sf.beanlib.provider.replicator.BeanReplicator;
  21. import org.apache.archiva.admin.model.AuditInformation;
  22. import org.apache.archiva.admin.model.RepositoryAdminException;
  23. import org.apache.archiva.admin.model.admin.ArchivaAdministration;
  24. import org.apache.archiva.admin.model.beans.FileType;
  25. import org.apache.archiva.admin.model.beans.LegacyArtifactPath;
  26. import org.apache.archiva.admin.model.beans.NetworkConfiguration;
  27. import org.apache.archiva.admin.model.beans.OrganisationInformation;
  28. import org.apache.archiva.admin.model.beans.UiConfiguration;
  29. import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
  30. import org.apache.archiva.audit.AuditEvent;
  31. import org.apache.archiva.configuration.Configuration;
  32. import org.apache.archiva.configuration.UserInterfaceOptions;
  33. import org.apache.archiva.configuration.WebappConfiguration;
  34. import org.apache.commons.lang.StringUtils;
  35. import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
  36. import org.apache.maven.wagon.providers.http.HttpWagon;
  37. import org.springframework.stereotype.Service;
  38. import java.util.ArrayList;
  39. import java.util.Collections;
  40. import java.util.List;
  41. /**
  42. * @author Olivier Lamy
  43. */
  44. @Service( "archivaAdministration#default" )
  45. public class DefaultArchivaAdministration
  46. extends AbstractRepositoryAdmin
  47. implements ArchivaAdministration
  48. {
  49. public List<LegacyArtifactPath> getLegacyArtifactPaths()
  50. throws RepositoryAdminException
  51. {
  52. List<LegacyArtifactPath> legacyArtifactPaths = new ArrayList<LegacyArtifactPath>();
  53. for ( org.apache.archiva.configuration.LegacyArtifactPath legacyArtifactPath : getArchivaConfiguration().getConfiguration().getLegacyArtifactPaths() )
  54. {
  55. legacyArtifactPaths.add(
  56. new BeanReplicator().replicateBean( legacyArtifactPath, LegacyArtifactPath.class ) );
  57. }
  58. return legacyArtifactPaths;
  59. }
  60. public void addLegacyArtifactPath( LegacyArtifactPath legacyArtifactPath, AuditInformation auditInformation )
  61. throws RepositoryAdminException
  62. {
  63. Configuration configuration = getArchivaConfiguration().getConfiguration();
  64. configuration.addLegacyArtifactPath( new BeanReplicator().replicateBean( legacyArtifactPath,
  65. org.apache.archiva.configuration.LegacyArtifactPath.class ) );
  66. saveConfiguration( configuration );
  67. triggerAuditEvent( "", "", AuditEvent.ADD_LEGACY_PATH, auditInformation );
  68. }
  69. public void deleteLegacyArtifactPath( String path, AuditInformation auditInformation )
  70. throws RepositoryAdminException
  71. {
  72. Configuration configuration = getArchivaConfiguration().getConfiguration();
  73. org.apache.archiva.configuration.LegacyArtifactPath legacyArtifactPath =
  74. new org.apache.archiva.configuration.LegacyArtifactPath();
  75. legacyArtifactPath.setPath( path );
  76. configuration.removeLegacyArtifactPath( legacyArtifactPath );
  77. saveConfiguration( configuration );
  78. triggerAuditEvent( "", "", AuditEvent.REMOVE_LEGACY_PATH, auditInformation );
  79. }
  80. public void addFileTypePattern( String fileTypeId, String pattern, AuditInformation auditInformation )
  81. throws RepositoryAdminException
  82. {
  83. Configuration configuration = getArchivaConfiguration().getConfiguration();
  84. org.apache.archiva.configuration.FileType fileType = getFileTypeById( fileTypeId, configuration );
  85. if ( fileType == null )
  86. {
  87. return;
  88. }
  89. fileType.addPattern( pattern );
  90. saveConfiguration( configuration );
  91. triggerAuditEvent( "", "", AuditEvent.ADD_PATTERN, auditInformation );
  92. }
  93. public void removeFileTypePattern( String fileTypeId, String pattern, AuditInformation auditInformation )
  94. throws RepositoryAdminException
  95. {
  96. Configuration configuration = getArchivaConfiguration().getConfiguration();
  97. org.apache.archiva.configuration.FileType fileType = getFileTypeById( fileTypeId, configuration );
  98. if ( fileType == null )
  99. {
  100. return;
  101. }
  102. fileType.removePattern( pattern );
  103. saveConfiguration( configuration );
  104. triggerAuditEvent( "", "", AuditEvent.REMOVE_PATTERN, auditInformation );
  105. }
  106. public FileType getFileType( String fileTypeId )
  107. throws RepositoryAdminException
  108. {
  109. org.apache.archiva.configuration.FileType fileType =
  110. getFileTypeById( fileTypeId, getArchivaConfiguration().getConfiguration() );
  111. if ( fileType == null )
  112. {
  113. return null;
  114. }
  115. return new BeanReplicator().replicateBean( fileType, FileType.class );
  116. }
  117. public void addFileType( FileType fileType, AuditInformation auditInformation )
  118. throws RepositoryAdminException
  119. {
  120. Configuration configuration = getArchivaConfiguration().getConfiguration();
  121. if ( getFileTypeById( fileType.getId(), configuration ) != null )
  122. {
  123. throw new RepositoryAdminException(
  124. "impossible to FileType with id " + fileType.getId() + " already exists" );
  125. }
  126. configuration.getRepositoryScanning().addFileType(
  127. new BeanReplicator().replicateBean( fileType, org.apache.archiva.configuration.FileType.class ) );
  128. saveConfiguration( configuration );
  129. }
  130. public void removeFileType( String fileTypeId, AuditInformation auditInformation )
  131. throws RepositoryAdminException
  132. {
  133. Configuration configuration = getArchivaConfiguration().getConfiguration();
  134. org.apache.archiva.configuration.FileType fileType = new org.apache.archiva.configuration.FileType();
  135. fileType.setId( fileTypeId );
  136. configuration.getRepositoryScanning().removeFileType( fileType );
  137. saveConfiguration( configuration );
  138. }
  139. public void addKnownContentConsumer( String knownContentConsumer, AuditInformation auditInformation )
  140. throws RepositoryAdminException
  141. {
  142. Configuration configuration = getArchivaConfiguration().getConfiguration();
  143. if ( configuration.getRepositoryScanning().getKnownContentConsumers().contains( knownContentConsumer ) )
  144. {
  145. log.warn( "skip adding knownContentConsumer {} as already here", knownContentConsumer );
  146. return;
  147. }
  148. configuration.getRepositoryScanning().addKnownContentConsumer( knownContentConsumer );
  149. saveConfiguration( configuration );
  150. triggerAuditEvent( "", "", AuditEvent.ENABLE_REPO_CONSUMER, auditInformation );
  151. }
  152. public void removeKnownContentConsumer( String knownContentConsumer, AuditInformation auditInformation )
  153. throws RepositoryAdminException
  154. {
  155. Configuration configuration = getArchivaConfiguration().getConfiguration();
  156. configuration.getRepositoryScanning().removeKnownContentConsumer( knownContentConsumer );
  157. saveConfiguration( configuration );
  158. triggerAuditEvent( "", "", AuditEvent.DISABLE_REPO_CONSUMER, auditInformation );
  159. }
  160. public void addInvalidContentConsumer( String invalidContentConsumer, AuditInformation auditInformation )
  161. throws RepositoryAdminException
  162. {
  163. Configuration configuration = getArchivaConfiguration().getConfiguration();
  164. if ( configuration.getRepositoryScanning().getInvalidContentConsumers().contains( invalidContentConsumer ) )
  165. {
  166. log.warn( "skip adding invalidContentConsumer {} as already here", invalidContentConsumer );
  167. return;
  168. }
  169. configuration.getRepositoryScanning().addInvalidContentConsumer( invalidContentConsumer );
  170. saveConfiguration( configuration );
  171. triggerAuditEvent( "", "", AuditEvent.ENABLE_REPO_CONSUMER, auditInformation );
  172. }
  173. public void removeInvalidContentConsumer( String invalidContentConsumer, AuditInformation auditInformation )
  174. throws RepositoryAdminException
  175. {
  176. Configuration configuration = getArchivaConfiguration().getConfiguration();
  177. configuration.getRepositoryScanning().removeInvalidContentConsumer( invalidContentConsumer );
  178. saveConfiguration( configuration );
  179. triggerAuditEvent( "", "", AuditEvent.DISABLE_REPO_CONSUMER, auditInformation );
  180. }
  181. public void setKnownContentConsumers( List<String> knownContentConsumers, AuditInformation auditInformation )
  182. throws RepositoryAdminException
  183. {
  184. if ( knownContentConsumers == null )
  185. {
  186. return;
  187. }
  188. for ( String knowContentConsumer : knownContentConsumers )
  189. {
  190. addKnownContentConsumer( knowContentConsumer, auditInformation );
  191. }
  192. }
  193. public void setInvalidContentConsumers( List<String> invalidContentConsumers, AuditInformation auditInformation )
  194. throws RepositoryAdminException
  195. {
  196. if ( invalidContentConsumers == null )
  197. {
  198. return;
  199. }
  200. for ( String invalidContentConsumer : invalidContentConsumers )
  201. {
  202. addKnownContentConsumer( invalidContentConsumer, auditInformation );
  203. }
  204. }
  205. public List<FileType> getFileTypes()
  206. throws RepositoryAdminException
  207. {
  208. List<org.apache.archiva.configuration.FileType> configFileTypes =
  209. getArchivaConfiguration().getConfiguration().getRepositoryScanning().getFileTypes();
  210. if ( configFileTypes == null || configFileTypes.isEmpty() )
  211. {
  212. return Collections.emptyList();
  213. }
  214. List<FileType> fileTypes = new ArrayList<FileType>();
  215. for ( org.apache.archiva.configuration.FileType fileType : configFileTypes )
  216. {
  217. fileTypes.add( new BeanReplicator().replicateBean( fileType, FileType.class ) );
  218. }
  219. return fileTypes;
  220. }
  221. public List<String> getKnownContentConsumers()
  222. throws RepositoryAdminException
  223. {
  224. return new ArrayList<String>(
  225. getArchivaConfiguration().getConfiguration().getRepositoryScanning().getKnownContentConsumers() );
  226. }
  227. public List<String> getInvalidContentConsumers()
  228. throws RepositoryAdminException
  229. {
  230. return new ArrayList<String>(
  231. getArchivaConfiguration().getConfiguration().getRepositoryScanning().getInvalidContentConsumers() );
  232. }
  233. public OrganisationInformation getOrganisationInformation()
  234. throws RepositoryAdminException
  235. {
  236. org.apache.archiva.configuration.OrganisationInformation organisationInformation =
  237. getArchivaConfiguration().getConfiguration().getOrganisationInfo();
  238. if ( organisationInformation == null )
  239. {
  240. return null;
  241. }
  242. return new BeanReplicator().replicateBean( organisationInformation, OrganisationInformation.class );
  243. }
  244. public void setOrganisationInformation( OrganisationInformation organisationInformation )
  245. throws RepositoryAdminException
  246. {
  247. Configuration configuration = getArchivaConfiguration().getConfiguration();
  248. if ( organisationInformation != null )
  249. {
  250. org.apache.archiva.configuration.OrganisationInformation organisationInformationModel =
  251. new BeanReplicator().replicateBean( organisationInformation,
  252. org.apache.archiva.configuration.OrganisationInformation.class );
  253. configuration.setOrganisationInfo( organisationInformationModel );
  254. }
  255. else
  256. {
  257. configuration.setOrganisationInfo( null );
  258. }
  259. saveConfiguration( configuration );
  260. }
  261. public UiConfiguration getUiConfiguration()
  262. throws RepositoryAdminException
  263. {
  264. WebappConfiguration webappConfiguration = getArchivaConfiguration().getConfiguration().getWebapp();
  265. if ( webappConfiguration == null )
  266. {
  267. return null;
  268. }
  269. UserInterfaceOptions userInterfaceOptions = webappConfiguration.getUi();
  270. if ( userInterfaceOptions == null )
  271. {
  272. return null;
  273. }
  274. return new BeanReplicator().replicateBean( userInterfaceOptions, UiConfiguration.class );
  275. }
  276. public void updateUiConfiguration( UiConfiguration uiConfiguration )
  277. throws RepositoryAdminException
  278. {
  279. Configuration configuration = getArchivaConfiguration().getConfiguration();
  280. if ( uiConfiguration != null )
  281. {
  282. UserInterfaceOptions userInterfaceOptions =
  283. new BeanReplicator().replicateBean( uiConfiguration, UserInterfaceOptions.class );
  284. configuration.getWebapp().setUi( userInterfaceOptions );
  285. }
  286. else
  287. {
  288. configuration.getWebapp().setUi( null );
  289. }
  290. saveConfiguration( configuration );
  291. }
  292. public NetworkConfiguration getNetworkConfiguration()
  293. throws RepositoryAdminException
  294. {
  295. org.apache.archiva.configuration.NetworkConfiguration networkConfiguration =
  296. getArchivaConfiguration().getConfiguration().getNetworkConfiguration();
  297. if ( networkConfiguration == null )
  298. {
  299. return null;
  300. }
  301. return new BeanReplicator().replicateBean( networkConfiguration, NetworkConfiguration.class );
  302. }
  303. public void setNetworkConfiguration( NetworkConfiguration networkConfiguration )
  304. throws RepositoryAdminException
  305. {
  306. Configuration configuration = getArchivaConfiguration().getConfiguration();
  307. if ( networkConfiguration == null )
  308. {
  309. configuration.setNetworkConfiguration( null );
  310. // back to default values
  311. HttpWagon.setUseClientManagerPooled( true );
  312. ThreadSafeClientConnManager threadSafeClientConnManager = new ThreadSafeClientConnManager();
  313. threadSafeClientConnManager.setDefaultMaxPerRoute( 30 );
  314. threadSafeClientConnManager.setMaxTotal( 30 );
  315. HttpWagon.setConnectionManagerPooled( threadSafeClientConnManager );
  316. }
  317. else
  318. {
  319. HttpWagon.setUseClientManagerPooled( networkConfiguration.isUsePooling() );
  320. ThreadSafeClientConnManager threadSafeClientConnManager = new ThreadSafeClientConnManager();
  321. threadSafeClientConnManager.setDefaultMaxPerRoute( networkConfiguration.getMaxTotalPerHost() );
  322. threadSafeClientConnManager.setMaxTotal( networkConfiguration.getMaxTotal() );
  323. HttpWagon.setConnectionManagerPooled( threadSafeClientConnManager );
  324. configuration.setNetworkConfiguration( new BeanReplicator().replicateBean( networkConfiguration,
  325. org.apache.archiva.configuration.NetworkConfiguration.class ) );
  326. }
  327. saveConfiguration( configuration );
  328. }
  329. //-------------------------
  330. //
  331. //-------------------------
  332. private org.apache.archiva.configuration.FileType getFileTypeById( String id, Configuration configuration )
  333. {
  334. for ( org.apache.archiva.configuration.FileType fileType : configuration.getRepositoryScanning().getFileTypes() )
  335. {
  336. if ( StringUtils.equals( id, fileType.getId() ) )
  337. {
  338. return fileType;
  339. }
  340. }
  341. return null;
  342. }
  343. }