This project has retired. For details please refer to its Attic page.
DefaultProxyConnectorRuleAdmin xref
View Javadoc
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  
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;
35  
36  import java.util.ArrayList;
37  import java.util.Collections;
38  import java.util.List;
39  
40  /**
41   * @author Olivier Lamy
42   * @since 1.4-M3
43   */
44  @Service("proxyConnectorRuleAdmin#default")
45  public class DefaultProxyConnectorRuleAdmin
46      extends AbstractRepositoryAdmin
47      implements ProxyConnectorRuleAdmin
48  {
49      private Logger log = LoggerFactory.getLogger( getClass() );
50  
51      @Override
52      public List<ProxyConnectorRule> getProxyConnectorRules()
53          throws RepositoryAdminException
54      {
55          List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations =
56              getArchivaConfiguration().getConfiguration().getProxyConnectorRuleConfigurations();
57          if ( proxyConnectorRuleConfigurations.isEmpty() )
58          {
59              return Collections.emptyList();
60          }
61          List<ProxyConnectorRule> proxyConnectorRules = new ArrayList<>( proxyConnectorRuleConfigurations.size() );
62          for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : proxyConnectorRuleConfigurations )
63          {
64  
65              ProxyConnectorRule proxyConnectorRule = new ProxyConnectorRule();
66              proxyConnectorRule.setPattern( proxyConnectorRuleConfiguration.getPattern() );
67              proxyConnectorRule.setProxyConnectorRuleType(
68                  getProxyConnectorRuleType( proxyConnectorRuleConfiguration.getRuleType() ) );
69              for ( ProxyConnectorConfiguration proxyConnectorConfiguration : proxyConnectorRuleConfiguration.getProxyConnectors() )
70              {
71                  ProxyConnector proxyConnector = new ProxyConnector();
72                  proxyConnector.setSourceRepoId( proxyConnectorConfiguration.getSourceRepoId() );
73                  proxyConnector.setTargetRepoId( proxyConnectorConfiguration.getTargetRepoId() );
74                  proxyConnectorRule.getProxyConnectors().add( proxyConnector );
75              }
76              proxyConnectorRules.add( proxyConnectorRule );
77          }
78  
79          return proxyConnectorRules;
80      }
81  
82  
83      private ProxyConnectorRuleType getProxyConnectorRuleType( String type )
84      {
85          if ( StringUtils.equals( ProxyConnectorRuleType.WHITE_LIST.getRuleType(), type ) )
86          {
87              return ProxyConnectorRuleType.WHITE_LIST;
88          }
89          if ( StringUtils.equals( ProxyConnectorRuleType.BLACK_LIST.getRuleType(), type ) )
90          {
91              return ProxyConnectorRuleType.BLACK_LIST;
92          }
93          return null;
94      }
95  
96      @Override
97      public void addProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation )
98          throws RepositoryAdminException
99      {
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 }