This project has retired. For details please refer to its Attic page.
Source code
001package org.apache.archiva.admin.repository.proxyconnectorrule;
002/*
003 * Licensed to the Apache Software Foundation (ASF) under one
004 * or more contributor license agreements.  See the NOTICE file
005 * distributed with this work for additional information
006 * regarding copyright ownership.  The ASF licenses this file
007 * to you under the Apache License, Version 2.0 (the
008 * "License"); you may not use this file except in compliance
009 * with the License.  You may obtain a copy of the License at
010 *
011 *   http://www.apache.org/licenses/LICENSE-2.0
012 *
013 * Unless required by applicable law or agreed to in writing,
014 * software distributed under the License is distributed on an
015 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
016 * KIND, either express or implied.  See the License for the
017 * specific language governing permissions and limitations
018 * under the License.
019 */
020
021import org.apache.archiva.admin.model.AuditInformation;
022import org.apache.archiva.admin.model.RepositoryAdminException;
023import org.apache.archiva.admin.model.beans.ProxyConnector;
024import org.apache.archiva.admin.model.beans.ProxyConnectorRule;
025import org.apache.archiva.proxy.model.ProxyConnectorRuleType;
026import org.apache.archiva.admin.model.proxyconnectorrule.ProxyConnectorRuleAdmin;
027import org.apache.archiva.admin.repository.AbstractRepositoryAdmin;
028import org.apache.archiva.configuration.Configuration;
029import org.apache.archiva.configuration.ProxyConnectorConfiguration;
030import org.apache.archiva.configuration.ProxyConnectorRuleConfiguration;
031import org.apache.commons.lang3.StringUtils;
032import org.slf4j.Logger;
033import org.slf4j.LoggerFactory;
034import org.springframework.stereotype.Service;
035
036import java.util.ArrayList;
037import java.util.Collections;
038import java.util.List;
039
040/**
041 * @author Olivier Lamy
042 * @since 1.4-M3
043 */
044@Service("proxyConnectorRuleAdmin#default")
045public class DefaultProxyConnectorRuleAdmin
046    extends AbstractRepositoryAdmin
047    implements ProxyConnectorRuleAdmin
048{
049    private Logger log = LoggerFactory.getLogger( getClass() );
050
051    @Override
052    public List<ProxyConnectorRule> getProxyConnectorRules()
053        throws RepositoryAdminException
054    {
055        List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations =
056            getArchivaConfiguration().getConfiguration().getProxyConnectorRuleConfigurations();
057        if ( proxyConnectorRuleConfigurations.isEmpty() )
058        {
059            return Collections.emptyList();
060        }
061        List<ProxyConnectorRule> proxyConnectorRules = new ArrayList<>( proxyConnectorRuleConfigurations.size() );
062        for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : proxyConnectorRuleConfigurations )
063        {
064
065            ProxyConnectorRule proxyConnectorRule = new ProxyConnectorRule();
066            proxyConnectorRule.setPattern( proxyConnectorRuleConfiguration.getPattern() );
067            proxyConnectorRule.setProxyConnectorRuleType(
068                getProxyConnectorRuleType( proxyConnectorRuleConfiguration.getRuleType() ) );
069            for ( ProxyConnectorConfiguration proxyConnectorConfiguration : proxyConnectorRuleConfiguration.getProxyConnectors() )
070            {
071                ProxyConnector proxyConnector = new ProxyConnector();
072                proxyConnector.setSourceRepoId( proxyConnectorConfiguration.getSourceRepoId() );
073                proxyConnector.setTargetRepoId( proxyConnectorConfiguration.getTargetRepoId() );
074                proxyConnectorRule.getProxyConnectors().add( proxyConnector );
075            }
076            proxyConnectorRules.add( proxyConnectorRule );
077        }
078
079        return proxyConnectorRules;
080    }
081
082
083    private ProxyConnectorRuleType getProxyConnectorRuleType( String type )
084    {
085        if ( StringUtils.equals( ProxyConnectorRuleType.WHITE_LIST.getRuleType(), type ) )
086        {
087            return ProxyConnectorRuleType.WHITE_LIST;
088        }
089        if ( StringUtils.equals( ProxyConnectorRuleType.BLACK_LIST.getRuleType(), type ) )
090        {
091            return ProxyConnectorRuleType.BLACK_LIST;
092        }
093        return null;
094    }
095
096    @Override
097    public void addProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation )
098        throws RepositoryAdminException
099    {
100        ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration = new ProxyConnectorRuleConfiguration();
101        proxyConnectorRuleConfiguration.setPattern( proxyConnectorRule.getPattern() );
102        proxyConnectorRuleConfiguration.setRuleType( proxyConnectorRule.getProxyConnectorRuleType().getRuleType() );
103        for ( ProxyConnector proxyConnector : proxyConnectorRule.getProxyConnectors() )
104        {
105            ProxyConnectorConfiguration proxyConnectorConfiguration = new ProxyConnectorConfiguration();
106            proxyConnectorConfiguration.setSourceRepoId( proxyConnector.getSourceRepoId() );
107            proxyConnectorConfiguration.setTargetRepoId( proxyConnector.getTargetRepoId() );
108            proxyConnectorRuleConfiguration.getProxyConnectors().add( proxyConnectorConfiguration );
109        }
110        Configuration configuration = getArchivaConfiguration().getConfiguration();
111        configuration.getProxyConnectorRuleConfigurations().add( proxyConnectorRuleConfiguration );
112        saveConfiguration( configuration );
113    }
114
115    @Override
116    public void deleteProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation )
117        throws RepositoryAdminException
118    {
119        Configuration configuration = getArchivaConfiguration().getConfiguration();
120        // key is the pattern !!
121        // recreate a list without the pattern
122
123        boolean toSave = false;
124
125        List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations = new ArrayList<>();
126
127        for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : configuration.getProxyConnectorRuleConfigurations() )
128        {
129            if ( StringUtils.equals( proxyConnectorRuleConfiguration.getPattern(), proxyConnectorRule.getPattern() )
130                && StringUtils.equals( proxyConnectorRuleConfiguration.getRuleType(),
131                                       proxyConnectorRule.getProxyConnectorRuleType().getRuleType() ) )
132            {
133                toSave = true;
134            }
135            else
136            {
137                proxyConnectorRuleConfigurations.add( proxyConnectorRuleConfiguration );
138            }
139        }
140
141        if ( toSave )
142        {
143            configuration.setProxyConnectorRuleConfigurations( proxyConnectorRuleConfigurations );
144            saveConfiguration( configuration );
145        }
146
147    }
148
149    @Override
150    public void updateProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation )
151        throws RepositoryAdminException
152    {
153        Configuration configuration = getArchivaConfiguration().getConfiguration();
154
155        for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : configuration.getProxyConnectorRuleConfigurations() )
156        {
157            if ( StringUtils.equals( proxyConnectorRuleConfiguration.getPattern(), proxyConnectorRule.getPattern() )
158                && StringUtils.equals( proxyConnectorRuleConfiguration.getRuleType(),
159                                       proxyConnectorRule.getProxyConnectorRuleType().getRuleType() ) )
160            {
161                List<ProxyConnectorConfiguration> proxyConnectors =
162                    new ArrayList<>( proxyConnectorRule.getProxyConnectors().size() );
163                for ( ProxyConnector proxyConnector : proxyConnectorRule.getProxyConnectors() )
164                {
165                    ProxyConnectorConfiguration proxyConnectorConfiguration = new ProxyConnectorConfiguration();
166                    proxyConnectorConfiguration.setSourceRepoId( proxyConnector.getSourceRepoId() );
167                    proxyConnectorConfiguration.setTargetRepoId( proxyConnector.getTargetRepoId() );
168                    proxyConnectors.add( proxyConnectorConfiguration );
169                }
170                proxyConnectorRuleConfiguration.setProxyConnectors( proxyConnectors );
171                saveConfiguration( configuration );
172            }
173        }
174
175    }
176}