Patch from Dave to excise all remaining tabs.

git-svn-id: https://samskivert.googlecode.com/svn/trunk@2759 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
samskivert
2010-03-24 21:37:44 +00:00
parent 1eec46f02a
commit bfc97858b6
41 changed files with 942 additions and 998 deletions
@@ -38,7 +38,7 @@ public class ByteArrayOutInputStream extends ByteArrayOutputStream
*/
public ByteArrayOutInputStream ()
{
this(32);
this(32);
}
/**
@@ -81,56 +81,56 @@ public abstract class ExtensiblePrintStream extends PrintStream
public void print (char c)
{
super.print(c);
handlePrinted(String.valueOf(c));
handlePrinted(String.valueOf(c));
}
@Override
public void print (int i)
{
super.print(i);
handlePrinted(String.valueOf(i));
handlePrinted(String.valueOf(i));
}
@Override
public void print (long l)
{
super.print(l);
handlePrinted(String.valueOf(l));
handlePrinted(String.valueOf(l));
}
@Override
public void print (float f)
{
super.print(f);
handlePrinted(String.valueOf(f));
handlePrinted(String.valueOf(f));
}
@Override
public void print (double d)
{
super.print(d);
handlePrinted(String.valueOf(d));
handlePrinted(String.valueOf(d));
}
@Override
public void print (char[] s)
{
super.print(s);
handlePrinted(String.valueOf(s));
handlePrinted(String.valueOf(s));
}
@Override
public void print (String s)
{
super.print(s);
handlePrinted((s == null) ? "null" : s);
handlePrinted((s == null) ? "null" : s);
}
@Override
public void print (Object obj)
{
super.print(obj);
handlePrinted(String.valueOf(obj));
handlePrinted(String.valueOf(obj));
}
@Override
+8 -8
View File
@@ -60,11 +60,11 @@ public class JDBCUtil
* nothing).
*/
public static void close (Statement stmt)
throws SQLException
throws SQLException
{
if (stmt != null) {
stmt.close();
}
if (stmt != null) {
stmt.close();
}
}
/**
@@ -72,11 +72,11 @@ public class JDBCUtil
* nothing).
*/
public static void close (Connection conn)
throws SQLException
throws SQLException
{
if (conn != null) {
conn.close();
}
if (conn != null) {
conn.close();
}
}
/**
+1 -1
View File
@@ -110,7 +110,7 @@ public class Repository
* indicative of a basic JDBC failure. The transaction
* <em>will</em> be rolled back in such cases, however.
*/
public V invoke (Connection conn, DatabaseLiaison liaison)
public V invoke (Connection conn, DatabaseLiaison liaison)
throws SQLException, PersistenceException;
}
@@ -256,14 +256,14 @@ public class StaticConnectionProvider implements ConnectionProvider
}
protected static String requireProp (Properties props, String name, String errmsg)
throws PersistenceException
throws PersistenceException
{
String value = props.getProperty(name);
if (StringUtil.isBlank(value)) {
String value = props.getProperty(name);
if (StringUtil.isBlank(value)) {
errmsg = "Unable to get connection. " + errmsg; // augment the error message
throw new PersistenceException(errmsg);
}
return value;
throw new PersistenceException(errmsg);
}
return value;
}
/** Contains information on a particular connection to which any number of database identifiers
+14 -14
View File
@@ -45,7 +45,7 @@ public class Cursor<V>
* more rows
*/
public V next ()
throws SQLException
throws SQLException
{
// if we closed everything up after the last call to next(),
// table will be null here and we should bail immediately
@@ -78,7 +78,7 @@ public class Cursor<V>
if (_stmt != null) {
_stmt.close();
}
return null;
return null;
}
/**
@@ -119,11 +119,11 @@ public class Cursor<V>
* drivers.
*/
public void update ()
throws SQLException
throws SQLException
{
if (_currObject == null) {
throw new IllegalStateException("No current object");
}
throw new IllegalStateException("No current object");
}
_table.updateVariables(_result, _currObject);
}
@@ -142,11 +142,11 @@ public class Cursor<V>
* drivers.
*/
public void delete ()
throws SQLException
throws SQLException
{
if (_currObject == null) {
throw new IllegalStateException("No current object");
}
throw new IllegalStateException("No current object");
}
_result.deleteRow();
}
@@ -178,7 +178,7 @@ public class Cursor<V>
* @return List with objects constructed from fetched records.
*/
public ArrayList<V> toArrayList (int maxElements)
throws SQLException
throws SQLException
{
ArrayList<V> al = new ArrayList<V>(Math.min(maxElements, 100));
V o;
@@ -197,7 +197,7 @@ public class Cursor<V>
* @return Array with objects constructed from fetched records.
*/
public ArrayList<V> toArrayList ()
throws SQLException
throws SQLException
{
return toArrayList(Integer.MAX_VALUE);
}
@@ -213,12 +213,12 @@ public class Cursor<V>
FieldMask mask, boolean like)
{
_table = table;
_conn = conn;
_conn = conn;
_like = like;
_qbeObject = obj;
_qbeObject = obj;
_qbeMask = mask;
_query = table.buildQueryList(obj, mask, like);
_stmt = null;
_query = table.buildQueryList(obj, mask, like);
_stmt = null;
}
protected Table<V> _table;
@@ -30,7 +30,7 @@ class FieldDescriptor
{
this.name = name;
this.field = field;
this.scale = -1;
this.scale = -1;
}
protected final boolean isAtomic ()
@@ -53,336 +53,320 @@ class FieldDescriptor
throws SQLException
{
try {
switch (outType) {
switch (outType) {
case t_byte:
pstmt.setByte(column, field.getByte(obj));
break;
pstmt.setByte(column, field.getByte(obj));
break;
case t_short:
pstmt.setShort(column, field.getShort(obj));
break;
pstmt.setShort(column, field.getShort(obj));
break;
case t_int:
pstmt.setInt(column, field.getInt(obj));
break;
pstmt.setInt(column, field.getInt(obj));
break;
case t_long:
pstmt.setLong(column, field.getLong(obj));
break;
pstmt.setLong(column, field.getLong(obj));
break;
case t_float:
pstmt.setFloat(column, field.getFloat(obj));
break;
pstmt.setFloat(column, field.getFloat(obj));
break;
case t_double:
pstmt.setDouble(column, field.getDouble(obj));
break;
pstmt.setDouble(column, field.getDouble(obj));
break;
case t_boolean:
pstmt.setBoolean(column, field.getBoolean(obj));
break;
pstmt.setBoolean(column, field.getBoolean(obj));
break;
case tByte:
pstmt.setByte(column, ((Byte)field.get(obj)).byteValue());
break;
pstmt.setByte(column, ((Byte)field.get(obj)).byteValue());
break;
case tShort:
pstmt.setShort(column, ((Short)field.get(obj)).shortValue());
break;
pstmt.setShort(column, ((Short)field.get(obj)).shortValue());
break;
case tInteger:
pstmt.setInt(column, ((Integer)field.get(obj)).intValue());
break;
pstmt.setInt(column, ((Integer)field.get(obj)).intValue());
break;
case tLong:
pstmt.setLong(column, ((Long)field.get(obj)).longValue());
break;
pstmt.setLong(column, ((Long)field.get(obj)).longValue());
break;
case tFloat:
pstmt.setFloat(column, ((Float)field.get(obj)).floatValue());
break;
pstmt.setFloat(column, ((Float)field.get(obj)).floatValue());
break;
case tDouble:
pstmt.setDouble(column,((Double)field.get(obj)).doubleValue());
break;
pstmt.setDouble(column,((Double)field.get(obj)).doubleValue());
break;
case tBoolean:
pstmt.setBoolean(column,
((Boolean)field.get(obj)).booleanValue());
break;
pstmt.setBoolean(column, ((Boolean)field.get(obj)).booleanValue());
break;
case tDecimal:
pstmt.setBigDecimal(column, (BigDecimal)field.get(obj));
break;
pstmt.setBigDecimal(column, (BigDecimal)field.get(obj));
break;
case tString:
pstmt.setString(column, (String)field.get(obj));
break;
pstmt.setString(column, (String)field.get(obj));
break;
case tBytes:
pstmt.setBytes(column, (byte[])field.get(obj));
break;
pstmt.setBytes(column, (byte[])field.get(obj));
break;
case tDate:
pstmt.setDate(column, (java.sql.Date)field.get(obj));
break;
pstmt.setDate(column, (java.sql.Date)field.get(obj));
break;
case tTime:
pstmt.setTime(column, (java.sql.Time)field.get(obj));
break;
pstmt.setTime(column, (java.sql.Time)field.get(obj));
break;
case tTimestamp:
pstmt.setTimestamp(column, (java.sql.Timestamp)field.get(obj));
break;
pstmt.setTimestamp(column, (java.sql.Timestamp)field.get(obj));
break;
case tStream:
java.io.InputStream in = (java.io.InputStream)field.get(obj);
pstmt.setBinaryStream(column, in, in.available());
break;
java.io.InputStream in = (java.io.InputStream)field.get(obj);
pstmt.setBinaryStream(column, in, in.available());
break;
case tBlob:
pstmt.setBlob(column, (Blob)field.get(obj));
break;
pstmt.setBlob(column, (Blob)field.get(obj));
break;
case tClob:
pstmt.setClob(column, (Clob)field.get(obj));
break;
pstmt.setClob(column, (Clob)field.get(obj));
break;
case tAsString:
pstmt.setString(column, field.get(obj).toString());
break;
pstmt.setString(column, field.get(obj).toString());
break;
case tClosure:
// There is no reason to use piped streams because
// we need to pass total number of bytes to JDBC driver
java.io.ByteArrayOutputStream out =
new java.io.ByteArrayOutputStream();
java.io.ObjectOutputStream clu =
new java.io.ObjectOutputStream(out);
clu.writeObject(field.get(obj));
clu.close();
pstmt.setBytes(column, out.toByteArray());
break;
// There is no reason to use piped streams because
// we need to pass total number of bytes to JDBC driver
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
java.io.ObjectOutputStream clu = new java.io.ObjectOutputStream(out);
clu.writeObject(field.get(obj));
clu.close();
pstmt.setBytes(column, out.toByteArray());
break;
default:
return false;
}
} catch(SQLException ex) {
if (outType != tClosure && outType != tAsString) {
outType = tAsString;
return bindVariable(pstmt, obj, column);
} else {
throw ex;
}
} catch(IllegalAccessException ex) {
ex.printStackTrace();
throw new IllegalAccessError();
} catch(java.io.IOException ex) {
throw new DataTransferError(ex);
}
return true;
return false;
}
} catch(SQLException ex) {
if (outType != tClosure && outType != tAsString) {
outType = tAsString;
return bindVariable(pstmt, obj, column);
} else {
throw ex;
}
} catch(IllegalAccessException ex) {
ex.printStackTrace();
throw new IllegalAccessError();
} catch(java.io.IOException ex) {
throw new DataTransferError(ex);
}
return true;
}
protected final boolean updateVariable (
ResultSet result, Object obj, int column)
protected final boolean updateVariable (ResultSet result, Object obj, int column)
throws SQLException
{
try {
switch (outType) {
switch (outType) {
case t_byte:
result.updateByte(column, field.getByte(obj));
break;
result.updateByte(column, field.getByte(obj));
break;
case t_short:
result.updateShort(column, field.getShort(obj));
break;
result.updateShort(column, field.getShort(obj));
break;
case t_int:
result.updateInt(column, field.getInt(obj));
break;
result.updateInt(column, field.getInt(obj));
break;
case t_long:
result.updateLong(column, field.getLong(obj));
break;
result.updateLong(column, field.getLong(obj));
break;
case t_float:
result.updateFloat(column, field.getFloat(obj));
break;
result.updateFloat(column, field.getFloat(obj));
break;
case t_double:
result.updateDouble(column, field.getDouble(obj));
break;
result.updateDouble(column, field.getDouble(obj));
break;
case t_boolean:
result.updateBoolean(column, field.getBoolean(obj));
break;
result.updateBoolean(column, field.getBoolean(obj));
break;
case tByte:
result.updateByte(column, ((Byte)field.get(obj)).byteValue());
break;
result.updateByte(column, ((Byte)field.get(obj)).byteValue());
break;
case tShort:
result.updateShort(column,
((Short)field.get(obj)).shortValue());
break;
result.updateShort(column, ((Short)field.get(obj)).shortValue());
break;
case tInteger:
result.updateInt(column, ((Integer)field.get(obj)).intValue());
break;
result.updateInt(column, ((Integer)field.get(obj)).intValue());
break;
case tLong:
result.updateLong(column, ((Long)field.get(obj)).longValue());
break;
result.updateLong(column, ((Long)field.get(obj)).longValue());
break;
case tFloat:
result.updateFloat(column,
((Float)field.get(obj)).floatValue());
break;
result.updateFloat(column, ((Float)field.get(obj)).floatValue());
break;
case tDouble:
result.updateDouble(column,
((Double)field.get(obj)).doubleValue());
break;
result.updateDouble(column, ((Double)field.get(obj)).doubleValue());
break;
case tBoolean:
result.updateBoolean(column,
((Boolean)field.get(obj)).booleanValue());
break;
result.updateBoolean(column, ((Boolean)field.get(obj)).booleanValue());
break;
case tDecimal:
result.updateBigDecimal(column, (BigDecimal)field.get(obj));
break;
result.updateBigDecimal(column, (BigDecimal)field.get(obj));
break;
case tString:
result.updateString(column, (String)field.get(obj));
break;
result.updateString(column, (String)field.get(obj));
break;
case tBytes:
result.updateBytes(column, (byte[])field.get(obj));
break;
result.updateBytes(column, (byte[])field.get(obj));
break;
case tDate:
result.updateDate(column, (java.sql.Date)field.get(obj));
break;
result.updateDate(column, (java.sql.Date)field.get(obj));
break;
case tTime:
result.updateTime(column, (java.sql.Time)field.get(obj));
break;
result.updateTime(column, (java.sql.Time)field.get(obj));
break;
case tTimestamp:
result.updateTimestamp(column,
(java.sql.Timestamp)field.get(obj));
break;
result.updateTimestamp(column, (java.sql.Timestamp)field.get(obj));
break;
case tStream:
java.io.InputStream in = (java.io.InputStream)field.get(obj);
result.updateBinaryStream(column, in, in.available());
break;
java.io.InputStream in = (java.io.InputStream)field.get(obj);
result.updateBinaryStream(column, in, in.available());
break;
case tBlob:
Blob blob = (Blob)field.get(obj);
result.updateBinaryStream(column,
blob.getBinaryStream(),
(int)blob.length());
break;
Blob blob = (Blob)field.get(obj);
result.updateBinaryStream(column, blob.getBinaryStream(), (int)blob.length());
break;
case tClob:
Clob clob = (Clob)field.get(obj);
result.updateCharacterStream(column,
clob.getCharacterStream(),
(int)clob.length());
break;
Clob clob = (Clob)field.get(obj);
result.updateCharacterStream(column, clob.getCharacterStream(), (int)clob.length());
break;
case tAsString:
result.updateString(column, field.get(obj).toString());
break;
result.updateString(column, field.get(obj).toString());
break;
case tClosure:
// There is no reason to use piped streams because
// we need to pass total number of bytes to JDBC driver
java.io.ByteArrayOutputStream out =
new java.io.ByteArrayOutputStream();
java.io.ObjectOutputStream clu =
new java.io.ObjectOutputStream(out);
clu.writeObject(field.get(obj));
clu.close();
result.updateBytes(column, out.toByteArray());
break;
// There is no reason to use piped streams because
// we need to pass total number of bytes to JDBC driver
java.io.ByteArrayOutputStream out = new java.io.ByteArrayOutputStream();
java.io.ObjectOutputStream clu = new java.io.ObjectOutputStream(out);
clu.writeObject(field.get(obj));
clu.close();
result.updateBytes(column, out.toByteArray());
break;
default:
return false;
}
} catch(SQLException ex) {
if (outType != tClosure && outType != tAsString) {
outType = tAsString;
return updateVariable(result, obj, column);
} else {
throw ex;
}
} catch(IllegalAccessException ex) {
ex.printStackTrace();
throw new IllegalAccessError();
} catch(java.io.IOException ex) {
throw new DataTransferError(ex);
}
return true;
return false;
}
} catch(SQLException ex) {
if (outType != tClosure && outType != tAsString) {
outType = tAsString;
return updateVariable(result, obj, column);
} else {
throw ex;
}
} catch(IllegalAccessException ex) {
ex.printStackTrace();
throw new IllegalAccessError();
} catch(java.io.IOException ex) {
throw new DataTransferError(ex);
}
return true;
}
protected final boolean loadVariable (
ResultSet result, Object obj, int column)
throws SQLException, IllegalAccessException
{
switch (inType) {
switch (inType) {
case t_byte:
field.setByte(obj, result.getByte(column));
break;
field.setByte(obj, result.getByte(column));
break;
case t_short:
field.setShort(obj, result.getShort(column));
break;
field.setShort(obj, result.getShort(column));
break;
case t_int:
field.setInt(obj, result.getInt(column));
break;
field.setInt(obj, result.getInt(column));
break;
case t_long:
field.setLong(obj, result.getLong(column));
break;
field.setLong(obj, result.getLong(column));
break;
case t_float:
field.setFloat(obj, result.getFloat(column));
break;
field.setFloat(obj, result.getFloat(column));
break;
case t_double:
field.setDouble(obj, result.getDouble(column));
break;
field.setDouble(obj, result.getDouble(column));
break;
case t_boolean:
field.setBoolean(obj, result.getBoolean(column));
break;
field.setBoolean(obj, result.getBoolean(column));
break;
case tByte:
byte b = result.getByte(column);
field.set(obj, result.wasNull() ? null : Byte.valueOf(b));
break;
byte b = result.getByte(column);
field.set(obj, result.wasNull() ? null : Byte.valueOf(b));
break;
case tShort:
short s = result.getShort(column);
field.set(obj, result.wasNull() ? null : Short.valueOf(s));
break;
short s = result.getShort(column);
field.set(obj, result.wasNull() ? null : Short.valueOf(s));
break;
case tInteger:
int i = result.getInt(column);
field.set(obj, result.wasNull() ? null : Integer.valueOf(i));
break;
int i = result.getInt(column);
field.set(obj, result.wasNull() ? null : Integer.valueOf(i));
break;
case tLong:
long l = result.getLong(column);
field.set(obj, result.wasNull() ? null : Long.valueOf(l));
break;
long l = result.getLong(column);
field.set(obj, result.wasNull() ? null : Long.valueOf(l));
break;
case tFloat:
float f = result.getFloat(column);
field.set(obj, result.wasNull() ? null : Float.valueOf(f));
field.setFloat(obj, result.getFloat(column));
break;
float f = result.getFloat(column);
field.set(obj, result.wasNull() ? null : Float.valueOf(f));
field.setFloat(obj, result.getFloat(column));
break;
case tDouble:
double d = result.getDouble(column);
field.set(obj, result.wasNull() ? null : Double.valueOf(d));
break;
double d = result.getDouble(column);
field.set(obj, result.wasNull() ? null : Double.valueOf(d));
break;
case tBoolean:
boolean bl = result.getBoolean(column);
field.set(obj, result.wasNull() ? null : Boolean.valueOf(bl));
break;
boolean bl = result.getBoolean(column);
field.set(obj, result.wasNull() ? null : Boolean.valueOf(bl));
break;
case tDecimal:
field.set(obj, result.getBigDecimal(column));
break;
break;
case tString:
field.set(obj, result.getString(column));
break;
field.set(obj, result.getString(column));
break;
case tBytes:
field.set(obj, result.getBytes(column));
break;
field.set(obj, result.getBytes(column));
break;
case tDate:
field.set(obj, result.getDate(column));
break;
field.set(obj, result.getDate(column));
break;
case tTime:
field.set(obj, result.getTime(column));
break;
field.set(obj, result.getTime(column));
break;
case tTimestamp:
field.set(obj, result.getTimestamp(column));
break;
field.set(obj, result.getTimestamp(column));
break;
case tStream:
field.set(obj, result.getBinaryStream(column));
break;
field.set(obj, result.getBinaryStream(column));
break;
case tBlob:
field.set(obj, result.getBlob(column));
break;
field.set(obj, result.getBlob(column));
break;
case tClob:
field.set(obj, result.getClob(column));
break;
field.set(obj, result.getClob(column));
break;
case tClosure:
try {
try {
java.io.InputStream input = result.getBinaryStream(column);
java.io.ObjectInputStream in =
new java.io.ObjectInputStream(input);
field.set(obj, in.readObject());
in.close();
} catch(ClassNotFoundException ex) {
throw new DataTransferError(ex);
} catch(java.io.IOException ex) {
throw new DataTransferError(ex);
}
break;
java.io.ObjectInputStream in = new java.io.ObjectInputStream(input);
field.set(obj, in.readObject());
in.close();
} catch(ClassNotFoundException ex) {
throw new DataTransferError(ex);
} catch(java.io.IOException ex) {
throw new DataTransferError(ex);
}
break;
default:
return false;
}
return true;
return false;
}
return true;
}
protected int inType; // type tag for field input (see constants below)
@@ -32,13 +32,13 @@ public class CDDBException extends Exception
{
public CDDBException (int code, String message)
{
super(message);
_code = code;
super(message);
_code = code;
}
public int getCode ()
{
return _code;
return _code;
}
protected int _code;
@@ -45,7 +45,7 @@ public class CDDBProtocol
*/
public static int codeFamily (int code)
{
return (code / 100) * 100;
return (code / 100) * 100;
}
/**
@@ -54,7 +54,7 @@ public class CDDBProtocol
*/
public static int codeGenus (int code)
{
return ((code % 100) / 10) * 10;
return ((code % 100) / 10) * 10;
}
/**
@@ -63,6 +63,6 @@ public class CDDBProtocol
*/
public static int codeSpecies (int code)
{
return code % 10;
return code % 10;
}
}
+44 -46
View File
@@ -27,70 +27,68 @@ package com.samskivert.net.cddb;
public class CDDBTest
{
public static void test (String hostname, String cdid)
throws Exception
throws Exception
{
CDDB cddb = new CDDB();
CDDB cddb = new CDDB();
try {
/* String rsp = */ cddb.connect(hostname);
try {
/* String rsp = */ cddb.connect(hostname);
// set the timeout to 30 seconds
cddb.setTimeout(30*1000);
// set the timeout to 30 seconds
cddb.setTimeout(30*1000);
// try a test query
int[] offsets = { 150, 18130, 48615 };
int length = 893;
CDDB.Entry[] entries = cddb.query(cdid, offsets, length);
// try a test query
int[] offsets = { 150, 18130, 48615 };
int length = 893;
CDDB.Entry[] entries = cddb.query(cdid, offsets, length);
if (entries == null || entries.length == 0) {
System.out.println("No match for " + cdid + ".");
if (entries == null || entries.length == 0) {
System.out.println("No match for " + cdid + ".");
} else {
for (int i = 0; i < entries.length; i++) {
System.out.println("Match " + entries[i].category + "/" +
entries[i].cdid + "/" +
entries[i].title);
}
} else {
for (int i = 0; i < entries.length; i++) {
System.out.println("Match " + entries[i].category + "/" +
entries[i].cdid + "/" +
entries[i].title);
}
CDDB.Detail detail = cddb.read(entries[0].category,
entries[0].cdid);
System.out.println("Title: " + detail.title);
for (int i = 0; i < detail.trackNames.length; i++) {
System.out.println(pad(i) + ": " + detail.trackNames[i]);
}
System.out.println("Extended data: " + detail.extendedData);
for (int i = 0; i < detail.extendedTrackData.length; i++) {
System.out.println(pad(i) + ": " +
detail.extendedTrackData[i]);
}
}
CDDB.Detail detail = cddb.read(entries[0].category,
entries[0].cdid);
System.out.println("Title: " + detail.title);
for (int i = 0; i < detail.trackNames.length; i++) {
System.out.println(pad(i) + ": " + detail.trackNames[i]);
}
System.out.println("Extended data: " + detail.extendedData);
for (int i = 0; i < detail.extendedTrackData.length; i++) {
System.out.println(pad(i) + ": " + detail.extendedTrackData[i]);
}
}
} finally {
cddb.close();
}
} finally {
cddb.close();
}
}
protected static String pad (int value)
{
return ((value > 9) ? "" : " ") + value;
return ((value > 9) ? "" : " ") + value;
}
public static void main (String[] args)
{
if (args.length < 1) {
System.err.println("Usage: CDDBTest cddbhost");
System.exit(-1);
}
if (args.length < 1) {
System.err.println("Usage: CDDBTest cddbhost");
System.exit(-1);
}
try {
test(args[0], "1b037b03");
try {
test(args[0], "1b037b03");
} catch (CDDBException ce) {
System.err.println("Protocol exception: " + ce.getCode() +
": " + ce.getMessage());
} catch (CDDBException ce) {
System.err.println("Protocol exception: " + ce.getCode() + ": " + ce.getMessage());
} catch (Throwable t) {
t.printStackTrace(System.err);
}
} catch (Throwable t) {
t.printStackTrace(System.err);
}
}
}
@@ -32,11 +32,11 @@ public class RedirectException extends Exception
{
public RedirectException (String url)
{
super(url);
super(url);
}
public String getRedirectURL ()
{
return getMessage();
return getMessage();
}
}
@@ -30,6 +30,6 @@ public class DataValidationException extends FriendlyException
{
public DataValidationException (String message)
{
super(message);
super(message);
}
}
@@ -77,57 +77,57 @@ public class ExceptionMap
*/
public static synchronized void init ()
{
// only initialize ourselves once
if (_keys != null) {
return;
} else {
_keys = new ArrayList<Class<?>>();
_values = new ArrayList<String>();
}
// only initialize ourselves once
if (_keys != null) {
return;
} else {
_keys = new ArrayList<Class<?>>();
_values = new ArrayList<String>();
}
// first try loading the properties file without a leading slash
ClassLoader cld = ExceptionMap.class.getClassLoader();
InputStream config = ConfigUtil.getStream(PROPS_NAME, cld);
if (config == null) {
log.warning("Unable to load " + PROPS_NAME + " from CLASSPATH.");
// first try loading the properties file without a leading slash
ClassLoader cld = ExceptionMap.class.getClassLoader();
InputStream config = ConfigUtil.getStream(PROPS_NAME, cld);
if (config == null) {
log.warning("Unable to load " + PROPS_NAME + " from CLASSPATH.");
} else {
// otherwise process ye old config file.
try {
// we'll do some serious jiggery pokery to leverage the parsing
// implementation provided by java.util.Properties. god bless
// method overloading
} else {
// otherwise process ye old config file.
try {
// we'll do some serious jiggery pokery to leverage the parsing
// implementation provided by java.util.Properties. god bless
// method overloading
final ArrayList<String> classes = new ArrayList<String>();
Properties loader = new Properties() {
@Override public Object put (Object key, Object value) {
classes.add((String)key);
_values.add((String)value);
return key;
}
};
loader.load(config);
@Override public Object put (Object key, Object value) {
classes.add((String)key);
_values.add((String)value);
return key;
}
};
loader.load(config);
// now cruise through and resolve the exceptions named as
// keys and throw out any that don't appear to exist
for (int i = 0; i < classes.size(); i++) {
String exclass = classes.get(i);
try {
Class<?> cl = Class.forName(exclass);
// replace the string with the class object
_keys.add(cl);
// now cruise through and resolve the exceptions named as
// keys and throw out any that don't appear to exist
for (int i = 0; i < classes.size(); i++) {
String exclass = classes.get(i);
try {
Class<?> cl = Class.forName(exclass);
// replace the string with the class object
_keys.add(cl);
} catch (Throwable t) {
log.warning("Unable to resolve exception class.", "class", exclass,
} catch (Throwable t) {
log.warning("Unable to resolve exception class.", "class", exclass,
"error", t);
_values.remove(i);
i--; // back on up a notch
}
}
_values.remove(i);
i--; // back on up a notch
}
}
} catch (IOException ioe) {
log.warning("Error reading exception mapping file: " + ioe);
}
}
} catch (IOException ioe) {
log.warning("Error reading exception mapping file: " + ioe);
}
}
}
/**
@@ -142,15 +142,15 @@ public class ExceptionMap
*/
public static String getMessage (Throwable ex)
{
String msg = DEFAULT_ERROR_MSG;
for (int i = 0; i < _keys.size(); i++) {
Class<?> cl = _keys.get(i);
if (cl.isInstance(ex)) {
msg = _values.get(i);
break;
}
}
return StringUtil.replace(msg, MESSAGE_MARKER, ex.getMessage());
String msg = DEFAULT_ERROR_MSG;
for (int i = 0; i < _keys.size(); i++) {
Class<?> cl = _keys.get(i);
if (cl.isInstance(ex)) {
msg = _values.get(i);
break;
}
}
return StringUtil.replace(msg, MESSAGE_MARKER, ex.getMessage());
}
protected static List<Class<?>> _keys;
@@ -29,6 +29,6 @@ public class FriendlyException extends Exception
{
public FriendlyException (String message)
{
super(message);
super(message);
}
}
@@ -73,7 +73,7 @@ public class ParameterUtil
*/
public static String getParameter (HttpServletRequest req, String name, boolean returnNull)
{
String value = req.getParameter(name);
String value = req.getParameter(name);
if (value == null) {
return returnNull ? null : "";
} else {
@@ -88,9 +88,9 @@ public class ParameterUtil
*/
public static float requireFloatParameter (
HttpServletRequest req, String name, String invalidDataMessage)
throws DataValidationException
throws DataValidationException
{
return parseFloatParameter(getParameter(req, name, false), invalidDataMessage);
return parseFloatParameter(getParameter(req, name, false), invalidDataMessage);
}
/**
@@ -100,9 +100,9 @@ public class ParameterUtil
*/
public static int requireIntParameter (
HttpServletRequest req, String name, String invalidDataMessage)
throws DataValidationException
throws DataValidationException
{
return parseIntParameter(getParameter(req, name, false), invalidDataMessage);
return parseIntParameter(getParameter(req, name, false), invalidDataMessage);
}
/**
@@ -112,11 +112,11 @@ public class ParameterUtil
*/
public static int requireIntParameter (HttpServletRequest req, String name,
String invalidDataMessage, ParameterValidator validator)
throws DataValidationException
throws DataValidationException
{
String value = getParameter(req, name, false);
validator.validateParameter(name, value);
return parseIntParameter(value, invalidDataMessage);
return parseIntParameter(value, invalidDataMessage);
}
/**
@@ -126,7 +126,7 @@ public class ParameterUtil
*/
public static int requireIntParameter (HttpServletRequest req, String name, int low, int high,
String invalidDataMessage)
throws DataValidationException
throws DataValidationException
{
return requireIntParameter(
req, name, invalidDataMessage, new IntRangeValidator(low, high, invalidDataMessage));
@@ -176,7 +176,7 @@ public class ParameterUtil
*/
public static String getParameter (HttpServletRequest req, String name, String defval)
{
String value = req.getParameter(name);
String value = req.getParameter(name);
return StringUtil.isBlank(value) ? defval : value.trim();
}
@@ -187,9 +187,9 @@ public class ParameterUtil
*/
public static int getIntParameter (
HttpServletRequest req, String name, int defval, String invalidDataMessage)
throws DataValidationException
throws DataValidationException
{
String value = getParameter(req, name, false);
String value = getParameter(req, name, false);
if (StringUtil.isBlank(value)) {
return defval;
}
@@ -203,9 +203,9 @@ public class ParameterUtil
*/
public static long getLongParameter (
HttpServletRequest req, String name, long defval, String invalidDataMessage)
throws DataValidationException
throws DataValidationException
{
String value = getParameter(req, name, false);
String value = getParameter(req, name, false);
if (StringUtil.isBlank(value)) {
return defval;
}
@@ -218,13 +218,13 @@ public class ParameterUtil
*/
public static String requireParameter (
HttpServletRequest req, String name, String missingDataMessage)
throws DataValidationException
throws DataValidationException
{
String value = getParameter(req, name, true);
if (StringUtil.isBlank(value)) {
throw new DataValidationException(missingDataMessage);
}
return value;
String value = getParameter(req, name, true);
if (StringUtil.isBlank(value)) {
throw new DataValidationException(missingDataMessage);
}
return value;
}
/**
@@ -238,7 +238,7 @@ public class ParameterUtil
*/
public static String requireParameter (
HttpServletRequest req, String name, String missingDataMessage, int maxLength)
throws DataValidationException
throws DataValidationException
{
return StringUtil.truncate(
requireParameter(req, name, missingDataMessage), maxLength);
@@ -251,7 +251,7 @@ public class ParameterUtil
*/
public static Date requireDateParameter (
HttpServletRequest req, String name, String invalidDataMessage)
throws DataValidationException
throws DataValidationException
{
return parseDateParameter(getParameter(req, name, false), invalidDataMessage);
}
@@ -261,7 +261,7 @@ public class ParameterUtil
*/
public static java.sql.Date requireSQLDateParameter (
HttpServletRequest req, String name, String invalidDataMessage)
throws DataValidationException
throws DataValidationException
{
return new java.sql.Date(requireDateParameter(req, name, invalidDataMessage).getTime());
}
@@ -274,9 +274,9 @@ public class ParameterUtil
*/
public static Date getDateParameter (
HttpServletRequest req, String name, String invalidDataMessage)
throws DataValidationException
throws DataValidationException
{
String value = getParameter(req, name, false);
String value = getParameter(req, name, false);
if (StringUtil.isBlank(value) ||
DATE_TEMPLATE.equalsIgnoreCase(value)) {
return null;
@@ -289,7 +289,7 @@ public class ParameterUtil
*/
public static java.sql.Date getSQLDateParameter (
HttpServletRequest req, String name, String invalidDataMessage)
throws DataValidationException
throws DataValidationException
{
Date when = getDateParameter(req, name, invalidDataMessage);
return (when == null) ? null : new java.sql.Date(when.getTime());
@@ -329,7 +329,7 @@ public class ParameterUtil
*/
public static boolean parameterEquals (HttpServletRequest req, String name, String value)
{
return value.equals(getParameter(req, name, false));
return value.equals(getParameter(req, name, false));
}
/**
@@ -339,10 +339,10 @@ public class ParameterUtil
throws DataValidationException
{
try {
return Integer.parseInt(value);
} catch (NumberFormatException nfe) {
throw new DataValidationException(invalidDataMessage);
}
return Integer.parseInt(value);
} catch (NumberFormatException nfe) {
throw new DataValidationException(invalidDataMessage);
}
}
/**
@@ -352,10 +352,10 @@ public class ParameterUtil
throws DataValidationException
{
try {
return Long.parseLong(value);
} catch (NumberFormatException nfe) {
throw new DataValidationException(invalidDataMessage);
}
return Long.parseLong(value);
} catch (NumberFormatException nfe) {
throw new DataValidationException(invalidDataMessage);
}
}
/**
@@ -365,25 +365,25 @@ public class ParameterUtil
throws DataValidationException
{
try {
return Float.parseFloat(value);
} catch (NumberFormatException nfe) {
throw new DataValidationException(invalidDataMessage);
}
return Float.parseFloat(value);
} catch (NumberFormatException nfe) {
throw new DataValidationException(invalidDataMessage);
}
}
/**
* Internal method to parse a date.
*/
protected static Date parseDateParameter (String value, String invalidDataMessage)
throws DataValidationException
throws DataValidationException
{
try {
try {
synchronized (_dparser) {
return _dparser.parse(value);
}
} catch (ParseException pe) {
throw new DataValidationException(invalidDataMessage);
}
} catch (ParseException pe) {
throw new DataValidationException(invalidDataMessage);
}
}
/** Makes sure integers are within a range. */
@@ -101,10 +101,10 @@ public class AbsoluteLayout
Dimension dims = new Dimension(rect.width, rect.height);
// account for the insets
Insets insets = parent.getInsets();
dims.width += insets.left + insets.right;
dims.height += insets.top + insets.bottom;
// account for the insets
Insets insets = parent.getInsets();
dims.width += insets.left + insets.right;
dims.height += insets.top + insets.bottom;
return dims;
}
@@ -126,7 +126,7 @@ public class AbsoluteLayout
// documentation inherited from interface
public void layoutContainer (Container parent)
{
Insets insets = parent.getInsets();
Insets insets = parent.getInsets();
int pcount = parent.getComponentCount();
for (int ii = 0; ii < pcount; ii++) {
Component comp = parent.getComponent(ii);
+13 -13
View File
@@ -50,18 +50,18 @@ public class DimenInfo
@Override
public String toString ()
{
StringBuilder buf = new StringBuilder();
buf.append("[count=").append(count);
buf.append(", totwid=").append(totwid);
buf.append(", tothei=").append(tothei);
buf.append(", maxwid=").append(maxwid);
buf.append(", maxhei=").append(maxhei);
buf.append(", numfix=").append(numfix);
buf.append(", fixwid=").append(fixwid);
buf.append(", fixhei=").append(fixhei);
buf.append(", maxfreewid=").append(maxfreewid);
buf.append(", maxfreehei=").append(maxfreehei);
buf.append(", totweight=").append(totweight);
return buf.append("]").toString();
StringBuilder buf = new StringBuilder();
buf.append("[count=").append(count);
buf.append(", totwid=").append(totwid);
buf.append(", tothei=").append(tothei);
buf.append(", maxwid=").append(maxwid);
buf.append(", maxhei=").append(maxhei);
buf.append(", numfix=").append(numfix);
buf.append(", fixwid=").append(fixwid);
buf.append(", fixhei=").append(fixhei);
buf.append(", maxfreewid=").append(maxfreewid);
buf.append(", maxfreehei=").append(maxfreehei);
buf.append(", totweight=").append(totweight);
return buf.append("]").toString();
}
}
+86 -91
View File
@@ -44,36 +44,33 @@ public abstract class GroupLayout
*/
public static class Constraints
{
/**
* Constructs a new constraints object with the specified weight,
/**
* Constructs a new constraints object with the specified weight,
* which is only applicable with the STRETCH policy.
*/
public Constraints (int weight)
{
_weight = weight;
}
*/
public Constraints (int weight) {
_weight = weight;
}
/**
* Is this Constraints specifying fixed?
*/
public final boolean isFixed ()
{
public final boolean isFixed () {
return (this == FIXED);
}
/**
* Get the weight.
*/
public final int getWeight ()
{
public final int getWeight () {
return _weight;
}
/**
* The weight of this component relative to the other components
* in the container. Only valid if the layout policy is STRETCH.
*/
protected int _weight = 1;
/**
* The weight of this component relative to the other components
* in the container. Only valid if the layout policy is STRETCH.
*/
protected int _weight = 1;
}
/** A class used to make our policy constants type-safe. */
@@ -127,108 +124,107 @@ public abstract class GroupLayout
public void setPolicy (Policy policy)
{
_policy = policy;
_policy = policy;
}
public Policy getPolicy ()
{
return _policy;
return _policy;
}
public void setOffAxisPolicy (Policy offpolicy)
{
_offpolicy = offpolicy;
_offpolicy = offpolicy;
}
public Policy getOffAxisPolicy ()
{
return _offpolicy;
return _offpolicy;
}
public void setGap (int gap)
{
_gap = gap;
_gap = gap;
}
public int getGap ()
{
return _gap;
return _gap;
}
public void setJustification (Justification justification)
{
_justification = justification;
_justification = justification;
}
public Justification getJustification ()
{
return _justification;
return _justification;
}
public void setOffAxisJustification (Justification justification)
{
_offjust = justification;
_offjust = justification;
}
public Justification getOffAxisJustification ()
{
return _offjust;
return _offjust;
}
public void addLayoutComponent (String name, Component comp)
{
// nothing to do here
// nothing to do here
}
public void removeLayoutComponent (Component comp)
{
if (_constraints != null) {
_constraints.remove(comp);
}
if (_constraints != null) {
_constraints.remove(comp);
}
}
public void addLayoutComponent (Component comp, Object constraints)
{
if (constraints != null) {
if (constraints instanceof Constraints) {
if (_constraints == null) {
_constraints = new HashMap<Component,Constraints>();
}
_constraints.put(comp, (Constraints)constraints);
if (constraints != null) {
if (constraints instanceof Constraints) {
if (_constraints == null) {
_constraints = new HashMap<Component,Constraints>();
}
_constraints.put(comp, (Constraints)constraints);
} else {
throw new RuntimeException("GroupLayout constraints " +
"object must be of type " +
"GroupLayout.Constraints");
}
}
} else {
throw new RuntimeException(
"GroupLayout constraints object must be of type GroupLayout.Constraints");
}
}
}
public float getLayoutAlignmentX (Container target)
{
// we don't support alignment like this
return 0f;
// we don't support alignment like this
return 0f;
}
public float getLayoutAlignmentY (Container target)
{
// we don't support alignment like this
return 0f;
// we don't support alignment like this
return 0f;
}
public Dimension minimumLayoutSize (Container parent)
{
return getLayoutSize(parent, MINIMUM);
return getLayoutSize(parent, MINIMUM);
}
public Dimension preferredLayoutSize (Container parent)
{
return getLayoutSize(parent, PREFERRED);
return getLayoutSize(parent, PREFERRED);
}
public Dimension maximumLayoutSize (Container parent)
{
return getLayoutSize(parent, MAXIMUM);
return getLayoutSize(parent, MAXIMUM);
}
protected abstract Dimension getLayoutSize (Container parent, int type);
@@ -237,7 +233,7 @@ public abstract class GroupLayout
public void invalidateLayout (Container target)
{
// nothing to do here
// nothing to do here
}
/**
@@ -261,52 +257,51 @@ public abstract class GroupLayout
* Computes dimensions of the children widgets that are useful for the
* group layout managers.
*/
protected DimenInfo computeDimens (Container parent, int type)
{
int count = parent.getComponentCount();
DimenInfo info = new DimenInfo();
info.dimens = new Dimension[count];
protected DimenInfo computeDimens (Container parent, int type) {
int count = parent.getComponentCount();
DimenInfo info = new DimenInfo();
info.dimens = new Dimension[count];
for (int i = 0; i < count; i++) {
Component child = parent.getComponent(i);
if (!child.isVisible()) {
continue;
}
for (int i = 0; i < count; i++) {
Component child = parent.getComponent(i);
if (!child.isVisible()) {
continue;
}
Dimension csize;
switch (type) {
case MINIMUM:
csize = child.getMinimumSize();
break;
Dimension csize;
switch (type) {
case MINIMUM:
csize = child.getMinimumSize();
break;
case MAXIMUM:
csize = child.getMaximumSize();
break;
case MAXIMUM:
csize = child.getMaximumSize();
break;
default:
csize = child.getPreferredSize();
break;
}
default:
csize = child.getPreferredSize();
break;
}
info.count++;
info.totwid += csize.width;
info.tothei += csize.height;
info.count++;
info.totwid += csize.width;
info.tothei += csize.height;
if (csize.width > info.maxwid) {
info.maxwid = csize.width;
}
if (csize.height > info.maxhei) {
info.maxhei = csize.height;
}
if (csize.width > info.maxwid) {
info.maxwid = csize.width;
}
if (csize.height > info.maxhei) {
info.maxhei = csize.height;
}
Constraints c = getConstraints(child);
if (c.isFixed()) {
info.fixwid += csize.width;
info.fixhei += csize.height;
info.numfix++;
if (c.isFixed()) {
info.fixwid += csize.width;
info.fixhei += csize.height;
info.numfix++;
} else {
info.totweight += c.getWeight();
} else {
info.totweight += c.getWeight();
if (csize.width > info.maxfreewid) {
info.maxfreewid = csize.width;
@@ -314,12 +309,12 @@ public abstract class GroupLayout
if (csize.height > info.maxfreehei) {
info.maxfreehei = csize.height;
}
}
}
info.dimens[i] = csize;
}
info.dimens[i] = csize;
}
return info;
return info;
}
/**
@@ -28,33 +28,31 @@ public class GroupLayoutTest
{
public static void main (String[] args)
{
JFrame frame = new JFrame("GroupLayoutTest");
JPanel panel = new JPanel();
GroupLayout layout = new HGroupLayout();
layout.setJustification(GroupLayout.CENTER);
layout.setPolicy(GroupLayout.STRETCH);
JFrame frame = new JFrame("GroupLayoutTest");
JPanel panel = new JPanel();
GroupLayout layout = new HGroupLayout();
layout.setJustification(GroupLayout.CENTER);
layout.setPolicy(GroupLayout.STRETCH);
layout.setJustification(GroupLayout.RIGHT);
layout.setGap(15);
panel.setLayout(layout);
layout.setGap(15);
panel.setLayout(layout);
panel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
JButton butone = new JButton("One");
panel.add(butone, GroupLayout.FIXED);
JButton buttwo = new JButton("Two");
panel.add(buttwo, GroupLayout.FIXED);
JButton butthree = new JButton("Three to get ready");
panel.add(butthree, GroupLayout.FIXED);
JButton butone = new JButton("One");
panel.add(butone, GroupLayout.FIXED);
JButton buttwo = new JButton("Two");
panel.add(buttwo, GroupLayout.FIXED);
JButton butthree = new JButton("Three to get ready");
panel.add(butthree, GroupLayout.FIXED);
frame.addWindowListener(new WindowAdapter ()
{
@Override public void windowClosing (WindowEvent e)
{
frame.addWindowListener(new WindowAdapter () {
@Override public void windowClosing (WindowEvent e) {
System.exit(0);
}
});
frame.getContentPane().add(panel, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
frame.pack();
frame.setVisible(true);
}
}
+78 -81
View File
@@ -24,31 +24,30 @@ import java.awt.*;
public class HGroupLayout extends GroupLayout
{
public HGroupLayout (Policy policy, Policy offpolicy, int gap,
Justification justification)
public HGroupLayout (Policy policy, Policy offpolicy, int gap, Justification justification)
{
_policy = policy;
_offpolicy = offpolicy;
_gap = gap;
_justification = justification;
_policy = policy;
_offpolicy = offpolicy;
_gap = gap;
_justification = justification;
}
public HGroupLayout (Policy policy, int gap, Justification justification)
{
_policy = policy;
_gap = gap;
_justification = justification;
_policy = policy;
_gap = gap;
_justification = justification;
}
public HGroupLayout (Policy policy, Justification justification)
{
_policy = policy;
_justification = justification;
_policy = policy;
_justification = justification;
}
public HGroupLayout (Policy policy)
{
_policy = policy;
_policy = policy;
}
public HGroupLayout ()
@@ -58,126 +57,124 @@ public class HGroupLayout extends GroupLayout
@Override
protected Dimension getLayoutSize (Container parent, int type)
{
DimenInfo info = computeDimens(parent, type);
Dimension dims = new Dimension();
DimenInfo info = computeDimens(parent, type);
Dimension dims = new Dimension();
if (_policy == STRETCH) {
dims.width = info.maxfreewid * (info.count - info.numfix) +
info.fixwid;
dims.width = info.maxfreewid * (info.count - info.numfix) + info.fixwid;
} else if (_policy == EQUALIZE) {
dims.width = info.maxwid * info.count;
dims.width = info.maxwid * info.count;
} else { // NONE or CONSTRAIN
dims.width = info.totwid;
}
dims.width = info.totwid;
}
dims.width += (info.count - 1) * _gap;
dims.height = info.maxhei;
dims.width += (info.count - 1) * _gap;
dims.height = info.maxhei;
// account for the insets
Insets insets = parent.getInsets();
dims.width += insets.left + insets.right;
dims.height += insets.top + insets.bottom;
// account for the insets
Insets insets = parent.getInsets();
dims.width += insets.left + insets.right;
dims.height += insets.top + insets.bottom;
return dims;
return dims;
}
@Override
public void layoutContainer (Container parent)
{
Rectangle b = parent.getBounds();
DimenInfo info = computeDimens(parent, PREFERRED);
Rectangle b = parent.getBounds();
DimenInfo info = computeDimens(parent, PREFERRED);
// adjust the bounds width and height to account for the insets
Insets insets = parent.getInsets();
b.width -= (insets.left + insets.right);
b.height -= (insets.top + insets.bottom);
// adjust the bounds width and height to account for the insets
Insets insets = parent.getInsets();
b.width -= (insets.left + insets.right);
b.height -= (insets.top + insets.bottom);
int nk = parent.getComponentCount();
int sx, sy;
int totwid, totgap = _gap * (info.count-1);
int freecount = info.count - info.numfix;
int nk = parent.getComponentCount();
int sx, sy;
int totwid, totgap = _gap * (info.count-1);
int freecount = info.count - info.numfix;
// when stretching, there is the possibility that a pixel or more
// will be lost to rounding error. we account for that here and
// assign the extra space to the first free component
int freefrac = 0;
// do the on-axis policy calculations
int defwid = 0;
// do the on-axis policy calculations
int defwid = 0;
if (_policy == STRETCH) {
if (freecount > 0) {
if (freecount > 0) {
int freewid = b.width - info.fixwid - totgap;
defwid = freewid / info.totweight;
freefrac = freewid % info.totweight;
totwid = b.width;
} else {
totwid = info.fixwid + totgap;
}
totwid = b.width;
} else {
totwid = info.fixwid + totgap;
}
} else if (_policy == EQUALIZE) {
defwid = info.maxwid;
totwid = info.fixwid + defwid * freecount + totgap;
defwid = info.maxwid;
totwid = info.fixwid + defwid * freecount + totgap;
} else { // NONE or CONSTRAIN
totwid = info.totwid + totgap;
}
totwid = info.totwid + totgap;
}
// do the off-axis policy calculations
int defhei = 0;
if (_offpolicy == STRETCH) {
defhei = b.height;
// do the off-axis policy calculations
int defhei = 0;
if (_offpolicy == STRETCH) {
defhei = b.height;
} else if (_offpolicy == EQUALIZE) {
defhei = info.maxhei;
}
defhei = info.maxhei;
}
// do the justification-related calculations
if (_justification == LEFT || _justification == TOP) {
// do the justification-related calculations
if (_justification == LEFT || _justification == TOP) {
sx = insets.left;
} else if (_justification == CENTER) {
sx = insets.left + (b.width - totwid)/2;
sx = insets.left + (b.width - totwid)/2;
} else { // RIGHT or BOTTOM
sx = insets.left + b.width - totwid;
}
sx = insets.left + b.width - totwid;
}
// do the layout
for (int i = 0; i < nk; i++) {
// skip non-visible kids
if (info.dimens[i] == null) {
continue;
}
// do the layout
for (int i = 0; i < nk; i++) {
// skip non-visible kids
if (info.dimens[i] == null) {
continue;
}
Component child = parent.getComponent(i);
Component child = parent.getComponent(i);
Constraints c = getConstraints(child);
int newwid, newhei;
int newwid, newhei;
if (_policy == NONE || c.isFixed()) {
newwid = info.dimens[i].width;
} else {
newwid = freefrac +
((_policy == STRETCH) ? defwid * c.getWeight() : defwid);
if (_policy == NONE || c.isFixed()) {
newwid = info.dimens[i].width;
} else {
newwid = freefrac + ((_policy == STRETCH) ? defwid * c.getWeight() : defwid);
// clear out the extra pixels the first time they're used
freefrac = 0;
}
if (_offpolicy == NONE) {
newhei = info.dimens[i].height;
if (_offpolicy == NONE) {
newhei = info.dimens[i].height;
} else if (_offpolicy == CONSTRAIN) {
newhei = Math.min(info.dimens[i].height, b.height);
} else {
newhei = Math.min(info.dimens[i].height, b.height);
} else {
newhei = defhei;
}
// determine our off-axis position
if (_offjust == LEFT || _offjust == TOP) {
sy = insets.top;
sy = insets.top;
} else if (_offjust == RIGHT || _offjust == BOTTOM) {
sy = insets.top + b.height - newhei;
sy = insets.top + b.height - newhei;
} else { // CENTER
sy = insets.top + (b.height - newhei)/2;
sy = insets.top + (b.height - newhei)/2;
}
child.setBounds(sx, sy, newwid, newhei);
sx += child.getSize().width + _gap;
}
child.setBounds(sx, sy, newwid, newhei);
sx += child.getSize().width + _gap;
}
}
}
+74 -77
View File
@@ -24,31 +24,30 @@ import java.awt.*;
public class VGroupLayout extends GroupLayout
{
public VGroupLayout (Policy policy, Policy offpolicy, int gap,
Justification justification)
public VGroupLayout (Policy policy, Policy offpolicy, int gap, Justification justification)
{
_policy = policy;
_offpolicy = offpolicy;
_gap = gap;
_justification = justification;
_policy = policy;
_offpolicy = offpolicy;
_gap = gap;
_justification = justification;
}
public VGroupLayout (Policy policy, int gap, Justification justification)
{
_policy = policy;
_gap = gap;
_justification = justification;
_policy = policy;
_gap = gap;
_justification = justification;
}
public VGroupLayout (Policy policy, Justification justification)
{
_policy = policy;
_justification = justification;
_policy = policy;
_justification = justification;
}
public VGroupLayout (Policy policy)
{
_policy = policy;
_policy = policy;
}
public VGroupLayout ()
@@ -58,44 +57,43 @@ public class VGroupLayout extends GroupLayout
@Override
protected Dimension getLayoutSize (Container parent, int type)
{
DimenInfo info = computeDimens(parent, type);
Dimension dims = new Dimension();
DimenInfo info = computeDimens(parent, type);
Dimension dims = new Dimension();
if (_policy == STRETCH) {
dims.height = info.maxfreehei * (info.count - info.numfix) +
info.fixhei;
dims.height = info.maxfreehei * (info.count - info.numfix) + info.fixhei;
} else if (_policy == EQUALIZE) {
dims.height = info.maxhei * info.count;
dims.height = info.maxhei * info.count;
} else { // NONE or CONSTRAIN
dims.height = info.tothei;
}
dims.height = info.tothei;
}
dims.height += (info.count - 1) * _gap;
dims.width = info.maxwid;
dims.width = info.maxwid;
// account for the insets
Insets insets = parent.getInsets();
dims.width += insets.left + insets.right;
dims.height += insets.top + insets.bottom;
// account for the insets
Insets insets = parent.getInsets();
dims.width += insets.left + insets.right;
dims.height += insets.top + insets.bottom;
return dims;
return dims;
}
@Override
public void layoutContainer (Container parent)
{
Rectangle b = parent.getBounds();
DimenInfo info = computeDimens(parent, PREFERRED);
Rectangle b = parent.getBounds();
DimenInfo info = computeDimens(parent, PREFERRED);
// adjust the bounds width and height to account for the insets
Insets insets = parent.getInsets();
b.width -= (insets.left + insets.right);
b.height -= (insets.top + insets.bottom);
// adjust the bounds width and height to account for the insets
Insets insets = parent.getInsets();
b.width -= (insets.left + insets.right);
b.height -= (insets.top + insets.bottom);
int nk = parent.getComponentCount();
int sx, sy;
int tothei, totgap = _gap * (info.count-1);
int freecount = info.count - info.numfix;
int nk = parent.getComponentCount();
int sx, sy;
int tothei, totgap = _gap * (info.count-1);
int freecount = info.count - info.numfix;
// when stretching, there is the possibility that a pixel or more
// will be lost to rounding error. we account for that here and
@@ -103,81 +101,80 @@ public class VGroupLayout extends GroupLayout
int freefrac = 0;
// do the on-axis policy calculations
int defhei = 0;
int defhei = 0;
if (_policy == STRETCH) {
if (freecount > 0) {
if (freecount > 0) {
int freehei = b.height - info.fixhei - totgap;
defhei = freehei / info.totweight;
freefrac = freehei % info.totweight;
tothei = b.height;
} else {
tothei = info.fixhei + totgap;
}
tothei = b.height;
} else {
tothei = info.fixhei + totgap;
}
} else if (_policy == EQUALIZE) {
defhei = info.maxhei;
tothei = info.fixhei + defhei * freecount + totgap;
defhei = info.maxhei;
tothei = info.fixhei + defhei * freecount + totgap;
} else {
tothei = info.tothei + totgap;
}
tothei = info.tothei + totgap;
}
// do the off-axis policy calculations
int defwid = 0;
// do the off-axis policy calculations
int defwid = 0;
if (_offpolicy == STRETCH) {
defwid = b.width;
defwid = b.width;
} else if (_offpolicy == EQUALIZE) {
defwid = info.maxwid;
}
defwid = info.maxwid;
}
// do the justification-related calculations
// do the justification-related calculations
if (_justification == LEFT || _justification == TOP) {
sy = insets.top;
} else if (_justification == CENTER) {
sy = insets.top + (b.height - tothei)/2;
sy = insets.top + (b.height - tothei)/2;
} else { // RIGHT or BOTTOM
sy = insets.top + b.height - tothei;
}
sy = insets.top + b.height - tothei;
}
// do the layout
for (int i = 0; i < nk; i++) {
// skip non-visible kids
if (info.dimens[i] == null) {
continue;
}
// do the layout
for (int i = 0; i < nk; i++) {
// skip non-visible kids
if (info.dimens[i] == null) {
continue;
}
Component child = parent.getComponent(i);
Component child = parent.getComponent(i);
Constraints c = getConstraints(child);
int newwid, newhei;
int newwid, newhei;
if (_policy == NONE || c.isFixed()) {
newhei = info.dimens[i].height;
} else {
newhei = freefrac +
((_policy == STRETCH) ? defhei * c.getWeight() : defhei);
if (_policy == NONE || c.isFixed()) {
newhei = info.dimens[i].height;
} else {
newhei = freefrac + ((_policy == STRETCH) ? defhei * c.getWeight() : defhei);
// clear out the extra pixels the first time they're used
freefrac = 0;
}
if (_offpolicy == NONE) {
newwid = info.dimens[i].width;
if (_offpolicy == NONE) {
newwid = info.dimens[i].width;
} else if (_offpolicy == CONSTRAIN) {
newwid = Math.min(info.dimens[i].width, b.width);
} else {
newwid = Math.min(info.dimens[i].width, b.width);
} else {
newwid = defwid;
}
// determine our off-axis position
if (_offjust == LEFT || _offjust == TOP) {
sx = insets.left;
sx = insets.left;
} else if (_offjust == RIGHT || _offjust == BOTTOM) {
sx = insets.left + b.width - newwid;
sx = insets.left + b.width - newwid;
} else { // CENTER
sx = insets.left + (b.width - newwid)/2;
sx = insets.left + (b.width - newwid)/2;
}
child.setBounds(sx, sy, newwid, newhei);
sy += child.getSize().height + _gap;
}
child.setBounds(sx, sy, newwid, newhei);
sy += child.getSize().height + _gap;
}
}
}
@@ -62,7 +62,7 @@ public class MenuUtil
KeyStroke accel)
{
JMenuItem item = createItem(name, mnem, accel);
item.addActionListener(l);
item.addActionListener(l);
menu.add(item);
return item;
}
@@ -127,19 +127,16 @@ public class MenuUtil
* @param name the item name.
* @param mnem the mnemonic key for the item.
* @param accel the keystroke for the item or null if none.
* @param target the object on which to invoke a method when the menu
* is selected.
* @param callbackName the name of the method to invoke when the menu
* is selected.
* @param target the object on which to invoke a method when the menu is selected.
* @param callbackName the name of the method to invoke when the menu is selected.
*
* @return the new menu item.
*/
public static JMenuItem addMenuItem (
JMenu menu, String name, int mnem, KeyStroke accel,
Object target, String callbackName)
JMenu menu, String name, int mnem, KeyStroke accel, Object target, String callbackName)
{
JMenuItem item = createItem(name, Integer.valueOf(mnem), accel);
item.addActionListener(new ReflectedAction(target, callbackName));
JMenuItem item = createItem(name, Integer.valueOf(mnem), accel);
item.addActionListener(new ReflectedAction(target, callbackName));
menu.add(item);
return item;
}
@@ -152,18 +149,16 @@ public class MenuUtil
*
* @param menu the menu to add the item to.
* @param name the item name.
* @param target the object on which to invoke a method when the menu
* is selected.
* @param callbackName the name of the method to invoke when the menu
* is selected.
* @param target the object on which to invoke a method when the menu is selected.
* @param callbackName the name of the method to invoke when the menu is selected.
*
* @return the new menu item.
*/
public static JMenuItem addMenuItem (
JMenu menu, String name, Object target, String callbackName)
{
JMenuItem item = createItem(name, null, null);
item.addActionListener(new ReflectedAction(target, callbackName));
JMenuItem item = createItem(name, null, null);
item.addActionListener(new ReflectedAction(target, callbackName));
menu.add(item);
return item;
}
@@ -181,17 +176,15 @@ public class MenuUtil
*
* @param menu the menu to add the item to.
* @param name the item name.
* @param target the object on which to invoke a method when the menu
* is selected.
* @param callbackName the name of the method to invoke when the menu
* is selected.
* @param target the object on which to invoke a method when the menu is selected.
* @param callbackName the name of the method to invoke when the menu is selected.
*
* @return the new menu item.
*/
public static JMenuItem addMenuItem (
JPopupMenu menu, String name, Object target, String callbackName)
{
JMenuItem item = createItem(name, null, null);
JMenuItem item = createItem(name, null, null);
item.addActionListener(new ReflectedAction(target, callbackName));
menu.add(item);
return item;
@@ -200,10 +193,9 @@ public class MenuUtil
/**
* Creates and configures a menu item.
*/
protected static JMenuItem createItem (
String name, Integer mnem, KeyStroke accel)
protected static JMenuItem createItem (String name, Integer mnem, KeyStroke accel)
{
JMenuItem item = new JMenuItem(name);
JMenuItem item = new JMenuItem(name);
if (mnem != null) {
item.setMnemonic(mnem.intValue());
}
@@ -218,8 +210,7 @@ public class MenuUtil
*/
protected static class ReflectedAction implements ActionListener
{
public ReflectedAction (Object target, String methodName)
{
public ReflectedAction (Object target, String methodName) {
try {
// look up the method we'll be calling
_method = target.getClass().getMethod(methodName, METHOD_ARGS);
@@ -231,8 +222,7 @@ public class MenuUtil
}
}
public void actionPerformed (ActionEvent event)
{
public void actionPerformed (ActionEvent event) {
if (_method != null) {
try {
_method.invoke(_target, new Object[] { event });
@@ -231,26 +231,25 @@ public class ProximityTracker
*/
protected int binarySearch (int x)
{
// copied from java.util.Arrays which I wouldn't have to have done
// had the provided a means by which to binarySearch in a subset
// of an array. alas.
int low = 0;
int high = _size-1;
// copied from java.util.Arrays which I wouldn't have to have done had the provided a
// means by which to binarySearch in a subset of an array. alas.
int low = 0;
int high = _size-1;
while (low <= high) {
int mid = (low + high) >>> 1;
int cmp = (_records[mid].x - x);
while (low <= high) {
int mid = (low + high) >>> 1;
int cmp = (_records[mid].x - x);
if (cmp < 0) {
low = mid + 1;
} else if (cmp > 0) {
high = mid - 1;
} else {
return mid; // key found
if (cmp < 0) {
low = mid + 1;
} else if (cmp > 0) {
high = mid - 1;
} else {
return mid; // key found
}
}
}
return low; // key not found
return low; // key not found
}
/**
@@ -143,9 +143,9 @@ public class SwingUtil
Graphics g, String str, int x, int y, int width, int height)
{
FontMetrics fm = g.getFontMetrics(g.getFont());
int xpos = x + ((width - fm.stringWidth(str)) / 2);
int ypos = y + ((height + fm.getAscent()) / 2);
g.drawString(str, xpos, ypos);
int xpos = x + ((width - fm.stringWidth(str)) / 2);
int ypos = y + ((height + fm.getAscent()) / 2);
g.drawString(str, xpos, ypos);
}
/**
@@ -47,14 +47,13 @@ public class TaskMaster
* subsequent dealings with the task master. The supplied observer (if
* non-null) will be notified when the task has completed.
*/
public static void invokeTask (String name, Task task,
TaskObserver observer)
public static void invokeTask (String name, Task task, TaskObserver observer)
{
// create a task runner and stick it in our task table
TaskRunner runner = new TaskRunner(name, task, observer);
_tasks.put(name, runner);
// then start the runner up
runner.start();
// create a task runner and stick it in our task table
TaskRunner runner = new TaskRunner(name, task, observer);
_tasks.put(name, runner);
// then start the runner up
runner.start();
}
/**
@@ -65,8 +64,7 @@ public class TaskMaster
* <code>invoke</code> method of the <code>Task</code> interface.
* Aborting tasks run in this way is not supported.
*/
public static void invokeMethodTask (String name, Object source,
TaskObserver observer)
public static void invokeMethodTask (String name, Object source, TaskObserver observer)
{
// create a method task instance to invoke the named method and
// then run that through the normal task invocation mechanism
@@ -79,29 +77,25 @@ public class TaskMaster
*/
protected static void removeTask (String name)
{
_tasks.remove(name);
_tasks.remove(name);
}
protected static class TaskRunner extends Thread
{
public TaskRunner (String name, Task task, TaskObserver observer)
{
_name = name;
_task = task;
_observer = observer;
public TaskRunner (String name, Task task, TaskObserver observer) {
_name = name;
_task = task;
_observer = observer;
_mode = INVOKE;
}
}
/**
* Invokes the task and then reports completion or failure later
* on the swing event dispatcher thread. We need to ensure that
* _mode and _result are visible to the various threads that
* invoke this runnable so run() is synchronized. Oh how I love
* Chapter 17.
* Invokes the task and then reports completion or failure later on the swing event
* dispatcher thread. We need to ensure that _mode and _result are visible to the various
* threads that invoke this runnable so run() is synchronized. Oh how I love Chapter 17.
*/
@Override
public synchronized void run ()
{
@Override
public synchronized void run () {
switch (_mode) {
default:
case INVOKE:
@@ -139,19 +133,18 @@ public class TaskMaster
}
break;
}
}
}
public void abort ()
{
log.warning("abort() not currently supported.");
}
public void abort () {
log.warning("abort() not currently supported.");
}
protected String _name;
protected Task _task;
protected TaskObserver _observer;
protected String _name;
protected Task _task;
protected TaskObserver _observer;
protected int _mode;
protected Object _result;
protected Object _result;
protected static final int INVOKE = 0;
protected static final int COMPLETED = 1;
@@ -160,22 +153,19 @@ public class TaskMaster
protected static class MethodTask implements Task
{
public MethodTask (String name, Object source)
{
public MethodTask (String name, Object source) {
_name = name;
_source = source;
}
public Object invoke () throws Exception
{
public Object invoke () throws Exception {
// look up the named method on the source object and invoke it
Method meth = _source.getClass().getMethod(_name, (Class<?>[]) null);
meth.setAccessible(true);
return meth.invoke(_source, (Object[]) null);
}
public boolean abort ()
{
public boolean abort () {
// aborting not supported
return false;
}
@@ -184,6 +174,5 @@ public class TaskMaster
protected Object _source;
}
protected static Hashtable<String,TaskRunner> _tasks =
new Hashtable<String,TaskRunner>();
protected static Hashtable<String, TaskRunner> _tasks = new Hashtable<String, TaskRunner>();
}
@@ -86,7 +86,7 @@ public class Comparators
*/
public static int compare (byte value1, byte value2)
{
return (value1 < value2 ? -1 : (value1 == value2 ? 0 : 1));
return (value1 < value2 ? -1 : (value1 == value2 ? 0 : 1));
}
/**
@@ -95,7 +95,7 @@ public class Comparators
*/
public static int compare (char value1, char value2)
{
return (value1 < value2 ? -1 : (value1 == value2 ? 0 : 1));
return (value1 < value2 ? -1 : (value1 == value2 ? 0 : 1));
}
/**
@@ -104,7 +104,7 @@ public class Comparators
*/
public static int compare (short value1, short value2)
{
return (value1 < value2 ? -1 : (value1 == value2 ? 0 : 1));
return (value1 < value2 ? -1 : (value1 == value2 ? 0 : 1));
}
/**
@@ -113,7 +113,7 @@ public class Comparators
*/
public static int compare (int value1, int value2)
{
return (value1 < value2 ? -1 : (value1 == value2 ? 0 : 1));
return (value1 < value2 ? -1 : (value1 == value2 ? 0 : 1));
}
/**
@@ -122,7 +122,7 @@ public class Comparators
*/
public static int compare (long value1, long value2)
{
return (value1 < value2 ? -1 : (value1 == value2 ? 0 : 1));
return (value1 < value2 ? -1 : (value1 == value2 ? 0 : 1));
}
/**
+2 -2
View File
@@ -350,9 +350,9 @@ public class Config
* @exception Exception thrown if any error occurs while loading or instantiating the class.
*/
public Object instantiateValue (String name, String defcname)
throws Exception
throws Exception
{
return Class.forName(getValue(name, defcname)).newInstance();
return Class.forName(getValue(name, defcname)).newInstance();
}
/**
+38 -39
View File
@@ -69,9 +69,9 @@ public class ConfigUtil
* be found, null otherwise.
*/
public static Properties loadProperties (String path)
throws IOException
throws IOException
{
return loadProperties(path, ConfigUtil.class.getClassLoader());
return loadProperties(path, ConfigUtil.class.getClassLoader());
}
/**
@@ -79,22 +79,21 @@ public class ConfigUtil
* than the class loader used to load the <code>ConfigUtil</code> class.
*/
public static Properties loadProperties (String path, ClassLoader loader)
throws IOException
throws IOException
{
Properties props = new Properties();
Properties props = new Properties();
loadProperties(path, loader, props);
return props;
return props;
}
/**
* Like {@link #loadProperties(String,ClassLoader)} but the properties are loaded into the
* supplied {@link Properties} object.
*/
public static void loadProperties (
String path, ClassLoader loader, Properties target)
throws IOException
public static void loadProperties (String path, ClassLoader loader, Properties target)
throws IOException
{
InputStream in = getStream(path, loader);
InputStream in = getStream(path, loader);
if (in == null) {
throw new FileNotFoundException(path);
}
@@ -218,9 +217,9 @@ public class ConfigUtil
* be found, null otherwise.
*/
public static Properties loadInheritedProperties (String path)
throws IOException
throws IOException
{
return loadInheritedProperties(path, ConfigUtil.class.getClassLoader());
return loadInheritedProperties(path, ConfigUtil.class.getClassLoader());
}
/**
@@ -228,7 +227,7 @@ public class ConfigUtil
* target object.
*/
public static void loadInheritedProperties (String path, Properties target)
throws IOException
throws IOException
{
loadInheritedProperties(path, ConfigUtil.class.getClassLoader(), target);
}
@@ -238,7 +237,7 @@ public class ConfigUtil
* rather than the class loader used to load the <code>ConfigUtil</code> class.
*/
public static Properties loadInheritedProperties (String path, ClassLoader loader)
throws IOException
throws IOException
{
Properties props = new Properties();
loadInheritedProperties(path, loader, props);
@@ -254,7 +253,7 @@ public class ConfigUtil
* path.
*/
public static void loadInheritedProperties (String path, ClassLoader loader, Properties target)
throws IOException
throws IOException
{
// first look for the files in the supplied class loader
Enumeration<URL> enm = getResources(path, loader);
@@ -486,7 +485,7 @@ public class ConfigUtil
*/
public static InputStream getStream (String path)
{
return getStream(path, ConfigUtil.class.getClassLoader());
return getStream(path, ConfigUtil.class.getClassLoader());
}
/**
@@ -499,14 +498,14 @@ public class ConfigUtil
*/
public static InputStream getStream (String path, ClassLoader loader)
{
// first try the supplied class loader
InputStream in = getResourceAsStream(path, loader);
if (in != null) {
return in;
}
// first try the supplied class loader
InputStream in = getResourceAsStream(path, loader);
if (in != null) {
return in;
}
// if that didn't work, try the system class loader (but only if it's different from the
// class loader we just tried)
// if that didn't work, try the system class loader (but only if it's different from the
// class loader we just tried)
try {
ClassLoader sysloader = ClassLoader.getSystemClassLoader();
if (sysloader != loader) {
@@ -526,12 +525,12 @@ public class ConfigUtil
return null;
}
// try the path as is
InputStream in = loader.getResourceAsStream(path);
if (in != null) {
return in;
}
// try toggling the leading slash
return loader.getResourceAsStream(togglePath(path));
InputStream in = loader.getResourceAsStream(path);
if (in != null) {
return in;
}
// try toggling the leading slash
return loader.getResourceAsStream(togglePath(path));
}
protected static Enumeration<URL> getResources (String path, ClassLoader loader)
@@ -543,21 +542,21 @@ public class ConfigUtil
return null;
}
// try the path as is
Enumeration<URL> enm = loader.getResources(path);
if (enm.hasMoreElements()) {
return enm;
}
// try toggling the leading slash
return loader.getResources(togglePath(path));
Enumeration<URL> enm = loader.getResources(path);
if (enm.hasMoreElements()) {
return enm;
}
// try toggling the leading slash
return loader.getResources(togglePath(path));
}
protected static String togglePath (String path)
{
if (path.startsWith("/")) {
return path.substring(1);
} else {
return "/" + path;
}
if (path.startsWith("/")) {
return path.substring(1);
} else {
return "/" + path;
}
}
/** Used when parsing inherited properties. */
+62 -63
View File
@@ -58,7 +58,7 @@ public class IntIntMap
public IntIntMap (int buckets, float loadFactor)
{
_buckets = new Record[buckets];
_buckets = new Record[buckets];
_loadFactor = loadFactor;
}
@@ -69,7 +69,7 @@ public class IntIntMap
public IntIntMap ()
{
this(DEFAULT_BUCKETS, DEFAULT_LOAD_FACTOR);
this(DEFAULT_BUCKETS, DEFAULT_LOAD_FACTOR);
}
public boolean isEmpty ()
@@ -82,7 +82,7 @@ public class IntIntMap
*/
public int size ()
{
return _size;
return _size;
}
/**
@@ -96,28 +96,28 @@ public class IntIntMap
ensureCapacity(_size + 1);
int index = Math.abs(key)%_buckets.length;
Record rec = _buckets[index];
Record rec = _buckets[index];
// either we start a new chain
if (rec == null) {
_buckets[index] = new Record(key, value);
_size++; // we're bigger
return;
}
// either we start a new chain
if (rec == null) {
_buckets[index] = new Record(key, value);
_size++; // we're bigger
return;
}
// or we replace an element in an existing chain
Record prev = rec;
for (; rec != null; rec = rec.next) {
if (rec.key == key) {
rec.value = value; // we're not bigger
return;
}
prev = rec;
}
// or we replace an element in an existing chain
Record prev = rec;
for (; rec != null; rec = rec.next) {
if (rec.key == key) {
rec.value = value; // we're not bigger
return;
}
prev = rec;
}
// or we append it to this chain
prev.next = new Record(key, value);
_size++; // we're bigger
// or we append it to this chain
prev.next = new Record(key, value);
_size++; // we're bigger
}
/**
@@ -206,12 +206,12 @@ public class IntIntMap
{
_modCount++;
// abandon all of our hash chains (the joy of garbage collection)
for (int i = 0; i < _buckets.length; i++) {
_buckets[i] = null;
}
// zero out our size
_size = 0;
// abandon all of our hash chains (the joy of garbage collection)
for (int i = 0; i < _buckets.length; i++) {
_buckets[i] = null;
}
// zero out our size
_size = 0;
}
/**
@@ -234,12 +234,12 @@ public class IntIntMap
*/
protected Record locateRecord (int key)
{
int index = Math.abs(key)%_buckets.length;
for (Record rec = _buckets[index]; rec != null; rec = rec.next) {
if (rec.key == key) {
int index = Math.abs(key)%_buckets.length;
for (Record rec = _buckets[index]; rec != null; rec = rec.next) {
if (rec.key == key) {
return rec;
}
}
}
}
return null;
}
@@ -248,7 +248,7 @@ public class IntIntMap
*/
protected int removeImpl (int key, int defval)
{
int index = Math.abs(key)%_buckets.length;
int index = Math.abs(key)%_buckets.length;
Record prev = null;
// go through the chain looking for a match
@@ -445,15 +445,14 @@ public class IntIntMap
protected static class Record implements IntIntEntry
{
public Record next;
public int key;
public int value;
public Record next;
public int key;
public int value;
public Record (int key, int value)
{
this.key = key;
this.value = value;
}
public Record (int key, int value) {
this.key = key;
this.value = value;
}
public Integer getKey () {
return Integer.valueOf(key);
@@ -497,29 +496,29 @@ public class IntIntMap
class IntEntryIterator implements Iterator<IntIntEntry>
{
public IntEntryIterator () {
public IntEntryIterator () {
this._modCount = IntIntMap.this._modCount;
_index = _buckets.length;
}
_index = _buckets.length;
}
public boolean hasNext () {
public boolean hasNext () {
checkMods();
// if we're pointing to an entry, we've got more entries
if (_next != null) {
return true;
}
// search backward through the buckets looking for the next non-empty hash chain
while (_index-- > 0) {
if ((_next = _buckets[_index]) != null) {
return true;
}
}
// found no non-empty hash chains, we're done
return false;
}
// if we're pointing to an entry, we've got more entries
if (_next != null) {
return true;
}
// search backward through the buckets looking for the next non-empty hash chain
while (_index-- > 0) {
if ((_next = _buckets[_index]) != null) {
return true;
}
}
// found no non-empty hash chains, we're done
return false;
}
public IntIntEntry next () {
// if we're not pointing to an entry, search for the next non-empty hash chain
public IntIntEntry next () {
// if we're not pointing to an entry, search for the next non-empty hash chain
if (hasNext()) {
_prev = _next;
_next = _next.next;
@@ -545,8 +544,8 @@ public class IntIntMap
}
}
private int _index;
private Record _next, _prev;
private int _index;
private Record _next, _prev;
private int _modCount;
}
+1 -1
View File
@@ -52,7 +52,7 @@ public final class Log
*/
public Log (String moduleName)
{
_moduleName = moduleName;
_moduleName = moduleName;
// try setting our default log level for this package
try {
@@ -56,15 +56,15 @@ public class OneLineLogFormatter extends Formatter
@Override
public String format (LogRecord record)
{
StringBuffer buf = new StringBuffer();
StringBuffer buf = new StringBuffer();
// append the timestamp
_date.setTime(record.getMillis());
_format.format(_date, buf, _fpos);
_format.format(_date, buf, _fpos);
// append the log level
buf.append(" ");
buf.append(record.getLevel().getLocalizedName());
buf.append(" ");
buf.append(record.getLevel().getLocalizedName());
buf.append(" ");
if (_showWhere) {
@@ -90,23 +90,23 @@ public class OneLineLogFormatter extends Formatter
}
// append the message itself
buf.append(formatMessage(record));
buf.append(formatMessage(record));
buf.append(FormatterUtil.LINE_SEPARATOR);
// if an exception was also provided, append that
if (record.getThrown() != null) {
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
record.getThrown().printStackTrace(pw);
pw.close();
buf.append(sw.toString());
} catch (Exception ex) {
if (record.getThrown() != null) {
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
record.getThrown().printStackTrace(pw);
pw.close();
buf.append(sw.toString());
} catch (Exception ex) {
buf.append("Format failure:").append(ex);
}
}
}
}
return buf.toString();
return buf.toString();
}
/**
@@ -70,9 +70,9 @@ public class PropertiesUtil
public static Properties getSubProperties (
Properties source, String prefix)
{
Properties dest = new Properties();
Properties dest = new Properties();
extractSubProperties(source, dest, prefix);
return dest;
return dest;
}
/**
@@ -89,7 +89,7 @@ public class PropertiesUtil
extractSubProperties(source, defs, defaultsPrefix);
// now load up the desired properties
Properties dest = new Properties(defs);
Properties dest = new Properties(defs);
extractSubProperties(source, dest, prefix);
return dest;
@@ -160,21 +160,21 @@ public class PropertiesUtil
protected static void extractSubProperties (
Properties source, Properties dest, String prefix)
{
// extend the prefix to contain a dot
prefix = prefix + ".";
int preflen = prefix.length();
// extend the prefix to contain a dot
prefix = prefix + ".";
int preflen = prefix.length();
// scan the source properties
Enumeration<?> names = source.propertyNames();
while (names.hasMoreElements()) {
String name = (String)names.nextElement();
// skip unrelated properties
if (!name.startsWith(prefix)) {
continue;
}
// insert the value into the new properties minus the prefix
dest.put(name.substring(preflen), source.getProperty(name));
}
// scan the source properties
Enumeration<?> names = source.propertyNames();
while (names.hasMoreElements()) {
String name = (String)names.nextElement();
// skip unrelated properties
if (!name.startsWith(prefix)) {
continue;
}
// insert the value into the new properties minus the prefix
dest.put(name.substring(preflen), source.getProperty(name));
}
}
/**
+8 -9
View File
@@ -173,17 +173,16 @@ public class Queue<T>
*/
public synchronized T get (long maxwait)
{
if (_count == 0) {
try { wait(maxwait); } catch (InterruptedException e) {}
if (_count == 0) {
try { wait(maxwait); } catch (InterruptedException e) {}
// if count's still null when we pull out, we waited
// ourmaxwait time.
if (_count == 0) {
return null;
}
}
// if count's still null when we pull out, we waited ourmaxwait time.
if (_count == 0) {
return null;
}
}
return get();
return get();
}
/**
+8 -8
View File
@@ -33,7 +33,7 @@ public class QuickSort
*/
public static <T> void sort (T[] a, Comparator<? super T> comp)
{
sort(a, 0, a.length - 1, comp);
sort(a, 0, a.length - 1, comp);
}
/**
@@ -41,7 +41,7 @@ public class QuickSort
*/
public static <T extends Comparable<? super T>> void sort (T[] a)
{
sort(a, 0, a.length - 1);
sort(a, 0, a.length - 1);
}
/**
@@ -49,7 +49,7 @@ public class QuickSort
*/
public static <T> void rsort (T[] a, Comparator<? super T> comp)
{
rsort(a, 0, a.length - 1, comp);
rsort(a, 0, a.length - 1, comp);
}
/**
@@ -72,7 +72,7 @@ public class QuickSort
public static <T> void sort (T[] a, int lo0, int hi0, Comparator<? super T> comp)
{
// bail out if we're already done
if (hi0 <= lo0) {
if (hi0 <= lo0) {
return;
}
@@ -136,7 +136,7 @@ public class QuickSort
public static <T> void rsort (T[] a, int lo0, int hi0, Comparator<? super T> comp)
{
// bail out if we're already done
if (hi0 <= lo0) {
if (hi0 <= lo0) {
return;
}
@@ -199,7 +199,7 @@ public class QuickSort
public static <T extends Comparable<? super T>> void sort (T[] a, int lo0, int hi0)
{
// bail out if we're already done
if (hi0 <= lo0) {
if (hi0 <= lo0) {
return;
}
@@ -262,7 +262,7 @@ public class QuickSort
public static <T extends Comparable<? super T>> void rsort (T[] a, int lo0, int hi0)
{
// bail out if we're already done
if (hi0 <= lo0) {
if (hi0 <= lo0) {
return;
}
@@ -381,7 +381,7 @@ public class QuickSort
public static <T> void sort (List<T> a, int lo0, int hi0, Comparator<T> comp)
{
// bail out if we're already done
if (hi0 <= lo0) {
if (hi0 <= lo0) {
return;
}
@@ -34,26 +34,26 @@ public class TerseLogFormatter extends Formatter
@Override
public String format (LogRecord record)
{
StringBuffer buf = new StringBuffer();
StringBuffer buf = new StringBuffer();
// append the message itself
buf.append(formatMessage(record));
buf.append(formatMessage(record));
buf.append(FormatterUtil.LINE_SEPARATOR);
// if an exception was also provided, append that
if (record.getThrown() != null) {
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
record.getThrown().printStackTrace(pw);
pw.close();
buf.append(sw.toString());
} catch (Exception ex) {
if (record.getThrown() != null) {
try {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
record.getThrown().printStackTrace(pw);
pw.close();
buf.append(sw.toString());
} catch (Exception ex) {
buf.append("Format failure:").append(ex);
}
}
}
}
return buf.toString();
return buf.toString();
}
/**
@@ -30,6 +30,6 @@ public class DummyLogic implements Logic
public void invoke (Application app, InvocationContext context)
throws Exception
{
// we're such a dummy that we do absolutely nothing.
// we're such a dummy that we do absolutely nothing.
}
}
@@ -41,12 +41,12 @@ public abstract class CallMethodSpecialRule extends Rule
public void end (String namespace, String name)
throws Exception
{
Object top = digester.peek();
Object top = digester.peek();
if (digester.getLogger().isDebugEnabled()) {
digester.getLogger().debug(
"CallSpecial " + StringUtil.shortClassName(this) +
".parseAndSet(" + StringUtil.shortClassName(top) + ")");
if (digester.getLogger().isDebugEnabled()) {
digester.getLogger().debug(
"CallSpecial " + StringUtil.shortClassName(this) +
".parseAndSet(" + StringUtil.shortClassName(top) + ")");
}
parseAndSet(_bodyText, top);
@@ -43,12 +43,12 @@ public class SetNextFieldRule extends Rule
public void end (String namespace, String name)
throws Exception
{
// identify the objects to be used
Object child = digester.peek(0);
Object parent = digester.peek(1);
Class<?> pclass = parent.getClass();
// identify the objects to be used
Object child = digester.peek(0);
Object parent = digester.peek(1);
Class<?> pclass = parent.getClass();
if (digester.getLogger().isDebugEnabled()) {
if (digester.getLogger().isDebugEnabled()) {
digester.getLogger().debug("Set " + pclass.getName() + "." +
_fieldName + " = " + child);
}
@@ -90,7 +90,7 @@ public class SetPropertyFieldsRule extends Rule
// iterate over the attributes, setting public fields where applicable
for (int i = 0; i < attrs.getLength(); i++) {
String lname = attrs.getLocalName(i);
String lname = attrs.getLocalName(i);
if (StringUtil.isBlank(lname)) {
lname = attrs.getQName(i);
}
@@ -108,7 +108,7 @@ public class SetPropertyFieldsRule extends Rule
}
// convert the value into the appropriate object type
String valstr = attrs.getValue(i);
String valstr = attrs.getValue(i);
FieldParser parser = null;
Object value;
@@ -38,13 +38,13 @@ public class SimpleParser extends DefaultHandler
@Override
public void characters (char ch[], int start, int length)
{
_chars.append(ch, start, length);
_chars.append(ch, start, length);
}
@Override
public void endElement (String uri, String localName, String qName)
{
finishElement(uri, localName, qName, _chars.toString().trim());
finishElement(uri, localName, qName, _chars.toString().trim());
_chars = new StringBuilder();
}
@@ -74,17 +74,17 @@ public class SimpleParser extends DefaultHandler
public void parseStream (InputStream stream)
throws IOException
{
try {
try {
// read the XML input stream and construct the scene object
_chars = new StringBuilder();
XMLUtil.parse(this, stream);
XMLUtil.parse(this, stream);
} catch (ParserConfigurationException pce) {
throw (IOException) new IOException().initCause(pce);
throw (IOException) new IOException().initCause(pce);
} catch (SAXException saxe) {
throw (IOException) new IOException().initCause(saxe);
}
} catch (SAXException saxe) {
throw (IOException) new IOException().initCause(saxe);
}
}
/**
+7 -7
View File
@@ -44,21 +44,21 @@ public class XMLUtil
* @param in the input stream containing the XML to be parsed
*/
public static void parse (DefaultHandler handler, InputStream in)
throws IOException, ParserConfigurationException, SAXException
throws IOException, ParserConfigurationException, SAXException
{
XMLReader xr = _pfactory.newSAXParser().getXMLReader();
XMLReader xr = _pfactory.newSAXParser().getXMLReader();
xr.setContentHandler(handler);
xr.setErrorHandler(handler);
xr.setContentHandler(handler);
xr.setErrorHandler(handler);
xr.parse(new InputSource(in));
xr.parse(new InputSource(in));
}
/** The factory from whence we obtain XMLReader objects */
protected static SAXParserFactory _pfactory;
static {
_pfactory = SAXParserFactory.newInstance();
_pfactory.setValidating(false);
_pfactory = SAXParserFactory.newInstance();
_pfactory.setValidating(false);
}
}