All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.xml.resolver.apps.resolver Maven / Gradle / Ivy

There is a newer version: 0.10.0
Show newest version
// resolver.java - A simple command-line test tool for the resolver

/*
 * 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.xml.resolver.apps;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URL;
import java.net.MalformedURLException;
import java.util.Vector;

import org.apache.xml.resolver.Catalog;
import org.apache.xml.resolver.CatalogManager;
import org.apache.xml.resolver.helpers.Debug;
import org.apache.xml.resolver.helpers.FileURL;
import org.apache.xml.resolver.tools.CatalogResolver;

/**
 * A simple command-line resolver.
 *
 * 

This class implements a simple command-line resolver. It takes * some parameters and passes them through the resolver, printing the * result. *

* *

Usage: resolver [options] keyword

* *

Where options are:

* *
*
-c catalogfile
*
Load a particular catalog file.
*
-n name
*
Sets the name.
*
-p publicId
*
Sets the public identifier.
*
-s systemId
*
Sets the system identifier.
*
-a
*
Absolute system URI.
*
-u uri
*
Sets the URI.
*
-d integer
*
Set the debug level.
*
* *

And keyword is one of: doctype, document, entity, notation, public, * system, or uri.

* *

The process ends with error-level 1, if there errors.

* * @see org.apache.xml.resolver.tools.ResolvingParser * * @author Norman Walsh * [email protected] * * @version 1.0 */ public class resolver { private static Debug debug = CatalogManager.getStaticManager().debug; /** The main entry point */ public static void main (String[] args) throws FileNotFoundException, IOException { int debuglevel = 0; Vector catalogFiles = new Vector(); int resType = 0; String resTypeStr = null; String name = null; String publicId = null; String systemId = null; String uri = null; boolean absoluteSystem = false; for (int i=0; i 0) { debug.setDebug(debuglevel); } } catch (Exception e) { // nop } continue; } resTypeStr = args[i]; } if (resTypeStr == null) { usage(); } if (resTypeStr.equalsIgnoreCase("doctype")) { resType = Catalog.DOCTYPE; if (publicId == null && systemId == null) { System.out.println("DOCTYPE requires public or system identifier."); usage(); } } else if (resTypeStr.equalsIgnoreCase("document")) { resType = Catalog.DOCUMENT; } else if (resTypeStr.equalsIgnoreCase("entity")) { resType = Catalog.ENTITY; if (publicId == null && systemId == null && name == null) { System.out.println("ENTITY requires name or public or system identifier."); usage(); } } else if (resTypeStr.equalsIgnoreCase("notation")) { resType = Catalog.NOTATION; if (publicId == null && systemId == null && name == null) { System.out.println("NOTATION requires name or public or system identifier."); usage(); } } else if (resTypeStr.equalsIgnoreCase("public")) { resType = Catalog.PUBLIC; if (publicId == null) { System.out.println("PUBLIC requires public identifier."); usage(); } } else if (resTypeStr.equalsIgnoreCase("system")) { resType = Catalog.SYSTEM; if (systemId == null) { System.out.println("SYSTEM requires system identifier."); usage(); } } else if (resTypeStr.equalsIgnoreCase("uri")) { resType = Catalog.URI; if (uri == null) { System.out.println("URI requires a uri."); usage(); } } else { System.out.println(resTypeStr + " is not a recognized keyword."); usage(); } if (absoluteSystem) { URL base = null; URL sysid = null; // Calculate the appropriate BASE URI try { // tack on a basename because URLs point to files not dirs base = FileURL.makeURL("basename"); } catch (MalformedURLException e) { String userdir = System.getProperty("user.dir"); userdir = userdir.replace('\\', '/'); debug.message(1, "Malformed URL on cwd", userdir); base = null; } try { sysid = new URL(base, systemId); systemId = sysid.toString(); } catch (MalformedURLException e) { try { sysid = new URL("file:///" + systemId); } catch (MalformedURLException e2) { debug.message(1, "Malformed URL on system id", systemId); } } } CatalogResolver catalogResolver = new CatalogResolver(); Catalog resolver = catalogResolver.getCatalog(); for (int count = 0; count < catalogFiles.size(); count++) { String file = (String) catalogFiles.elementAt(count); resolver.parseCatalog(file); } String result = null; if (resType == Catalog.DOCTYPE) { System.out.println("Resolve DOCTYPE (name, publicid, systemid):"); if (name != null) { System.out.println(" name: " + name); } if (publicId != null) { System.out.println(" public id: " + publicId); } if (systemId != null) { System.out.println(" system id: " + systemId); } if (uri != null) { System.out.println(" uri: " + uri); } result = resolver.resolveDoctype(name, publicId, systemId); } else if (resType == Catalog.DOCUMENT) { System.out.println("Resolve DOCUMENT ():"); result = resolver.resolveDocument(); } else if (resType == Catalog.ENTITY) { System.out.println("Resolve ENTITY (name, publicid, systemid):"); if (name != null) { System.out.println(" name: " + name); } if (publicId != null) { System.out.println(" public id: " + publicId); } if (systemId != null) { System.out.println(" system id: " + systemId); } result = resolver.resolveEntity(name, publicId, systemId); } else if (resType == Catalog.NOTATION) { System.out.println("Resolve NOTATION (name, publicid, systemid):"); if (name != null) { System.out.println(" name: " + name); } if (publicId != null) { System.out.println(" public id: " + publicId); } if (systemId != null) { System.out.println(" system id: " + systemId); } result = resolver.resolveNotation(name, publicId, systemId); } else if (resType == Catalog.PUBLIC) { System.out.println("Resolve PUBLIC (publicid, systemid):"); if (publicId != null) { System.out.println(" public id: " + publicId); } if (systemId != null) { System.out.println(" system id: " + systemId); } result = resolver.resolvePublic(publicId, systemId); } else if (resType == Catalog.SYSTEM) { System.out.println("Resolve SYSTEM (systemid):"); if (systemId != null) { System.out.println(" system id: " + systemId); } result = resolver.resolveSystem(systemId); } else if (resType == Catalog.URI) { System.out.println("Resolve URI (uri):"); if (uri != null) { System.out.println(" uri: " + uri); } result = resolver.resolveURI(uri); } else { System.out.println("resType is wrong!? This can't happen!"); usage(); } System.out.println("Result: " + result); } public static void usage() { System.out.println("Usage: resolver [options] keyword"); System.out.println(""); System.out.println("Where:"); System.out.println(""); System.out.println("-c catalogfile Loads a particular catalog file."); System.out.println("-n name Sets the name."); System.out.println("-p publicId Sets the public identifier."); System.out.println("-s systemId Sets the system identifier."); System.out.println("-a Makes the system URI absolute before resolution"); System.out.println("-u uri Sets the URI."); System.out.println("-d integer Set the debug level."); System.out.println("keyword Identifies the type of resolution to perform:"); System.out.println(" doctype, document, entity, notation, public, system,"); System.out.println(" or uri."); System.exit(1); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy