ControllerParser.java の 64 行で定義されています。
Public メソッド | |
ControllerParser (ControllerFactory configure) throws SAXException | |
void | readXML (String xml) throws IOException, SAXException |
void | readXML (String xml, boolean validateBeforeParsing) throws IOException, SAXException |
void | readXML (FileReader fileReader, boolean validateBeforeParsing) throws IOException, SAXException |
void | fatalError (SAXParseException e) throws SAXException |
void | error (SAXParseException e) throws SAXException |
InputSource | resolveEntity (String publicId, String systemId) throws SAXException |
void | startDocument () throws SAXException |
void | endDocument () throws SAXException |
void | startElement (String uri, String localName, String name, Attributes atts) throws SAXException |
void | endElement (String uri, String localName, String name) throws SAXException |
変数 | |
String | controllerIP |
スタティック変数 | |
Trace | logger |
Private 変数 | |
XMLReader | parser |
ControllerFactory | config |
ControllerSecurityManager | security |
boolean | parseAccept = false |
Static Private 変数 | |
final String | C_JDBC_CONTROLLER_DTD_FILE = "c-jdbc-controller.dtd" |
|
Creates a new
ControllerParser.java の 92 行で定義されています。
00093 { 00094 this.config = configure; 00095 00096 // Instantiate a new parser 00097 parser = XMLReaderFactory.createXMLReader(); 00098 00099 // Activate validation 00100 parser.setFeature("http://xml.org/sax/features/validation", true); 00101 00102 // Install error handler 00103 parser.setErrorHandler(this); 00104 00105 // Install document handler 00106 parser.setContentHandler(this); 00107 00108 // Install local entity resolver 00109 parser.setEntityResolver(this); 00110 } |
|
Finalizes parsing of a document.
ControllerParser.java の 270 行で定義されています。
00271 { 00272 logger.info(Translate.get("controller.xml.done")); 00273 } |
|
DatabasesParser for end of element.
ControllerParser.java の 505 行で定義されています。
00507 { 00508 // We need information on what configuration are for jmx 00509 if (name.equalsIgnoreCase(ControllerXmlTags.ELT_JMX)) 00510 { 00511 config.setUpJmx(); 00512 } 00513 if (name.equalsIgnoreCase(ControllerXmlTags.ELT_SECURITY)) 00514 { 00515 config.setUpSecurity(security); 00516 } 00517 if (name.equalsIgnoreCase(ControllerXmlTags.ELT_CONTROLLER)) 00518 { 00519 // Be sure no settings are used for report 00520 if (!ControllerReport.isReportEnabled()) 00521 { 00522 ControllerReport.setSettings(null); 00523 } 00524 } 00525 logger.debug(Translate.get("controller.xml.parsing.end", name)); 00526 } |
|
Handles notification of a recoverable parser error.
ControllerParser.java の 223 行で定義されています。
00224 { 00225 logger.error(Translate.get("controller.xml.parsing.error", new String[]{ 00226 e.getPublicId(), String.valueOf(e.getLineNumber()), 00227 String.valueOf(e.getColumnNumber()), e.getMessage()})); 00228 throw e; 00229 } |
|
Handles notification of a non-recoverable parser error.
ControllerParser.java の 208 行で定義されています。 参照先 org.objectweb.cjdbc.common.log.Trace.error().
00209 { 00210 logger.error(Translate.get("controller.xml.parsing.fatal", new String[]{ 00211 e.getPublicId(), String.valueOf(e.getLineNumber()), 00212 String.valueOf(e.getColumnNumber()), e.getMessage()})); 00213 throw e; 00214 } |
|
Parses an XML formatted file according to C-JDBC-controller DTD.
ControllerParser.java の 175 行で定義されています。 参照先 org.objectweb.cjdbc.controller.xml.ControllerParser.readXML().
00177 { 00178 if (fileReader != null) 00179 { 00180 00181 // Read the file 00182 BufferedReader in = new BufferedReader(fileReader); 00183 StringBuffer xml = new StringBuffer(); 00184 String line; 00185 do 00186 { 00187 line = in.readLine(); 00188 if (line != null) 00189 xml.append(line.trim()); 00190 } 00191 while (line != null); 00192 00193 readXML(xml.toString(), validateBeforeParsing); 00194 } 00195 else 00196 { 00197 throw new IOException("Input was null in input source."); 00198 } 00199 } |
|
Parses an XML formatted string according to C-JDBC-controller DTD.
ControllerParser.java の 138 行で定義されています。 参照先 org.objectweb.cjdbc.controller.xml.ControllerParser.C_JDBC_CONTROLLER_DTD_FILE, org.objectweb.cjdbc.common.log.Trace.debug(), org.objectweb.cjdbc.common.log.Trace.error(), org.objectweb.cjdbc.common.xml.XmlValidator.getExceptions(), org.objectweb.cjdbc.common.log.Trace.isDebugEnabled(), org.objectweb.cjdbc.common.xml.XmlValidator.isDtdValid, org.objectweb.cjdbc.common.xml.XmlValidator.isValid(), org.objectweb.cjdbc.common.xml.XmlValidator.isXmlValid, と org.objectweb.cjdbc.controller.xml.ControllerParser.readXML().
00140 { 00141 if (validateBeforeParsing) 00142 { 00143 XmlValidator validator = new XmlValidator(C_JDBC_CONTROLLER_DTD_FILE, xml 00144 .toString()); 00145 if (logger.isDebugEnabled()) 00146 { 00147 if (validator.isDtdValid()) 00148 logger.debug(Translate.get("controller.xml.dtd.validated")); 00149 if (validator.isXmlValid()) 00150 logger.debug(Translate.get("controller.xml.document.validated")); 00151 } 00152 if (!validator.isDtdValid()) 00153 logger.error(Translate.get("controller.xml.dtd.not.validated")); 00154 if (!validator.isXmlValid()) 00155 logger.error(Translate.get("controller.xml.document.not.validated")); 00156 00157 ArrayList errors = validator.getExceptions(); 00158 for (int i = 0; i < errors.size(); i++) 00159 logger.error(((Exception) errors.get(i)).getMessage()); 00160 00161 if (!validator.isValid()) 00162 throw new SAXException(ExceptionTypes.XML_DOCUMENT_INVALID); 00163 } 00164 readXML(xml); 00165 } |
|
Parses an XML content according to C-JDBC-controller DTD.
ControllerParser.java の 119 行で定義されています。 参照元 org.objectweb.cjdbc.controller.xml.ControllerParser.readXML(), と org.objectweb.cjdbc.controller.core.ControllerFactory.setUpByXml().
00120 { 00121 if (xml != null) 00122 { 00123 InputSource input = new InputSource(new StringReader(xml)); 00124 parser.parse(input); 00125 } 00126 else 00127 throw new IOException("Input was null in input source."); 00128 } |
|
Allows to parse the document with a local copy of the DTD whatever the original
ControllerParser.java の 239 行で定義されています。
00241 { 00242 logger.debug(Translate.get("controller.xml.dtd.using", 00243 C_JDBC_CONTROLLER_DTD_FILE)); 00244 InputStream stream = ControllerParser.class.getResourceAsStream("/" 00245 + C_JDBC_CONTROLLER_DTD_FILE); 00246 if (stream == null) 00247 { 00248 throw new SAXException(Translate.get("controller.xml.dtd.not.found", 00249 C_JDBC_CONTROLLER_DTD_FILE)); 00250 } 00251 00252 return new InputSource(stream); 00253 } |
|
Initializes parsing of a document.
ControllerParser.java の 260 行で定義されています。
00261 { 00262 logger.debug(Translate.get("controller.xml.parsing.document")); 00263 } |
|
Analyzes an element first line.
ControllerParser.java の 284 行で定義されています。
00286 { 00287 logger.debug(Translate.get("controller.xml.parsing.start", name)); 00288 if (name.equalsIgnoreCase(ControllerXmlTags.ELT_CONTROLLER)) 00289 { 00290 try 00291 { 00292 00293 String controllerPort = atts 00294 .getValue(ControllerXmlTags.ATT_CONTROLLER_PORT); 00295 if (config.get(ControllerFactory.CONTROLLER_PORT).equals( 00296 "" + ControllerConstants.DEFAULT_PORT)) 00297 { 00298 config.put(ControllerFactory.CONTROLLER_PORT, controllerPort); 00299 config.getController() 00300 .setPortNumber(Integer.parseInt(controllerPort)); 00301 } 00302 00303 controllerIP = atts.getValue(ControllerXmlTags.ATT_CONTROLLER_IP); 00304 if (config.get(ControllerFactory.CONTROLLER_IP).equals( 00305 "" + ControllerConstants.DEFAULT_IP)) 00306 { 00307 config.put(ControllerFactory.CONTROLLER_IP, controllerIP); 00308 config.getController().setIPAddress(controllerIP); 00309 } 00310 00311 String controllerBacklog = atts 00312 .getValue(ControllerXmlTags.ATT_backlogSize); 00313 if (config.get(ControllerFactory.CONTROLLER_BACKLOG).equals( 00314 "" + ControllerConstants.DEFAULT_BACKLOG_SIZE)) 00315 { 00316 config.put(ControllerFactory.CONTROLLER_BACKLOG, controllerBacklog); 00317 config.getController().setBacklogSize( 00318 Integer.parseInt(controllerBacklog)); 00319 } 00320 } 00321 catch (Exception e) 00322 { 00323 throw new SAXException(e.getMessage()); 00324 } 00325 00326 } 00327 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_INTERNATIONALIZATION)) 00328 { 00329 Locale.setDefault(new Locale(atts 00330 .getValue(ControllerXmlTags.ATT_LANGUAGE), "")); 00331 } 00332 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_REPORT)) 00333 { 00334 String enabled = "true"; 00335 config.put(ControllerXmlTags.ATT_REPORT_ENABLED, enabled); 00336 config.put(ControllerXmlTags.ATT_REPORT_HIDE_SENSITIVE_DATA, atts 00337 .getValue(ControllerXmlTags.ATT_REPORT_HIDE_SENSITIVE_DATA)); 00338 config.put(ControllerXmlTags.ATT_REPORT_GENERATE_ON_SHUTDOWN, atts 00339 .getValue(ControllerXmlTags.ATT_REPORT_GENERATE_ON_SHUTDOWN)); 00340 config.put(ControllerXmlTags.ATT_REPORT_GENERATE_ON_FATAL, atts 00341 .getValue(ControllerXmlTags.ATT_REPORT_GENERATE_ON_FATAL)); 00342 00343 String reportLocation = atts 00344 .getValue(ControllerXmlTags.ATT_REPORT_REPORT_LOCATION); 00345 // Default to CJDBC_HOME/log 00346 if ((reportLocation == null) || reportLocation.equals("")) 00347 { 00348 String defaultDir = System.getProperty("cjdbc.home"); 00349 if (defaultDir == null) 00350 { 00351 reportLocation = "."; 00352 } 00353 else 00354 { 00355 reportLocation = defaultDir + File.separator 00356 + ControllerConstants.DEFAULT_LOG_DIR_NAME; 00357 } 00358 } 00359 config.put(ControllerXmlTags.ATT_REPORT_REPORT_LOCATION, reportLocation); 00360 00361 config.put(ControllerXmlTags.ATT_REPORT_ENABLE_FILE_LOGGING, atts 00362 .getValue(ControllerXmlTags.ATT_REPORT_ENABLE_FILE_LOGGING)); 00363 ControllerReport.setSettings(config); 00364 } 00365 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_BACKUP)) 00366 { 00367 config.put(ControllerXmlTags.ATT_BACKUP_CLEAN, atts 00368 .getValue(ControllerXmlTags.ATT_BACKUP_CLEAN)); 00369 config.put(ControllerXmlTags.ATT_BACKUP_DIR, atts 00370 .getValue(ControllerXmlTags.ATT_BACKUP_DIR)); 00371 config.put(ControllerXmlTags.ATT_BACKUP_ZIP, atts 00372 .getValue(ControllerXmlTags.ATT_BACKUP_ZIP)); 00373 config.put(ControllerXmlTags.ATT_BACKUP_ON_SHUDOWN, atts 00374 .getValue(ControllerXmlTags.ATT_BACKUP_ON_SHUDOWN)); 00375 config.put(ControllerXmlTags.ATT_BACKUP_NB_OF_BACKUPS, atts 00376 .getValue(ControllerXmlTags.ATT_BACKUP_NB_OF_BACKUPS)); 00377 00378 Octopus.setOctopusDirectory(atts 00379 .getValue(ControllerXmlTags.ATT_BACKUP_DIR)); 00380 Octopus.setCleanOctopus((Boolean.valueOf(atts 00381 .getValue(ControllerXmlTags.ATT_BACKUP_CLEAN))).booleanValue()); 00382 Octopus.setZipOctopus((Boolean.valueOf(atts 00383 .getValue(ControllerXmlTags.ATT_BACKUP_ZIP))).booleanValue()); 00384 } 00385 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_JMX)) 00386 { 00387 config.put(ControllerFactory.JMX_ENABLE, "true"); 00388 } 00389 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_HTTP_JMX_ADAPTOR)) 00390 { 00391 String adaptorPort = atts 00392 .getValue(ControllerXmlTags.ATT_JMX_ADAPTOR_PORT); 00393 if (config.get(JmxConstants.ADAPTOR_TYPE_HTTP) == null) 00394 config.put(JmxConstants.ADAPTOR_TYPE_HTTP, String.valueOf(adaptorPort)); 00395 } 00396 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_RMI_JMX_ADAPTOR)) 00397 { 00398 String adaptorPort = atts 00399 .getValue(ControllerXmlTags.ATT_JMX_ADAPTOR_PORT); 00400 if (config.get(JmxConstants.ADAPTOR_TYPE_RMI) == null) 00401 config.put(JmxConstants.ADAPTOR_TYPE_RMI, String.valueOf(adaptorPort)); 00402 } 00403 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_DATABASE)) 00404 { 00405 String checkPoint = atts 00406 .getValue(ControllerXmlTags.ATT_DATABASE_CHECKPOINT); 00407 String virtualName = atts.getValue(ControllerXmlTags.ATT_DATABASE_NAME); 00408 String file = atts.getValue(ControllerXmlTags.ATT_DATABASE_FILE); 00409 00410 // Try to find the file on the path (usually config directory) if no file 00411 // separator is found 00412 if (file.indexOf(File.separator) == -1) 00413 { 00414 try 00415 { 00416 URL url = this.getClass().getResource("/" + file); 00417 file = url.getFile(); 00418 logger.info(Translate.get("controller.configure.using", file)); 00419 } 00420 catch (Exception e) 00421 { 00422 throw new SAXException(Translate.get( 00423 "controller.configure.file.not.found", file)); 00424 } 00425 } 00426 00427 file = URLDecoder.decode(file); 00428 00429 File checkExist = new File(file); 00430 if (checkExist.exists() == false) 00431 throw new SAXException(Translate.get( 00432 "controller.configure.file.not.found", file)); 00433 00434 boolean autoLoad = new Boolean(atts 00435 .getValue(ControllerXmlTags.ATT_DATABASE_ENABLE)).booleanValue(); 00436 00437 logger.info(Translate.get("controller.configure.setup", new String[]{ 00438 virtualName, String.valueOf(autoLoad), checkPoint})); 00439 config.setUpVirtualDatabase(file, virtualName, autoLoad, checkPoint); 00440 } 00441 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_SECURITY)) 00442 { 00443 security = new ControllerSecurityManager(); 00444 boolean connect = new Boolean(atts 00445 .getValue(ControllerXmlTags.ATT_DEFAULT_CONNECT)).booleanValue(); 00446 security.setDefaultConnect(connect); 00447 } 00448 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_JAR)) 00449 { 00450 boolean allow = new Boolean(atts 00451 .getValue(ControllerXmlTags.ATT_JAR_ALLOW_DRIVER)).booleanValue(); 00452 security.setAllowAdditionalDriver(allow); 00453 } 00454 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_CLIENT)) 00455 { 00456 boolean localhost = new Boolean(atts 00457 .getValue(ControllerXmlTags.ATT_ONLY_LOCALHOST)).booleanValue(); 00458 boolean allow = new Boolean(atts.getValue(ControllerXmlTags.ATT_ALLOW)) 00459 .booleanValue(); 00460 security.setAllowClientShutdown(allow); 00461 security.setAllowLocalClientOnly(localhost); 00462 } 00463 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_CONSOLE)) 00464 { 00465 boolean localhost = new Boolean(atts 00466 .getValue(ControllerXmlTags.ATT_ONLY_LOCALHOST)).booleanValue(); 00467 boolean allow = new Boolean(atts.getValue(ControllerXmlTags.ATT_ALLOW)) 00468 .booleanValue(); 00469 security.setAllowConsoleShutdown(allow); 00470 security.setAllowLocalConsoleOnly(localhost); 00471 } 00472 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_ACCEPT)) 00473 parseAccept = true; 00474 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_BLOCK)) 00475 parseAccept = false; 00476 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_HOSTNAME)) 00477 security.addHostToSecureList(atts.getValue(ControllerXmlTags.ATT_VALUE), 00478 parseAccept); 00479 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_IPADDRESS)) 00480 security.addHostToSecureList(atts.getValue(ControllerXmlTags.ATT_VALUE), 00481 parseAccept); 00482 else if (name.equalsIgnoreCase(ControllerXmlTags.ELT_IPRANGE)) 00483 { 00484 String iprange = atts.getValue(ControllerXmlTags.ATT_VALUE); 00485 try 00486 { 00487 security.addToSecureList(iprange, parseAccept); 00488 } 00489 catch (Exception e) 00490 { 00491 logger.warn(Translate.get("controller.configure.invalid.iprange", 00492 iprange)); 00493 } 00494 } 00495 } |
|
C-JDBC-Controller DTD file name (must be found in classpath). ControllerParser.java の 75 行で定義されています。 参照元 org.objectweb.cjdbc.controller.xml.ControllerParser.readXML(). |
|
C-JDBC controller to setup. ControllerParser.java の 78 行で定義されています。 |
|
ControllerParser.java の 82 行で定義されています。 |
|
初期値: Trace .getLogger(ControllerParser.class .getName()) ControllerParser.java の 67 行で定義されています。 |
|
ControllerParser.java の 80 行で定義されています。 |
|
XML parser. ControllerParser.java の 72 行で定義されています。 |
|
ControllerParser.java の 79 行で定義されています。 |