List properties = getProperties();
int baseSize = 0;
for (Iterator iter = properties.iterator(); iter.hasNext();) {
JProperty property = (JProperty)iter.next();
JAnnotation annotation = property.getAnnotation("openwire:property");
JAnnotationValue size = annotation.getValue("size");
JClass propertyType = property.getType();
String type = propertyType.getSimpleName();
String getter = "info." + property.getSimpleName();
if (type.equals("boolean")) {
out.println(" bs.WriteBoolean(" + getter + ");");
} else if (type.equals("byte")) {
baseSize += 1;
} else if (type.equals("char")) {
baseSize += 2;
} else if (type.equals("short")) {
baseSize += 2;
} else if (type.equals("int")) {
baseSize += 4;
} else if (type.equals("long")) {
out.println(" rc += TightMarshalLong1(wireFormat, " + getter + ", bs);");
} else if (type.equals("String")) {
out.print("");
out.println(" rc += TightMarshalString1(" + getter + ", bs);");
} else if (type.equals("byte[]") || type.equals("ByteSequence")) {
if (size == null) {
out.println(" bs.WriteBoolean(" + getter + "!=null);");
out.println(" rc += " + getter + "==null ? 0 : " + getter + ".Length+4;");
} else {
baseSize += size.asInt();
}
} else if (propertyType.isArrayType()) {
if (size != null) {
out.println(" rc += TightMarshalObjectArrayConstSize1(wireFormat, " + getter + ", bs, " + size.asInt() + ");");
} else {
out.println(" rc += TightMarshalObjectArray1(wireFormat, " + getter + ", bs);");
}
} else if (isThrowable(propertyType)) {
out.println(" rc += TightMarshalBrokerError1(wireFormat, " + getter + ", bs);");