src/share/classes/com/sun/tools/javah/LLNI.java

changeset 712
a1d31ab7b525
parent 581
f2fdd52e4e87
child 798
4868a36f6fd8
     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) {

mercurial