public Document[] getInternalReferences() throws ProcessingException {
ArrayList unpublishedReferences = new ArrayList();
SiteTree sitetree;
Pattern internalLinkPattern = getInternalLinkPattern();
Publication publication = pageEnvelope.getPublication();
DocumentBuilder builder = publication.getDocumentBuilder();
try {
sitetree = publication.getSiteTree(Publication.LIVE_AREA);
String[] internalLinks =
Grep.findPattern(
pageEnvelope.getDocument().getFile(),
internalLinkPattern,
1);
String[] internalLinksLanguages =
Grep.findPattern(
pageEnvelope.getDocument().getFile(),
internalLinkPattern,
2);
for (int i = 0; i < internalLinks.length; i++) {
String docId = internalLinks[i];
String language = null;
if (internalLinksLanguages[i] != null) {
// trim the leading '_'
language = internalLinksLanguages[i].substring(1);
}
SiteTreeNode documentNode = sitetree.getNode(docId);
if (documentNode == null
|| documentNode.getLabel(language) == null) {
// the docId has not been published for the given language
String url = null;
if (language != null) {
url =
builder.buildCanonicalUrl(
publication,
Publication.AUTHORING_AREA,
docId,
language);
} else {
url =
builder.buildCanonicalUrl(
publication,
Publication.AUTHORING_AREA,
docId);
}
unpublishedReferences.add(
builder.buildDocument(publication, url));
}
}
} catch (SiteTreeException e) {
throw new ProcessingException(e);
} catch (IOException e) {