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

DefaultProxyConnectorRuleAdmin.java 8.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. package org.apache.archiva.admin.repository.proxyconnectorrule;
  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.admin.model.AuditInformation;
  21. import org.apache.archiva.admin.model.RepositoryAdminException;
  22. import org.apache.archiva.admin.model.beans.ProxyConnector;
  23. import org.apache.archiva.admin.model.beans.ProxyConnectorRule;
  24. import org.apache.archiva.admin.model.beans.ProxyConnectorRuleType;
  25. import org.apache.archiva.admin.model.proxyconnectorrule.ProxyConnectorRuleAdmin;
  26. import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
  27. import org.apache.archiva.configuration.Configuration;
  28. import org.apache.archiva.configuration.ProxyConnectorConfiguration;
  29. import org.apache.archiva.configuration.ProxyConnectorRuleConfiguration;
  30. import org.apache.commons.lang.StringUtils;
  31. import org.slf4j.Logger;
  32. import org.slf4j.LoggerFactory;
  33. import org.springframework.stereotype.Service;
  34. import java.util.ArrayList;
  35. import java.util.Collections;
  36. import java.util.List;
  37. /**
  38. * @author Olivier Lamy
  39. * @since 1.4-M3
  40. */
  41. @Service("proxyConnectorRuleAdmin#default")
  42. public class DefaultProxyConnectorRuleAdmin
  43. extends AbstractRepositoryAdmin
  44. implements ProxyConnectorRuleAdmin
  45. {
  46. private Logger log = LoggerFactory.getLogger( getClass() );
  47. public List<ProxyConnectorRule> getProxyConnectorRules()
  48. throws RepositoryAdminException
  49. {
  50. List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations =
  51. getArchivaConfiguration().getConfiguration().getProxyConnectorRuleConfigurations();
  52. if ( proxyConnectorRuleConfigurations.isEmpty() )
  53. {
  54. return Collections.emptyList();
  55. }
  56. List<ProxyConnectorRule> proxyConnectorRules = new ArrayList<>( proxyConnectorRuleConfigurations.size() );
  57. for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : proxyConnectorRuleConfigurations )
  58. {
  59. ProxyConnectorRule proxyConnectorRule = new ProxyConnectorRule();
  60. proxyConnectorRule.setPattern( proxyConnectorRuleConfiguration.getPattern() );
  61. proxyConnectorRule.setProxyConnectorRuleType(
  62. getProxyConnectorRuleType( proxyConnectorRuleConfiguration.getRuleType() ) );
  63. for ( ProxyConnectorConfiguration proxyConnectorConfiguration : proxyConnectorRuleConfiguration.getProxyConnectors() )
  64. {
  65. ProxyConnector proxyConnector = new ProxyConnector();
  66. proxyConnector.setSourceRepoId( proxyConnectorConfiguration.getSourceRepoId() );
  67. proxyConnector.setTargetRepoId( proxyConnectorConfiguration.getTargetRepoId() );
  68. proxyConnectorRule.getProxyConnectors().add( proxyConnector );
  69. }
  70. proxyConnectorRules.add( proxyConnectorRule );
  71. }
  72. return proxyConnectorRules;
  73. }
  74. private ProxyConnectorRuleType getProxyConnectorRuleType( String type )
  75. {
  76. if ( StringUtils.equals( ProxyConnectorRuleType.WHITE_LIST.getRuleType(), type ) )
  77. {
  78. return ProxyConnectorRuleType.WHITE_LIST;
  79. }
  80. if ( StringUtils.equals( ProxyConnectorRuleType.BLACK_LIST.getRuleType(), type ) )
  81. {
  82. return ProxyConnectorRuleType.BLACK_LIST;
  83. }
  84. return null;
  85. }
  86. public void addProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation )
  87. throws RepositoryAdminException
  88. {
  89. ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration = new ProxyConnectorRuleConfiguration();
  90. proxyConnectorRuleConfiguration.setPattern( proxyConnectorRule.getPattern() );
  91. proxyConnectorRuleConfiguration.setRuleType( proxyConnectorRule.getProxyConnectorRuleType().getRuleType() );
  92. for ( ProxyConnector proxyConnector : proxyConnectorRule.getProxyConnectors() )
  93. {
  94. ProxyConnectorConfiguration proxyConnectorConfiguration = new ProxyConnectorConfiguration();
  95. proxyConnectorConfiguration.setSourceRepoId( proxyConnector.getSourceRepoId() );
  96. proxyConnectorConfiguration.setTargetRepoId( proxyConnector.getTargetRepoId() );
  97. proxyConnectorRuleConfiguration.getProxyConnectors().add( proxyConnectorConfiguration );
  98. }
  99. Configuration configuration = getArchivaConfiguration().getConfiguration();
  100. configuration.getProxyConnectorRuleConfigurations().add( proxyConnectorRuleConfiguration );
  101. saveConfiguration( configuration );
  102. }
  103. public void deleteProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation )
  104. throws RepositoryAdminException
  105. {
  106. Configuration configuration = getArchivaConfiguration().getConfiguration();
  107. // key is the pattern !!
  108. // recreate a list without the pattern
  109. boolean toSave = false;
  110. List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations = new ArrayList<>();
  111. for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : configuration.getProxyConnectorRuleConfigurations() )
  112. {
  113. if ( StringUtils.equals( proxyConnectorRuleConfiguration.getPattern(), proxyConnectorRule.getPattern() )
  114. && StringUtils.equals( proxyConnectorRuleConfiguration.getRuleType(),
  115. proxyConnectorRule.getProxyConnectorRuleType().getRuleType() ) )
  116. {
  117. toSave = true;
  118. }
  119. else
  120. {
  121. proxyConnectorRuleConfigurations.add( proxyConnectorRuleConfiguration );
  122. }
  123. }
  124. if ( toSave )
  125. {
  126. configuration.setProxyConnectorRuleConfigurations( proxyConnectorRuleConfigurations );
  127. saveConfiguration( configuration );
  128. }
  129. }
  130. public void updateProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation )
  131. throws RepositoryAdminException
  132. {
  133. Configuration configuration = getArchivaConfiguration().getConfiguration();
  134. for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : configuration.getProxyConnectorRuleConfigurations() )
  135. {
  136. if ( StringUtils.equals( proxyConnectorRuleConfiguration.getPattern(), proxyConnectorRule.getPattern() )
  137. && StringUtils.equals( proxyConnectorRuleConfiguration.getRuleType(),
  138. proxyConnectorRule.getProxyConnectorRuleType().getRuleType() ) )
  139. {
  140. List<ProxyConnectorConfiguration> proxyConnectors =
  141. new ArrayList<>( proxyConnectorRule.getProxyConnectors().size() );
  142. for ( ProxyConnector proxyConnector : proxyConnectorRule.getProxyConnectors() )
  143. {
  144. ProxyConnectorConfiguration proxyConnectorConfiguration = new ProxyConnectorConfiguration();
  145. proxyConnectorConfiguration.setSourceRepoId( proxyConnector.getSourceRepoId() );
  146. proxyConnectorConfiguration.setTargetRepoId( proxyConnector.getTargetRepoId() );
  147. proxyConnectors.add( proxyConnectorConfiguration );
  148. }
  149. proxyConnectorRuleConfiguration.setProxyConnectors( proxyConnectors );
  150. saveConfiguration( configuration );
  151. }
  152. }
  153. }
  154. }