You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafodion.apache.org by db...@apache.org on 2016/05/02 18:12:06 UTC

[27/60] incubator-trafodion git commit: TRAFODION-1933 JDBC TYpe4 driver build scripts migrated to use maven instead of ant

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/72e17019/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Driver.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Driver.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Driver.java
new file mode 100644
index 0000000..a1724aa
--- /dev/null
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4Driver.java
@@ -0,0 +1,367 @@
+// @@@ START COPYRIGHT @@@
+//
+// 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.
+//
+// @@@ END COPYRIGHT @@@
+
+package org.trafodion.jdbc.t4;
+
+import java.sql.DriverManager;
+import java.sql.DriverPropertyInfo;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Properties;
+import java.util.logging.Level;
+import java.util.logging.LogRecord;
+import java.util.logging.Logger;
+
+/**
+ * <p>
+ * JDBC Type 4 Driver implementation.
+ * </p>
+ * <p>
+ * Description: <code>T4Driver</code> is an implementation of the
+ * <code>java.sql.Driver</code> interface. The Java SQL framework allows for
+ * multiple database drivers to be loaded in single java program. The
+ * <code>T4Driver</code> can be loaded programatically by
+ * <code>Class.forName("org.trafodion.jdbc.t4.T4Driver") </code> or by passing
+ * <code>-Djdbc.drivers=org.trafodion.jdbc.t4.T4Driver</code> in the command line of
+ * the Java program.
+ * </p>
+ * <p>
+ * Licensed to the Apache Software Foundation (ASF)
+ * </p>
+ * 
+ * @see java.sql.DriverManager
+ * @see java.sql.Connection
+ */
+public class T4Driver extends T4Properties implements java.sql.Driver {
+	/**
+	 * Retrieves whether the Type 4 driver determined that it can open a
+	 * connection to the given URL. Typically drivers return true if they
+	 * recognize the subprotocol specified in the URL and false if they do not.
+	 * For Type 4 driver to recognize the protocol, the URL must start with
+	 * <code>jdbc:t4jdbc</code>.
+	 * 
+	 * @param url
+	 *            The URL of the database.
+	 * @return true if the Type 4 driver recognizes the given URL; otherwise,
+	 *         false.
+	 */
+	public boolean acceptsURL(String url) throws SQLException {
+		if (t4GlobalLogger.isLoggable(Level.FINE) == true) {
+			Object p[] = T4LoggingUtilities.makeParams(null,filterOutPWD(url));
+			t4GlobalLogger.logp(Level.FINE, "T4Driver", "acceptsURL", "", p);
+		}
+		if (getLogWriter() != null) {
+			LogRecord lr = new LogRecord(Level.FINE, "");
+			Object p[] = T4LoggingUtilities.makeParams(null, filterOutPWD(url));
+			lr.setParameters(p);
+			lr.setSourceClassName("T4Driver");
+			lr.setSourceMethodName("acceptsURL");
+			T4LogFormatter lf = new T4LogFormatter();
+			String temp = lf.format(lr);
+			getLogWriter().println(temp);
+		}
+
+		return T4Address.acceptsURL(url);
+	}
+
+	/**
+	 * Attempts to make an NDCS connection to the given URL. The Type 4 driver
+	 * returns "null" when it determines that the driver is the wrong kind of
+	 * driver to connect to the given URL. This occurence is common; for
+	 * example, when the JDBC driver manager is requested to connect to a given
+	 * URL, the driver manager it passes the URL to each loaded driver in turn.
+	 * The Type 4 driver throws an SQLException when it has trouble connecting
+	 * to NDCS. You can use the <code>java.util.Properties</code> argument to
+	 * pass arbitrary string name-value pairs as connection arguments.
+	 * Typically, you should include "user" and "password" properties in the
+	 * Properties object.
+	 * 
+	 * @param url
+	 *            The URL string of format
+	 *            <code>jdbc:t4jdbc://host:port/:</code>
+	 * @param info
+	 *            <code>java.util.Properties</code> object containing
+	 *            name-value pair.
+	 * @return The <code>TrafT4Connection</code> object.
+	 * @throws SQLException
+	 *             When an error occurs connecting to NDCS.
+	 * @see T4Properties
+	 */
+	public java.sql.Connection connect(String url, Properties info) throws SQLException {
+		Properties tempinfo = null;
+		if (t4GlobalLogger.isLoggable(Level.FINE) == true) {
+			tempinfo = new Properties();
+			tempinfo.putAll(info);
+			tempinfo.remove("password");
+			Object p[] = T4LoggingUtilities.makeParams(null, filterOutPWD(url), tempinfo);
+			t4GlobalLogger.logp(Level.FINE, "T4Driver", "connect", "", p);
+		}
+		if (getLogWriter() != null) {
+			if (tempinfo == null) {
+				tempinfo = new Properties();
+				tempinfo.putAll(info);
+				tempinfo.remove("password");
+			}
+			LogRecord lr = new LogRecord(Level.FINE, "");
+			Object p[] = T4LoggingUtilities.makeParams(null, filterOutPWD(url), tempinfo);
+			lr.setParameters(p);
+			lr.setSourceClassName("T4Driver");
+			lr.setSourceMethodName("connect");
+			T4LogFormatter lf = new T4LogFormatter();
+			String temp = lf.format(lr);
+			getLogWriter().println(temp);
+		}
+
+		if (logger.isLoggable(Level.INFO)) {
+			logger.entering("HPT4DataSource", "getConnection");
+		}
+
+		String key = null;
+		HPT4DataSource ds = null;
+
+		if (acceptsURL(url)) {
+			 synchronized(this) {
+				// properties in the info take precedence.
+				// Note, setURL also assigns the T4Properties that are on the URL
+				Properties urlProps = setURL(url);
+	
+				//
+				// Merge any property that is in the url but not in info.
+				//
+				if (urlProps != null && info != null) {
+					Enumeration en1 = urlProps.propertyNames();
+					String key1 = null;
+	
+					while (en1 != null && en1.hasMoreElements() == true) {
+						key1 = (String) en1.nextElement();
+						if (info.getProperty(key1) == null) {
+							info.setProperty(key1, urlProps.getProperty(key1));
+						}
+					}
+				}
+	
+				// If info is false, but there were properties on the URL,
+				// the URL properties were already set when we called setURL.
+				if (info != null) {
+					initialize(info);
+					if (getSQLException() != null) {
+						throw HPT4Messages.createSQLException(null, getLocale(), "invalid_property", getSQLException());
+					}
+				}
+				if (getMaxPoolSize() != -1) {
+					key = getUrl() + getCatalog() + getSchema() + getUser() + getPassword() + getServerDataSource()
+							+ getBlobTableName() + getClobTableName();
+	
+					ds = (HPT4DataSource) dsCache_.get(key);
+	
+					if (ds == null) {
+						ds = new HPT4DataSource(getProperties());
+						dsCache_.put(key, ds);
+					}
+				} else {
+					ds = new HPT4DataSource(getProperties());
+				}
+			 }
+			 
+			return ds.getConnection(ds.getUser(), ds.getPassword());
+		} else {
+			return null;
+		}
+	}
+
+	private String filterOutPWD(String url) {
+		return url.replaceAll("password\\s*\\=\\s*[^;]*", "");
+	}
+
+	/**
+	 * Retrieves the driver's major JDBC version number. For the Type 4 Driver,
+	 * the number should be 3.
+	 * 
+	 * @return 3.
+	 */
+	public int getMajorVersion() {
+		if (t4GlobalLogger.isLoggable(Level.FINE) == true) {
+			Object p[] = T4LoggingUtilities.makeParams(null);
+			t4GlobalLogger.logp(Level.FINE, "T4Driver", "getMajorVersion", "", p);
+		}
+		try {
+			if (getLogWriter() != null) {
+				LogRecord lr = new LogRecord(Level.FINE, "");
+				Object p[] = T4LoggingUtilities.makeParams(null);
+				lr.setParameters(p);
+				lr.setSourceClassName("T4Driver");
+				lr.setSourceMethodName("getMajorVersion");
+				T4LogFormatter lf = new T4LogFormatter();
+				String temp = lf.format(lr);
+				getLogWriter().println(temp);
+			}
+		} catch (SQLException se) {
+			// ignore
+		}
+
+		return 3;
+	}
+
+	/**
+	 * Gets the Type 4 driver's minor version number. For the Type 4 driver, the
+	 * number should be 11.
+	 * 
+	 * @return 11
+	 */
+	public int getMinorVersion() {
+		if (t4GlobalLogger.isLoggable(Level.FINE) == true) {
+			Object p[] = T4LoggingUtilities.makeParams(null);
+			t4GlobalLogger.logp(Level.FINE, "T4Driver", "getMinorVersion", "", p);
+		}
+		try {
+			if (getLogWriter() != null) {
+				LogRecord lr = new LogRecord(Level.FINE, "");
+				Object p[] = T4LoggingUtilities.makeParams(null);
+				lr.setParameters(p);
+				lr.setSourceClassName("T4Driver");
+				lr.setSourceMethodName("getMinorVersion");
+				T4LogFormatter lf = new T4LogFormatter();
+				String temp = lf.format(lr);
+				getLogWriter().println(temp);
+			}
+		} catch (SQLException se) {
+			// ignore
+		}
+
+		return 11;
+	}
+
+	/**
+	 * Gets information about the possible properties for the Type 4 driver. The
+	 * <code>getPropertyInfo</code> method is intended to allow a generic GUI
+	 * tool to determine the properties that the tool should prompt from a human
+	 * to get enough information to connect to NDCS. Depending on the values the
+	 * human has supplied so far, additional values might be necessary, so you
+	 * might need to iterate though several calls to the
+	 * <code>getPropertyInfo</code> method.
+	 * 
+	 * @param url
+	 *            The URL of the database to which to connect
+	 * @param info
+	 *            <code>java.util.Properties</code> object containing
+	 *            name-value pairs. The Type 4 driver ignores the Properties
+	 *            parameter passed to the driver.
+	 * @return array of <code>DriverPropertyInfo</code> containing property
+	 *         details.
+	 */
+
+	public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
+		Properties tempinfo = null;
+		if (t4GlobalLogger.isLoggable(Level.FINE) == true) {
+			tempinfo = new Properties();
+			tempinfo.putAll(info);
+			tempinfo.remove("password");
+			Object p[] = T4LoggingUtilities.makeParams(null, filterOutPWD(url), tempinfo);
+			t4GlobalLogger.logp(Level.FINE, "T4Driver", "getPropertyInfo", "", p);
+		}
+		if (getLogWriter() != null) {
+			if(tempinfo == null){
+				tempinfo = new Properties();
+				tempinfo.putAll(info);
+				tempinfo.remove("password");
+			}
+			LogRecord lr = new LogRecord(Level.FINE, "");
+			Object p[] = T4LoggingUtilities.makeParams(null, filterOutPWD(url), tempinfo);
+			lr.setParameters(p);
+			lr.setSourceClassName("T4Driver");
+			lr.setSourceMethodName("getPropertyInfo");
+			T4LogFormatter lf = new T4LogFormatter();
+			String temp = lf.format(lr);
+			getLogWriter().println(temp);
+		}
+		if (acceptsURL(url)) {
+			return super.getPropertyInfo(url, info);
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Returns whether the Type 4 driver is JDBC compliant.
+	 * 
+	 * @return true
+	 */
+	public boolean jdbcCompliant() {
+		if (t4GlobalLogger.isLoggable(Level.FINE) == true) {
+			Object p[] = T4LoggingUtilities.makeParams(null);
+			t4GlobalLogger.logp(Level.FINE, "T4Driver", "jdbcCompliant", "", p);
+		}
+		try {
+			if (getLogWriter() != null) {
+				LogRecord lr = new LogRecord(Level.FINE, "");
+				Object p[] = T4LoggingUtilities.makeParams(null);
+				lr.setParameters(p);
+				lr.setSourceClassName("T4Driver");
+				lr.setSourceMethodName("jdbcCompliant");
+				T4LogFormatter lf = new T4LogFormatter();
+				String temp = lf.format(lr);
+				getLogWriter().println(temp);
+			}
+		} catch (SQLException se) {
+			// ignore
+		}
+
+		return true;
+	};
+
+	// Fields
+	private static T4Driver singleton_;
+	static Hashtable dsCache_;
+
+	/**
+	 * Instantiated by either <code>
+	 * Class.forName("org.trafodion.jdbc.t4.T4Driver")</code>
+	 * or by passing <code>-Djdbc.drivers=org.trafodion.jdbc.t4.T4Driver</code>
+	 * property in the command line of the JDBC program.
+	 */
+	public T4Driver() {
+		super();
+		if (logger.isLoggable(Level.INFO)) {
+			logger.entering("HPT4DataSource", "getConnection");
+		}
+	}
+
+	// initializer to register the Driver with the Driver manager
+	static {
+		// Register the Driver with the Driver Manager
+		try {
+			singleton_ = new T4Driver();
+			DriverManager.registerDriver(singleton_);
+		} catch (SQLException e) {
+			singleton_ = null;
+			e.printStackTrace();
+		}
+
+		dsCache_ = new Hashtable();
+	}
+
+	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+		// TODO Auto-generated method stub
+		return null;
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/72e17019/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4LogFormatter.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4LogFormatter.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4LogFormatter.java
new file mode 100644
index 0000000..b61b207
--- /dev/null
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4LogFormatter.java
@@ -0,0 +1,236 @@
+// @@@ START COPYRIGHT @@@
+//
+// 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.
+//
+// @@@ END COPYRIGHT @@@
+
+package org.trafodion.jdbc.t4;
+
+import java.text.DateFormat;
+import java.text.DecimalFormat;
+import java.util.logging.LogRecord;
+
+public class T4LogFormatter extends java.util.logging.Formatter {
+
+	static DecimalFormat df = new DecimalFormat("########################################################00000000");
+
+	// ----------------------------------------------------------
+	public T4LogFormatter() {
+	}
+
+	// ----------------------------------------------------------
+	public String format(LogRecord lr) {
+		String m1;
+		String separator = " ~ ";
+		Object params[] = lr.getParameters();
+		Object tempParam = null;
+
+		try {
+			long sequence_number = lr.getSequenceNumber();
+			String time_stamp = null;
+			long thread_id = lr.getThreadID();
+			String connection_id = "";
+			String server_id = "";
+			String dialogue_id = "";
+			String class_name = lr.getSourceClassName();
+			String method = lr.getSourceMethodName();
+			String parameters = ""; // need to fix
+			String message = lr.getMessage();
+
+			long time_mills = lr.getMillis();
+			java.util.Date d1 = new java.util.Date(time_mills);
+			DateFormat df1 = java.text.DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.FULL);
+
+			time_stamp = df1.format(d1);
+
+			//
+			// By convension, the first parameter is a TrafT4Connection object or
+			// a T4Properties object
+			//
+			TrafT4Connection sc = null;
+			T4Properties tp = null;
+
+			if (params != null && params.length > 0) {
+				if (params[0] instanceof TrafT4Connection)
+					tp = ((TrafT4Connection) params[0]).props_;
+				else
+					tp = (T4Properties) params[0];
+			}
+
+			if (tp != null) {
+				connection_id = tp.getConnectionID();
+				server_id = tp.getServerID();
+				dialogue_id = tp.getDialogueID();
+			}
+
+			//
+			// Format for message:
+			//
+			// sequence-number ~ time-stamp ~ thread-id ~ [connection-id] ~
+			// [server-id]
+			// ~ [dialogue-id] ~ [class] ~ [method] ~ [parameters] ~ [text]
+			//
+
+			Long l1 = new Long(sequence_number);
+			String t1 = df.format(l1);
+			String p1 = "";
+
+			m1 = t1 + separator + time_stamp + separator + thread_id + separator + connection_id + separator
+					+ server_id + separator + dialogue_id + separator + class_name + "." + method + "(";
+
+			if (params != null) {
+				String paramText = null;
+
+				//
+				// Skip the first parameter, which is a T4Connection, and is
+				// handled above.
+				//
+				for (int i = 1; i < params.length; i++) {
+					tempParam = params[i];
+					if (tempParam != null) {
+						//
+						// If the parameter is an array, try to print each
+						// element of the array.
+						//
+						tempParam = makeObjectArray(tempParam);
+
+						if (tempParam instanceof Object[]) {
+							Object[] tempOa = (Object[]) tempParam;
+							String tempOas = "";
+							String tempStr2 = null;
+
+							for (int j = 0; j < tempOa.length; j++) {
+								if (tempOa[j] != null) {
+									tempStr2 = tempOa[j].toString();
+								} else {
+									tempStr2 = "null";
+								}
+								tempOas = tempOas + " [" + j + "]" + tempStr2;
+							}
+							paramText = tempOas;
+						} else {
+							paramText = tempParam.toString();
+						}
+					} else {
+						paramText = "null";
+
+					}
+					p1 = p1 + "\"" + paramText + "\"";
+					if (i + 1 < params.length) {
+						p1 = p1 + ", ";
+					}
+				}
+			}
+
+			m1 = m1 + p1 + ")" + separator + message + "\n";
+
+		} catch (Exception e) {
+			//
+			// Tracing should never cause an internal error, but if it does, we
+			// do want to
+			// capture it here. An internal error here has no effect on the user
+			// program,
+			// so we don't want to throw an exception. We'll put the error in
+			// the trace log
+			// instead, and instruct the user to report it
+			//
+			m1 = "An internal error has occurred in the tracing logic. Please report this to your representative. \n"
+					+ "  exception = "
+					+ e.toString()
+					+ "\n"
+					+ "  message   = "
+					+ e.getMessage()
+					+ "\n"
+					+ "  Stack trace = \n";
+
+			StackTraceElement st[] = e.getStackTrace();
+
+			for (int i = 0; i < st.length; i++) {
+				m1 = m1 + "    " + st[i].toString() + "\n";
+			}
+			m1 = m1 + "\n";
+		} // end catch
+
+		//
+		// The params array is reused, so we must null it out before returning.
+		//
+		if (params != null) {
+			for (int i = 0; i < params.length; i++) {
+				params[i] = null;
+			}
+		}
+
+		return m1;
+
+	} // end formatMessage
+
+	// ---------------------------------------------------------------------
+	Object makeObjectArray(Object obj) {
+		Object retVal = obj;
+		Object[] newVal = null;
+		int i;
+
+		if (obj instanceof boolean[]) {
+			boolean[] temp = (boolean[]) obj;
+			newVal = new Boolean[temp.length];
+			for (i = 0; i < temp.length; i++)
+				newVal[i] = new Boolean(temp[i]);
+		} else if (obj instanceof char[]) {
+			char[] temp = (char[]) obj;
+			newVal = new Character[temp.length];
+			for (i = 0; i < temp.length; i++)
+				newVal[i] = new Character(temp[i]);
+		} else if (obj instanceof byte[]) {
+			byte[] temp = (byte[]) obj;
+			newVal = new Byte[temp.length];
+			for (i = 0; i < temp.length; i++)
+				newVal[i] = new Byte(temp[i]);
+		} else if (obj instanceof short[]) {
+			short[] temp = (short[]) obj;
+			newVal = new Short[temp.length];
+			for (i = 0; i < temp.length; i++)
+				newVal[i] = new Short(temp[i]);
+		} else if (obj instanceof int[]) {
+			int[] temp = (int[]) obj;
+			newVal = new Integer[temp.length];
+			for (i = 0; i < temp.length; i++)
+				newVal[i] = new Integer(temp[i]);
+		} else if (obj instanceof long[]) {
+			long[] temp = (long[]) obj;
+			newVal = new Long[temp.length];
+			for (i = 0; i < temp.length; i++)
+				newVal[i] = new Long(temp[i]);
+		} else if (obj instanceof float[]) {
+			float[] temp = (float[]) obj;
+			newVal = new Float[temp.length];
+			for (i = 0; i < temp.length; i++)
+				newVal[i] = new Float(temp[i]);
+		} else if (obj instanceof double[]) {
+			double[] temp = (double[]) obj;
+			newVal = new Double[temp.length];
+			for (i = 0; i < temp.length; i++)
+				newVal[i] = new Double(temp[i]);
+		}
+
+		if (newVal != null)
+			retVal = newVal;
+
+		return retVal;
+	} // end makeObjectArray
+
+} // end class T4LogFormatter

http://git-wip-us.apache.org/repos/asf/incubator-trafodion/blob/72e17019/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4LoggingUtilities.java
----------------------------------------------------------------------
diff --git a/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4LoggingUtilities.java b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4LoggingUtilities.java
new file mode 100644
index 0000000..e29da5e
--- /dev/null
+++ b/core/conn/jdbcT4/src/main/java/org/trafodion/jdbc/t4/T4LoggingUtilities.java
@@ -0,0 +1,816 @@
+// @@@ START COPYRIGHT @@@
+//
+// 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.
+//
+// @@@ END COPYRIGHT @@@
+
+package org.trafodion.jdbc.t4;
+
+public class T4LoggingUtilities {
+
+	static final Long m_syncL = new Long(1L);
+
+	// ----------------------------------------------------------
+	public T4LoggingUtilities() {
+	}
+
+	// ----------------------------------------------------------
+	static String getUniqueID() {
+		synchronized (m_syncL) {
+			try {
+				Thread.sleep(m_syncL.longValue()); // wait 1 millisecond
+			} catch (Exception e) {
+			}
+		}
+
+		java.util.Date d1 = new java.util.Date();
+		long t1 = d1.getTime();
+		String name = null;
+
+		name = Long.toString(t1);
+		return name;
+	}
+
+	// ----------------------------------------------------------
+	static String getUniqueLogFileName(String uniqueID) {
+		String name = null;
+
+		name = "%h/t4jdbc" + uniqueID + ".log";
+		return name;
+	}
+
+	// ----------------------------------------------------------
+	static String getUniqueLoggerName(String uniqueID) {
+		String name = null;
+
+		name = "org.trafodion.jdbc.t4.logger" + uniqueID;
+		return name;
+	}
+
+	// ----------------------------------------------------------
+	static Object[] makeParams() {
+		return null;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props) {
+		Object obj[] = new Object[1];
+
+		obj[0] = t4props;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, boolean b1) {
+		Object obj[] = new Object[2];
+
+		obj[0] = t4props;
+		obj[1] = Boolean.toString(b1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1) {
+		Object obj[] = new Object[2];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1) {
+		Object obj[] = new Object[2];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, long l1) {
+		Object obj[] = new Object[2];
+
+		obj[0] = t4props;
+		obj[1] = Long.toString(l1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, int i2) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = Integer.toString(i2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, int i1) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = Integer.toString(i1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, Object obj1) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = obj1;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, boolean b1) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = Boolean.toString(b1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, double d1) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = Double.toString(d1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, boolean b1, boolean b2) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = Boolean.toString(b1);
+		obj[2] = Boolean.toString(b2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, boolean b1) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = Boolean.toString(b1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, short s1) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = Short.toString(s1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, double d1) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = Double.toString(d1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, long l1, int i1) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = Long.toString(l1);
+		obj[2] = Integer.toString(i1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, long l1, Object o1) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = Long.toString(l1);
+		obj[2] = o1;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, long l1) {
+		Object obj[] = new Object[3];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = Long.toString(l1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, int i1, int i2) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = Integer.toString(i1);
+		obj[3] = Integer.toString(i2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, Object obj1, int i2) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = obj1;
+		obj[3] = Integer.toString(i2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, Object obj1, Object obj2) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = obj1;
+		obj[3] = obj2;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, int i2, Object obj1) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = Integer.toString(i2);
+		obj[3] = obj1;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, int i2, int i3) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = Integer.toString(i2);
+		obj[3] = Integer.toString(i3);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, Object o3) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = o3;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, int i1, Object o2) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = Integer.toString(i1);
+		obj[3] = o2;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, int i1) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = Integer.toString(i1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object[] oa1, int i1, Object o1) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = oa1;
+		obj[2] = Integer.toString(i1);
+		obj[3] = o1;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, long l1) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = Long.toString(l1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, long l1, Object o2) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = Long.toString(l1);
+		obj[3] = o2;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, boolean b1, Object o2) {
+		Object obj[] = new Object[4];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = Boolean.toString(b1);
+		obj[3] = o2;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, Object obj1, int i2, int i3) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = obj1;
+		obj[3] = Integer.toString(i2);
+		obj[4] = Integer.toString(i3);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2, int i1, int i2) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+		obj[3] = Integer.toString(i1);
+		obj[4] = Integer.toString(i2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, int i1, int i2, int i3) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = Integer.toString(i1);
+		obj[3] = Integer.toString(i2);
+		obj[4] = Integer.toString(i3);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, int i1, long l1, Object obj2) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = Integer.toString(i1);
+		obj[3] = Long.toString(l1);
+		obj[4] = obj1;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2, Object obj3, int i1) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+		obj[3] = obj3;
+		obj[4] = Integer.toString(i1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, Object[] oa1, int i2, Object o1) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = oa1;
+		obj[3] = Integer.toString(i2);
+		obj[4] = o1;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, Object o3, Object o4) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = o3;
+		obj[4] = o4;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, int i1, boolean b1, int i2) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = Integer.toString(i1);
+		obj[3] = Boolean.toString(b1);
+		obj[4] = Integer.toString(i2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, int i1, Object o3) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = Integer.toString(i1);
+		obj[4] = o3;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, long l1, Object o1, int i1, int i2) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = Long.toString(l1);
+		obj[2] = o1;
+		obj[3] = Integer.toString(i1);
+		obj[4] = Integer.toString(i2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, long l1, Object o3) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = Long.toString(l1);
+		obj[4] = o3;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2, int i1, int i2, int i3) {
+		Object obj[] = new Object[6];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+		obj[3] = Integer.toString(i1);
+		obj[4] = Integer.toString(i2);
+		obj[5] = Integer.toString(i3);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2, Object obj3, int i1, int i2) {
+		Object obj[] = new Object[6];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+		obj[3] = obj3;
+		obj[4] = Integer.toString(i1);
+		obj[5] = Integer.toString(i2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2, boolean b1, Object obj3, Object obj4) {
+		Object obj[] = new Object[6];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+		obj[3] = Boolean.toString(b1);
+		obj[4] = obj3;
+		obj[5] = obj4;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2, int i1, boolean b1, int i2) {
+		Object obj[] = new Object[6];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+		obj[3] = Integer.toString(i1);
+		obj[4] = Boolean.toString(b1);
+		obj[5] = Integer.toString(i2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, int i2, Object[] oa1, int i3, Object o1) {
+		Object obj[] = new Object[6];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = Integer.toString(i2);
+		obj[3] = oa1;
+		obj[4] = Integer.toString(i3);
+		obj[5] = o1;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2, int i1, long l1, Object obj3) {
+		Object obj[] = new Object[6];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+		obj[3] = Integer.toString(i1);
+		obj[4] = Long.toString(l1);
+		obj[5] = obj3;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, Object o3, int i1, boolean b1) {
+		Object obj[] = new Object[6];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = o3;
+		;
+		obj[4] = Integer.toString(i1);
+		obj[5] = Boolean.toString(b1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, Object o3, boolean b1, boolean b2) {
+		Object obj[] = new Object[6];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = o3;
+		;
+		obj[4] = Boolean.toString(b1);
+		obj[5] = Boolean.toString(b2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, int i1, int i2, Object o1, int i3, boolean b1) {
+		Object obj[] = new Object[6];
+
+		obj[0] = t4props;
+		obj[1] = Integer.toString(i1);
+		obj[2] = Integer.toString(i2);
+		obj[3] = o1;
+		obj[4] = Integer.toString(i3);
+		obj[5] = Boolean.toString(b1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, long l1, Object o3, int i1) {
+		Object obj[] = new Object[6];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = Long.toString(l1);
+		obj[4] = o3;
+		obj[5] = Integer.toString(i1);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, int i1, long l1, Object obj2, int i2, int i3) {
+		Object obj[] = new Object[7];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = Integer.toString(i1);
+		obj[3] = Long.toString(l1);
+		obj[4] = obj2;
+		obj[5] = Integer.toString(i2);
+		obj[6] = Integer.toString(i3);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, Object o3, Object o4, Object o5, Object o6) {
+		Object obj[] = new Object[7];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = o3;
+		obj[4] = o4;
+		obj[5] = o5;
+		obj[6] = o6;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2, int i1, long l1, Object obj3,
+			boolean b1, int i2) {
+		Object obj[] = new Object[8];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+		obj[3] = Integer.toString(i1);
+		obj[4] = Long.toString(l1);
+		obj[5] = obj3;
+		obj[6] = Boolean.toString(b1);
+		obj[7] = Integer.toString(i2);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2, Object obj3, boolean b1, int i1, int i2,
+			Object obj4, int i3) {
+		Object obj[] = new Object[9];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+		obj[3] = obj3;
+		obj[4] = Boolean.toString(b1);
+		obj[5] = Integer.toString(i1);
+		obj[6] = Integer.toString(i2);
+		obj[7] = obj4;
+		obj[8] = Integer.toString(i3);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object obj1, Object obj2, int i1, int i2, int i3, int i4, int i5,
+			int i6)
+
+	{
+		Object obj[] = new Object[9];
+
+		obj[0] = t4props;
+		obj[1] = obj1;
+		obj[2] = obj2;
+		obj[3] = Integer.toString(i1);
+		obj[4] = Integer.toString(i2);
+		obj[5] = Integer.toString(i3);
+		obj[6] = Integer.toString(i4);
+		obj[7] = Integer.toString(i5);
+		obj[8] = Integer.toString(i6);
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, short s1, Object o2, Object o3, Object o4, Object o5,
+			Object o6, int i1, int i2, long l1, int i3, int i4, short s2, int i5, Object o7, Object o8, Object o9) {
+		Object obj[] = new Object[18];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = Short.toString(s1);
+		obj[3] = o2;
+		obj[4] = o3;
+		obj[5] = o4;
+		obj[6] = o5;
+		obj[7] = o6;
+		obj[8] = Integer.toString(i1);
+		obj[9] = Integer.toString(i2);
+		obj[10] = Long.toString(l1);
+		obj[11] = Integer.toString(i3);
+		obj[12] = Integer.toString(i4);
+		obj[13] = Short.toString(s2);
+		obj[14] = Integer.toString(i5);
+		obj[15] = o7;
+		obj[16] = o8;
+		obj[17] = o9;
+
+		return obj;
+	} // end makeParams
+
+	// ----------------------------------------------------------
+	static Object[] makeParams(T4Properties t4props, Object o1, Object o2, Object o3, boolean b1) {
+		Object obj[] = new Object[5];
+
+		obj[0] = t4props;
+		obj[1] = o1;
+		obj[2] = o2;
+		obj[3] = o3;
+		obj[4] = Boolean.toString(b1);
+
+		return obj;
+	} // end makeParams
+
+} // end class T4LogFormatter