Browse Source

magic numbers

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@578730 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Reilly 18 years ago
parent
commit
aacfe14361
7 changed files with 49 additions and 28 deletions
  1. +22
    -13
      src/main/org/apache/tools/ant/util/Base64Converter.java
  2. +13
    -7
      src/main/org/apache/tools/ant/util/DateUtils.java
  3. +2
    -1
      src/main/org/apache/tools/ant/util/LeadPipeInputStream.java
  4. +4
    -3
      src/main/org/apache/tools/ant/util/LineTokenizer.java
  5. +2
    -1
      src/main/org/apache/tools/ant/util/ReaderInputStream.java
  6. +4
    -3
      src/main/org/apache/tools/ant/util/StringTokenizer.java
  7. +2
    -0
      src/main/org/apache/tools/ant/util/UUEncoder.java

+ 22
- 13
src/main/org/apache/tools/ant/util/Base64Converter.java View File

@@ -25,11 +25,16 @@ package org.apache.tools.ant.util;
**/ **/
public class Base64Converter { public class Base64Converter {


private static final int BYTE = 8;
private static final int WORD = 16;
private static final int BYTE_MASK = 0xFF; private static final int BYTE_MASK = 0xFF;
private static final int POS_0_MASK = 0x0000003F; private static final int POS_0_MASK = 0x0000003F;
private static final int POS_1_MASK = 0x00000FC0; private static final int POS_1_MASK = 0x00000FC0;
private static final int POS_1_SHIFT = 6;
private static final int POS_2_MASK = 0x0003F000; private static final int POS_2_MASK = 0x0003F000;
private static final int POS_2_SHIFT = 12;
private static final int POS_3_MASK = 0x00FC0000; private static final int POS_3_MASK = 0x00FC0000;
private static final int POS_3_SHIFT = 18;




private static final char[] ALPHABET = { private static final char[] ALPHABET = {
@@ -66,44 +71,48 @@ public class Base64Converter {
int bits24; int bits24;
int bits6; int bits6;


// CheckStyle:MagicNumber OFF
char[] out = new char[((octetString.length - 1) / 3 + 1) * 4]; char[] out = new char[((octetString.length - 1) / 3 + 1) * 4];
// CheckStyle:MagicNumber ON
int outIndex = 0; int outIndex = 0;
int i = 0; int i = 0;


// CheckStyle:MagicNumber OFF
while ((i + 3) <= octetString.length) { while ((i + 3) <= octetString.length) {
// CheckStyle:MagicNumber ON
// store the octets // store the octets
bits24 = (octetString[i++] & BYTE_MASK) << 16;
bits24 |= (octetString[i++] & BYTE_MASK) << 8;
bits24 = (octetString[i++] & BYTE_MASK) << WORD;
bits24 |= (octetString[i++] & BYTE_MASK) << BYTE;
bits24 |= octetString[i++]; bits24 |= octetString[i++];


bits6 = (bits24 & POS_3_MASK) >> 18;
bits6 = (bits24 & POS_3_MASK) >> POS_3_SHIFT;
out[outIndex++] = ALPHABET[bits6]; out[outIndex++] = ALPHABET[bits6];
bits6 = (bits24 & POS_2_MASK) >> 12;
bits6 = (bits24 & POS_2_MASK) >> POS_2_SHIFT;
out[outIndex++] = ALPHABET[bits6]; out[outIndex++] = ALPHABET[bits6];
bits6 = (bits24 & POS_1_MASK) >> 6;
bits6 = (bits24 & POS_1_MASK) >> POS_1_SHIFT;
out[outIndex++] = ALPHABET[bits6]; out[outIndex++] = ALPHABET[bits6];
bits6 = (bits24 & POS_0_MASK); bits6 = (bits24 & POS_0_MASK);
out[outIndex++] = ALPHABET[bits6]; out[outIndex++] = ALPHABET[bits6];
} }
if (octetString.length - i == 2) { if (octetString.length - i == 2) {
// store the octets // store the octets
bits24 = (octetString[i] & BYTE_MASK) << 16;
bits24 |= (octetString[i + 1] & BYTE_MASK) << 8;
bits6 = (bits24 & POS_3_MASK) >> 18;
bits24 = (octetString[i] & BYTE_MASK) << WORD;
bits24 |= (octetString[i + 1] & BYTE_MASK) << BYTE;
bits6 = (bits24 & POS_3_MASK) >> POS_3_SHIFT;
out[outIndex++] = ALPHABET[bits6]; out[outIndex++] = ALPHABET[bits6];
bits6 = (bits24 & POS_2_MASK) >> 12;
bits6 = (bits24 & POS_2_MASK) >> POS_2_SHIFT;
out[outIndex++] = ALPHABET[bits6]; out[outIndex++] = ALPHABET[bits6];
bits6 = (bits24 & POS_1_MASK) >> 6;
bits6 = (bits24 & POS_1_MASK) >> POS_1_SHIFT;
out[outIndex++] = ALPHABET[bits6]; out[outIndex++] = ALPHABET[bits6];


// padding // padding
out[outIndex++] = '='; out[outIndex++] = '=';
} else if (octetString.length - i == 1) { } else if (octetString.length - i == 1) {
// store the octets // store the octets
bits24 = (octetString[i] & BYTE_MASK) << 16;
bits6 = (bits24 & POS_3_MASK) >> 18;
bits24 = (octetString[i] & BYTE_MASK) << WORD;
bits6 = (bits24 & POS_3_MASK) >> POS_3_SHIFT;
out[outIndex++] = ALPHABET[bits6]; out[outIndex++] = ALPHABET[bits6];
bits6 = (bits24 & POS_2_MASK) >> 12;
bits6 = (bits24 & POS_2_MASK) >> POS_2_SHIFT;
out[outIndex++] = ALPHABET[bits6]; out[outIndex++] = ALPHABET[bits6];


// padding // padding


+ 13
- 7
src/main/org/apache/tools/ant/util/DateUtils.java View File

@@ -37,6 +37,10 @@ import java.util.TimeZone;
*/ */
public final class DateUtils { public final class DateUtils {


private static final int ONE_SECOND = 1000;
private static final int ONE_MINUTE = 60;
private static final int ONE_HOUR = 60;
private static final int TEN = 10;
/** /**
* ISO8601-like pattern for date-time. It does not support timezone. * ISO8601-like pattern for date-time. It does not support timezone.
* <tt>yyyy-MM-ddTHH:mm:ss</tt> * <tt>yyyy-MM-ddTHH:mm:ss</tt>
@@ -125,9 +129,9 @@ public final class DateUtils {
* @return the formatted text in minutes/seconds. * @return the formatted text in minutes/seconds.
*/ */
public static String formatElapsedTime(long millis) { public static String formatElapsedTime(long millis) {
long seconds = millis / 1000;
long minutes = seconds / 60;
Object[] args = {new Long(minutes), new Long(seconds % 60)};
long seconds = millis / ONE_SECOND;
long minutes = seconds / ONE_MINUTE;
Object[] args = {new Long(minutes), new Long(seconds % ONE_MINUTE)};
return MINUTE_SECONDS.format(args); return MINUTE_SECONDS.format(args);
} }


@@ -179,6 +183,7 @@ public final class DateUtils {
* @since 1.2, Ant 1.5 * @since 1.2, Ant 1.5
*/ */
public static int getPhaseOfMoon(Calendar cal) { public static int getPhaseOfMoon(Calendar cal) {
// CheckStyle:MagicNumber OFF
int dayOfTheYear = cal.get(Calendar.DAY_OF_YEAR); int dayOfTheYear = cal.get(Calendar.DAY_OF_YEAR);
int yearInMetonicCycle = ((cal.get(Calendar.YEAR) - 1900) % 19) + 1; int yearInMetonicCycle = ((cal.get(Calendar.YEAR) - 1900) % 19) + 1;
int epact = (11 * yearInMetonicCycle + 18) % 30; int epact = (11 * yearInMetonicCycle + 18) % 30;
@@ -186,6 +191,7 @@ public final class DateUtils {
epact++; epact++;
} }
return (((((dayOfTheYear + epact) * 6) + 11) % 177) / 22) & 7; return (((((dayOfTheYear + epact) * 6) + 11) % 177) / 22) & 7;
// CheckStyle:MagicNumber ON
} }


/** /**
@@ -205,13 +211,13 @@ public final class DateUtils {
cal.get(Calendar.MILLISECOND)); cal.get(Calendar.MILLISECOND));
StringBuffer tzMarker = new StringBuffer(offset < 0 ? "-" : "+"); StringBuffer tzMarker = new StringBuffer(offset < 0 ? "-" : "+");
offset = Math.abs(offset); offset = Math.abs(offset);
int hours = offset / (60 * 60 * 1000);
int minutes = offset / (60 * 1000) - 60 * hours;
if (hours < 10) {
int hours = offset / (ONE_HOUR * ONE_MINUTE * ONE_SECOND);
int minutes = offset / (ONE_MINUTE * ONE_SECOND) - ONE_HOUR * hours;
if (hours < TEN) {
tzMarker.append("0"); tzMarker.append("0");
} }
tzMarker.append(hours); tzMarker.append(hours);
if (minutes < 10) {
if (minutes < TEN) {
tzMarker.append("0"); tzMarker.append("0");
} }
tzMarker.append(minutes); tzMarker.append(minutes);


+ 2
- 1
src/main/org/apache/tools/ant/util/LeadPipeInputStream.java View File

@@ -32,6 +32,7 @@ import org.apache.tools.ant.Project;
* @since Ant 1.6.2 * @since Ant 1.6.2
*/ */
public class LeadPipeInputStream extends PipedInputStream { public class LeadPipeInputStream extends PipedInputStream {
private static final int BYTE_MASK = 0xFF;
private ProjectComponent managingPc; private ProjectComponent managingPc;


/** /**
@@ -88,7 +89,7 @@ public class LeadPipeInputStream extends PipedInputStream {
if ("write end dead".equalsIgnoreCase(eyeOhEx.getMessage())) { if ("write end dead".equalsIgnoreCase(eyeOhEx.getMessage())) {
if (super.in > 0 && super.out < super.buffer.length if (super.in > 0 && super.out < super.buffer.length
&& super.out > super.in) { && super.out > super.in) {
result = super.buffer[super.out++] & 0xFF;
result = super.buffer[super.out++] & BYTE_MASK;
} }
} else { } else {
log("error at LeadPipeInputStream.read(): " log("error at LeadPipeInputStream.read(): "


+ 4
- 3
src/main/org/apache/tools/ant/util/LineTokenizer.java View File

@@ -29,8 +29,9 @@ import org.apache.tools.ant.ProjectComponent;
*/ */
public class LineTokenizer extends ProjectComponent public class LineTokenizer extends ProjectComponent
implements Tokenizer { implements Tokenizer {
private static final int NOT_A_CHAR = -2;
private String lineEnd = ""; private String lineEnd = "";
private int pushed = -2;
private int pushed = NOT_A_CHAR;
private boolean includeDelims = false; private boolean includeDelims = false;


/** /**
@@ -54,9 +55,9 @@ public class LineTokenizer extends ProjectComponent
*/ */
public String getToken(Reader in) throws IOException { public String getToken(Reader in) throws IOException {
int ch = -1; int ch = -1;
if (pushed != -2) {
if (pushed != NOT_A_CHAR) {
ch = pushed; ch = pushed;
pushed = -2;
pushed = NOT_A_CHAR;
} else { } else {
ch = in.read(); ch = in.read();
} }


+ 2
- 1
src/main/org/apache/tools/ant/util/ReaderInputStream.java View File

@@ -27,6 +27,7 @@ import java.io.Reader;
* *
*/ */
public class ReaderInputStream extends InputStream { public class ReaderInputStream extends InputStream {
private static final int BYTE_MASK = 0xFF;


/** Source Reader */ /** Source Reader */
private Reader in; private Reader in;
@@ -90,7 +91,7 @@ public class ReaderInputStream extends InputStream {
result = buf[0]; result = buf[0];
} }
} }
return result & 0xFF;
return result & BYTE_MASK;
} }


/** /**


+ 4
- 3
src/main/org/apache/tools/ant/util/StringTokenizer.java View File

@@ -31,8 +31,9 @@ import org.apache.tools.ant.ProjectComponent;
* @since Ant 1.7 * @since Ant 1.7
*/ */
public class StringTokenizer extends ProjectComponent implements Tokenizer { public class StringTokenizer extends ProjectComponent implements Tokenizer {
private static final int NOT_A_CHAR = -2;
private String intraString = ""; private String intraString = "";
private int pushed = -2;
private int pushed = NOT_A_CHAR;
private char[] delims = null; private char[] delims = null;
private boolean delimsAreTokens = false; private boolean delimsAreTokens = false;
private boolean suppressDelims = false; private boolean suppressDelims = false;
@@ -83,9 +84,9 @@ public class StringTokenizer extends ProjectComponent implements Tokenizer {
*/ */
public String getToken(Reader in) throws IOException { public String getToken(Reader in) throws IOException {
int ch = -1; int ch = -1;
if (pushed != -2) {
if (pushed != NOT_A_CHAR) {
ch = pushed; ch = pushed;
pushed = -2;
pushed = NOT_A_CHAR;
} else { } else {
ch = in.read(); ch = in.read();
} }


+ 2
- 0
src/main/org/apache/tools/ant/util/UUEncoder.java View File

@@ -126,10 +126,12 @@ public class UUEncoder {
} }
} }


// CheckStyle:MagicNumber OFF
byte d1 = (byte) (((a >>> 2) & 0x3F) + ' '); byte d1 = (byte) (((a >>> 2) & 0x3F) + ' ');
byte d2 = (byte) ((((a << 4) & 0x30) | ((b >>> 4) & 0x0F)) + ' '); byte d2 = (byte) ((((a << 4) & 0x30) | ((b >>> 4) & 0x0F)) + ' ');
byte d3 = (byte) ((((b << 2) & 0x3C) | ((c >>> 6) & 0x3)) + ' '); byte d3 = (byte) ((((b << 2) & 0x3C) | ((c >>> 6) & 0x3)) + ' ');
byte d4 = (byte) ((c & 0x3F) + ' '); byte d4 = (byte) ((c & 0x3F) + ' ');
// CheckStyle:MagicNumber ON


out.write(d1); out.write(d1);
out.write(d2); out.write(d2);


Loading…
Cancel
Save