xapi.bytecode.CtArray Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xapi-gwt Show documentation
Show all versions of xapi-gwt Show documentation
This module exists solely to package all other gwt modules into a single
uber jar. This makes deploying to non-mavenized targets much easier.
Of course, you would be wise to inherit your dependencies individually;
the uber jar is intended for projects like collide,
which have complex configuration, and adding many jars would be a pain.
The newest version!
/*
* Javassist, a Java-bytecode translator toolkit.
* Copyright (C) 1999- Shigeru Chiba. All Rights Reserved.
*
* 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. Alternatively, the contents of this file may be used under
* the terms of the GNU Lesser General Public License Version 2.1 or later,
* or the Apache License Version 2.0.
*
* 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.
*
* MODIFIED BY James Nelson of We The Internet, 2013.
* Repackaged to avoid conflicts with different versions of Javassist,
* and modified Javassist APIs to make them more accessible to outside code.
*/
package xapi.bytecode;
import xapi.source.X_Modifier;
final class CtArray extends CtClass {
protected ClassPool pool;
// the name of array type ends with "[]".
CtArray(String name, ClassPool cp) {
super(name);
pool = cp;
}
@Override
public ClassPool getClassPool() {
return pool;
}
@Override
public boolean isArray() {
return true;
}
private CtClass[] interfaces = null;
@Override
public int getModifiers() {
int mod = X_Modifier.FINAL;
try {
mod |= getComponentType().getModifiers()
& (X_Modifier.PROTECTED | X_Modifier.PUBLIC | X_Modifier.PRIVATE);
}
catch (NotFoundException e) {}
return mod;
}
@Override
public CtClass[] getInterfaces() throws NotFoundException {
if (interfaces == null) {
interfaces = new CtClass[] {
pool.get("java.lang.Cloneable"), pool.get("java.io.Serializable") };
}
return interfaces;
}
@Override
public boolean subtypeOf(CtClass clazz) throws NotFoundException {
if (super.subtypeOf(clazz)) {
return true;
}
String cname = clazz.getName();
if (cname.equals(javaLangObject)
|| cname.equals("java.lang.Cloneable")
|| cname.equals("java.io.Serializable")) {
return true;
}
return clazz.isArray()
&& getComponentType().subtypeOf(clazz.getComponentType());
}
@Override
public CtClass getComponentType() throws NotFoundException {
String name = getName();
return pool.get(name.substring(0, name.length() - 2));
}
@Override
public CtClass getSuperclass() throws NotFoundException {
return pool.get(javaLangObject);
}
// @Override
// public CtMethod[] getMethods() {
// try {
// return getSuperclass().getMethods();
// }
// catch (NotFoundException e) {
// return super.getMethods();
// }
// }
//
// @Override
// public CtMethod getMethod(String name, String desc)
// throws NotFoundException
// {
// return getSuperclass().getMethod(name, desc);
// }
//
// @Override
// public CtConstructor[] getConstructors() {
// try {
// return getSuperclass().getConstructors();
// }
// catch (NotFoundException e) {
// return super.getConstructors();
// }
// }
}