<HTML>
<BODY BGCOLOR="white">
<PRE>
<FONT color="green">001</FONT>    package org.apache.archiva.rest.api.services;<a name="line.1"></a>
<FONT color="green">002</FONT>    /*<a name="line.2"></a>
<FONT color="green">003</FONT>     * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
<FONT color="green">004</FONT>     * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
<FONT color="green">005</FONT>     * distributed with this work for additional information<a name="line.5"></a>
<FONT color="green">006</FONT>     * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
<FONT color="green">007</FONT>     * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
<FONT color="green">008</FONT>     * "License"); you may not use this file except in compliance<a name="line.8"></a>
<FONT color="green">009</FONT>     * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
<FONT color="green">010</FONT>     *<a name="line.10"></a>
<FONT color="green">011</FONT>     *   http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
<FONT color="green">012</FONT>     *<a name="line.12"></a>
<FONT color="green">013</FONT>     * Unless required by applicable law or agreed to in writing,<a name="line.13"></a>
<FONT color="green">014</FONT>     * software distributed under the License is distributed on an<a name="line.14"></a>
<FONT color="green">015</FONT>     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY<a name="line.15"></a>
<FONT color="green">016</FONT>     * KIND, either express or implied.  See the License for the<a name="line.16"></a>
<FONT color="green">017</FONT>     * specific language governing permissions and limitations<a name="line.17"></a>
<FONT color="green">018</FONT>     * under the License.<a name="line.18"></a>
<FONT color="green">019</FONT>     */<a name="line.19"></a>
<FONT color="green">020</FONT>    <a name="line.20"></a>
<FONT color="green">021</FONT>    import org.apache.archiva.admin.model.beans.ProxyConnector;<a name="line.21"></a>
<FONT color="green">022</FONT>    import org.apache.archiva.rest.api.model.PolicyInformation;<a name="line.22"></a>
<FONT color="green">023</FONT>    import org.apache.archiva.security.common.ArchivaRoleConstants;<a name="line.23"></a>
<FONT color="green">024</FONT>    import org.apache.archiva.redback.authorization.RedbackAuthorization;<a name="line.24"></a>
<FONT color="green">025</FONT>    <a name="line.25"></a>
<FONT color="green">026</FONT>    import javax.ws.rs.Consumes;<a name="line.26"></a>
<FONT color="green">027</FONT>    import javax.ws.rs.GET;<a name="line.27"></a>
<FONT color="green">028</FONT>    import javax.ws.rs.POST;<a name="line.28"></a>
<FONT color="green">029</FONT>    import javax.ws.rs.Path;<a name="line.29"></a>
<FONT color="green">030</FONT>    import javax.ws.rs.Produces;<a name="line.30"></a>
<FONT color="green">031</FONT>    import javax.ws.rs.QueryParam;<a name="line.31"></a>
<FONT color="green">032</FONT>    import javax.ws.rs.core.MediaType;<a name="line.32"></a>
<FONT color="green">033</FONT>    import java.util.List;<a name="line.33"></a>
<FONT color="green">034</FONT>    <a name="line.34"></a>
<FONT color="green">035</FONT>    /**<a name="line.35"></a>
<FONT color="green">036</FONT>     * &lt;b&gt;No update method for changing source and target here as id is : sourceRepoId and targetRepoId, use delete then add.&lt;/b&gt;<a name="line.36"></a>
<FONT color="green">037</FONT>     *<a name="line.37"></a>
<FONT color="green">038</FONT>     * @author Olivier Lamy<a name="line.38"></a>
<FONT color="green">039</FONT>     * @since 1.4-M1<a name="line.39"></a>
<FONT color="green">040</FONT>     */<a name="line.40"></a>
<FONT color="green">041</FONT>    @Path( "/proxyConnectorService/" )<a name="line.41"></a>
<FONT color="green">042</FONT>    public interface ProxyConnectorService<a name="line.42"></a>
<FONT color="green">043</FONT>    {<a name="line.43"></a>
<FONT color="green">044</FONT>        @Path( "getProxyConnectors" )<a name="line.44"></a>
<FONT color="green">045</FONT>        @GET<a name="line.45"></a>
<FONT color="green">046</FONT>        @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )<a name="line.46"></a>
<FONT color="green">047</FONT>        @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )<a name="line.47"></a>
<FONT color="green">048</FONT>        List&lt;ProxyConnector&gt; getProxyConnectors()<a name="line.48"></a>
<FONT color="green">049</FONT>            throws ArchivaRestServiceException;<a name="line.49"></a>
<FONT color="green">050</FONT>    <a name="line.50"></a>
<FONT color="green">051</FONT>        @Path( "getProxyConnector" )<a name="line.51"></a>
<FONT color="green">052</FONT>        @GET<a name="line.52"></a>
<FONT color="green">053</FONT>        @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )<a name="line.53"></a>
<FONT color="green">054</FONT>        @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )<a name="line.54"></a>
<FONT color="green">055</FONT>        ProxyConnector getProxyConnector( @QueryParam( "sourceRepoId" ) String sourceRepoId,<a name="line.55"></a>
<FONT color="green">056</FONT>                                          @QueryParam( "targetRepoId" ) String targetRepoId )<a name="line.56"></a>
<FONT color="green">057</FONT>            throws ArchivaRestServiceException;<a name="line.57"></a>
<FONT color="green">058</FONT>    <a name="line.58"></a>
<FONT color="green">059</FONT>        @Path( "addProxyConnector" )<a name="line.59"></a>
<FONT color="green">060</FONT>        @POST<a name="line.60"></a>
<FONT color="green">061</FONT>        @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )<a name="line.61"></a>
<FONT color="green">062</FONT>        @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )<a name="line.62"></a>
<FONT color="green">063</FONT>        @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )<a name="line.63"></a>
<FONT color="green">064</FONT>        Boolean addProxyConnector( ProxyConnector proxyConnector )<a name="line.64"></a>
<FONT color="green">065</FONT>            throws ArchivaRestServiceException;<a name="line.65"></a>
<FONT color="green">066</FONT>    <a name="line.66"></a>
<FONT color="green">067</FONT>        @Path( "deleteProxyConnector" )<a name="line.67"></a>
<FONT color="green">068</FONT>        @POST<a name="line.68"></a>
<FONT color="green">069</FONT>        @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )<a name="line.69"></a>
<FONT color="green">070</FONT>        @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )<a name="line.70"></a>
<FONT color="green">071</FONT>        @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )<a name="line.71"></a>
<FONT color="green">072</FONT>        Boolean deleteProxyConnector( ProxyConnector proxyConnector )<a name="line.72"></a>
<FONT color="green">073</FONT>            throws ArchivaRestServiceException;<a name="line.73"></a>
<FONT color="green">074</FONT>    <a name="line.74"></a>
<FONT color="green">075</FONT>        /**<a name="line.75"></a>
<FONT color="green">076</FONT>         * @since 1.4-M3<a name="line.76"></a>
<FONT color="green">077</FONT>         */<a name="line.77"></a>
<FONT color="green">078</FONT>        @Path( "removeProxyConnector" )<a name="line.78"></a>
<FONT color="green">079</FONT>        @GET<a name="line.79"></a>
<FONT color="green">080</FONT>        @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )<a name="line.80"></a>
<FONT color="green">081</FONT>        @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )<a name="line.81"></a>
<FONT color="green">082</FONT>        Boolean removeProxyConnector( @QueryParam( "sourceRepoId" ) String sourceRepoId,<a name="line.82"></a>
<FONT color="green">083</FONT>                                      @QueryParam( "targetRepoId" ) String targetRepoId )<a name="line.83"></a>
<FONT color="green">084</FONT>            throws ArchivaRestServiceException;<a name="line.84"></a>
<FONT color="green">085</FONT>    <a name="line.85"></a>
<FONT color="green">086</FONT>        /**<a name="line.86"></a>
<FONT color="green">087</FONT>         * &lt;b&gt;only for enabled/disable or changing bean values except target/source&lt;/b&gt;<a name="line.87"></a>
<FONT color="green">088</FONT>         *<a name="line.88"></a>
<FONT color="green">089</FONT>         * @param proxyConnector<a name="line.89"></a>
<FONT color="green">090</FONT>         * @return<a name="line.90"></a>
<FONT color="green">091</FONT>         */<a name="line.91"></a>
<FONT color="green">092</FONT>        @Path( "updateProxyConnector" )<a name="line.92"></a>
<FONT color="green">093</FONT>        @POST<a name="line.93"></a>
<FONT color="green">094</FONT>        @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )<a name="line.94"></a>
<FONT color="green">095</FONT>        @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN } )<a name="line.95"></a>
<FONT color="green">096</FONT>        @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )<a name="line.96"></a>
<FONT color="green">097</FONT>        Boolean updateProxyConnector( ProxyConnector proxyConnector )<a name="line.97"></a>
<FONT color="green">098</FONT>            throws ArchivaRestServiceException;<a name="line.98"></a>
<FONT color="green">099</FONT>    <a name="line.99"></a>
<FONT color="green">100</FONT>        @Path( "allPolicies" )<a name="line.100"></a>
<FONT color="green">101</FONT>        @GET<a name="line.101"></a>
<FONT color="green">102</FONT>        @Consumes( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )<a name="line.102"></a>
<FONT color="green">103</FONT>        @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )<a name="line.103"></a>
<FONT color="green">104</FONT>        @RedbackAuthorization( permissions = ArchivaRoleConstants.OPERATION_MANAGE_CONFIGURATION )<a name="line.104"></a>
<FONT color="green">105</FONT>        List&lt;PolicyInformation&gt; getAllPolicyInformations()<a name="line.105"></a>
<FONT color="green">106</FONT>            throws ArchivaRestServiceException;<a name="line.106"></a>
<FONT color="green">107</FONT>    <a name="line.107"></a>
<FONT color="green">108</FONT>    <a name="line.108"></a>
<FONT color="green">109</FONT>    }<a name="line.109"></a>




























































</PRE>
</BODY>
</HTML>