Remember that in
Java, every variable of non-primitive type is a pointer. Declaring the member
StringBuffer description;
creates a pointer to a StringBuffer that is initialized to null; when you try to use it, you get a NullPointerException. At some point, you have to actually create a StringBuffer object; i.e, replace that line with
StringBuffer description = new StringBuffer();
and you'll be all set.