[teiid-commits] teiid SVN: r4368 - trunk/jboss-integration/src/main/java/org/teiid/jboss/rest.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Mon Aug 27 13:50:17 EDT 2012
Author: rareddy
Date: 2012-08-27 13:50:17 -0400 (Mon, 27 Aug 2012)
New Revision: 4368
Modified:
trunk/jboss-integration/src/main/java/org/teiid/jboss/rest/RestASMBasedWebArchiveBuilder.java
Log:
TEIID-2158: fixing method signature
Modified: trunk/jboss-integration/src/main/java/org/teiid/jboss/rest/RestASMBasedWebArchiveBuilder.java
===================================================================
--- trunk/jboss-integration/src/main/java/org/teiid/jboss/rest/RestASMBasedWebArchiveBuilder.java 2012-08-26 19:02:32 UTC (rev 4367)
+++ trunk/jboss-integration/src/main/java/org/teiid/jboss/rest/RestASMBasedWebArchiveBuilder.java 2012-08-27 17:50:17 UTC (rev 4368)
@@ -262,6 +262,9 @@
}
}
}
+
+// buildQueryProcedure(vdbName, vdbVersion, "xml", cw);
+// buildQueryProcedure(vdbName, vdbVersion, "json", cw);
cw.visitEnd();
@@ -323,7 +326,7 @@
}
paramSignature.append(")");
- mv = cw.visitMethod(ACC_PUBLIC, procedure.getName()+contentType, paramSignature+"Ljava/io/InputStream;", null, new String[] { "javax/ws/rs/WebApplicationException" });
+ mv = cw.visitMethod(ACC_PUBLIC, procedure.getName()+contentType.replace('/', '_'), paramSignature+"Ljava/io/InputStream;", null, new String[] { "javax/ws/rs/WebApplicationException" });
{
av0 = mv.visitAnnotation("Ljavax/ws/rs/Produces;", true);
{
@@ -400,7 +403,7 @@
mv.visitVarInsn(ALOAD, paramsSize+1);
mv.visitLdcInsn(charSet==null?"":charSet);
- mv.visitMethodInsn(INVOKEVIRTUAL, "org/teiid/jboss/rest/"+modelName, "execute", "(Ljava/lang/String;Ljava/util/LinkedHashMap;Ljava/lang/String;)Ljava/io/InputStream;");
+ mv.visitMethodInsn(INVOKEVIRTUAL, "org/teiid/jboss/rest/"+modelName, "execute", "(Ljava/lang/String;ILjava/lang/String;Ljava/util/LinkedHashMap;Ljava/lang/String;)Ljava/io/InputStream;");
mv.visitLabel(l1);
mv.visitInsn(ARETURN);
mv.visitLabel(l2);
@@ -416,4 +419,60 @@
mv.visitEnd();
}
}
+
+ private void buildQueryProcedure(String vdbName, int vdbVersion, String context, ClassWriter cw) {
+ MethodVisitor mv;
+ {
+ AnnotationVisitor av0;
+ mv = cw.visitMethod(ACC_PUBLIC, "sqlQuery"+context, "(Ljava/lang/String;)Ljava/io/InputStream;", null, null);
+ {
+ av0 = mv.visitAnnotation("Ljavax/ws/rs/Produces;", true);
+ {
+ AnnotationVisitor av1 = av0.visitArray("value");
+ av1.visit(null, "application/"+context);
+ av1.visitEnd();
+ }
+ av0.visitEnd();
+ }
+ {
+ av0 = mv.visitAnnotation("Ljavax/ws/rs/POST;", true);
+ av0.visitEnd();
+ }
+ {
+ av0 = mv.visitAnnotation("Ljavax/ws/rs/Path;", true);
+ av0.visit("value", "/query");
+ av0.visitEnd();
+ }
+ {
+ av0 = mv.visitParameterAnnotation(0, "Ljavax/ws/rs/FormParam;", true);
+ av0.visit("value", "sql");
+ av0.visitEnd();
+ }
+ mv.visitCode();
+ Label l0 = new Label();
+ Label l1 = new Label();
+ Label l2 = new Label();
+ mv.visitTryCatchBlock(l0, l1, l2, "java/sql/SQLException");
+ mv.visitLabel(l0);
+ mv.visitVarInsn(ALOAD, 0);
+ mv.visitLdcInsn(vdbName);
+ mv.visitIntInsn(BIPUSH, vdbVersion);
+ mv.visitVarInsn(ALOAD, 1);
+ mv.visitInsn(context.equals("xml")?ICONST_0:ICONST_1);
+ mv.visitMethodInsn(INVOKEVIRTUAL, "org/teiid/jboss/rest/View", "executeQuery", "(Ljava/lang/String;ILjava/lang/String;Z)Ljava/io/InputStream;");
+ mv.visitLabel(l1);
+ mv.visitInsn(ARETURN);
+ mv.visitLabel(l2);
+ mv.visitFrame(F_SAME1, 0, null, 1, new Object[] {"java/sql/SQLException"});
+ mv.visitVarInsn(ASTORE, 2);
+ mv.visitTypeInsn(NEW, "javax/ws/rs/WebApplicationException");
+ mv.visitInsn(DUP);
+ mv.visitVarInsn(ALOAD, 2);
+ mv.visitFieldInsn(GETSTATIC, "javax/ws/rs/core/Response$Status", "INTERNAL_SERVER_ERROR", "Ljavax/ws/rs/core/Response$Status;");
+ mv.visitMethodInsn(INVOKESPECIAL, "javax/ws/rs/WebApplicationException", "<init>", "(Ljava/lang/Throwable;Ljavax/ws/rs/core/Response$Status;)V");
+ mv.visitInsn(ATHROW);
+ mv.visitMaxs(5, 3);
+ mv.visitEnd();
+ }
+ }
}
More information about the teiid-commits
mailing list