1.1 --- a/src/share/classes/com/sun/tools/javah/LLNI.java Tue Oct 12 13:15:46 2010 -0700 1.2 +++ b/src/share/classes/com/sun/tools/javah/LLNI.java Tue Oct 12 13:19:47 2010 -0700 1.3 @@ -74,16 +74,21 @@ 1.4 } 1.5 1.6 protected void write(OutputStream o, TypeElement clazz) throws Util.Exit { 1.7 - String cname = mangleClassName(clazz.getQualifiedName().toString()); 1.8 - PrintWriter pw = wrapWriter(o); 1.9 - fields = ElementFilter.fieldsIn(clazz.getEnclosedElements()); 1.10 - methods = ElementFilter.methodsIn(clazz.getEnclosedElements()); 1.11 - generateDeclsForClass(pw, clazz, cname); 1.12 - // FIXME check if errors occurred on the PrintWriter and throw exception if so 1.13 + try { 1.14 + String cname = mangleClassName(clazz.getQualifiedName().toString()); 1.15 + PrintWriter pw = wrapWriter(o); 1.16 + fields = ElementFilter.fieldsIn(clazz.getEnclosedElements()); 1.17 + methods = ElementFilter.methodsIn(clazz.getEnclosedElements()); 1.18 + generateDeclsForClass(pw, clazz, cname); 1.19 + // FIXME check if errors occurred on the PrintWriter and throw exception if so 1.20 + } catch (TypeSignature.SignatureException e) { 1.21 + util.error("llni.sigerror", e.getMessage()); 1.22 + } 1.23 } 1.24 1.25 protected void generateDeclsForClass(PrintWriter pw, 1.26 - TypeElement clazz, String cname) throws Util.Exit { 1.27 + TypeElement clazz, String cname) 1.28 + throws TypeSignature.SignatureException, Util.Exit { 1.29 doneHandleTypes = new HashSet<String>(); 1.30 /* The following handle types are predefined in "typedefs.h". Suppress 1.31 inclusion in the output by generating them "into the blue" here. */ 1.32 @@ -127,7 +132,8 @@ 1.33 .replace(innerDelim, '_'); 1.34 } 1.35 1.36 - protected void forwardDecls(PrintWriter pw, TypeElement clazz) { 1.37 + protected void forwardDecls(PrintWriter pw, TypeElement clazz) 1.38 + throws TypeSignature.SignatureException { 1.39 TypeElement object = elems.getTypeElement("java.lang.Object"); 1.40 if (clazz.equals(object)) 1.41 return; 1.42 @@ -403,7 +409,7 @@ 1.43 1.44 protected void methodSectionForClass(PrintWriter pw, 1.45 TypeElement clazz, String cname) 1.46 - throws Util.Exit { 1.47 + throws TypeSignature.SignatureException, Util.Exit { 1.48 String methods = methodDecls(clazz, cname); 1.49 1.50 if (methods.length() != 0) { 1.51 @@ -418,7 +424,8 @@ 1.52 } 1.53 } 1.54 1.55 - protected String methodDecls(TypeElement clazz, String cname) throws Util.Exit { 1.56 + protected String methodDecls(TypeElement clazz, String cname) 1.57 + throws TypeSignature.SignatureException, Util.Exit { 1.58 1.59 String res = ""; 1.60 for (ExecutableElement method: methods) { 1.61 @@ -430,7 +437,7 @@ 1.62 1.63 protected String methodDecl(ExecutableElement method, 1.64 TypeElement clazz, String cname) 1.65 - throws Util.Exit { 1.66 + throws TypeSignature.SignatureException, Util.Exit { 1.67 String res = null; 1.68 1.69 TypeMirror retType = types.erasure(method.getReturnType()); 1.70 @@ -474,7 +481,8 @@ 1.71 } 1.72 1.73 protected final String jniMethodName(ExecutableElement method, String cname, 1.74 - boolean longName) { 1.75 + boolean longName) 1.76 + throws TypeSignature.SignatureException { 1.77 String res = "Java_" + cname + "_" + method.getSimpleName(); 1.78 1.79 if (longName) {