aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-09-30 21:31:11 +0200
committerSven Gothel <[email protected]>2011-09-30 21:31:11 +0200
commit541e96ace7ed3f4b863a7374a5ea72895d9362be (patch)
treeb1b5df5e2b29aa0b431e8fb0e467aa7b8a762b21
parent448ad05ea1192a1c3ca8812bf8d3142b2df6c30b (diff)
GLPipelineFactory: Generics && Using enhanced GlueGen's ReflectionUtil.getConstructor(..)
-rw-r--r--src/jogl/classes/javax/media/opengl/GLPipelineFactory.java29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/jogl/classes/javax/media/opengl/GLPipelineFactory.java b/src/jogl/classes/javax/media/opengl/GLPipelineFactory.java
index 926651c1d..7a12e52c9 100644
--- a/src/jogl/classes/javax/media/opengl/GLPipelineFactory.java
+++ b/src/jogl/classes/javax/media/opengl/GLPipelineFactory.java
@@ -39,6 +39,8 @@ package javax.media.opengl;
import java.lang.reflect.*;
import java.util.StringTokenizer;
+import com.jogamp.common.util.ReflectionUtil;
+
import jogamp.opengl.*;
/**
@@ -70,10 +72,10 @@ public class GLPipelineFactory {
* @param downstream is always the 1st argument for the upstream constructor
* @param additionalArgs additional arguments for the upstream constructor
*/
- public static final GL create(String pipelineClazzBaseName, Class reqInterface, GL downstream, Object[] additionalArgs) {
- Class downstreamClazz = downstream.getClass();
- Class upstreamClazz = null;
- Class interfaceClazz = null;
+ public static final GL create(String pipelineClazzBaseName, Class<?> reqInterface, GL downstream, Object[] additionalArgs) {
+ Class<?> downstreamClazz = downstream.getClass();
+ Class<?> upstreamClazz = null;
+ Class<?> interfaceClazz = null;
if(DEBUG) {
System.out.println("GLPipelineFactory: Start "+downstreamClazz.getName()+", req. Interface: "+reqInterface+" -> "+pipelineClazzBaseName);
@@ -83,7 +85,7 @@ public class GLPipelineFactory {
do {
// For all interfaces: right -> left == child -> parent
// It is important that this matches with the gluegen cfg file's 'Implements' clause !
- Class[] clazzes = downstreamClazz.getInterfaces();
+ Class<?>[] clazzes = downstreamClazz.getInterfaces();
for(int i=clazzes.length-1; null==upstreamClazz && i>=0; i--) {
if(DEBUG) {
System.out.println("GLPipelineFactory: Try "+downstreamClazz.getName()+" Interface["+i+"]: "+clazzes[i].getName());
@@ -124,7 +126,7 @@ public class GLPipelineFactory {
System.out.println("GLPipelineFactory: Got : "+ upstreamClazz.getName()+", base interface: "+interfaceClazz.getName());
}
- Class[] cstrArgTypes = new Class[ 1 + ( ( null==additionalArgs ) ? 0 : additionalArgs.length ) ] ;
+ Class<?>[] cstrArgTypes = new Class<?>[ 1 + ( ( null==additionalArgs ) ? 0 : additionalArgs.length ) ] ;
{
int i = 0;
cstrArgTypes[i++] = interfaceClazz;
@@ -132,13 +134,8 @@ public class GLPipelineFactory {
cstrArgTypes[i++] = additionalArgs[j].getClass();
}
}
- Constructor cstr = null;
- try {
- cstr = upstreamClazz.getDeclaredConstructor( cstrArgTypes );
- } catch(NoSuchMethodException nsme) {
- throw new GLException("Couldn't find pipeline constructor: " + upstreamClazz.getName() +
- " ( "+getArgsClassNameList(downstreamClazz, additionalArgs) +" )");
- }
+ // throws exception if cstr not found!
+ Constructor<?> cstr = ReflectionUtil.getConstructor(upstreamClazz, cstrArgTypes);
Object instance = null;
try {
Object[] cstrArgs = new Object[ 1 + ( ( null==additionalArgs ) ? 0 : additionalArgs.length ) ] ;
@@ -161,7 +158,7 @@ public class GLPipelineFactory {
return (GL) instance;
}
- private static final String getArgsClassNameList(Class arg0, Object[] args) {
+ private static final String getArgsClassNameList(Class<?> arg0, Object[] args) {
StringBuffer sb = new StringBuffer();
sb.append(arg0.getName());
if(args!=null) {
@@ -173,7 +170,7 @@ public class GLPipelineFactory {
return sb.toString();
}
- private static final Class getUpstreamClazz(Class downstreamClazz, String pipelineClazzBaseName) {
+ private static final Class<?> getUpstreamClazz(Class<?> downstreamClazz, String pipelineClazzBaseName) {
String downstreamClazzName = downstreamClazz.getName();
StringTokenizer st = new StringTokenizer(downstreamClazzName, ".");
@@ -183,7 +180,7 @@ public class GLPipelineFactory {
}
String upstreamClazzName = pipelineClazzBaseName+downstreamClazzBaseName;
- Class upstreamClazz = null;
+ Class<?> upstreamClazz = null;
try {
upstreamClazz = Class.forName(upstreamClazzName, true, GLPipelineFactory.class.getClassLoader());
} catch (Throwable e) { e.printStackTrace(); }