Jon Cox a6e250cdac Point checkin.
Separated ephemeral results you get from comparing a workflow
sandbox to staging from the delta you'd get between 2 versions
of staging itself.  The deltas work but the merges are not
there yet so you still need to do monolithic updates 
of staging using the old api for now.  Still, this lets you
see what the deltas look like -- basically just a slightly
different way of getting manifests of files with broken links.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@6012 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2007-06-19 04:53:34 +00:00

197 lines
8.7 KiB
Java

/*-----------------------------------------------------------------------------
* 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 LinkValidationService.java
*----------------------------------------------------------------------------*/
package org.alfresco.linkvalidation;
import java.util.List;
import org.alfresco.service.cmr.avm.AVMNotFoundException;
import org.alfresco.util.NameMatcher;
public interface LinkValidationService
{
/**
* Updates href status and href file dependencies for path.
*
*
* @param storeNameOrWebappPath
* The store name or path to webapp
*
* @param incremental
* If true, updates information incrementally, based on the
* files that have changed and prior calculations regarding
* url-to-file dependencies. If false, first deletes all URL
* info associated with the store/webapp (if any), then does
* a full rescan to update info.
*
* @param connectTimeout
* Amount of time in milliseconds that this function will wait
* before declaring that the connection has failed
* (e.g.: 10000 ms).
*
* @param readTimeout
* time in milliseconds that this function will wait before
* declaring that a read on the connection has failed
* (e.g.: 30000 ms).
*
* @param nthreads
* Number of threads to use when fetching URLs (e.g.: 5)
*
* @param status
* While updateHrefInfo() is a synchronous function,
* 'status' may be polled in a separate thread to
* observe its progress.
*/
public void updateHrefInfo( String storeNameOrWebappPath,
boolean incremental,
int connectTimeout,
int readTimeout,
int nthreads,
HrefValidationProgress progress
)
throws AVMNotFoundException;
/**
* Fetches information on broken hrefs within a store name or path
* to a webapp. This function is just a convenience wrapper for calling
* getHrefConcordance with statusGTE=400 and statusLTE=599.
*/
public List<HrefConcordanceEntry> getBrokenHrefConcordanceEntries(
String storeNameOrWebappPath
) throws AVMNotFoundException;
/**
* Returns information regarding the hrefs within storeNameOrWebappPath
* whose return status is greater than or equal to 'statusGTE', and
* less than or equal to 'statusLTE'. The List<HrefConcordanceEntry>
* is sorted in increasing lexicographic order by href. Within each
* HrefConcordanceEntry, the files retrieved via getLocations()
* are also sorted in increasing lexicographic order.
*
* <p>
* Example 1:<br>
* The following parameters will fetch all the broken links
* within the ROOT webapp in the staging area of the 'mysite' web project:
* <ul>
* <li> storeNameOrWebappPath="mysite:/www/avm_webapps/ROOT"
* <li> statusGTE=400
* <li> statusLTE=599
* </ul>
* <p>
* Example 2:<br>
* The following parameters will fetch all the links whose return status
* is "successful" (2xx) for all webapps contained by the staging area of
* the 'mysite' web project:
* <ul>
* <li> storeNameOrWebappPath="mysite"
* <li> statusGTE=200
* <li> statusLTE=299
* </ul>
* <p>
* Example 3:<br>
* The following parameters will fetch all the links whose return status
* is 200 (OK) within the ROOT webapp in the staging area of the 'mysite'
* web project:
* <ul>
* <li> storeNameOrWebappPath="mysite:/www/avm_webapps/ROOT"
* <li> statusGTE=200
* <li> statusLTE=200
* </ul>
* <p>
* For details regarding HTTP status codes, see:
* http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
*
*/
public List<HrefConcordanceEntry> getHrefConcordanceEntries(
String storeNameOrWebappPath,
int statusGTE,
int statusLTE
) throws AVMNotFoundException;
/**
* This function is just a convenience wrapper for calling
* getHrefManifestEntries with statusGTE=400 and statusLTE=599.
*/
public List<HrefManifestEntry> getBrokenHrefManifestEntries(
String storeNameOrWebappPath
) throws AVMNotFoundException;
/**
* Returns a manifest consisting of just the broken hrefs
* within each file containing one or more broken href.
* The HrefManifestEntry list is sorted in increasing lexicographic
* order by file name. The hrefs within each HrefManifestEntry
* are also sorted in increasing lexicographic order.
*/
public List<HrefManifestEntry> getHrefManifestEntries(
String storeNameOrWebappPath,
int statusGTE,
int statusLTE) throws
AVMNotFoundException;
/**
* Fetch all hyperlinks that rely upon the existence of the file specified
* by 'path', directly or indirectly. The list of hrefs returnd is
* sorted in increasing lexicographic order. For example, in
* alfresco-sample-website.war, the hrefs dependent upon
* <code>mysite:/www/avm_webapps/ROOT/assets/footer.html</code> are:
* <pre>
* http://mysite.www--sandbox.version--v-1.127-0-0-1.ip.alfrescodemo.net:8180/
* http://mysite.www--sandbox.version--v-1.127-0-0-1.ip.alfrescodemo.net:8180/assets/footer.html
* http://mysite.www--sandbox.version--v-1.127-0-0-1.ip.alfrescodemo.net:8180/index.jsp
* http://mysite.www--sandbox.version--v-1.127-0-0-1.ip.alfrescodemo.net:8180/media/releases/index.jsp
* </pre>
* Note that this list may contain links that are functionally equivalent
* (e.g.: the first and third links), and may also contain links that
* don't actually appear an any web page, but are implicitly present
* in the site because any asset can be "dead reckoned".
*
*
*/
public List<String> getHrefsDependentUponFile(String path);
public HrefDifference getHrefDifference(
String srcWebappPath,
String dstWebappPath,
int connectTimeout,
int readTimeout,
int nthreads,
HrefValidationProgress progress
) throws AVMNotFoundException;
public HrefManifest getHrefManifestBrokenByDelete(HrefDifference hdiff);
public HrefManifest getHrefManifestBrokenByNewOrMod(HrefDifference hdiff);
public List<String> getHrefListFixedByDeleteOrMod(HrefDifference hdiff);
public List<String> getHrefListFixedByNew(HrefDifference hdiff);
}