jtxmlmsgreader.java
来自「Java Pattern Oriented Framework (Jt) 是为了」· Java 代码 · 共 363 行
JAVA
363 行
package Jt.xml;
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import Jt.*;
/**
* Read Jt messages from a XML file. This class is being deprecated.
*/
public class JtXMLMsgReader extends JtObject
implements ContentHandler {
public static final String JtCLASS_NAME = JtXMLMsgReader.class.getName();
public static final String JtPARSE = "JtPARSE";
private static final long serialVersionUID = 1L;
private XMLReader reader = null;
protected static final String DEFAULT_PARSER_NAME = "org.apache.xerces.parsers.SAXParser";
private String uri;
private String string;
private JtMessage msg = null;
private String elemName = null;
//String elemValue = null;
Object replyTo = null;
StringBuffer buffer = null;
Object output = null;
JtXMLHelper xmlHelper = null;
private String parserName = DEFAULT_PARSER_NAME;
public JtXMLMsgReader() {
}
/**
* Specifies the parser.
* @param parserName parse
*/
void setParserName (String parserName) {
this.parserName = parserName;
}
/**
* Returns the parser.
*/
String getParserName () {
return (parserName);
}
// URI
public void setUri (String uri) {
this.uri = uri;
}
public String getUri () {
return (uri);
}
// Use a String (XML format) instead of a URI
public void setString (String string) {
this.string = string; // void operation
}
public String getString () {
return (string);
}
/** Start element (SAX API). */
public void startElement(String uri, String local, String raw,
Attributes attrs) throws SAXException {
if ("".equals (uri)) {
handleTrace ("Start element: " + raw);
if ("JtMessage".equals (raw)) {
msg = new JtMessage ();
return;
}
elemName = raw;
//elemValue = null;
buffer = null;
}else
handleTrace ("Start element: {" + uri + "}" + local);
}
Object sendReply (JtMessage msg ) {
if (msg != null && replyTo != null )
return (sendMessage (replyTo, msg));
return (null);
}
public void endElement(String uri,
String name,
String qName)
throws SAXException {
// elemName = null;
// elemValue = null;
// buffer = null;
if ("".equals (uri)) {
handleTrace ("End element: " + qName);
if (msg != null && "JtMessage".equals (qName)) {
output = sendReply (msg);
msg = null;
buffer = null;
return;
}
if (msg != null && buffer != null &&
qName != null) {
if (!qName.equals ("JtMessage"))
setValue (msg, qName, buffer.toString ());
buffer = null;
}
} else
handleTrace ("End element: {" + uri + "}" + name);
}
/** Start document. */
public void startDocument() throws SAXException {
}
public void endDocument()
throws SAXException {
}
public void characters(char[] ch,
int start,
int length)
throws SAXException {
String tmp;
//handleTrace ("Characters: \"");
if (buffer == null)
buffer = new StringBuffer ();
for (int i = start; i < start + length; i++) {
switch (ch[i]) {
case '\\':
handleTrace("\\\\");
break;
case '"':
handleTrace("\\\"");
break;
case '\n':
//handleTrace("\\n");
break;
case '\r':
handleTrace ("\\r");
break;
case '\t':
handleTrace ("\\t");
break;
default:
buffer.append (ch[i]);
break;
}
}
//handleTrace("\"\n");
//elemValue = buffer.toString ();
tmp = buffer.toString().trim ();
if (!tmp.equals ("")) {
handleTrace("JtXMLMsgReader.characters:" +
buffer);
}
}
public void endPrefixMapping(String prefix)
throws SAXException {
}
public void ignorableWhitespace(char[] ch,
int start,
int length)
throws SAXException {
}
public void processingInstruction(String target,
String data)
throws SAXException {
}
public void setDocumentLocator(Locator locator) {
}
public void skippedEntity(java.lang.String name)
throws SAXException {
}
public void startPrefixMapping(String prefix,
String uri)
throws SAXException
{
}
// realize
public void realizeObject () {
if (reader != null)
return;
try{
reader = XMLReaderFactory.createXMLReader (parserName);
reader.setContentHandler (this);
//reader.setErrorHandler (this);
} catch (Exception ex) {
handleException (ex);
}
}
private Object parse () {
ByteArrayInputStream bstream;
JtMessage msg = new JtMessage (JtXMLMsgReader.JtXML_ENCODE);
if (reader == null)
realizeObject ();
if (uri == null && string == null) {
handleError ("JtXMLMsgReader.parse: both uri and string are null");
return null;
}
if (uri != null && string != null) {
handleError ("JtXMLMsgReader.parse: set uri or string (only one)");
return null;
}
try {
if (uri != null)
reader.parse (uri);
else {
bstream = new ByteArrayInputStream (string.getBytes());
reader.parse (new InputSource ((InputStream) bstream));
}
} catch (Exception ex) {
handleException (ex);
}
if (xmlHelper == null)
xmlHelper = new JtXMLHelper ();
msg.setMsgContent (output);
return (sendMessage (xmlHelper, msg));
//System.out.println ("output:" + output);
//return output;
}
// Process object messages
public Object processMessage (Object event) {
String msgid = null;
JtMessage e = (JtMessage) event;
//Object content;
if (e == null)
return null;
msgid = (String) e.getMsgId ();
if (msgid == null)
return null;
// content = e.getMsgContent();
replyTo = e.getMsgReplyTo ();
if (msgid.equals (JtXMLMsgReader.JtPARSE)) {
return (parse ());
}
if (msgid.equals (JtObject.JtREMOVE)) {
return (null);
}
handleError ("JtXMLMsgReader.processMessage: invalid message id:" + msgid);
return (null);
}
// Test program
public static void main(String[] args) {
JtObject main = new JtObject ();
//JtMessage msg, msg1;
//Integer count;
String str;
//main.setLogFile ("log.txt");
if (args.length < 1) {
System.err.println ("Usage: java JtXMLMsgReader uri");
System.exit (1);
}
// Create message reader
main.createObject (JtXMLMsgReader.JtCLASS_NAME, "reader");
main.createObject (JtMessage.JtCLASS_NAME, "message");
main.setValue ("message", "msgId", JtXMLMsgReader.JtPARSE);
main.setValue ("reader", "uri", args[0]);
main.sendMessage ("reader", "message");
main.createObject (JtFile.JtCLASS_NAME, "file");
main.setValue ("file", "name", args[0]);
main.setValue ("message", "msgId", JtFile.JtCONVERT_TO_STRING);
str = (String) main.sendMessage ("file", "message");
main.setValue ("message", "msgId", JtXMLMsgReader.JtPARSE);
main.setValue ("reader", "uri", null);
main.setValue ("reader", "string", str);
main.sendMessage ("reader", "message");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?