Changeset 10265


Ignore:
Timestamp:
10/28/05 16:42:19 (16 years ago)
Author:
piso
Message:

writeToString(): handle case where wrapped object is null.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/JavaObject.java

    r10218 r10265  
    33 *
    44 * Copyright (C) 2002-2005 Peter Graves
    5  * $Id: JavaObject.java,v 1.20 2005-10-24 21:32:09 piso Exp $
     5 * $Id: JavaObject.java,v 1.21 2005-10-28 16:42:19 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    132132            sb.append(".");
    133133            sb.append(System.getProperty("line.separator"));
    134             sb.append("The wrapped Java object is an ");
    135             final Class c = obj.getClass();
    136             String className = c.getName();
    137             if (c.isArray()) {
    138                 sb.append("array of ");
    139                 if (className.startsWith("[L") && className.endsWith(";")) {
    140                     className = className.substring(1, className.length() - 1);
     134            sb.append("The wrapped Java object is ");
     135            if (obj == null) {
     136                sb.append("null.");
     137            } else {
     138                sb.append(" an ");
     139                final Class c = obj.getClass();
     140                String className = c.getName();
     141                if (c.isArray()) {
     142                    sb.append("array of ");
     143                    if (className.startsWith("[L") && className.endsWith(";")) {
     144                        className = className.substring(1, className.length() - 1);
     145                        sb.append(className);
     146                        sb.append(" objects");
     147                    } else if (className.startsWith("[") && className.length() > 1) {
     148                        char descriptor = className.charAt(1);
     149                        final String type;
     150                        switch (descriptor) {
     151                            case 'B': type = "bytes"; break;
     152                            case 'C': type = "chars"; break;
     153                            case 'D': type = "doubles"; break;
     154                            case 'F': type = "floats"; break;
     155                            case 'I': type = "ints"; break;
     156                            case 'J': type = "longs"; break;
     157                            case 'S': type = "shorts"; break;
     158                            case 'Z': type = "booleans"; break;
     159                            default:
     160                                type = "unknown type";
     161                        }
     162                        sb.append(type);
     163                    }
     164                    sb.append(" with ");
     165                    final int length = java.lang.reflect.Array.getLength(obj);
     166                    sb.append(length);
     167                    sb.append(" element");
     168                    if (length != 1)
     169                        sb.append('s');
     170                    sb.append('.');
     171                } else {
     172                    sb.append("instance of ");
    141173                    sb.append(className);
    142                     sb.append(" objects");
    143                 } else if (className.startsWith("[") && className.length() > 1) {
    144                     char descriptor = className.charAt(1);
    145                     final String type;
    146                     switch (descriptor) {
    147                         case 'B': type = "bytes"; break;
    148                         case 'C': type = "chars"; break;
    149                         case 'D': type = "doubles"; break;
    150                         case 'F': type = "floats"; break;
    151                         case 'I': type = "ints"; break;
    152                         case 'J': type = "longs"; break;
    153                         case 'S': type = "shorts"; break;
    154                         case 'Z': type = "booleans"; break;
    155                         default:
    156                             type = "unknown type";
    157                     }
    158                     sb.append(type);
     174                    sb.append(':');
     175                    sb.append(System.getProperty("line.separator"));
     176                    sb.append("  \"");
     177                    sb.append(obj.toString());
     178                    sb.append('"');
    159179                }
    160                     sb.append(" with ");
    161                 final int length = java.lang.reflect.Array.getLength(obj);
    162                 sb.append(length);
    163                 sb.append(" element");
    164                 if (length != 1)
    165                     sb.append('s');
    166                 sb.append('.');
    167             } else {
    168                 sb.append("instance of ");
    169                 sb.append(className);
    170                 sb.append(':');
    171                 sb.append(System.getProperty("line.separator"));
    172                 sb.append("  \"");
    173                 sb.append(obj.toString());
    174                 sb.append('"');
    175180            }
    176181            stream._writeString(sb.toString());
Note: See TracChangeset for help on using the changeset viewer.