aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/javassist/ByteArrayClassPath.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/javassist/ByteArrayClassPath.java')
-rw-r--r--src/main/javassist/ByteArrayClassPath.java84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/main/javassist/ByteArrayClassPath.java b/src/main/javassist/ByteArrayClassPath.java
new file mode 100644
index 00000000..14b37d8f
--- /dev/null
+++ b/src/main/javassist/ByteArrayClassPath.java
@@ -0,0 +1,84 @@
+/*
+ * This file is part of the Javassist toolkit.
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * either http://www.mozilla.org/MPL/.
+ *
+ * Software distributed under the License is distributed on an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+ * the License for the specific language governing rights and limitations
+ * under the License.
+ *
+ * The Original Code is Javassist.
+ *
+ * The Initial Developer of the Original Code is Shigeru Chiba. Portions
+ * created by Shigeru Chiba are Copyright (C) 1999-2003 Shigeru Chiba.
+ * All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * The development of this software is supported in part by the PRESTO
+ * program (Sakigake Kenkyu 21) of Japan Science and Technology Corporation.
+ */
+
+package javassist;
+
+import java.io.*;
+
+/**
+ * A <code>ByteArrayClassPath</code> contains bytes that is served as
+ * a class file to a <code>ClassPool</code>. It is useful to convert
+ * a byte array to a <code>CtClass</code> object.
+ *
+ * <p>For example, if you want to convert a byte array <code>b</code>
+ * into a <code>CtClass</code> object representing the class with a name
+ * <code>classname</code>, then do as following:
+ *
+ * <ul><pre>
+ * ClassPool cp = ClassPool.getDefault();
+ * cp.insertClassPath(new ByteArrayClassPath(classname, b));
+ * CtClass cc = cp.get(classname);
+ * </pre></ul>
+ *
+ * <p>The <code>ClassPool</code> object <code>cp</code> uses the created
+ * <code>ByteArrayClassPath</code> object as the source of the class file.
+ *
+ * <p>A <code>ByteArrayClassPath</code> must be instantiated for every
+ * class. It contains only a single class file.
+ *
+ * @see javassist.ClassPath
+ * @see ClassPool#insertClassPath(ClassPath)
+ * @see ClassPool#appendClassPath(ClassPath)
+ */
+public class ByteArrayClassPath implements ClassPath {
+ protected String classname;
+ protected byte[] classfile;
+
+ /*
+ * Creates a <code>ByteArrayClassPath</code> containing the given
+ * bytes.
+ *
+ * @param name a fully qualified class name
+ * @param classfile the contents of a class file.
+ */
+ public ByteArrayClassPath(String name, byte[] classfile) {
+ this.classname = name;
+ this.classfile = classfile;
+ }
+
+ public String toString() {
+ return "byte[]:" + classname;
+ }
+
+ /**
+ * Opens a class file.
+ */
+ public InputStream openClassfile(String classname) {
+ if(this.classname.equals(classname))
+ return new ByteArrayInputStream(classfile);
+ else
+ return null;
+ }
+}