
org.enhydra.xml.xmlc.metadata.URLRegExpMapping Maven / Gradle / Ivy
The newest version!
/*
* Enhydra Java Application Server Project
*
* The contents of this file are subject to the Enhydra Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License on
* the Enhydra web site ( http://www.enhydra.org/ ).
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific terms governing rights and limitations
* under the License.
*
* The Initial Developer of the Enhydra Application Server is Lutris
* Technologies, Inc. The Enhydra Application Server and portions created
* by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc.
* All Rights Reserved.
*
* Contributor(s):
*
* $Id: URLRegExpMapping.java,v 1.2 2005/01/26 08:29:24 jkjome Exp $
*/
package org.enhydra.xml.xmlc.metadata;
import gnu.regexp.RE;
import gnu.regexp.REException;
import gnu.regexp.RESyntax;
import org.enhydra.xml.xmlc.XMLCException;
import org.w3c.dom.Document;
/**
* Specifies the regular expression replacement of URLs in element attributes.
*/
public class URLRegExpMapping extends URLEdit {
/**
* Element name.
*/
public static final String TAG_NAME = "urlRegExpMapping";
/**
* Compiled regular expression.
*/
private RE regExp;
/**
* Cached subtitution attribute.
*/
private String substitution;
/**
* Constructor.
*/
public URLRegExpMapping(Document ownerDoc) {
super(ownerDoc, TAG_NAME);
}
/**
* Attribute names.
*/
private static final String REGEXP_ATTR = "regexp";
private static final String SUBST_ATTR = "subst";
/**
* Get the regexp attribute value.
*/
public String getRegexp() {
return getAttributeNull(REGEXP_ATTR);
}
/**
* Set the regexp attribute value.
*/
public void setRegexp(String value) {
setRemoveAttribute(REGEXP_ATTR, value);
}
/**
* Get the subst attribute value.
*/
public String getSubst() {
return getAttributeNull(SUBST_ATTR);
}
/**
* Set the subst attribute value.
*/
public void setSubst(String value) {
setRemoveAttribute(SUBST_ATTR, value);
}
/**
* Complete modifications to DOM, compiles regular expression if set.
* @see MetaDataElement#completeModifications
*/
protected void completeModifications() throws XMLCException {
super.completeModifications();
substitution = getSubst();
String regExpStr = getRegexp();
if (regExpStr == null) {
regExp = null;
} else {
try {
regExp = new RE(regExpStr, 0,
RESyntax.RE_SYNTAX_POSIX_EXTENDED);
} catch (REException except) {
throw new XMLCException("invalid URL mapping regular expression: "
+ except.toString(),
except);
}
}
}
/**
* Substitute a URL based on the regular expression.
*
* @return The updated URL or null if the URL doesn't match.
*/
public String mapURL(String url) throws XMLCException {
if (regExp.getMatch(url) == null) {
return null;
}
return regExp.substituteAll(url, substitution);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy