aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames William Dumay <jdumay@apache.org>2008-08-19 08:45:45 +0000
committerJames William Dumay <jdumay@apache.org>2008-08-19 08:45:45 +0000
commite5be21e4bbafdc2842e52ed5b403d4bf4e8c1040 (patch)
tree02dfba9e0e744b54e474591f75ad8ef16031fe82
parent62b4332f98badbfb87d532f3edfc6bc79482032c (diff)
downloadarchiva-e5be21e4bbafdc2842e52ed5b403d4bf4e8c1040.tar.gz
archiva-e5be21e4bbafdc2842e52ed5b403d4bf4e8c1040.zip
MRM-541 - convenient way to take Archiva proxies "offline"
* Implemented UI for enabling/disabling proxy connectors * changes to RepositoryProxyConnectors to skip offline connectors git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/MRM-541@686984 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo9
-rw-r--r--archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java15
-rw-r--r--archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyConnector.java13
-rw-r--r--archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java4
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java98
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java98
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/resources/xwork.xml13
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp50
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp50
-rw-r--r--archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp18
10 files changed, 368 insertions, 0 deletions
diff --git a/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo b/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
index b7523ef13..1af52dd63 100644
--- a/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
+++ b/archiva-modules/archiva-base/archiva-configuration/src/main/mdo/configuration.mdo
@@ -725,6 +725,15 @@
<multiplicity>*</multiplicity>
</association>
</field>
+ <field>
+ <name>disabled</name>
+ <version>1.2+</version>
+ <description>
+ If the the repository proxy connector is disabled or not
+ </description>
+ <type>boolean</type>
+ <defaultValue>false</defaultValue>
+ </field>
</fields>
<codeSegments>
<codeSegment>
diff --git a/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java b/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
index 2c5da3ebf..9c81b53ed 100644
--- a/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
+++ b/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/DefaultRepositoryProxyConnectors.java
@@ -151,6 +151,11 @@ public class DefaultRepositoryProxyConnectors
Map<String, Exception> previousExceptions = new LinkedHashMap<String, Exception>();
for ( ProxyConnector connector : connectors )
{
+ if (connector.isDisabled())
+ {
+ continue;
+ }
+
RemoteRepositoryContent targetRepository = connector.getTargetRepository();
requestProperties.setProperty( "remoteRepositoryId", targetRepository.getId() );
@@ -221,6 +226,11 @@ public class DefaultRepositoryProxyConnectors
List<ProxyConnector> connectors = getProxyConnectors( repository );
for ( ProxyConnector connector : connectors )
{
+ if (connector.isDisabled())
+ {
+ continue;
+ }
+
RemoteRepositoryContent targetRepository = connector.getTargetRepository();
requestProperties.setProperty( "remoteRepositoryId", targetRepository.getId() );
@@ -280,6 +290,11 @@ public class DefaultRepositoryProxyConnectors
List<ProxyConnector> connectors = getProxyConnectors( repository );
for ( ProxyConnector connector : connectors )
{
+ if (connector.isDisabled())
+ {
+ continue;
+ }
+
RemoteRepositoryContent targetRepository = connector.getTargetRepository();
File localRepoFile = toLocalRepoFile( repository, targetRepository, logicalPath );
diff --git a/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyConnector.java b/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyConnector.java
index 8d59d7d6b..8bf9d4548 100644
--- a/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyConnector.java
+++ b/archiva-modules/archiva-base/archiva-proxy/src/main/java/org/apache/maven/archiva/proxy/ProxyConnector.java
@@ -49,6 +49,18 @@ public class ProxyConnector
private int order;
private Map<String, String> policies;
+
+ private boolean disabled;
+
+ public boolean isDisabled()
+ {
+ return disabled;
+ }
+
+ public void setDisabled(boolean disabled)
+ {
+ this.disabled = disabled;
+ }
public List<String> getBlacklist()
{
@@ -110,6 +122,7 @@ public class ProxyConnector
this.proxyId = proxyId;
}
+ @Override
public String toString()
{
StringBuffer sb = new StringBuffer();
diff --git a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java
index 5aee6b2cc..92f944710 100644
--- a/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java
+++ b/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/connector/RepositoryConnector.java
@@ -39,4 +39,8 @@ public interface RepositoryConnector
public List<String> getBlacklist();
public List<String> getWhitelist();
+
+ public boolean isDisabled();
+
+ public void setDisabled(boolean disabled);
}
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java
new file mode 100644
index 000000000..5ae3a4ddf
--- /dev/null
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/DisableProxyConnectorAction.java
@@ -0,0 +1,98 @@
+package org.apache.maven.archiva.web.action.admin.connectors.proxy;
+
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
+
+/*
+ * 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.
+ */
+
+/**
+ * DisableProxyConnectorAction
+ *
+ * @plexus.component role="com.opensymphony.xwork.Action" role-hint="disableProxyConnectorAction"
+ */
+public class DisableProxyConnectorAction extends AbstractProxyConnectorAction
+{
+ private String source;
+
+ private String target;
+
+ private ProxyConnectorConfiguration proxyConfig;
+
+ public String confirmDisable()
+ {
+ this.proxyConfig = findProxyConnector( source, target );
+
+ // Not set? Then there is nothing to delete.
+ if ( this.proxyConfig == null )
+ {
+ addActionError( "Unable to disable proxy configuration, configuration with source [" + source
+ + "], and target [" + target + "] does not exist." );
+ return ERROR;
+ }
+
+ return INPUT;
+ }
+
+ public String disable()
+ {
+ this.proxyConfig = findProxyConnector( source, target );
+
+ // Not set? Then there is nothing to delete.
+ if ( this.proxyConfig == null )
+ {
+ addActionError( "Unable to disable proxy configuration, configuration with source [" + source
+ + "], and target [" + target + "] does not exist." );
+ return ERROR;
+ }
+
+ if ( hasActionErrors() )
+ {
+ return ERROR;
+ }
+
+ proxyConfig.setDisabled(true);
+
+ addActionMessage( "Successfully disabled proxy connector [" + source + " , " + target + " ]" );
+
+ setSource( null );
+ setTarget( null );
+
+ return saveConfiguration();
+ }
+
+ public String getSource()
+ {
+ return source;
+ }
+
+ public void setSource(String source)
+ {
+ this.source = source;
+ }
+
+ public String getTarget()
+ {
+ return target;
+ }
+
+ public void setTarget(String target)
+ {
+ this.target = target;
+ }
+}
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java
new file mode 100644
index 000000000..0b7bee4bb
--- /dev/null
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/connectors/proxy/EnableProxyConnectorAction.java
@@ -0,0 +1,98 @@
+package org.apache.maven.archiva.web.action.admin.connectors.proxy;
+
+import org.apache.maven.archiva.configuration.ProxyConnectorConfiguration;
+
+/*
+ * 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.
+ */
+
+/**
+ * EnableProxyConnectorAction
+ *
+ * @plexus.component role="com.opensymphony.xwork.Action" role-hint="enableProxyConnectorAction"
+ */
+public class EnableProxyConnectorAction extends AbstractProxyConnectorAction
+{
+ private String source;
+
+ private String target;
+
+ private ProxyConnectorConfiguration proxyConfig;
+
+ public String confirmEnable()
+ {
+ this.proxyConfig = findProxyConnector( source, target );
+
+ // Not set? Then there is nothing to delete.
+ if ( this.proxyConfig == null )
+ {
+ addActionError( "Unable to enable proxy configuration, configuration with source [" + source
+ + "], and target [" + target + "] does not exist." );
+ return ERROR;
+ }
+
+ return INPUT;
+ }
+
+ public String enable()
+ {
+ this.proxyConfig = findProxyConnector( source, target );
+
+ // Not set? Then there is nothing to delete.
+ if ( this.proxyConfig == null )
+ {
+ addActionError( "Unable to enabled proxy configuration, configuration with source [" + source
+ + "], and target [" + target + "] does not exist." );
+ return ERROR;
+ }
+
+ if ( hasActionErrors() )
+ {
+ return ERROR;
+ }
+
+ proxyConfig.setDisabled(true);
+
+ addActionMessage( "Successfully enabled proxy connector [" + source + " , " + target + " ]" );
+
+ setSource( null );
+ setTarget( null );
+
+ return saveConfiguration();
+ }
+
+ public String getSource()
+ {
+ return source;
+ }
+
+ public void setSource(String source)
+ {
+ this.source = source;
+ }
+
+ public String getTarget()
+ {
+ return target;
+ }
+
+ public void setTarget(String target)
+ {
+ this.target = target;
+ }
+}
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/xwork.xml b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/xwork.xml
index 21d0363f6..88297d58a 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/resources/xwork.xml
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/resources/xwork.xml
@@ -377,6 +377,19 @@
<result name="success" type="redirect-action">proxyConnectors</result>
<interceptor-ref name="configuredPrepareParamsStack"/>
</action>
+
+ <action name="enableProxyConnector" class="enableProxyConnectorAction" method="confirm">
+ <result name="input">/WEB-INF/jsp/admin/enableProxyConnector.jsp</result>
+ <result name="success" type="redirect-action">proxyConnectors</result>
+ <interceptor-ref name="configuredPrepareParamsStack"/>
+ </action>
+
+ <action name="disableProxyConnector" class="disableProxyConnectorAction" method="confirm">
+ <result name="input">/WEB-INF/jsp/admin/disableProxyConnector.jsp</result>
+ <result name="success" type="redirect-action">proxyConnectors</result>
+ <interceptor-ref name="configuredPrepareParamsStack"/>
+ </action>
+
<!-- .\ NETWORK PROXIES \._________________________________________ -->
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp
new file mode 100644
index 000000000..0906be58a
--- /dev/null
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/disableProxyConnector.jsp
@@ -0,0 +1,50 @@
+<%--
+ ~ 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.
+ --%>
+
+<%@ taglib prefix="ww" uri="/webwork" %>
+
+<html>
+<head>
+ <title>Admin: Disable Proxy Connector</title>
+ <ww:head/>
+</head>
+
+<body>
+
+<h1>Admin: Disable Proxy Connector</h1>
+
+<ww:actionerror/>
+
+<div id="contentArea">
+
+ <h2>Disable Proxy Connector</h2>
+
+ <p>
+ Are you sure you want to disable proxy connector <code>[ ${source} , ${target} ]</code> ?
+ </p>
+
+ <ww:form method="post" action="disableProxyConnector!disable" namespace="/admin" validate="true">
+ <ww:hidden name="target"/>
+ <ww:hidden name="source"/>
+ <ww:submit value="Disable"/>
+ </ww:form>
+</div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp
new file mode 100644
index 000000000..56750080f
--- /dev/null
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/enableProxyConnector.jsp
@@ -0,0 +1,50 @@
+<%--
+ ~ 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.
+ --%>
+
+<%@ taglib prefix="ww" uri="/webwork" %>
+
+<html>
+<head>
+ <title>Admin: Enable Proxy Connector</title>
+ <ww:head/>
+</head>
+
+<body>
+
+<h1>Admin: Enable Proxy Connector</h1>
+
+<ww:actionerror/>
+
+<div id="contentArea">
+
+ <h2>Enable Proxy Connector</h2>
+
+ <p>
+ Are you sure you want to enable proxy connector <code>[ ${source} , ${target} ]</code> ?
+ </p>
+
+ <ww:form method="post" action="enableProxyConnector!enable" namespace="/admin" validate="true">
+ <ww:hidden name="target"/>
+ <ww:hidden name="source"/>
+ <ww:submit value="Enable"/>
+ </ww:form>
+</div>
+
+</body>
+</html> \ No newline at end of file
diff --git a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp
index 78963a1fa..cbd96026e 100644
--- a/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp
+++ b/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/proxyConnectors.jsp
@@ -105,6 +105,24 @@
<ww:param name="source" value="%{'${connector.sourceRepoId}'}"/>
<ww:param name="target" value="%{'${connector.targetRepoId}'}"/>
</ww:url>
+ <ww:url id="enableProxyConnectorUrl" action="enableProxyConnector" method="confirmEnable">
+ <ww:param name="source" value="%{'${connector.sourceRepoId}'}"/>
+ <ww:param name="target" value="%{'${connector.targetRepoId}'}"/>
+ </ww:url>
+ <ww:url id="disableProxyConnectorUrl" action="disableProxyConnector" method="confirmDisable">
+ <ww:param name="source" value="%{'${connector.sourceRepoId}'}"/>
+ <ww:param name="target" value="%{'${connector.targetRepoId}'}"/>
+ </ww:url>
+ <c:if test="${connector.disabled}">
+ <ww:a href="%{enableProxyConnectorUrl}" label="Enable Proxy Connector">
+ Enable
+ </ww:a>
+ </c:if>
+ <c:if test="${connector.disabled == false}">
+ <ww:a href="%{disableProxyConnectorUrl}" title="Disable Proxy Connector">
+ Disable
+ </ww:a>
+ </c:if>
<c:if test="${pc.count > 1}">
<ww:a href="%{sortUpProxyConnectorUrl}" cssClass="up" title="Move Proxy Connector Up">
<img src="${iconUpUrl}"/>