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
This commit is contained in:
Jon Cox
2007-06-23 20:24:38 +00:00
parent b2a2ad8c94
commit 3700ab19c6
3 changed files with 175 additions and 63 deletions

View File

@@ -80,7 +80,6 @@
</bean> </bean>
<!-- Bootstrap Files --> <!-- Bootstrap Files -->
<bean id="systemInfoBootstrap" parent="systemInfoImporter"> <bean id="systemInfoBootstrap" parent="systemInfoImporter">
</bean> </bean>
@@ -286,6 +285,12 @@
</bean> </bean>
<!-- LinkValidationService -->
<bean id="linkValidationServiceBootstrap"
class="org.alfresco.linkvalidation.LinkValidationServiceBootstrap">
</bean>
<!-- This component checks the interconnection between the metadata, indexes and content --> <!-- This component checks the interconnection between the metadata, indexes and content -->
<bean id="configurationChecker" class="org.alfresco.repo.admin.ConfigurationChecker"> <bean id="configurationChecker" class="org.alfresco.repo.admin.ConfigurationChecker">
<property name="strict"> <property name="strict">
@@ -318,6 +323,7 @@
</property> </property>
</bean> </bean>
<!-- This component ensures that patches get applied on startup --> <!-- This component ensures that patches get applied on startup -->
<bean id="patchExecuter" class="org.alfresco.repo.admin.patch.PatchExecuter"> <bean id="patchExecuter" class="org.alfresco.repo.admin.patch.PatchExecuter">
@@ -329,6 +335,7 @@
</property> </property>
</bean> </bean>
<!-- Start module components --> <!-- Start module components -->
<bean id="moduleStarter" class="org.alfresco.repo.module.ModuleStarter"> <bean id="moduleStarter" class="org.alfresco.repo.module.ModuleStarter">

View File

@@ -31,9 +31,14 @@ import java.util.List;
import org.alfresco.service.cmr.avm.AVMNotFoundException; import org.alfresco.service.cmr.avm.AVMNotFoundException;
import org.alfresco.util.NameMatcher; import org.alfresco.util.NameMatcher;
import java.net.SocketException;
import javax.net.ssl.SSLException;
public interface LinkValidationService public interface LinkValidationService
{ {
public void onBootstrap();
public void onShutdown();
/** /**
* Updates href status and href file dependencies for path. * Updates href status and href file dependencies for path.
* *
@@ -61,7 +66,7 @@ public interface LinkValidationService
* @param nthreads * @param nthreads
* Number of threads to use when fetching URLs (e.g.: 5) * Number of threads to use when fetching URLs (e.g.: 5)
* *
* @param status * @param progress
* While updateHrefInfo() is a synchronous function, * While updateHrefInfo() is a synchronous function,
* 'status' may be polled in a separate thread to * 'status' may be polled in a separate thread to
* observe its progress. * observe its progress.
@@ -73,8 +78,10 @@ public interface LinkValidationService
int nthreads, int nthreads,
HrefValidationProgress progress HrefValidationProgress progress
) )
throws AVMNotFoundException; throws AVMNotFoundException,
SocketException,
SSLException,
LinkValidationAbortedException;
/** /**
* Fetches information on broken hrefs within a store name or path * Fetches information on broken hrefs within a store name or path
@@ -186,13 +193,47 @@ public interface LinkValidationService
int nthreads, int nthreads,
HrefValidationProgress progress) HrefValidationProgress progress)
throws AVMNotFoundException, throws AVMNotFoundException,
SocketException,
SSLException,
LinkValidationAbortedException; 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); 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); public HrefManifest getHrefManifestBrokenByNewOrMod(HrefDifference hdiff);
/** /**
* Merges an HrefDifference into the master href info table. * 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;
} }

View File

@@ -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 <jcox@alfresco.com>
* 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();
}
}