Skip to main content

This CGIT instance is deprecated, and repositories have been moved to Gitlab or Github. See the repository descriptions for specific locations.

summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/monitor/config/impl/MonitorConfigImpl.java')
-rw-r--r--bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/monitor/config/impl/MonitorConfigImpl.java561
1 files changed, 561 insertions, 0 deletions
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/monitor/config/impl/MonitorConfigImpl.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/monitor/config/impl/MonitorConfigImpl.java
new file mode 100644
index 000000000..586966d83
--- /dev/null
+++ b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/monitor/config/impl/MonitorConfigImpl.java
@@ -0,0 +1,561 @@
+/*******************************************************************************
+ * Copyright (c) 2002-2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM - Initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.wsi.internal.core.monitor.config.impl;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import org.eclipse.wst.wsi.internal.core.WSIConstants;
+import org.eclipse.wst.wsi.internal.core.WSIException;
+import org.eclipse.wst.wsi.internal.core.common.AddStyleSheet;
+import org.eclipse.wst.wsi.internal.core.common.impl.AddStyleSheetImpl;
+import org.eclipse.wst.wsi.internal.core.monitor.Monitor;
+import org.eclipse.wst.wsi.internal.core.monitor.config.Comment;
+import org.eclipse.wst.wsi.internal.core.monitor.config.ManInTheMiddle;
+import org.eclipse.wst.wsi.internal.core.monitor.config.MonitorConfig;
+import org.eclipse.wst.wsi.internal.core.monitor.config.MonitorConfigReader;
+import org.eclipse.wst.wsi.internal.core.monitor.config.Redirect;
+import org.eclipse.wst.wsi.internal.core.util.MessageList;
+
+/**
+ * This is the implementation for the monitor configuration file.
+ *
+ * @version 1.0.1
+ * @author Peter Brittenham (peterbr@us.ibm.com)
+ */
+public class MonitorConfigImpl implements MonitorConfig
+{
+ /**
+ * Message list reference.
+ */
+ protected MessageList messageList = null;
+
+ /**
+ * Monitor configuration file URI.
+ */
+ protected String documentURI = null;
+
+ /**
+ * Comment.
+ */
+ protected Comment comment = null;
+
+ /**
+ * Log location.
+ */
+ protected String logURI;
+
+ /**
+ * Replace log indicator.
+ */
+ protected boolean replaceLog = false;
+
+ /**
+ * Style sheet declaration.
+ */
+ protected AddStyleSheet addStyleSheet;
+
+ /**
+ * Log duration.
+ */
+ protected int logDuration = 600;
+
+ /**
+ * Timeout.
+ */
+ protected int timeout = 3;
+
+ /**
+ * Man-in-the-middle settings.
+ */
+ protected ManInTheMiddle manInTheMiddle = null;
+
+ /**
+ * Verbose option.
+ */
+ protected boolean verbose = false;
+
+ /**
+ * Initialize monitor config.
+ */
+ public void init(MessageList messageList)
+ {
+ this.messageList = messageList;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#getComment()
+ */
+ public Comment getComment()
+ {
+ return this.comment;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#setComment(Comment)
+ */
+ public void setComment(Comment comment)
+ {
+ this.comment = comment;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#getLogLocation()
+ */
+ public String getLogLocation()
+ {
+ return this.logURI;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#setLogLocation(String)
+ */
+ public void setLogLocation(String logURI)
+ {
+ this.logURI = logURI;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#getReplaceLog()
+ */
+ public boolean getReplaceLog()
+ {
+ return this.replaceLog;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#setReplaceLog(boolean)
+ */
+ public void setReplaceLog(boolean replaceLog)
+ {
+ this.replaceLog = replaceLog;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#getAddStyleSheet()
+ */
+ public AddStyleSheet getAddStyleSheet()
+ {
+ return this.addStyleSheet;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#setAddStyleSheet(org.wsi.test.common.AddStyleSheet)
+ */
+ public void setAddStyleSheet(AddStyleSheet addStyleSheet)
+ {
+ this.addStyleSheet = addStyleSheet;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#getLogDuration()
+ */
+ public int getLogDuration()
+ {
+ return logDuration;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#setLogDuration(int)
+ */
+ public void setLogDuration(int logDuration)
+ {
+ this.logDuration = logDuration;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#getTimeout()
+ */
+ public int getTimeout()
+ {
+ return this.timeout;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#setTimeout(int)
+ */
+ public void setTimeout(int timeout)
+ {
+ this.timeout = timeout;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#getManInTheMiddle()
+ */
+ public ManInTheMiddle getManInTheMiddle()
+ {
+ return manInTheMiddle;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#setManInTheMiddle(ManInTheMiddle)
+ */
+ public void setManInTheMiddle(ManInTheMiddle manInTheMiddle)
+ {
+ this.manInTheMiddle = manInTheMiddle;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.document.WSIDocument#getLocation()
+ */
+ public String getLocation()
+ {
+ return this.documentURI;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.document.WSIDocument#setLocation(String)
+ */
+ public void setLocation(String documentURI)
+ {
+ this.documentURI = documentURI;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#getVerboseOption()
+ */
+ public boolean getVerboseOption()
+ {
+ return this.verbose;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.monitor.config.MonitorConfig#setVerboseOption(boolean)
+ */
+ public void setVerboseOption(boolean verbose)
+ {
+ this.verbose = verbose;
+ }
+
+ /* (non-Javadoc)
+ * @see org.wsi.test.document.DocumentElement#toXMLString(String)
+ */
+ public String toXMLString(String namespaceName)
+ {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+
+ String nsName = namespaceName;
+ if ((!nsName.equals("") && (!nsName.endsWith(":"))))
+ nsName += ":";
+
+ // Config options
+ pw.println(" <" + nsName + ELEM_NAME + ">");
+
+ // Comment
+ if (this.comment != null)
+ {
+ pw.print(comment.toXMLString(nsName));
+ }
+
+ // Log file
+ pw.print(" <" + nsName + WSIConstants.ELEM_LOG_FILE + " ");
+ pw.print(WSIConstants.ATTR_REPLACE + "=\"" + this.replaceLog + "\" ");
+ pw.println(WSIConstants.ATTR_LOCATION + "=\"" + this.logURI + "\">");
+ pw.print(getAddStyleSheet().toXMLString(namespaceName));
+ pw.println(" </" + nsName + WSIConstants.ELEM_LOG_FILE + ">");
+
+ // Log duration
+ pw.print(" <" + nsName + WSIConstants.ELEM_LOG_DURATION + ">");
+ pw.print(this.logDuration);
+ pw.println("</" + nsName + WSIConstants.ELEM_LOG_DURATION + ">");
+
+ // Timeout
+ pw.print(
+ " <" + nsName + WSIConstants.ELEM_CLEANUP_TIMEOUT_SECONDS + ">");
+ pw.print(this.timeout);
+ pw.println("</" + nsName + WSIConstants.ELEM_CLEANUP_TIMEOUT_SECONDS + ">");
+
+ // Man-in-the-middle
+ if (this.manInTheMiddle != null)
+ {
+ pw.print(manInTheMiddle.toXMLString(nsName));
+ }
+
+ // End element
+ pw.println(" </" + nsName + ELEM_NAME + ">");
+
+ return sw.toString();
+ }
+
+ /**
+ * Get string representation of this object.
+ */
+ public String toString()
+ {
+ StringWriter sw = new StringWriter();
+ PrintWriter pw = new PrintWriter(sw);
+
+ pw.println(" comment ..................... " + this.comment);
+ pw.println(" logURI ...................... " + this.logURI);
+ pw.println(" replaceLog .................. " + this.replaceLog);
+ pw.println(" logDuration ................. " + this.logDuration);
+ pw.println(" timeout ..................... " + this.timeout);
+
+ // addStyleSheet
+ if (this.addStyleSheet != null)
+ pw.println(
+ " addStyleSheet ............... " + this.addStyleSheet.toString());
+
+ // Man-in-the-middle
+ if (this.manInTheMiddle != null)
+ {
+ pw.print(this.manInTheMiddle.toString());
+ }
+
+ return sw.toString();
+ }
+
+ /**
+ * Set config values from another monitor config object.
+ */
+ private void setConfig(MonitorConfig monitorConfig)
+ {
+ // ADD: Should this be a clone operation?
+ this.comment = monitorConfig.getComment();
+ this.documentURI = monitorConfig.getLocation();
+ this.logURI = monitorConfig.getLogLocation();
+ this.replaceLog = monitorConfig.getReplaceLog();
+ this.logDuration = monitorConfig.getLogDuration();
+ this.timeout = monitorConfig.getTimeout();
+ this.manInTheMiddle = monitorConfig.getManInTheMiddle();
+ this.addStyleSheet = monitorConfig.getAddStyleSheet();
+ this.verbose = monitorConfig.getVerboseOption();
+ }
+
+ /**
+ * Verify config options.
+ */
+ private void verifyConfig() throws WSIException
+ {
+ // If no redirect statements, then exit
+ if ((this.manInTheMiddle == null)
+ || (this.manInTheMiddle.getRedirectList() == null)
+ || (this.manInTheMiddle.getRedirectList().size() == 0))
+ {
+ throw new IllegalArgumentException(
+ getMessage(
+ "config05",
+ "Monitor config file did not contain any redirect statements."));
+ }
+
+ if (this.logURI == null)
+ {
+ throw new IllegalArgumentException(
+ getMessage(
+ "config06",
+ "Monitor config file did not contain the log file URI."));
+ }
+ }
+
+ /**
+ * Parse the command line arguments.
+ */
+ public void parseArgs(String[] args) throws WSIException
+ {
+ // Get new config reader
+ MonitorConfigReader monitorConfigReader = new MonitorConfigReaderImpl();
+
+ // Monitor config object which will be merged after all of the input parms are processed
+ MonitorConfig monitorConfigFromArgs = null;
+
+ // If no input arguments, then throw exception
+ if (args.length == 0)
+ {
+ // ADD:
+ throw new IllegalArgumentException(
+ getMessage("usage01", Monitor.USAGE_MESSAGE));
+ }
+
+ // Parse the command line arguments to locate the config file option (if it was specified)
+ for (int argCount = 0; argCount < args.length; argCount++)
+ {
+ // -configFile
+ if ((args[argCount].equalsIgnoreCase("-config"))
+ || (args[argCount].equals("-c")))
+ {
+ argCount++;
+ monitorConfigFromArgs =
+ monitorConfigReader.readMonitorConfig(args[argCount]);
+ }
+ }
+
+ // If config file was not specified, then create analyzer config object
+ if (monitorConfigFromArgs == null)
+ {
+ monitorConfigFromArgs = new MonitorConfigImpl();
+ monitorConfigFromArgs.init(this.messageList);
+ }
+
+ // Parse all of the command line arguments
+ for (int argCount = 0; argCount < args.length; argCount++)
+ {
+ // -configFile
+ if ((args[argCount].equalsIgnoreCase("-config"))
+ || (args[argCount].equals("-c")))
+ {
+ // Skip this option since it was already processed
+ argCount++;
+ }
+
+ // -comment
+ else if (
+ (args[argCount].equalsIgnoreCase("-comment"))
+ || (args[argCount].equals("-C")))
+ {
+ argCount++;
+ Comment comment = new CommentImpl();
+ comment.setText(args[argCount]);
+ monitorConfigFromArgs.setComment(comment);
+ }
+
+ // -logFile
+ else if (
+ (args[argCount].equalsIgnoreCase("-logFile"))
+ || (args[argCount].equals("-l")))
+ {
+ argCount++;
+ monitorConfigFromArgs.setLogLocation(args[argCount]);
+ }
+
+ // -replace
+ else if (
+ (args[argCount].equalsIgnoreCase("-replace"))
+ || (args[argCount].equals("-r")))
+ {
+ argCount++;
+ monitorConfigFromArgs.setReplaceLog(
+ Boolean.valueOf(args[argCount]).booleanValue());
+ }
+
+ // -logDuration
+ else if (
+ (args[argCount].equalsIgnoreCase("-logDuration"))
+ || (args[argCount].equals("-d")))
+ {
+ argCount++;
+ monitorConfigFromArgs.setLogDuration(
+ Integer.valueOf(args[argCount]).intValue());
+ }
+
+ // -timeout
+ else if (
+ (args[argCount].equalsIgnoreCase("-timeout"))
+ || (args[argCount].equals("-t")))
+ {
+ argCount++;
+ monitorConfigFromArgs.setTimeout(
+ Integer.valueOf(args[argCount]).intValue());
+ }
+
+ // -manInTheMiddle
+ else if (
+ (args[argCount].equalsIgnoreCase("-manInTheMiddle"))
+ || (args[argCount].equals("-m")))
+ {
+ ManInTheMiddle manInTheMiddle = null;
+
+ // Increment arg count
+ argCount++;
+
+ // Get the man-in-the-middle object
+ if ((manInTheMiddle = monitorConfigFromArgs.getManInTheMiddle())
+ == null)
+ manInTheMiddle = new ManInTheMiddleImpl();
+
+ // ADD: Check for correct number of remaining args
+
+ // Create redirect
+ Redirect redirect = new RedirectImpl();
+
+ // Get the redirect values
+ redirect.setListenPort(Integer.valueOf(args[argCount++]).intValue());
+ redirect.setHost(args[argCount++]);
+ redirect.setMaxConnections(
+ Integer.valueOf(args[argCount++]).intValue());
+ redirect.setReadTimeoutSeconds(
+ Integer.valueOf(args[argCount++]).intValue());
+
+ // Add redirect
+ manInTheMiddle.addRedirect(redirect);
+
+ // Set the man-in-the-middle
+ monitorConfigFromArgs.setManInTheMiddle(manInTheMiddle);
+ }
+
+ // -verbose
+ else if (
+ (args[argCount].equalsIgnoreCase("-verbose"))
+ || (args[argCount].equals("-v")))
+ {
+ argCount++;
+ //monitorConfigFromArgs.setVerboseOption(Boolean.valueOf(args[argCount]).booleanValue());
+ monitorConfigFromArgs.setVerboseOption(true);
+ }
+
+ // -GUI
+ else if (args[argCount].equalsIgnoreCase("-GUI"))
+ {
+ // Ignore -GUI option
+ }
+
+ else
+ {
+ throw new IllegalArgumentException(
+ getMessage(
+ "config01",
+ args[argCount],
+ "The specified option is not supported."));
+ }
+ }
+
+ // If addStyleSheet was not specified, then create a comment version of it
+ if (monitorConfigFromArgs.getAddStyleSheet() == null)
+ {
+ AddStyleSheet addStyleSheet = new AddStyleSheetImpl();
+ addStyleSheet.setHref(WSIConstants.DEFAULT_LOG_XSL);
+ addStyleSheet.setType(WSIConstants.DEFAULT_XSL_TYPE);
+ addStyleSheet.setComment(true);
+ monitorConfigFromArgs.setAddStyleSheet(addStyleSheet);
+ }
+
+ // Merge config info into this object
+ setConfig(monitorConfigFromArgs);
+
+ // Verify config options
+ verifyConfig();
+ }
+
+ /**
+ * Get message from resource bundle.
+ */
+ private String getMessage(String messageID, String defaultMessage)
+ {
+ return getMessage(messageID, null, defaultMessage);
+ }
+
+ /**
+ * Get message from resource bundle.
+ */
+ private String getMessage(
+ String messageID,
+ String messageData,
+ String defaultMessage)
+ {
+ String message = defaultMessage;
+ if (messageList != null)
+ message = messageList.getMessage(messageID, messageData, defaultMessage);
+ else
+ message += " " + messageData + ".";
+
+ return message;
+ }
+}

Back to the top