From 3700ab19c6a99f293185dd6933b393855231f83f Mon Sep 17 00:00:00 2001 From: Jon Cox Date: Sat, 23 Jun 2007 20:24:38 +0000 Subject: [PATCH] Point checkin for link validation. Everything but that code that will bring virtualized staging archives up & apply diffs to href validity info. Handles abort(), filters junk, graceful start/stop, etc. Not usable yet, but soon (assuming no gaping bugs). git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6079 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/bootstrap-context.xml | 125 +++++++++--------- .../linkvalidation/LinkValidationService.java | 49 ++++++- .../LinkValidationServiceBootstrap.java | 64 +++++++++ 3 files changed, 175 insertions(+), 63 deletions(-) create mode 100644 source/java/org/alfresco/linkvalidation/LinkValidationServiceBootstrap.java diff --git a/config/alfresco/bootstrap-context.xml b/config/alfresco/bootstrap-context.xml index 1367f47190..c8768f42d8 100644 --- a/config/alfresco/bootstrap-context.xml +++ b/config/alfresco/bootstrap-context.xml @@ -25,62 +25,61 @@ - - - - - - - ${db.schema.update} - - - - classpath:alfresco/dbscripts/create/2.0/${db.script.dialect}/AlfrescoPostCreate-2.0-FKIndexes.sql - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + ${db.schema.update} + + + + classpath:alfresco/dbscripts/create/2.0/${db.script.dialect}/AlfrescoPostCreate-2.0-FKIndexes.sql + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -279,13 +278,19 @@ - + - + - + + + + + + @@ -317,7 +322,8 @@ - + + @@ -329,6 +335,7 @@ + diff --git a/source/java/org/alfresco/linkvalidation/LinkValidationService.java b/source/java/org/alfresco/linkvalidation/LinkValidationService.java index f4e5135dfb..8449cabba2 100644 --- a/source/java/org/alfresco/linkvalidation/LinkValidationService.java +++ b/source/java/org/alfresco/linkvalidation/LinkValidationService.java @@ -31,9 +31,14 @@ import java.util.List; import org.alfresco.service.cmr.avm.AVMNotFoundException; import org.alfresco.util.NameMatcher; +import java.net.SocketException; +import javax.net.ssl.SSLException; public interface LinkValidationService { + public void onBootstrap(); + public void onShutdown(); + /** * Updates href status and href file dependencies for path. * @@ -61,7 +66,7 @@ public interface LinkValidationService * @param nthreads * Number of threads to use when fetching URLs (e.g.: 5) * - * @param status + * @param progress * While updateHrefInfo() is a synchronous function, * 'status' may be polled in a separate thread to * observe its progress. @@ -73,8 +78,10 @@ public interface LinkValidationService int nthreads, HrefValidationProgress progress ) - throws AVMNotFoundException; - + throws AVMNotFoundException, + SocketException, + SSLException, + LinkValidationAbortedException; /** * Fetches information on broken hrefs within a store name or path @@ -186,13 +193,47 @@ public interface LinkValidationService int nthreads, HrefValidationProgress progress) throws AVMNotFoundException, + SocketException, + SSLException, LinkValidationAbortedException; + /** + * Fetches a manifest of all hyperlinks broken by files + * deleted in a HrefDifference between two webapps. + * + * @param hdiff The difference between two webapps obtained by calling getHrefDifference(). + */ public HrefManifest getHrefManifestBrokenByDelete(HrefDifference hdiff); + + /** + * Fetches a manifest of all hyperlinks broken in new or modified files in + * an HrefDifference. + * + * @param hdiff The difference between two webapps obtained by calling getHrefDifference(). + */ public HrefManifest getHrefManifestBrokenByNewOrMod(HrefDifference hdiff); /** * Merges an HrefDifference into the master href info table. */ - public void mergeHrefDiff( HrefDifference hdiff); + public void mergeHrefDiff( HrefDifference hdiff) + throws AVMNotFoundException, + SocketException, + SSLException, + LinkValidationAbortedException; + + /** + * + */ + public void updateHrefInfo( String webappPath, + boolean incremental, + boolean validateExternal, + int connectTimeout, + int readTimeout, + int nthreads, + HrefValidationProgress progress) + throws AVMNotFoundException, + SocketException, + SSLException, + LinkValidationAbortedException; } diff --git a/source/java/org/alfresco/linkvalidation/LinkValidationServiceBootstrap.java b/source/java/org/alfresco/linkvalidation/LinkValidationServiceBootstrap.java new file mode 100644 index 0000000000..63b0bd26a7 --- /dev/null +++ b/source/java/org/alfresco/linkvalidation/LinkValidationServiceBootstrap.java @@ -0,0 +1,64 @@ +/*----------------------------------------------------------------------------- +* Copyright 2007 Alfresco Inc. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, but +* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +* for more details. +* +* You should have received a copy of the GNU General Public License along +* with this program; if not, write to the Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. As a special +* exception to the terms and conditions of version 2.0 of the GPL, you may +* redistribute this Program in connection with Free/Libre and Open Source +* Software ("FLOSS") applications as described in Alfresco's FLOSS exception. +* You should have received a copy of the text describing the FLOSS exception, +* and it is also available here: http://www.alfresco.com/legal/licensing +* +* +* Author Jon Cox +* File LinkValidationServiceBootstrap.java +*----------------------------------------------------------------------------*/ +package org.alfresco.linkvalidation; + +import org.alfresco.util.AbstractLifecycleBean; +import org.springframework.context.ApplicationEvent; +import org.springframework.context.ApplicationContext; +import org.alfresco.service.cmr.avm.AVMNotFoundException; +import org.alfresco.repo.avm.util.RawServices; + +/** + * Bootstrap for LinkValidationService + */ +public class LinkValidationServiceBootstrap extends AbstractLifecycleBean +{ + private LinkValidationService linkValidationService_; + + + /* (non-Javadoc) + * @see org.alfresco.util.AbstractLifecycleBean#onBootstrap(org.springframework.context.ApplicationEvent) + */ + @Override + protected void onBootstrap(ApplicationEvent event) + { + ApplicationContext springContext = RawServices.Instance().getContext(); + linkValidationService_ = (LinkValidationService) + springContext.getBean("LinkValidationService"); + + linkValidationService_.onBootstrap(); + } + + /* (non-Javadoc) + * @see org.alfresco.util.AbstractLifecycleBean#onShutdown(org.springframework.context.ApplicationEvent) + */ + @Override + protected void onShutdown(ApplicationEvent event) + { + linkValidationService_.onShutdown(); + } +}