mirror of https://github.com/apache/archiva.git
[MRM-1490] REST services : network proxy services tru rest
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1166587 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
84775832fd
commit
d52d2dc6d7
|
@ -0,0 +1,179 @@
|
|||
package org.apache.archiva.rest.api.model;
|
||||
/*
|
||||
* 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;
|
||||
|
||||
/**
|
||||
* @author Olivier Lamy
|
||||
* @since 1.4
|
||||
*/
|
||||
@XmlRootElement( name = "networkProxy" )
|
||||
public class NetworkProxy
|
||||
implements Serializable
|
||||
{
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* The network protocol to use with this proxy: "http", "socks-4"
|
||||
* .
|
||||
*/
|
||||
private String protocol = "http";
|
||||
|
||||
/**
|
||||
* The proxy host.
|
||||
*/
|
||||
private String host;
|
||||
|
||||
/**
|
||||
* The proxy port.
|
||||
*/
|
||||
private int port = 8080;
|
||||
|
||||
/**
|
||||
* The proxy user.
|
||||
*/
|
||||
private String username;
|
||||
|
||||
/**
|
||||
* The proxy password.
|
||||
*/
|
||||
private String password;
|
||||
|
||||
public NetworkProxy()
|
||||
{
|
||||
// no op
|
||||
}
|
||||
|
||||
public NetworkProxy( String id, String protocol, String host, int port, String username, String password )
|
||||
{
|
||||
this.id = id;
|
||||
this.protocol = protocol;
|
||||
this.host = host;
|
||||
this.port = port;
|
||||
this.username = username;
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
public String getId()
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId( String id )
|
||||
{
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getProtocol()
|
||||
{
|
||||
return protocol;
|
||||
}
|
||||
|
||||
public void setProtocol( String protocol )
|
||||
{
|
||||
this.protocol = protocol;
|
||||
}
|
||||
|
||||
public String getHost()
|
||||
{
|
||||
return host;
|
||||
}
|
||||
|
||||
public void setHost( String host )
|
||||
{
|
||||
this.host = host;
|
||||
}
|
||||
|
||||
public int getPort()
|
||||
{
|
||||
return port;
|
||||
}
|
||||
|
||||
public void setPort( int port )
|
||||
{
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public String getUsername()
|
||||
{
|
||||
return username;
|
||||
}
|
||||
|
||||
public void setUsername( String username )
|
||||
{
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
public String getPassword()
|
||||
{
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword( String password )
|
||||
{
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object o )
|
||||
{
|
||||
if ( this == o )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
if ( o == null || getClass() != o.getClass() )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
NetworkProxy that = (NetworkProxy) o;
|
||||
|
||||
if ( id != null ? !id.equals( that.id ) : that.id != null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
int result = 17;
|
||||
result = 37 * result + ( id != null ? id.hashCode() : 0 );
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
sb.append( "NetworkProxy" );
|
||||
sb.append( "{id='" ).append( id ).append( '\'' );
|
||||
sb.append( ", protocol='" ).append( protocol ).append( '\'' );
|
||||
sb.append( ", host='" ).append( host ).append( '\'' );
|
||||
sb.append( ", port=" ).append( port );
|
||||
sb.append( ", username='" ).append( username ).append( '\'' );
|
||||
sb.append( ", password='" ).append( password ).append( '\'' );
|
||||
sb.append( '}' );
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
package org.apache.archiva.rest.api.services;
|
||||
/*
|
||||
* 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.repository.RepositoryAdminException;
|
||||
import org.apache.archiva.rest.api.model.NetworkProxy;
|
||||
import org.apache.archiva.security.common.ArchivaRoleConstants;
|
||||
import org.codehaus.plexus.redback.authorization.RedbackAuthorization;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
import javax.ws.rs.GET;
|
||||
import javax.ws.rs.POST;
|
||||
import javax.ws.rs.Path;
|
||||
import javax.ws.rs.PathParam;
|
||||
import javax.ws.rs.Produces;
|
||||
import javax.ws.rs.core.MediaType;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Olivier Lamy
|
||||
* @since 1.4
|
||||
*/
|
||||
@Path( "/networkProxyService/" )
|
||||
public interface NetworkProxyService
|
||||
{
|
||||
@Path( "getNetworkProxies" )
|
||||
@GET
|
||||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
|
||||
@RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
|
||||
List<NetworkProxy> getNetworkProxies()
|
||||
throws RepositoryAdminException;
|
||||
|
||||
@Path( "getNetworkProxy/{networkProxyId}" )
|
||||
@GET
|
||||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
|
||||
@RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
|
||||
NetworkProxy getNetworkProxy( @PathParam( "networkProxyId" ) String networkProxyId )
|
||||
throws RepositoryAdminException;
|
||||
|
||||
@Path( "addNetworkProxy" )
|
||||
@POST
|
||||
@Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
|
||||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
|
||||
@RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
|
||||
void addNetworkProxy( NetworkProxy networkProxy )
|
||||
throws RepositoryAdminException;
|
||||
|
||||
@Path( "updateNetworkProxy" )
|
||||
@POST
|
||||
@Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
|
||||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
|
||||
@RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
|
||||
void updateNetworkProxy( NetworkProxy networkProxy )
|
||||
throws RepositoryAdminException;
|
||||
|
||||
@Path( "deleteNetworkProxy/{networkProxyId}" )
|
||||
@GET
|
||||
@Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )
|
||||
@RedbackAuthorization( permission = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )
|
||||
Boolean deleteNetworkProxy( @PathParam( "networkProxyId" ) String networkProxyId )
|
||||
throws RepositoryAdminException;
|
||||
}
|
|
@ -0,0 +1,102 @@
|
|||
package org.apache.archiva.rest.services;
|
||||
/*
|
||||
* 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 net.sf.beanlib.provider.replicator.BeanReplicator;
|
||||
import org.apache.archiva.admin.repository.RepositoryAdminException;
|
||||
import org.apache.archiva.admin.repository.networkproxy.NetworkProxyAdmin;
|
||||
import org.apache.archiva.rest.api.model.NetworkProxy;
|
||||
import org.apache.archiva.rest.api.services.NetworkProxyService;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Olivier Lamy
|
||||
*/
|
||||
@Service( "networkProxyService#rest" )
|
||||
public class DefaultNetworkProxyService
|
||||
extends AbstractRestService
|
||||
implements NetworkProxyService
|
||||
{
|
||||
@Inject
|
||||
private NetworkProxyAdmin networkProxyAdmin;
|
||||
|
||||
public List<NetworkProxy> getNetworkProxies()
|
||||
throws RepositoryAdminException
|
||||
{
|
||||
List<NetworkProxy> networkProxies = new ArrayList<NetworkProxy>();
|
||||
for ( org.apache.archiva.admin.repository.networkproxy.NetworkProxy networkProxy : networkProxyAdmin.getNetworkProxies() )
|
||||
{
|
||||
networkProxies.add( new BeanReplicator().replicateBean( networkProxy, NetworkProxy.class ) );
|
||||
}
|
||||
return networkProxies;
|
||||
}
|
||||
|
||||
public NetworkProxy getNetworkProxy( String networkProxyId )
|
||||
throws RepositoryAdminException
|
||||
{
|
||||
org.apache.archiva.admin.repository.networkproxy.NetworkProxy networkProxy =
|
||||
networkProxyAdmin.getNetworkProxy( networkProxyId );
|
||||
return networkProxy == null ? null : new BeanReplicator().replicateBean( networkProxy, NetworkProxy.class );
|
||||
}
|
||||
|
||||
public void addNetworkProxy( NetworkProxy networkProxy )
|
||||
throws RepositoryAdminException
|
||||
{
|
||||
if ( networkProxy == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
getNetworkProxyAdmin().addNetworkProxy( new BeanReplicator().replicateBean( networkProxy,
|
||||
org.apache.archiva.admin.repository.networkproxy.NetworkProxy.class ),
|
||||
getAuditInformation() );
|
||||
}
|
||||
|
||||
public void updateNetworkProxy( NetworkProxy networkProxy )
|
||||
throws RepositoryAdminException
|
||||
{
|
||||
if ( networkProxy == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
getNetworkProxyAdmin().updateNetworkProxy( new BeanReplicator().replicateBean( networkProxy,
|
||||
org.apache.archiva.admin.repository.networkproxy.NetworkProxy.class ),
|
||||
getAuditInformation() );
|
||||
}
|
||||
|
||||
public Boolean deleteNetworkProxy( String networkProxyId )
|
||||
throws RepositoryAdminException
|
||||
{
|
||||
getNetworkProxyAdmin().deleteNetworkProxy( networkProxyId, getAuditInformation() );
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
public NetworkProxyAdmin getNetworkProxyAdmin()
|
||||
{
|
||||
return networkProxyAdmin;
|
||||
}
|
||||
|
||||
public void setNetworkProxyAdmin( NetworkProxyAdmin networkProxyAdmin )
|
||||
{
|
||||
this.networkProxyAdmin = networkProxyAdmin;
|
||||
}
|
||||
}
|
|
@ -54,6 +54,7 @@
|
|||
<ref bean="remoteRepositoriesService#rest"/>
|
||||
<ref bean="repositoryGroupService#rest"/>
|
||||
<ref bean="proxyConnectorService#rest"/>
|
||||
<ref bean="networkProxyService#rest"/>
|
||||
</jaxrs:serviceBeans>
|
||||
|
||||
<jaxrs:outInterceptors>
|
||||
|
|
|
@ -21,6 +21,7 @@ package org.apache.archiva.rest.services;
|
|||
|
||||
import org.apache.archiva.rest.api.model.ManagedRepository;
|
||||
import org.apache.archiva.rest.api.services.ManagedRepositoriesService;
|
||||
import org.apache.archiva.rest.api.services.NetworkProxyService;
|
||||
import org.apache.archiva.rest.api.services.PingService;
|
||||
import org.apache.archiva.rest.api.services.ProxyConnectorService;
|
||||
import org.apache.archiva.rest.api.services.RemoteRepositoriesService;
|
||||
|
@ -93,6 +94,17 @@ public abstract class AbstractArchivaRestTest
|
|||
return service;
|
||||
}
|
||||
|
||||
protected NetworkProxyService getNetworkProxyService()
|
||||
{
|
||||
NetworkProxyService service =
|
||||
JAXRSClientFactory.create( "http://localhost:" + port + "/services/archivaServices/",
|
||||
NetworkProxyService.class );
|
||||
|
||||
WebClient.client( service ).header( "Authorization", authorizationHeader );
|
||||
WebClient.getConfig( service ).getHttpConduit().getClient().setReceiveTimeout( 300000 );
|
||||
return service;
|
||||
}
|
||||
|
||||
protected ManagedRepository getTestManagedRepository()
|
||||
{
|
||||
String location = new File( FileUtil.getBasedir(), "target/test-repo" ).getAbsolutePath();
|
||||
|
|
|
@ -0,0 +1,94 @@
|
|||
package org.apache.archiva.rest.services;
|
||||
/*
|
||||
* 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.rest.api.model.NetworkProxy;
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* @author Olivier Lamy
|
||||
*/
|
||||
public class NetworkProxyServiceTest
|
||||
extends AbstractArchivaRestTest
|
||||
{
|
||||
@Test
|
||||
public void addAndDelete()
|
||||
throws Exception
|
||||
{
|
||||
assertNotNull( getNetworkProxyService().getNetworkProxies() );
|
||||
assertTrue( getNetworkProxyService().getNetworkProxies().isEmpty() );
|
||||
|
||||
getNetworkProxyService().addNetworkProxy( getNetworkProxy( "foo" ) );
|
||||
|
||||
assertNotNull( getNetworkProxyService().getNetworkProxies() );
|
||||
assertFalse( getNetworkProxyService().getNetworkProxies().isEmpty() );
|
||||
assertEquals( 1, getNetworkProxyService().getNetworkProxies().size() );
|
||||
|
||||
getNetworkProxyService().deleteNetworkProxy( "foo" );
|
||||
|
||||
assertNotNull( getNetworkProxyService().getNetworkProxies() );
|
||||
assertTrue( getNetworkProxyService().getNetworkProxies().isEmpty() );
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void addAndUpdateAndDelete()
|
||||
throws Exception
|
||||
{
|
||||
assertNotNull( getNetworkProxyService().getNetworkProxies() );
|
||||
assertTrue( getNetworkProxyService().getNetworkProxies().isEmpty() );
|
||||
|
||||
getNetworkProxyService().addNetworkProxy( getNetworkProxy( "foo" ) );
|
||||
|
||||
assertNotNull( getNetworkProxyService().getNetworkProxies() );
|
||||
assertFalse( getNetworkProxyService().getNetworkProxies().isEmpty() );
|
||||
assertEquals( 1, getNetworkProxyService().getNetworkProxies().size() );
|
||||
|
||||
NetworkProxy networkProxy = getNetworkProxy( "foo" );
|
||||
networkProxy.setHost( "http://toto.com" );
|
||||
networkProxy.setPassword( "newpasswd" );
|
||||
networkProxy.setUsername( "newusername" );
|
||||
networkProxy.setPort( 9191 );
|
||||
|
||||
getNetworkProxyService().updateNetworkProxy( networkProxy );
|
||||
|
||||
assertEquals( networkProxy.getHost(), getNetworkProxyService().getNetworkProxy( "foo" ).getHost() );
|
||||
assertEquals( networkProxy.getPassword(), getNetworkProxyService().getNetworkProxy( "foo" ).getPassword() );
|
||||
assertEquals( networkProxy.getUsername(), getNetworkProxyService().getNetworkProxy( "foo" ).getUsername() );
|
||||
assertEquals( networkProxy.getPort(), getNetworkProxyService().getNetworkProxy( "foo" ).getPort() );
|
||||
|
||||
getNetworkProxyService().deleteNetworkProxy( "foo" );
|
||||
|
||||
assertNotNull( getNetworkProxyService().getNetworkProxies() );
|
||||
assertTrue( getNetworkProxyService().getNetworkProxies().isEmpty() );
|
||||
|
||||
}
|
||||
|
||||
NetworkProxy getNetworkProxy( String id )
|
||||
{
|
||||
|
||||
NetworkProxy networkProxy = new NetworkProxy();
|
||||
networkProxy.setId( id );
|
||||
networkProxy.setHost( "http://foo.com" );
|
||||
networkProxy.setPassword( "passwd" );
|
||||
networkProxy.setUsername( "username" );
|
||||
networkProxy.setPort( 9090 );
|
||||
return networkProxy;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue