summaryrefslogtreecommitdiff
path: root/src/main/java/io/devnulllabs/openjava/ptree/util/ClassLiteralReplacer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/devnulllabs/openjava/ptree/util/ClassLiteralReplacer.java')
-rw-r--r--src/main/java/io/devnulllabs/openjava/ptree/util/ClassLiteralReplacer.java57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/main/java/io/devnulllabs/openjava/ptree/util/ClassLiteralReplacer.java b/src/main/java/io/devnulllabs/openjava/ptree/util/ClassLiteralReplacer.java
new file mode 100644
index 0000000..372343d
--- /dev/null
+++ b/src/main/java/io/devnulllabs/openjava/ptree/util/ClassLiteralReplacer.java
@@ -0,0 +1,57 @@
+/*
+ * ClassLiteralReplacer.java
+ *
+ * Make typenames qualified.
+ * <p>
+ *
+ * @author Michiaki Tatsubori
+ * @version %VERSION% %DATE%
+ * @see java.lang.Object
+ *
+ * COPYRIGHT 1998 by Michiaki Tatsubori, ALL RIGHTS RESERVED.
+ */
+package io.devnulllabs.openjava.ptree.util;
+
+import io.devnulllabs.openjava.mop.Environment;
+import io.devnulllabs.openjava.mop.OJClass;
+import io.devnulllabs.openjava.ptree.ClassLiteral;
+import io.devnulllabs.openjava.ptree.Expression;
+import io.devnulllabs.openjava.ptree.ExpressionList;
+import io.devnulllabs.openjava.ptree.MethodCall;
+import io.devnulllabs.openjava.ptree.ParseTreeException;
+import io.devnulllabs.openjava.ptree.TypeName;
+
+/**
+ * The class <code>ClassLiteralReplacer</code>
+ * <p>
+ *
+ * @author Michiaki Tatsubori
+ * @version 1.0
+ * @since $Id: ClassLiteralReplacer.java,v 1.2 2003/02/19 02:55:00 tatsubori Exp $
+ * @see java.lang.Object
+ */
+public class ClassLiteralReplacer extends EvaluationShuttle {
+ public static final String OLDCLASS_PREFIX = "oldjavaclass.";
+
+ public ClassLiteralReplacer(Environment env) {
+ super(env);
+ }
+
+ public Expression evaluateDown(ClassLiteral ptree)
+ throws ParseTreeException {
+ TypeName type = ptree.getTypeName();
+
+ if (type.toString().startsWith(OLDCLASS_PREFIX)) {
+ String name = type.getName();
+ name = name.substring(OLDCLASS_PREFIX.length());
+ int dim = type.getDimension();
+ return new ClassLiteral(new TypeName(name, dim));
+ }
+
+ ExpressionList args = new ExpressionList(new ClassLiteral(type));
+ Expression result =
+ new MethodCall(OJClass.forClass(OJClass.class), "forClass", args);
+ return result;
+ }
+
+}