Update of /var/cvs/src/org/mmbase/util
In directory james.mmbase.org:/tmp/cvs-serv10125

Modified Files:
        XMLEntityResolver.java XMLErrorHandler.java 
Log Message:
resolved some @move tags, by doing it, and adding @deprecated


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/util


Index: XMLEntityResolver.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/util/XMLEntityResolver.java,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -b -r1.71 -r1.72
--- XMLEntityResolver.java      3 Sep 2008 23:23:53 -0000       1.71
+++ XMLEntityResolver.java      3 Sep 2008 23:41:47 -0000       1.72
@@ -9,416 +9,24 @@
 */
 package org.mmbase.util;
 
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.ByteArrayInputStream;
-import java.util.*;
-import java.util.concurrent.*;
-
-import java.lang.reflect.*;
-
-import org.mmbase.util.xml.applicationdata.ApplicationReader;
-import org.mmbase.util.xml.BuilderReader;
-import org.mmbase.util.xml.ModuleReader;
-import org.mmbase.util.logging.*;
-
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-
 /**
- * Take the systemId and converts it into a local file, using the MMBase 
config path
  *
- * @move org.mmbase.util.xml
- * @rename EntityResolver
+ * @deprecated Use org.mmbase.util.xml.EntityResolver
  * @author Gerard van Enk
  * @author Michiel Meeuwissen
- * @version $Id: XMLEntityResolver.java,v 1.71 2008/09/03 23:23:53 michiel Exp 
$
+ * @version $Id: XMLEntityResolver.java,v 1.72 2008/09/03 23:41:47 michiel Exp 
$
  */
-public class XMLEntityResolver implements EntityResolver {
-
-    public static final String DOMAIN = "http://www.mmbase.org/";;
-    public static final String DTD_SUBPATH = "dtd/";
-    public static final String XMLNS_SUBPATH = "xmlns/";
-    private static final String XSD_SUBPATH = "xsd/"; // deprecated
-
-    private static Logger log = 
Logging.getLoggerInstance(XMLEntityResolver.class);
-    static {
-        //log.setLevel(Level.DEBUG);
-    }
-
-    private static final String MMRESOURCES = "/org/mmbase/resources/";
+public class XMLEntityResolver extends org.mmbase.util.xml.EntityResolver {
 
-    private static Map<String, Resource> publicIDtoResource = new 
ConcurrentHashMap<String, Resource>();
-    // This maps public id's to classes which are know to be able to parse 
this XML's.
-    // The package of these XML's will also contain the resources with the DTD.
-
-    /**
-     * XSD's have only system ID
-     */
-    private static Map<String, Resource> systemIDtoResource = new 
ConcurrentHashMap<String, Resource>();
-
-
-    /**
-     * Container for dtd resources information
-     */
-    static abstract class  Resource {
-        abstract InputStream getStream();
-    }
-    static class StringResource extends Resource {
-        private String string;
-        StringResource(String s) {
-            string = s;
-        }
-        InputStream getStream() {
-            return new ByteArrayInputStream(string.getBytes());
-        }
-    }
-    static class FileResource extends Resource {
-        private final Class<?> clazz;
-        private final String file;
-        FileResource(Class<?> c, String f) {
-            clazz = c;
-            file = f;
-        }
-
-        String getResource() {
-            return "resources/" + file;
-        }
-        String getFileName() {
-            return file;
-        }
-        InputStream getStream() {
-            InputStream stream = null;
-            if (file != null) {
-                stream = 
ResourceLoader.getConfigurationRoot().getResourceAsStream(DTD_SUBPATH + 
getFileName());
-                if (stream == null) {
-                    stream = 
ResourceLoader.getConfigurationRoot().getResourceAsStream(XMLNS_SUBPATH + 
getFileName());
-                }
-                if (stream == null) {
-                    // XXX I think this was deprecated in favour in xmlns/ 
(all in 1.8), so perhaps this can be dropped
-                    stream = 
ResourceLoader.getConfigurationRoot().getResourceAsStream(XSD_SUBPATH + 
getFileName());
-                }
-            }
-            if (stream == null && clazz != null) {
-                stream = clazz.getResourceAsStream(getResource());
-            }
-
-            return stream;
-        }
-
-        public String toString() {
-            return file + ": " + clazz;
-        }
-
-    }
-
-    static {
-        // ask known (core) xml readers to register their public ids and dtds
-        // the advantage of doing it this soon, is that the 1DTD are know as 
early as possible.
-        org.mmbase.util.xml.DocumentReader.registerPublicIDs();
-        BuilderReader.registerPublicIDs();
-        BuilderReader.registerSystemIDs();
-        ApplicationReader.registerPublicIDs();
-        ModuleReader.registerPublicIDs();
-        org.mmbase.util.xml.UtilReader.registerPublicIDs();
-        org.mmbase.bridge.util.xml.query.QueryReader.registerSystemIDs();
-
-        registerSystemID("http://www.w3.org/2001/03/xml.xsd";,       "xml.xsd", 
null);
-        registerSystemID("http://www.w3.org/2001/03/XMLSchema.dtd";, 
"XMLSchema.dtd", null);
-        registerSystemID("http://www.w3.org/2001/03/datatypes.dtd";, 
"datatypes.dtd", null);
-
-        
//registerSystemID("http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd";, 
"docbookx.dtd", null);
-        
//registerSystemID("http://www.oasis-open.org/docbook/xml/4.1.2/dbnotnx.mod";, 
"dbnotnx.mod", null);
-    }
-
-
-    /**
-     * Register a given publicID, binding it to a resource determined by a 
given class and resource filename
-     * @param publicID the Public ID to register
-     * @param dtd the name of the resourcefile
-     * @param c the class indicating the location of the resource in the 
pacakage structure. The
-     *          resource is to be found in the 'resources' package under the 
package of the class.
-     * @since MMBase-1.7
-     */
-    public static void registerPublicID(String publicID, String dtd, Class<?> 
c) {
-        publicIDtoResource.put(publicID, new FileResource(c, dtd));
-        if (log.isDebugEnabled()) log.debug("publicIDtoResource: " + publicID 
+ " " + dtd + c.getName());
-    }
-
-    /**
-     * It seems that in XSD's you don't have public id's. So, this makes it 
possible to use system id.
-     * @todo EXPERIMENTAL
-     * @since MMBase-1.8
-     */
-    public static void registerSystemID(String systemID, String xsd, Class<?> 
c) {
-        systemIDtoResource.put(systemID, new FileResource(c, xsd));
-    }
-
-    private final String definitionPath;
-
-    private boolean hasDefinition; // tells whether or not a DTD/XSD is set - 
if not, no validition can take place
-
-    private final boolean  validate;
-    private final   Class<?>    resolveBase;
-
-
-
-    /**
-     * empty constructor
-     */
     public XMLEntityResolver() {
-        this(true);
+        super();
     }
 
     public XMLEntityResolver(boolean v) {
-        this(v, null);
+        super(v);
     }
 
     public XMLEntityResolver(boolean v, Class<?> base) {
-        hasDefinition      = false;
-        definitionPath     = null;
-        validate    = v;
-        resolveBase = base;
-    }
-    /**
-     * @since MMBase-1.9
-     */
-    protected static StringBuilder camelAppend(StringBuilder sb, String s) {
-        for (int i = 0; i < s.length(); i++) {
-            char c = s.charAt(i);
-            if (Character.isUpperCase(c)) {
-                sb.append(Character.toLowerCase(c));
-            } else {
-                sb.append(s.substring(i));
-                break;
-            }
-        }
-        return sb;
-    }
-    /**
-     * @since MMBase-1.9
-     */
-    protected static void appendEntities(StringBuilder sb, Object o, String 
prefix, int level, Set<Object> os) {
-        os.add(o);
-        org.mmbase.util.transformers.Identifier identifier = new 
org.mmbase.util.transformers.Identifier();
-        if (o instanceof Map) {
-            Set<Map.Entry<?,?>> map = ((Map) o).entrySet();
-            for (Map.Entry<?,?> entry : map) {
-                Object value = entry.getValue();
-                if (value != null && 
Casting.isStringRepresentable(value.getClass()) && entry.getKey() instanceof 
String) {
-                    sb.append("<!ENTITY ");
-                    sb.append(prefix);
-                    sb.append('.');
-                    String k = identifier.transform((String) entry.getKey());
-                    k = k.replaceAll("\\s", "");
-                    sb.append(k);
-                    sb.append(" \"" + 
org.mmbase.util.transformers.Xml.XMLAttributeEscape("" + value, '"') + "\">\n");
-                }
-                if (level < 3 && value != null && !os.contains(value) && ! 
value.getClass().getName().startsWith("java.lang")) { // recursion to acces 
also properties of this
-                    appendEntities(sb, value, prefix + "." + entry.getKey(), 
level + 1, os);
-                }
-            }
-        } else {
-            for (Method m : o.getClass().getMethods()) {
-                String name = m.getName();
-                if (m.getParameterTypes().length == 0 &&
-                    ! name.equals("getNodes")  &&
-                    ! name.equals("getConnection") && // see    MMB-1490, we 
should not call
-                                                      // getConnection, while 
we won't close it.
-                    name.length() > 3 && name.startsWith("get") && 
Character.isUpperCase(name.charAt(3))) {
-                    try {
-                        Class<?> rt = m.getReturnType();
-                        boolean invoked = false;
-                        Object value = null;
-                        if (Casting.isStringRepresentable(rt)) {
-                            if (! Map.class.isAssignableFrom(rt) && ! 
Collection.class.isAssignableFrom(rt)) {
-                                value = m.invoke(o); invoked = true;
-                                sb.append("<!ENTITY ");
-                                sb.append(prefix);
-                                sb.append('.');
-                                camelAppend(sb, name.substring(3));
-                                sb.append(" \"" + 
org.mmbase.util.transformers.Xml.XMLAttributeEscape("" + value, '"') + "\">\n");
-                            }
-                        }
-                        if (! rt.getName().startsWith("java.lang")) {
-                            if (! invoked) value = m.invoke(o);
-                            if (level < 3 && value != null && 
!os.contains(value)) {
-                                appendEntities(sb, value, prefix + "." + 
camelAppend(new StringBuilder(), name.substring(3)), level + 1, os);
-                            }
-                        }
-                    } catch (IllegalAccessException ia) {
-                        log.debug(ia);
-                    } catch (InvocationTargetException ite) {
-                        log.debug(ite);
-                    } catch (AbstractMethodError ame) {
-                        log.debug(ame);
-                    } catch (Exception e) {
-                        log.warn("Error", e);
-                    }
-                }
-            }
-        }
-    }
-    protected static String ents = null;
-    protected static boolean logEnts = true;
-    /**
-     * @since MMBase-1.9
-     */
-    protected static synchronized String getMMEntities() {
-        if (ents == null) {
-            StringBuilder sb = new StringBuilder();
-            try {
-                Set<Object> added = new HashSet<Object>();
-                appendEntities(sb, 
org.mmbase.framework.Framework.getInstance(), "framework", 0, added);
-                appendEntities(sb, 
org.mmbase.framework.ComponentRepository.getInstance(), "componentRepository", 
0, added);
-
-                org.mmbase.module.Module  mmbase = 
org.mmbase.module.Module.getModule("mmbaseroot", false);
-                if (mmbase != null) {
-                    appendEntities(sb, mmbase, "mmbase", 0, added);
-                }
-            } catch (Throwable ie) {
-                log.warn(ie.getMessage());
-                return sb.toString();
-            }
-            ents = sb.toString();
-            if (logEnts) {
-                log.debug("Using entities\n" + ents);
-            }
-        }
-        return ents;
-    }
-    /**
-     * @since MMBase-1.9
-     */
-    public static void clearMMEntities(boolean le) {
-        ents = null;
-        logEnts = le;
-    }
-
-    /**
-     * Takes the systemId and returns the local location of the dtd/xsd
-     */
-    public InputSource resolveEntity(final String publicId, final String 
systemId) {
-        if (log.isDebugEnabled()) {
-            log.debug("resolving PUBLIC " + publicId + " SYSTEM " + systemId);
-        }
-
-        InputStream definitionStream = null;
-
-        if ("http://www.mmbase.org/mmentities.ent".equals(systemId)) {
-            log.debug("Reding mmbase entities for " + systemId + " " + 
publicId);
-            //StringBuilder sb = new StringBuilder();
-            //Class c = org.mmbase.framework.Framework.class;
-            String ents = getMMEntities();
-            if (log.isDebugEnabled()) {
-                log.debug("Using entities\n" + ents);
-            }
-            definitionStream = new StringResource(ents).getStream();
-        } else  if (publicId != null) {
-            // first try with publicID or namespace
-            Resource res = publicIDtoResource.get(publicId);
-            log.debug("Found publicId " + publicId + " -> " + res);
-            definitionStream = res == null ? null : res.getStream();
-        }
-
-
-        log.debug("Get definition stream by public id: " + definitionStream);
-
-        if (definitionStream == null) {
-            Resource res = systemIDtoResource.get(systemId);
-            if (res != null) {
-                definitionStream = res.getStream();
-            }
-        }
-
-        if (definitionStream == null) { // not succeeded with publicid, go 
trying with systemId
-
-            //does systemId contain a mmbase-dtd
-            if ((systemId == null) || (! systemId.startsWith(DOMAIN))) {
-                // it's a systemId we can't do anything with,
-                // so let the parser decide what to do
-
-                if (validate) {
-                    log.debug("Cannot resolve " + systemId + ", but needed for 
validation leaving to parser.");
-                    log.debug("Find culpit: ", new Exception());
-                    return null;
-                } else if (systemId.endsWith(".dtd")) {
-                    // perhaps this should not be done if it is about 
resolving _entities_ rather then dtd.
-                    log.debug("Not validating, no need to resolve DTD (?), 
returning empty resource for " + systemId);
-                    return new InputSource(new ByteArrayInputStream(new 
byte[0]));
-                }
-            } else {
-                final String mmResource = systemId.substring(DOMAIN.length());
-                // first, try MMBase config directory (if initialized)
-                if (log.isDebugEnabled()) {
-                    log.debug("mmbase resource " + 
ResourceLoader.getConfigurationRoot().getResource(mmResource));
-                }
-                definitionStream = 
ResourceLoader.getConfigurationRoot().getResourceAsStream(mmResource);
-                if (definitionStream == null) {
-                    Class<?> base = resolveBase; // if resolveBase was 
specified, use that.
-                    Resource res = null;
-                    if (base != null) {
-                        if (mmResource.startsWith("xmlns/")) {
-                            res = new FileResource(base, 
mmResource.substring(6));
-                        } else {
-                            res = new FileResource(base, 
mmResource.substring(4));  // dtd or xsd
-                        }
-                    }
-                    if (res != null) {
-                        definitionStream = res.getStream();
-                        if (definitionStream == null) {
-                            log.warn("Could not find " + res.toString() + " in 
" + base.getName() + ", falling back to " + MMRESOURCES + " while resolving " + 
systemId + " " + publicId);
-                            base = null; // try it in org.mmbase.resources too.
-                        }
-                    }
-
-                    if (base == null) {
-                        String resource = MMRESOURCES + mmResource;
-                        if (log.isDebugEnabled()) log.debug("Getting document 
definition as resource " + resource);
-                        definitionStream = 
getClass().getResourceAsStream(resource);
-                    }
-                } else {
-                    log.debug("Found resource in mmbase resource loader " + 
definitionStream);
-                }
-                if (definitionStream == null) {
-                    if (resolveBase != null) {
-                        log.error("Could not find MMBase entity '" + publicId 
+ " " +  systemId + "' (did you make a typo?), returning null, system id will 
be used (needing a connection, or put in config dir) " + resolveBase + " " + 
mmResource);
-                    } else {
-                        log.service("Could not find MMBase entity '" + 
publicId + " " +  systemId + "' (did you make a typo?), returning null, system 
id will be used (needing a connection, or put in config dir)");
-                    }
-                    // not sure, probably should return 'null' after all, then 
it will be resolved with internet.
-                    // but this can not happen, in fact...
-                    //return new InputSource(new StringReader(""));
-                    // FAILED
-                    return null;
-                }
-            }
-        }
-        hasDefinition = true;
-
-        InputStreamReader definitionInputStreamReader = new 
InputStreamReader(definitionStream);
-        InputSource definitionInputSource = new InputSource();
-        if (systemId != null) {
-            definitionInputSource.setSystemId(systemId);
-        }
-        if (publicId != null) {
-            definitionInputSource.setPublicId(publicId);
-        }
-        definitionInputSource.setCharacterStream(definitionInputStreamReader);
-        return definitionInputSource;
-    }
-
-    /**
-     * @return whether the resolver has determined a DTD
-     */
-    public boolean hasDTD() {
-        return hasDefinition;
-    }
-
-    /**
-     * @return The actually used path to the DTD
-     */
-    public String getDTDPath() {
-        return definitionPath;
+        super(v, base);
     }
 }


Index: XMLErrorHandler.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/util/XMLErrorHandler.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- XMLErrorHandler.java        28 Aug 2008 11:43:28 -0000      1.19
+++ XMLErrorHandler.java        3 Sep 2008 23:41:47 -0000       1.20
@@ -9,144 +9,21 @@
 */
 package org.mmbase.util;
 
-import org.mmbase.util.logging.Logger;
-import org.mmbase.util.logging.Logging;
-import org.xml.sax.ErrorHandler;
-import org.xml.sax.SAXException;
-import org.xml.sax.SAXParseException;
-
 /**
- * Provides ErrorHandler methods
  *
- * @move org.mmbase.util.xml
- * @rename ErrorHandler
+ * @deprecatde Use org.mmbase.util.xml.ErrorHandler
  * @author Gerard van Enk
- * @version $Id: XMLErrorHandler.java,v 1.19 2008/08/28 11:43:28 michiel Exp $
+ * @version $Id: XMLErrorHandler.java,v 1.20 2008/09/03 23:41:47 michiel Exp $
  */
 
-public class XMLErrorHandler implements ErrorHandler {
-    public static final int WARNING =   1;
-    public static final int ERROR =   2;
-    public static final int FATAL_ERROR = 3;
-    public static final int NEVER = 4;
-
-    private static Logger log = 
Logging.getLoggerInstance(XMLErrorHandler.class);
-    private int exceptionLevel;
-    private boolean logMessages;
-    private boolean warning = false;
-    private boolean error = false;
-    private boolean fatal = false;
-
-    private StringBuilder messages = new StringBuilder();
-
-
+public class XMLErrorHandler extends org.mmbase.util.xml.ErrorHandler {
     public XMLErrorHandler() {
-        // default keep old behaviour
-        logMessages = true;
-        exceptionLevel = NEVER;
+        super();
     }
 
     public XMLErrorHandler(boolean log, int exceptionLevel) {
-        this.logMessages = log;
-        this.exceptionLevel = exceptionLevel;
+        super(log, exceptionLevel);
     }
 
-    public void warning(SAXParseException ex) throws SAXException {
-        String message = getLocationString(ex)+": "+ ex.getMessage();
-        messages.append(message + "\n");
-        warning = true;
-        if(logMessages) {
-            log.warn(message);
-        }
-        if(exceptionLevel<=WARNING) {
-            throw ex;
-        }
-    }
 
-    private boolean isJava5AndXInclude(Exception ex) {
-        if ( ("" + System.getProperty("java.version")).startsWith("1.5")) {
-            for (StackTraceElement el : ex.getStackTrace()) {
-                if 
(el.getClassName().equals("com.sun.org.apache.xerces.internal.xinclude.XIncludeHandler"))
 {
-                    return true;
-                }
-            }
-            return false;
-        } else {
-            return false;
-        }
-    }
-
-    public void error(SAXParseException ex) throws SAXException{
-        String message = getLocationString(ex)+": "+ ex.getClass() + " " + 
ex.getMessage();
-        if (isJava5AndXInclude(ex)) {
-            // I get horrible validation exceptions in the log when doing 
xinclude in java 5.
-            // It does not happen in java 6.
-            // If you ask me, the xml parser of java 5 simply sucks. Going to 
ignore this as an 'error'.
-            log.debug(message + " (this probably does not make sense)");
-            return;
-        }
-
-        messages.append(message + "\n");
-        error = true;
-        if(logMessages) {
-            if (log.isDebugEnabled()) {
-                log.error(message, new Throwable());
-            } else {
-                log.error(message);
-            }
-        }
-        if(exceptionLevel <= ERROR) {
-            throw ex;
-        }
-    }
-
-    public void fatalError(SAXParseException ex) throws SAXException {
-        String message = getLocationString(ex)+": "+ ex.getMessage();
-        messages.append(message + "\n");
-        fatal = true;
-        if(logMessages) {
-            log.fatal(message);
-        }
-        if(exceptionLevel<=FATAL_ERROR) {
-            throw ex;
-        }
-    }
-
-    public boolean foundWarning() {
-        return warning;
-    }
-
-    public boolean foundError() {
-        return error;
-    }
-
-    public boolean foundFatalError() {
-        return fatal;
-    }
-
-    public boolean foundNothing() {
-        return !(warning || error || fatal);
-    }
-
-    public String getMessageBuffer() {
-        return messages.toString();
-    }
-
-    /**
-     * Returns a string of the location.
-     */
-    private String getLocationString(SAXParseException ex) {
-        StringBuilder str = new StringBuilder();
-        String systemId = ex.getSystemId();
-        if (systemId != null) {
-            str.append(systemId);
-        } else {
-            str.append("[NO SYSTEM ID]");
-        }
-        str.append(" line:");
-        str.append(ex.getLineNumber());
-        str.append(" column:");
-        str.append(ex.getColumnNumber());
-        return str.toString();
-    }
 }
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to