implements backend part. git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1392951 13f79535-47bb-0310-9956-ffa450edef68tags/archiva-1.4-M3
@@ -168,6 +168,17 @@ | |||
The NetworkConfiguration . | |||
</description> | |||
</field> | |||
<field> | |||
<name>proxyConnectorRuleConfigurations</name> | |||
<version>1.4.0+</version> | |||
<association> | |||
<type>ProxyConnectorRuleConfiguration</type> | |||
<multiplicity>*</multiplicity> | |||
</association> | |||
<description> | |||
The list of ProxyConnectorRuleConfigurations. | |||
</description> | |||
</field> | |||
</fields> | |||
<codeSegments> | |||
<codeSegment> | |||
@@ -927,6 +938,38 @@ | |||
</codeSegments> | |||
</class> | |||
<class> | |||
<name>ProxyConnectorRuleConfiguration</name> | |||
<version>1.4.0+</version> | |||
<fields> | |||
<field> | |||
<name>ruleType</name> | |||
<version>1.4.0+</version> | |||
<type>String</type> | |||
<description> | |||
The type if this rule: whiteList, blackList etc.. | |||
</description> | |||
</field> | |||
<field> | |||
<name>pattern</name> | |||
<version>1.4.0+</version> | |||
<type>String</type> | |||
<description> | |||
The pattern for this rule: whiteList, blackList etc.. | |||
</description> | |||
</field> | |||
<field> | |||
<name>proxyConnectors</name> | |||
<version>1.4.0+</version> | |||
<description>Associated proxyConnectors configuration.</description> | |||
<association> | |||
<type>ProxyConnectorConfiguration</type> | |||
<multiplicity>*</multiplicity> | |||
</association> | |||
</field> | |||
</fields> | |||
</class> | |||
<class> | |||
<superClass>AbstractRepositoryConnectorConfiguration</superClass> | |||
<name>ProxyConnectorConfiguration</name> |
@@ -0,0 +1,133 @@ | |||
package org.apache.archiva.admin.model.beans; | |||
/* | |||
* Licensed to the Apache Software Foundation (ASF) under one | |||
* or more contributor license agreements. See the NOTICE file | |||
* distributed with this work for additional information | |||
* regarding copyright ownership. The ASF licenses this file | |||
* to you under the Apache License, Version 2.0 (the | |||
* "License"); you may not use this file except in compliance | |||
* with the License. You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, | |||
* software distributed under the License is distributed on an | |||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |||
* KIND, either express or implied. See the License for the | |||
* specific language governing permissions and limitations | |||
* under the License. | |||
*/ | |||
import javax.xml.bind.annotation.XmlRootElement; | |||
import java.io.Serializable; | |||
import java.util.ArrayList; | |||
import java.util.List; | |||
/** | |||
* @author Olivier Lamy | |||
* @since 1.4-M3 | |||
*/ | |||
@XmlRootElement ( name = "proxyConnectorRule" ) | |||
public class ProxyConnectorRule | |||
implements Serializable | |||
{ | |||
private String pattern; | |||
//FIXME: olamy possible tru rest ? or a String | |||
private ProxyConnectorRuleType proxyConnectorRuleType; | |||
private List<ProxyConnector> proxyConnectors; | |||
public ProxyConnectorRule() | |||
{ | |||
// no op | |||
} | |||
public ProxyConnectorRule( String pattern, ProxyConnectorRuleType proxyConnectorRuleType, | |||
List<ProxyConnector> proxyConnectors ) | |||
{ | |||
this.pattern = pattern; | |||
this.proxyConnectorRuleType = proxyConnectorRuleType; | |||
this.proxyConnectors = proxyConnectors; | |||
} | |||
public String getPattern() | |||
{ | |||
return pattern; | |||
} | |||
public void setPattern( String pattern ) | |||
{ | |||
this.pattern = pattern; | |||
} | |||
public ProxyConnectorRuleType getProxyConnectorRuleType() | |||
{ | |||
return proxyConnectorRuleType; | |||
} | |||
public void setProxyConnectorRuleType( ProxyConnectorRuleType proxyConnectorRuleType ) | |||
{ | |||
this.proxyConnectorRuleType = proxyConnectorRuleType; | |||
} | |||
public List<ProxyConnector> getProxyConnectors() | |||
{ | |||
if ( this.proxyConnectors == null ) | |||
{ | |||
this.proxyConnectors = new ArrayList<ProxyConnector>(); | |||
} | |||
return proxyConnectors; | |||
} | |||
public void setProxyConnectors( List<ProxyConnector> proxyConnectors ) | |||
{ | |||
this.proxyConnectors = proxyConnectors; | |||
} | |||
@Override | |||
public boolean equals( Object o ) | |||
{ | |||
if ( this == o ) | |||
{ | |||
return true; | |||
} | |||
if ( !( o instanceof ProxyConnectorRule ) ) | |||
{ | |||
return false; | |||
} | |||
ProxyConnectorRule that = (ProxyConnectorRule) o; | |||
if ( !pattern.equals( that.pattern ) ) | |||
{ | |||
return false; | |||
} | |||
if ( proxyConnectorRuleType != that.proxyConnectorRuleType ) | |||
{ | |||
return false; | |||
} | |||
return true; | |||
} | |||
@Override | |||
public int hashCode() | |||
{ | |||
int result = pattern.hashCode(); | |||
result = 31 * result + proxyConnectorRuleType.hashCode(); | |||
return result; | |||
} | |||
@Override | |||
public String toString() | |||
{ | |||
final StringBuilder sb = new StringBuilder(); | |||
sb.append( "ProxyConnectorRule" ); | |||
sb.append( "{pattern='" ).append( pattern ).append( '\'' ); | |||
sb.append( ", proxyConnectorRuleType=" ).append( proxyConnectorRuleType ); | |||
sb.append( ", proxyConnectors=" ).append( proxyConnectors ); | |||
sb.append( '}' ); | |||
return sb.toString(); | |||
} | |||
} |
@@ -0,0 +1,55 @@ | |||
package org.apache.archiva.admin.model.beans; | |||
/* | |||
* Licensed to the Apache Software Foundation (ASF) under one | |||
* or more contributor license agreements. See the NOTICE file | |||
* distributed with this work for additional information | |||
* regarding copyright ownership. The ASF licenses this file | |||
* to you under the Apache License, Version 2.0 (the | |||
* "License"); you may not use this file except in compliance | |||
* with the License. You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, | |||
* software distributed under the License is distributed on an | |||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |||
* KIND, either express or implied. See the License for the | |||
* specific language governing permissions and limitations | |||
* under the License. | |||
*/ | |||
/** | |||
* @author Olivier Lamy | |||
* @since 1.4-M3 | |||
*/ | |||
public enum ProxyConnectorRuleType | |||
{ | |||
WHITE_LIST( "whiteList" ), BLACK_LIST( "blackList" ); | |||
private String ruleType; | |||
private ProxyConnectorRuleType( String ruleType ) | |||
{ | |||
this.ruleType = ruleType; | |||
} | |||
public void setRuleType( String ruleType ) | |||
{ | |||
this.ruleType = ruleType; | |||
} | |||
public String getRuleType() | |||
{ | |||
return ruleType; | |||
} | |||
@Override | |||
public String toString() | |||
{ | |||
final StringBuilder sb = new StringBuilder(); | |||
sb.append( "ProxyConnectorRuleType" ); | |||
sb.append( "{ruleType='" ).append( ruleType ).append( '\'' ); | |||
sb.append( '}' ); | |||
return sb.toString(); | |||
} | |||
} |
@@ -21,6 +21,7 @@ package org.apache.archiva.admin.model.proxyconnector; | |||
import org.apache.archiva.admin.model.AuditInformation; | |||
import org.apache.archiva.admin.model.RepositoryAdminException; | |||
import org.apache.archiva.admin.model.beans.ProxyConnector; | |||
import org.apache.archiva.admin.model.beans.ProxyConnectorRule; | |||
import java.util.List; | |||
import java.util.Map; |
@@ -0,0 +1,66 @@ | |||
package org.apache.archiva.admin.model.proxyconnectorrule; | |||
/* | |||
* Licensed to the Apache Software Foundation (ASF) under one | |||
* or more contributor license agreements. See the NOTICE file | |||
* distributed with this work for additional information | |||
* regarding copyright ownership. The ASF licenses this file | |||
* to you under the Apache License, Version 2.0 (the | |||
* "License"); you may not use this file except in compliance | |||
* with the License. You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, | |||
* software distributed under the License is distributed on an | |||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |||
* KIND, either express or implied. See the License for the | |||
* specific language governing permissions and limitations | |||
* under the License. | |||
*/ | |||
import org.apache.archiva.admin.model.AuditInformation; | |||
import org.apache.archiva.admin.model.RepositoryAdminException; | |||
import org.apache.archiva.admin.model.beans.ProxyConnectorRule; | |||
import java.util.List; | |||
/** | |||
* @author Olivier Lamy | |||
* @since 1.4-M3 | |||
*/ | |||
public interface ProxyConnectorRuleAdmin | |||
{ | |||
/** | |||
* @return | |||
* @throws org.apache.archiva.admin.model.RepositoryAdminException | |||
* | |||
* @since 1.4-M3 | |||
*/ | |||
List<ProxyConnectorRule> getProxyConnectorRules() | |||
throws RepositoryAdminException; | |||
/** | |||
* @param proxyConnectorRule | |||
* @throws RepositoryAdminException | |||
* @since 1.4-M3 | |||
*/ | |||
void addProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation ) | |||
throws RepositoryAdminException; | |||
/** | |||
* @param proxyConnectorRule | |||
* @throws RepositoryAdminException | |||
* @since 1.4-M3 | |||
*/ | |||
void deleteProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation ) | |||
throws RepositoryAdminException; | |||
/** | |||
* <b>only to update attached proxy connectors to update pattern delete then add</b> | |||
* @param proxyConnectorRule | |||
* @throws RepositoryAdminException | |||
* @since 1.4-M3 | |||
*/ | |||
void updateProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation ) | |||
throws RepositoryAdminException; | |||
} |
@@ -47,7 +47,7 @@ import java.util.Map; | |||
* @author Olivier Lamy | |||
* @since 1.4-M1 | |||
*/ | |||
@Service( "proxyConnectorAdmin#default" ) | |||
@Service ( "proxyConnectorAdmin#default" ) | |||
public class DefaultProxyConnectorAdmin | |||
extends AbstractRepositoryAdmin | |||
implements ProxyConnectorAdmin | |||
@@ -114,6 +114,7 @@ public class DefaultProxyConnectorAdmin | |||
} | |||
// FIXME take of proxyConnectorRules ! | |||
public Boolean deleteProxyConnector( ProxyConnector proxyConnector, AuditInformation auditInformation ) | |||
throws RepositoryAdminException | |||
{ | |||
@@ -133,6 +134,7 @@ public class DefaultProxyConnectorAdmin | |||
return Boolean.TRUE; | |||
} | |||
// FIXME take of proxyConnectorRules ! | |||
public Boolean updateProxyConnector( ProxyConnector proxyConnector, AuditInformation auditInformation ) | |||
throws RepositoryAdminException | |||
{ | |||
@@ -206,21 +208,6 @@ public class DefaultProxyConnectorAdmin | |||
protected ProxyConnectorConfiguration getProxyConnectorConfiguration( ProxyConnector proxyConnector ) | |||
{ | |||
/* | |||
ProxyConnectorConfiguration proxyConnectorConfiguration = new ProxyConnectorConfiguration(); | |||
proxyConnectorConfiguration.setOrder( proxyConnector.getOrder() ); | |||
proxyConnectorConfiguration.setBlackListPatterns( | |||
new ArrayList<String>( proxyConnector.getBlackListPatterns() ) ); | |||
proxyConnectorConfiguration.setWhiteListPatterns( | |||
new ArrayList<String>( proxyConnector.getWhiteListPatterns() ) ); | |||
proxyConnectorConfiguration.setDisabled( proxyConnector.isDisabled() ); | |||
proxyConnectorConfiguration.setPolicies( new HashMap( proxyConnector.getPolicies() ) ); | |||
proxyConnectorConfiguration.setProperties( new HashMap( proxyConnector.getProperties() ) ); | |||
proxyConnectorConfiguration.setProxyId( proxyConnector.getProxyId() ); | |||
proxyConnectorConfiguration.setSourceRepoId( proxyConnector.getSourceRepoId() ); | |||
proxyConnectorConfiguration.setTargetRepoId( proxyConnector.getTargetRepoId() ); | |||
return proxyConnectorConfiguration;*/ | |||
return proxyConnector == null | |||
? null | |||
: new BeanReplicator().replicateBean( proxyConnector, ProxyConnectorConfiguration.class ); |
@@ -0,0 +1,170 @@ | |||
package org.apache.archiva.admin.repository.proxyconnectorrule; | |||
/* | |||
* Licensed to the Apache Software Foundation (ASF) under one | |||
* or more contributor license agreements. See the NOTICE file | |||
* distributed with this work for additional information | |||
* regarding copyright ownership. The ASF licenses this file | |||
* to you under the Apache License, Version 2.0 (the | |||
* "License"); you may not use this file except in compliance | |||
* with the License. You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, | |||
* software distributed under the License is distributed on an | |||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |||
* KIND, either express or implied. See the License for the | |||
* specific language governing permissions and limitations | |||
* under the License. | |||
*/ | |||
import org.apache.archiva.admin.model.AuditInformation; | |||
import org.apache.archiva.admin.model.RepositoryAdminException; | |||
import org.apache.archiva.admin.model.beans.ProxyConnector; | |||
import org.apache.archiva.admin.model.beans.ProxyConnectorRule; | |||
import org.apache.archiva.admin.model.beans.ProxyConnectorRuleType; | |||
import org.apache.archiva.admin.model.proxyconnectorrule.ProxyConnectorRuleAdmin; | |||
import org.apache.archiva.admin.repository.AbstractRepositoryAdmin; | |||
import org.apache.archiva.configuration.Configuration; | |||
import org.apache.archiva.configuration.ProxyConnectorConfiguration; | |||
import org.apache.archiva.configuration.ProxyConnectorRuleConfiguration; | |||
import org.apache.commons.lang.StringUtils; | |||
import org.slf4j.Logger; | |||
import org.slf4j.LoggerFactory; | |||
import org.springframework.stereotype.Service; | |||
import java.util.ArrayList; | |||
import java.util.Collections; | |||
import java.util.List; | |||
/** | |||
* @author Olivier Lamy | |||
* @since 1.4-M3 | |||
*/ | |||
@Service ( "proxyConnectorRuleAdmin#default" ) | |||
public class DefaultProxyConnectorRuleAdmin | |||
extends AbstractRepositoryAdmin | |||
implements ProxyConnectorRuleAdmin | |||
{ | |||
private Logger log = LoggerFactory.getLogger( getClass() ); | |||
public List<ProxyConnectorRule> getProxyConnectorRules() | |||
throws RepositoryAdminException | |||
{ | |||
List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations = | |||
getArchivaConfiguration().getConfiguration().getProxyConnectorRuleConfigurations(); | |||
if ( proxyConnectorRuleConfigurations.isEmpty() ) | |||
{ | |||
return Collections.emptyList(); | |||
} | |||
List<ProxyConnectorRule> proxyConnectorRules = | |||
new ArrayList<ProxyConnectorRule>( proxyConnectorRuleConfigurations.size() ); | |||
for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : proxyConnectorRuleConfigurations ) | |||
{ | |||
ProxyConnectorRule proxyConnectorRule = new ProxyConnectorRule(); | |||
proxyConnectorRule.setPattern( proxyConnectorRuleConfiguration.getPattern() ); | |||
proxyConnectorRule.setProxyConnectorRuleType( | |||
getProxyConnectorRuleType( proxyConnectorRuleConfiguration.getRuleType() ) ); | |||
for ( ProxyConnectorConfiguration proxyConnectorConfiguration : proxyConnectorRuleConfiguration.getProxyConnectors() ) | |||
{ | |||
ProxyConnector proxyConnector = new ProxyConnector(); | |||
proxyConnector.setSourceRepoId( proxyConnectorConfiguration.getSourceRepoId() ); | |||
proxyConnector.setTargetRepoId( proxyConnectorConfiguration.getTargetRepoId() ); | |||
proxyConnectorRule.getProxyConnectors().add( proxyConnector ); | |||
} | |||
proxyConnectorRules.add( proxyConnectorRule ); | |||
} | |||
return proxyConnectorRules; | |||
} | |||
private ProxyConnectorRuleType getProxyConnectorRuleType( String type ) | |||
{ | |||
if ( StringUtils.equals( ProxyConnectorRuleType.WHITE_LIST.getRuleType(), type ) ) | |||
{ | |||
return ProxyConnectorRuleType.WHITE_LIST; | |||
} | |||
if ( StringUtils.equals( ProxyConnectorRuleType.BLACK_LIST.getRuleType(), type ) ) | |||
{ | |||
return ProxyConnectorRuleType.BLACK_LIST; | |||
} | |||
return null; | |||
} | |||
public void addProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation ) | |||
throws RepositoryAdminException | |||
{ | |||
ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration = new ProxyConnectorRuleConfiguration(); | |||
proxyConnectorRuleConfiguration.setPattern( proxyConnectorRule.getPattern() ); | |||
proxyConnectorRuleConfiguration.setRuleType( proxyConnectorRule.getProxyConnectorRuleType().getRuleType() ); | |||
for ( ProxyConnector proxyConnector : proxyConnectorRule.getProxyConnectors() ) | |||
{ | |||
ProxyConnectorConfiguration proxyConnectorConfiguration = new ProxyConnectorConfiguration(); | |||
proxyConnectorConfiguration.setSourceRepoId( proxyConnector.getSourceRepoId() ); | |||
proxyConnectorConfiguration.setTargetRepoId( proxyConnector.getTargetRepoId() ); | |||
proxyConnectorRuleConfiguration.getProxyConnectors().add( proxyConnectorConfiguration ); | |||
} | |||
Configuration configuration = getArchivaConfiguration().getConfiguration(); | |||
configuration.getProxyConnectorRuleConfigurations().add( proxyConnectorRuleConfiguration ); | |||
saveConfiguration( configuration ); | |||
} | |||
public void deleteProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation ) | |||
throws RepositoryAdminException | |||
{ | |||
Configuration configuration = getArchivaConfiguration().getConfiguration(); | |||
// key is the pattern !! | |||
// recreate a list without the pattern | |||
boolean toSave = false; | |||
List<ProxyConnectorRuleConfiguration> proxyConnectorRuleConfigurations = | |||
new ArrayList<ProxyConnectorRuleConfiguration>(); | |||
for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : configuration.getProxyConnectorRuleConfigurations() ) | |||
{ | |||
if ( StringUtils.equals( proxyConnectorRuleConfiguration.getPattern(), proxyConnectorRule.getPattern() ) ) | |||
{ | |||
toSave = true; | |||
} | |||
else | |||
{ | |||
proxyConnectorRuleConfigurations.add( proxyConnectorRuleConfiguration ); | |||
} | |||
} | |||
if ( toSave ) | |||
{ | |||
configuration.setProxyConnectorRuleConfigurations( proxyConnectorRuleConfigurations ); | |||
saveConfiguration( configuration ); | |||
} | |||
} | |||
public void updateProxyConnectorRule( ProxyConnectorRule proxyConnectorRule, AuditInformation auditInformation ) | |||
throws RepositoryAdminException | |||
{ | |||
Configuration configuration = getArchivaConfiguration().getConfiguration(); | |||
for ( ProxyConnectorRuleConfiguration proxyConnectorRuleConfiguration : configuration.getProxyConnectorRuleConfigurations() ) | |||
{ | |||
if ( StringUtils.equals( proxyConnectorRuleConfiguration.getPattern(), proxyConnectorRule.getPattern() ) ) | |||
{ | |||
List<ProxyConnectorConfiguration> proxyConnectors = | |||
new ArrayList<ProxyConnectorConfiguration>( proxyConnectorRule.getProxyConnectors().size() ); | |||
for ( ProxyConnector proxyConnector : proxyConnectorRule.getProxyConnectors() ) | |||
{ | |||
ProxyConnectorConfiguration proxyConnectorConfiguration = new ProxyConnectorConfiguration(); | |||
proxyConnectorConfiguration.setSourceRepoId( proxyConnector.getSourceRepoId() ); | |||
proxyConnectorConfiguration.setTargetRepoId( proxyConnector.getTargetRepoId() ); | |||
proxyConnectors.add( proxyConnectorConfiguration ); | |||
} | |||
proxyConnectorRuleConfiguration.setProxyConnectors( proxyConnectors ); | |||
saveConfiguration( configuration ); | |||
} | |||
} | |||
} | |||
} |
@@ -25,6 +25,7 @@ import org.apache.archiva.admin.model.beans.ManagedRepository; | |||
import org.apache.archiva.admin.model.beans.RemoteRepository; | |||
import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; | |||
import org.apache.archiva.admin.model.proxyconnector.ProxyConnectorAdmin; | |||
import org.apache.archiva.admin.model.proxyconnectorrule.ProxyConnectorRuleAdmin; | |||
import org.apache.archiva.admin.model.remote.RemoteRepositoryAdmin; | |||
import org.apache.archiva.redback.users.User; | |||
import org.apache.commons.io.FileUtils; | |||
@@ -68,6 +69,9 @@ public abstract class AbstractRepositoryAdminTest | |||
@Inject | |||
protected ProxyConnectorAdmin proxyConnectorAdmin; | |||
@Inject | |||
protected ProxyConnectorRuleAdmin proxyConnectorRuleAdmin; | |||
protected AuditInformation getFakeAuditInformation() | |||
{ | |||
AuditInformation auditInformation = new AuditInformation( getFakeUser(), "archiva-localhost" ); |
@@ -0,0 +1,180 @@ | |||
package org.apache.archiva.admin.repository.proxyconnectorrule; | |||
/* | |||
* Licensed to the Apache Software Foundation (ASF) under one | |||
* or more contributor license agreements. See the NOTICE file | |||
* distributed with this work for additional information | |||
* regarding copyright ownership. The ASF licenses this file | |||
* to you under the Apache License, Version 2.0 (the | |||
* "License"); you may not use this file except in compliance | |||
* with the License. You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, | |||
* software distributed under the License is distributed on an | |||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |||
* KIND, either express or implied. See the License for the | |||
* specific language governing permissions and limitations | |||
* under the License. | |||
*/ | |||
import org.apache.archiva.admin.model.beans.ProxyConnector; | |||
import org.apache.archiva.admin.model.beans.ProxyConnectorRule; | |||
import org.apache.archiva.admin.model.beans.ProxyConnectorRuleType; | |||
import org.apache.archiva.admin.model.beans.RemoteRepository; | |||
import org.apache.archiva.admin.repository.AbstractRepositoryAdminTest; | |||
import org.junit.Test; | |||
import java.util.Arrays; | |||
/** | |||
* @author Olivier Lamy | |||
*/ | |||
public class ProxyConnectorRuleAdminTest | |||
extends AbstractRepositoryAdminTest | |||
{ | |||
@Test | |||
public void addProxyConnectorRule() | |||
throws Exception | |||
{ | |||
ProxyConnector proxyConnector = new ProxyConnector(); | |||
proxyConnector.setSourceRepoId( "snapshots" ); | |||
proxyConnector.setTargetRepoId( "central" ); | |||
ProxyConnectorRule rule = null; | |||
try | |||
{ | |||
int size = proxyConnectorRuleAdmin.getProxyConnectorRules().size(); | |||
assertEquals( 0, size ); | |||
proxyConnectorAdmin.addProxyConnector( proxyConnector, getFakeAuditInformation() ); | |||
rule = new ProxyConnectorRule( "org/apache/maven", ProxyConnectorRuleType.BLACK_LIST, | |||
Arrays.asList( proxyConnector ) ); | |||
proxyConnectorRuleAdmin.addProxyConnectorRule( rule, getFakeAuditInformation() ); | |||
assertEquals( size + 1, proxyConnectorRuleAdmin.getProxyConnectorRules().size() ); | |||
rule = proxyConnectorRuleAdmin.getProxyConnectorRules().get( 0 ); | |||
assertEquals( "org/apache/maven", rule.getPattern() ); | |||
assertEquals( 1, rule.getProxyConnectors().size() ); | |||
assertEquals( "snapshots", rule.getProxyConnectors().get( 0 ).getSourceRepoId() ); | |||
assertEquals( "central", rule.getProxyConnectors().get( 0 ).getTargetRepoId() ); | |||
assertEquals( ProxyConnectorRuleType.BLACK_LIST, rule.getProxyConnectorRuleType() ); | |||
} | |||
finally | |||
{ | |||
proxyConnectorRuleAdmin.deleteProxyConnectorRule( rule, getFakeAuditInformation() ); | |||
proxyConnectorAdmin.deleteProxyConnector( proxyConnector, getFakeAuditInformation() ); | |||
} | |||
} | |||
@Test | |||
public void addProxyConnectorRuleWithTwoProxyConnectors() | |||
throws Exception | |||
{ | |||
RemoteRepository remoteRepository = new RemoteRepository(); | |||
remoteRepository.setId( "archiva" ); | |||
remoteRepository.setName( "archiva rocks" ); | |||
remoteRepository.setUrl( "http://wine.org" ); | |||
remoteRepositoryAdmin.addRemoteRepository( remoteRepository, getFakeAuditInformation() ); | |||
int size = proxyConnectorRuleAdmin.getProxyConnectorRules().size(); | |||
assertEquals( 0, size ); | |||
ProxyConnector proxyConnector1 = new ProxyConnector(); | |||
proxyConnector1.setSourceRepoId( "snapshots" ); | |||
proxyConnector1.setTargetRepoId( "central" ); | |||
proxyConnectorAdmin.addProxyConnector( proxyConnector1, getFakeAuditInformation() ); | |||
ProxyConnector proxyConnector2 = new ProxyConnector(); | |||
proxyConnector2.setSourceRepoId( "snapshots" ); | |||
proxyConnector2.setTargetRepoId( "archiva" ); | |||
proxyConnectorAdmin.addProxyConnector( proxyConnector2, getFakeAuditInformation() ); | |||
ProxyConnectorRule rule = new ProxyConnectorRule( "org/apache/maven", ProxyConnectorRuleType.BLACK_LIST, | |||
Arrays.asList( proxyConnector1, proxyConnector2 ) ); | |||
try | |||
{ | |||
proxyConnectorRuleAdmin.addProxyConnectorRule( rule, getFakeAuditInformation() ); | |||
assertEquals( size + 1, proxyConnectorRuleAdmin.getProxyConnectorRules().size() ); | |||
rule = proxyConnectorRuleAdmin.getProxyConnectorRules().get( 0 ); | |||
assertEquals( "org/apache/maven", rule.getPattern() ); | |||
assertEquals( 2, rule.getProxyConnectors().size() ); | |||
assertEquals( ProxyConnectorRuleType.BLACK_LIST, rule.getProxyConnectorRuleType() ); | |||
} | |||
finally | |||
{ | |||
proxyConnectorRuleAdmin.deleteProxyConnectorRule( rule, getFakeAuditInformation() ); | |||
proxyConnectorAdmin.deleteProxyConnector( proxyConnector1, getFakeAuditInformation() ); | |||
proxyConnectorAdmin.deleteProxyConnector( proxyConnector2, getFakeAuditInformation() ); | |||
remoteRepositoryAdmin.deleteRemoteRepository( remoteRepository.getId(), getFakeAuditInformation() ); | |||
} | |||
} | |||
@Test | |||
public void updateProxyConnectorRuleWithTwoProxyConnectors() | |||
throws Exception | |||
{ | |||
RemoteRepository remoteRepository = new RemoteRepository(); | |||
remoteRepository.setId( "archiva" ); | |||
remoteRepository.setName( "archiva rocks" ); | |||
remoteRepository.setUrl( "http://wine.org" ); | |||
remoteRepositoryAdmin.addRemoteRepository( remoteRepository, getFakeAuditInformation() ); | |||
int size = proxyConnectorRuleAdmin.getProxyConnectorRules().size(); | |||
assertEquals( 0, size ); | |||
ProxyConnector proxyConnector1 = new ProxyConnector(); | |||
proxyConnector1.setSourceRepoId( "snapshots" ); | |||
proxyConnector1.setTargetRepoId( "central" ); | |||
proxyConnectorAdmin.addProxyConnector( proxyConnector1, getFakeAuditInformation() ); | |||
ProxyConnector proxyConnector2 = new ProxyConnector(); | |||
proxyConnector2.setSourceRepoId( "snapshots" ); | |||
proxyConnector2.setTargetRepoId( "archiva" ); | |||
proxyConnectorAdmin.addProxyConnector( proxyConnector2, getFakeAuditInformation() ); | |||
ProxyConnectorRule rule = new ProxyConnectorRule( "org/apache/maven", ProxyConnectorRuleType.BLACK_LIST, | |||
Arrays.asList( proxyConnector1, proxyConnector2 ) ); | |||
try | |||
{ | |||
proxyConnectorRuleAdmin.addProxyConnectorRule( rule, getFakeAuditInformation() ); | |||
assertEquals( size + 1, proxyConnectorRuleAdmin.getProxyConnectorRules().size() ); | |||
rule = proxyConnectorRuleAdmin.getProxyConnectorRules().get( 0 ); | |||
assertEquals( "org/apache/maven", rule.getPattern() ); | |||
assertEquals( 2, rule.getProxyConnectors().size() ); | |||
//assertEquals( "snapshots", rule.getProxyConnectors().get( 0 ).getSourceRepoId() ); | |||
//assertEquals( "central", rule.getProxyConnectors().get( 0 ).getTargetRepoId() ); | |||
assertEquals( ProxyConnectorRuleType.BLACK_LIST, rule.getProxyConnectorRuleType() ); | |||
rule.setProxyConnectors( Arrays.asList( proxyConnector1 ) ); | |||
proxyConnectorRuleAdmin.updateProxyConnectorRule( rule, getFakeAuditInformation() ); | |||
assertEquals( size + 1, proxyConnectorRuleAdmin.getProxyConnectorRules().size() ); | |||
rule = proxyConnectorRuleAdmin.getProxyConnectorRules().get( 0 ); | |||
assertEquals( "org/apache/maven", rule.getPattern() ); | |||
assertEquals( 1, rule.getProxyConnectors().size() ); | |||
assertEquals( "snapshots", rule.getProxyConnectors().get( 0 ).getSourceRepoId() ); | |||
assertEquals( "central", rule.getProxyConnectors().get( 0 ).getTargetRepoId() ); | |||
} | |||
finally | |||
{ | |||
proxyConnectorRuleAdmin.deleteProxyConnectorRule( rule, getFakeAuditInformation() ); | |||
proxyConnectorAdmin.deleteProxyConnector( proxyConnector1, getFakeAuditInformation() ); | |||
proxyConnectorAdmin.deleteProxyConnector( proxyConnector2, getFakeAuditInformation() ); | |||
remoteRepositoryAdmin.deleteRemoteRepository( remoteRepository.getId(), getFakeAuditInformation() ); | |||
} | |||
} | |||
} |
@@ -24,6 +24,7 @@ import org.apache.archiva.admin.model.RepositoryAdminException; | |||
import org.apache.archiva.admin.model.beans.ManagedRepository; | |||
import org.apache.archiva.admin.model.beans.NetworkProxy; | |||
import org.apache.archiva.admin.model.beans.ProxyConnector; | |||
import org.apache.archiva.admin.model.beans.ProxyConnectorRule; | |||
import org.apache.archiva.admin.model.beans.RemoteRepository; | |||
import org.apache.archiva.admin.model.managed.ManagedRepositoryAdmin; | |||
import org.apache.archiva.admin.model.networkproxy.NetworkProxyAdmin; | |||
@@ -51,7 +52,7 @@ public class MockRepoAdmin | |||
implements RemoteRepositoryAdmin, ManagedRepositoryAdmin, ProxyConnectorAdmin, NetworkProxyAdmin | |||
{ | |||
@Inject | |||
@Named( value = "archivaConfiguration#test" ) | |||
@Named (value = "archivaConfiguration#test") | |||
private ArchivaConfiguration archivaConfiguration; | |||
public List<RemoteRepository> getRemoteRepositories() | |||
@@ -280,4 +281,28 @@ public class MockRepoAdmin | |||
? null | |||
: new BeanReplicator().replicateBean( proxyConnectorConfiguration, ProxyConnector.class ); | |||
} | |||
public List<ProxyConnectorRule> getProxyConnectorRules() | |||
throws RepositoryAdminException | |||
{ | |||
return null; | |||
} | |||
public void addProxyConnectorRule( ProxyConnectorRule proxyConnectorRule ) | |||
throws RepositoryAdminException | |||
{ | |||
} | |||
public void deleteProxyConnectorRule( ProxyConnectorRule proxyConnectorRule ) | |||
throws RepositoryAdminException | |||
{ | |||
} | |||
public void updateProxyConnectorRule( ProxyConnectorRule proxyConnectorRule ) | |||
throws RepositoryAdminException | |||
{ | |||
} | |||
} |