blob: c1daf034facfa6f7d257f255c75ad0731373e39a [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.cocoon.sitemap;
import org.w3c.dom.NodeList;
/**
* This class is used as a XSLT extension class.
*
* @deprecated This class has been used by the old sitemap engine
*
* @author <a href="mailto:Giacomo.Pati@pwr.ch">Giacomo Pati</a>
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
* @version CVS $Id$
*/
public class XSLTFactoryLoader {
public String getClassSource(String className, String prefix, String pattern, NodeList conf) throws ClassNotFoundException,
InstantiationException, IllegalAccessException, Exception {
throw new UnsupportedOperationException("CodeFactory is no longer supported.");
}
public String getParameterSource(String className, NodeList conf) throws ClassNotFoundException, InstantiationException,
IllegalAccessException, Exception {
throw new UnsupportedOperationException("CodeFactory is no longer supported.");
}
public String getMethodSource(String className, NodeList conf) throws ClassNotFoundException, InstantiationException,
IllegalAccessException, Exception {
throw new UnsupportedOperationException("CodeFactory is no longer supported.");
}
public boolean isFactory(String className) {
throw new UnsupportedOperationException("Factories are no longer supported.");
}
/**
* Escapes '"' and '\' characters in a String (add a '\' before them) so that it can
* be inserted in java source.
*/
public String escape(String string) {
if (string.indexOf('\\') == -1 && string.indexOf('"') == -1) {
// Nothing to escape
return string;
}
StringBuffer buf = new StringBuffer();
for (int i = 0; i < string.length(); i++) {
char ch = string.charAt(i);
if (ch == '\\' || ch == '"') {
buf.append('\\');
}
buf.append(ch);
}
return buf.toString();
}
/**
* Escapes like {@link #escape(String)} after having removed any '\' preceding a '{'.
* This is used to insert a pattern with escaped subsitution syntax in Java source.
*/
public String escapeBraces(String string) {
if (string.indexOf("\\{") == -1)
{
return escape(string);
}
StringBuffer buf = new StringBuffer();
for (int i = 0; i < string.length(); i++) {
char ch = string.charAt(i);
if (ch != '\\' || i >= (string.length() - 1) || string.charAt(i+1) != '{') {
buf.append(ch);
}
}
return escape(buf.toString());
}
public boolean hasSubstitutions(String pattern) {
if (pattern.length() == 0) {
return false;
}
// Does it start by a substitution ?
if (pattern.charAt(0) == '{') {
return true;
}
// Search for an unescaped '{'
int i = 1;
while ((i = pattern.indexOf('{', i)) != -1) {
if (pattern.charAt(i-1) != '\\') {
return true;
}
i++; // Pass '{'
}
return false;
}
}