1 package org.apache.archiva.admin.repository.proxyconnectorrule;
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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
21 import org.apache.archiva.admin.model.AuditInformation;
22 import org.apache.archiva.admin.model.RepositoryAdminException;
23 import org.apache.archiva.admin.model.beans.ProxyConnector;
24 import org.apache.archiva.admin.model.beans.ProxyConnectorRule;
25 import org.apache.archiva.admin.model.beans.ProxyConnectorRuleType;
26 import org.apache.archiva.admin.model.proxyconnectorrule.ProxyConnectorRuleAdmin;
27 import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
28 import org.apache.archiva.configuration.Configuration;
29 import org.apache.archiva.configuration.ProxyConnectorConfiguration;
30 import org.apache.archiva.configuration.ProxyConnectorRuleConfiguration;
31 import org.apache.commons.lang.StringUtils;
32 import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory;
34 import org.springframework.stereotype.Service;
36 import java.util.ArrayList;
37 import java.util.Collections;
38 import java.util.List;
41 * @author Olivier Lamy
44 @Service ( "proxyConnectorRuleAdmin#default" )
45 public class DefaultProxyConnectorRuleAdmin
46 extends AbstractRepositoryAdmin
47 implements ProxyConnectorRuleAdmin
49 private Logger log = LoggerFactory.getLogger( getClass() );
51 public List<ProxyConnectorRule> getProxyConnectorRules()
52 throws RepositoryAdminException
54 List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations =
55 getArchivaConfiguration().getConfiguration().getProxyConnectorRuleConfigurations();
56 if ( proxyConnectorRuleConfigurations.isEmpty() )
58 return Collections.emptyList();
60 List<ProxyConnectorRule> proxyConnectorRules =
61 new ArrayList<ProxyConnectorRule>( proxyConnectorRuleConfigurations.size() );
62 for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : proxyConnectorRuleConfigurations )
65 ProxyConnectorRule proxyConnectorRule = new ProxyConnectorRule();
66 proxyConnectorRule.setPattern( proxyConnectorRuleConfiguration.getPattern() );
67 proxyConnectorRule.setProxyConnectorRuleType(
68 getProxyConnectorRuleType( proxyConnectorRuleConfiguration.getRuleType() ) );
69 for ( ProxyConnectorConfiguration proxyConnectorConfiguration : proxyConnectorRuleConfiguration.getProxyConnectors() )
71 ProxyConnector proxyConnector = new ProxyConnector();
72 proxyConnector.setSourceRepoId( proxyConnectorConfiguration.getSourceRepoId() );
73 proxyConnector.setTargetRepoId( proxyConnectorConfiguration.getTargetRepoId() );
74 proxyConnectorRule.getProxyConnectors().add( proxyConnector );
76 proxyConnectorRules.add( proxyConnectorRule );
79 return proxyConnectorRules;
83 private ProxyConnectorRuleType getProxyConnectorRuleType( String type )
85 if ( StringUtils.equals( ProxyConnectorRuleType.WHITE_LIST.getRuleType(), type ) )
87 return ProxyConnectorRuleType.WHITE_LIST;
89 if ( StringUtils.equals( ProxyConnectorRuleType.BLACK_LIST.getRuleType(), type ) )
91 return ProxyConnectorRuleType.BLACK_LIST;
96 public void addProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation )
97 throws RepositoryAdminException
99 ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration = new ProxyConnectorRuleConfiguration();
100 proxyConnectorRuleConfiguration.setPattern( proxyConnectorRule.getPattern() );
101 proxyConnectorRuleConfiguration.setRuleType( proxyConnectorRule.getProxyConnectorRuleType().getRuleType() );
102 for ( ProxyConnector proxyConnector : proxyConnectorRule.getProxyConnectors() )
104 ProxyConnectorConfiguration proxyConnectorConfiguration = new ProxyConnectorConfiguration();
105 proxyConnectorConfiguration.setSourceRepoId( proxyConnector.getSourceRepoId() );
106 proxyConnectorConfiguration.setTargetRepoId( proxyConnector.getTargetRepoId() );
107 proxyConnectorRuleConfiguration.getProxyConnectors().add( proxyConnectorConfiguration );
109 Configuration configuration = getArchivaConfiguration().getConfiguration();
110 configuration.getProxyConnectorRuleConfigurations().add( proxyConnectorRuleConfiguration );
111 saveConfiguration( configuration );
114 public void deleteProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation )
115 throws RepositoryAdminException
117 Configuration configuration = getArchivaConfiguration().getConfiguration();
118 // key is the pattern !!
119 // recreate a list without the pattern
121 boolean toSave = false;
123 List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations =
124 new ArrayList<ProxyConnectorRuleConfiguration>();
126 for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : configuration.getProxyConnectorRuleConfigurations() )
128 if ( StringUtils.equals( proxyConnectorRuleConfiguration.getPattern(), proxyConnectorRule.getPattern() ) )
134 proxyConnectorRuleConfigurations.add( proxyConnectorRuleConfiguration );
140 configuration.setProxyConnectorRuleConfigurations( proxyConnectorRuleConfigurations );
141 saveConfiguration( configuration );
146 public void updateProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation )
147 throws RepositoryAdminException
149 Configuration configuration = getArchivaConfiguration().getConfiguration();
151 for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : configuration.getProxyConnectorRuleConfigurations() )
153 if ( StringUtils.equals( proxyConnectorRuleConfiguration.getPattern(), proxyConnectorRule.getPattern() ) )
155 List<ProxyConnectorConfiguration> proxyConnectors =
156 new ArrayList<ProxyConnectorConfiguration>( proxyConnectorRule.getProxyConnectors().size() );
157 for ( ProxyConnector proxyConnector : proxyConnectorRule.getProxyConnectors() )
159 ProxyConnectorConfiguration proxyConnectorConfiguration = new ProxyConnectorConfiguration();
160 proxyConnectorConfiguration.setSourceRepoId( proxyConnector.getSourceRepoId() );
161 proxyConnectorConfiguration.setTargetRepoId( proxyConnector.getTargetRepoId() );
162 proxyConnectors.add( proxyConnectorConfiguration );
164 proxyConnectorRuleConfiguration.setProxyConnectors( proxyConnectors );
165 saveConfiguration( configuration );