use of lucee.runtime.type.dt.DateTimeImpl in project Lucee by lucee.
the class StorageScopeImpl method touchBeforeRequest.
@Override
public void touchBeforeRequest(PageContext pc) {
hasChanges = false;
setTimeSpan(pc);
// lastvisit=System.currentTimeMillis();
if (sct == null)
sct = new StructImpl();
sct.setEL(KeyConstants._cfid, pc.getCFID());
sct.setEL(KeyConstants._cftoken, pc.getCFToken());
sct.setEL(URLTOKEN, pc.getURLToken());
sct.setEL(LASTVISIT, _lastvisit);
_lastvisit = new DateTimeImpl(pc.getConfig());
lastvisit = System.currentTimeMillis();
if (type == SCOPE_CLIENT) {
sct.setEL(HITCOUNT, new Double(hitcount++));
} else {
sct.setEL(SESSION_ID, pc.getApplicationContext().getName() + "_" + pc.getCFID() + "_" + pc.getCFToken());
}
sct.setEL(TIMECREATED, timecreated);
}
use of lucee.runtime.type.dt.DateTimeImpl in project Lucee by lucee.
the class Admin method fillGetRunningThreads.
private static void fillGetRunningThreads(lucee.runtime.type.Query qry, ConfigWeb configWeb) throws PageException {
CFMLFactoryImpl factory = ((CFMLFactoryImpl) configWeb.getFactory());
Map<Integer, PageContextImpl> pcs = factory.getActivePageContexts();
Iterator<PageContextImpl> it = pcs.values().iterator();
PageContextImpl pc;
Collection.Key key;
int row = 0;
while (it.hasNext()) {
pc = it.next();
qry.addRow();
row++;
StackTraceElement[] st = pc.getThread().getStackTrace();
configWeb.getConfigDir();
configWeb.getIdentification().getId();
configWeb.getConfigDir();
qry.setAt("Id", row, new Double(pc.getId()));
qry.setAt("Start", row, new DateTimeImpl(pc.getStartTime(), false));
qry.setAt("Timeout", row, new Double(pc.getRequestTimeout() / 1000));
qry.setAt("ThreadType", row, pc.getParentPageContext() == null ? "main" : "child");
qry.setAt("StackTrace", row, toString(st));
qry.setAt("TagContext", row, PageExceptionImpl.getTagContext(pc.getConfig(), st));
qry.setAt("label", row, factory.getLabel());
qry.setAt("RootPath", row, ReqRspUtil.getRootPath(((ConfigWebImpl) configWeb).getServletContext()));
qry.setAt("ConfigFile", row, configWeb.getConfigFile().getAbsolutePath());
if (factory.getURL() != null)
qry.setAt("url", row, factory.getURL().toExternalForm());
}
}
use of lucee.runtime.type.dt.DateTimeImpl in project Lucee by lucee.
the class CFMLSpoolerTaskListener method listen.
@Override
public void listen(Config config, Exception e) {
if (!(config instanceof ConfigWeb))
return;
ConfigWeb cw = (ConfigWeb) config;
PageContext pc = ThreadLocalPageContext.get();
boolean pcCreated = false;
if (pc == null) {
pcCreated = true;
Pair[] parr = new Pair[0];
DevNullOutputStream os = DevNullOutputStream.DEV_NULL_OUTPUT_STREAM;
pc = ThreadUtil.createPageContext(cw, os, "localhost", "/", "", new Cookie[0], parr, null, parr, new StructImpl(), true, -1);
pc.setRequestTimeout(config.getRequestTimeout().getMillis());
}
try {
Struct args = new StructImpl();
long l = task.lastExecution();
if (l > 0)
args.set("lastExecution", new DateTimeImpl(pc, l, true));
l = task.nextExecution();
if (l > 0)
args.set("nextExecution", new DateTimeImpl(pc, l, true));
args.set("created", new DateTimeImpl(pc, task.getCreation(), true));
args.set(KeyConstants._id, task.getId());
args.set(KeyConstants._type, task.getType());
args.set(KeyConstants._detail, task.detail());
args.set(KeyConstants._tries, task.tries());
args.set("remainingtries", e == null ? 0 : task.getPlans().length - task.tries());
args.set("closed", task.closed());
args.set("passed", e == null);
if (e != null)
args.set("exception", new CatchBlockImpl(Caster.toPageException(e)));
Struct curr = new StructImpl();
args.set("caller", curr);
curr.set("template", currTemplate.template);
curr.set("line", new Double(currTemplate.line));
Struct adv = new StructImpl();
args.set("advanced", adv);
adv.set("exceptions", task.getExceptions());
adv.set("executedPlans", task.getPlans());
_listen(pc, args);
} catch (PageException pe) {
SystemOut.printDate(pe);
} finally {
if (pcCreated)
ThreadLocalPageContext.release();
}
}
use of lucee.runtime.type.dt.DateTimeImpl in project Lucee by lucee.
the class CFMLFactoryImpl method getInfo.
public Array getInfo() {
Array info = new ArrayImpl();
// synchronized (runningPcs) {
// int len=runningPcs.size();
Iterator<PageContextImpl> it = runningPcs.values().iterator();
PageContextImpl pc;
Struct data, sctThread, scopes;
Thread thread;
Entry<Integer, PageContextImpl> e;
ConfigWebImpl cw;
while (it.hasNext()) {
pc = it.next();
cw = (ConfigWebImpl) pc.getConfig();
data = new StructImpl();
sctThread = new StructImpl();
scopes = new StructImpl();
data.setEL("thread", sctThread);
data.setEL("scopes", scopes);
if (pc.isGatewayContext())
continue;
thread = pc.getThread();
if (thread == Thread.currentThread())
continue;
thread = pc.getThread();
if (thread == Thread.currentThread())
continue;
data.setEL("startTime", new DateTimeImpl(pc.getStartTime(), false));
data.setEL("endTime", new DateTimeImpl(pc.getStartTime() + pc.getRequestTimeout(), false));
data.setEL(KeyConstants._timeout, new Double(pc.getRequestTimeout()));
// thread
sctThread.setEL(KeyConstants._name, thread.getName());
sctThread.setEL("priority", Caster.toDouble(thread.getPriority()));
data.setEL("TagContext", PageExceptionImpl.getTagContext(pc.getConfig(), thread.getStackTrace()));
data.setEL("urlToken", pc.getURLToken());
try {
if (pc.getConfig().debug())
data.setEL("debugger", pc.getDebugger().getDebuggingData(pc));
} catch (PageException e2) {
}
try {
data.setEL(KeyConstants._id, Hash.call(pc, pc.getId() + ":" + pc.getStartTime()));
} catch (PageException e1) {
}
data.setEL(KeyConstants._hash, cw.getHash());
data.setEL("contextId", cw.getIdentification().getId());
data.setEL(KeyConstants._label, cw.getLabel());
data.setEL("requestId", pc.getId());
// Scopes
scopes.setEL(KeyConstants._name, pc.getApplicationContext().getName());
try {
scopes.setEL(KeyConstants._application, pc.applicationScope());
} catch (PageException pe) {
}
try {
scopes.setEL(KeyConstants._session, pc.sessionScope());
} catch (PageException pe) {
}
try {
scopes.setEL(KeyConstants._client, pc.clientScope());
} catch (PageException pe) {
}
scopes.setEL(KeyConstants._cookie, pc.cookieScope());
scopes.setEL(KeyConstants._variables, pc.variablesScope());
if (!(pc.localScope() instanceof LocalNotSupportedScope)) {
scopes.setEL(KeyConstants._local, pc.localScope());
scopes.setEL(KeyConstants._arguments, pc.argumentsScope());
}
scopes.setEL(KeyConstants._cgi, pc.cgiScope());
scopes.setEL(KeyConstants._form, pc.formScope());
scopes.setEL(KeyConstants._url, pc.urlScope());
scopes.setEL(KeyConstants._request, pc.requestScope());
info.appendEL(data);
}
return info;
// }
}
use of lucee.runtime.type.dt.DateTimeImpl in project Lucee by lucee.
the class DumpUtil method toDumpData.
public static DumpData toDumpData(Object o, PageContext pageContext, int maxlevel, DumpProperties props) {
if (maxlevel < 0)
return MAX_LEVEL_REACHED;
// null
if (o == null) {
DumpTable table = new DumpTable("null", "#ff6600", "#ffcc99", "#000000");
table.appendRow(new DumpRow(0, new SimpleDumpData("Empty:null")));
return table;
}
if (o instanceof DumpData) {
return ((DumpData) o);
}
// Date
if (o instanceof Date) {
return new DateTimeImpl((Date) o).toDumpData(pageContext, maxlevel, props);
}
// Calendar
if (o instanceof Calendar) {
Calendar c = (Calendar) o;
SimpleDateFormat df = new SimpleDateFormat("EE, dd MMM yyyy HH:mm:ss zz", Locale.ENGLISH);
df.setTimeZone(c.getTimeZone());
DumpTable table = new DumpTable("date", "#ff9900", "#ffcc00", "#000000");
table.setTitle("java.util.Calendar");
table.appendRow(1, new SimpleDumpData("Timezone"), new SimpleDumpData(TimeZoneUtil.toString(c.getTimeZone())));
table.appendRow(1, new SimpleDumpData("Time"), new SimpleDumpData(df.format(c.getTime())));
return table;
}
// StringBuffer
if (o instanceof StringBuffer) {
DumpTable dt = (DumpTable) toDumpData(o.toString(), pageContext, maxlevel, props);
if (StringUtil.isEmpty(dt.getTitle()))
dt.setTitle(Caster.toClassName(o));
return dt;
}
// StringBuilder
if (o instanceof StringBuilder) {
DumpTable dt = (DumpTable) toDumpData(o.toString(), pageContext, maxlevel, props);
if (StringUtil.isEmpty(dt.getTitle()))
dt.setTitle(Caster.toClassName(o));
return dt;
}
// String
if (o instanceof String) {
String str = (String) o;
if (str.trim().startsWith("<wddxPacket ")) {
try {
WDDXConverter converter = new WDDXConverter(pageContext.getTimeZone(), false, true);
converter.setTimeZone(pageContext.getTimeZone());
Object rst = converter.deserialize(str, false);
DumpData data = toDumpData(rst, pageContext, maxlevel, props);
DumpTable table = new DumpTable("string", "#cc9999", "#ffffff", "#000000");
table.setTitle("WDDX");
table.appendRow(1, new SimpleDumpData("encoded"), data);
table.appendRow(1, new SimpleDumpData("raw"), new SimpleDumpData(str));
return table;
} catch (Exception e) {
// this dump entry is optional, so if it is not possible to create the decoded wddx entry, we simply don't do it
}
}
DumpTable table = new DumpTable("string", "#ff6600", "#ffcc99", "#000000");
table.appendRow(1, new SimpleDumpData("string"), new SimpleDumpData(str));
return table;
}
// Character
if (o instanceof Character) {
DumpTable table = new DumpTable("character", "#ff6600", "#ffcc99", "#000000");
table.appendRow(1, new SimpleDumpData("character"), new SimpleDumpData(o.toString()));
return table;
}
// Number
if (o instanceof Number) {
DumpTable table = new DumpTable("numeric", "#ff6600", "#ffcc99", "#000000");
table.appendRow(1, new SimpleDumpData("number"), new SimpleDumpData(Caster.toString(((Number) o))));
return table;
}
// Charset
if (o instanceof Charset) {
DumpTable table = new DumpTable("charset", "#ff6600", "#ffcc99", "#000000");
table.appendRow(1, new SimpleDumpData("charset"), new SimpleDumpData(((Charset) o).name()));
return table;
}
// CharSet
if (o instanceof CharSet) {
DumpTable table = new DumpTable("charset", "#ff6600", "#ffcc99", "#000000");
table.appendRow(1, new SimpleDumpData("charset"), new SimpleDumpData(((CharSet) o).name()));
return table;
}
// Locale
if (o instanceof Locale) {
Locale l = (Locale) o;
Locale env = ThreadLocalPageContext.getLocale();
DumpTable table = new DumpTable("locale", "#ff6600", "#ffcc99", "#000000");
table.setTitle("Locale " + LocaleFactory.getDisplayName(l));
table.appendRow(1, new SimpleDumpData("Code (ISO-3166)"), new SimpleDumpData(l.toString()));
table.appendRow(1, new SimpleDumpData("Country"), new SimpleDumpData(l.getDisplayCountry(env)));
table.appendRow(1, new SimpleDumpData("Language"), new SimpleDumpData(l.getDisplayLanguage(env)));
return table;
}
// TimeZone
if (o instanceof TimeZone) {
DumpTable table = new DumpTable("numeric", "#ff6600", "#ffcc99", "#000000");
table.appendRow(1, new SimpleDumpData("TimeZone"), new SimpleDumpData(TimeZoneUtil.toString(((TimeZone) o))));
return table;
}
// Boolean
if (o instanceof Boolean) {
DumpTable table = new DumpTable("boolean", "#ff6600", "#ffcc99", "#000000");
table.appendRow(1, new SimpleDumpData("boolean"), new SimpleDumpData(((Boolean) o).booleanValue()));
return table;
}
// File
if (o instanceof File) {
DumpTable table = new DumpTable("file", "#ffcc00", "#ffff66", "#000000");
table.appendRow(1, new SimpleDumpData("File"), new SimpleDumpData(o.toString()));
return table;
}
// Cookie
if (o instanceof Cookie) {
Cookie c = (Cookie) o;
DumpTable table = new DumpTable("Cookie", "#979EAA", "#DEE9FB", "#000000");
table.setTitle("Cookie (" + c.getClass().getName() + ")");
table.appendRow(1, new SimpleDumpData("name"), new SimpleDumpData(c.getName()));
table.appendRow(1, new SimpleDumpData("value"), new SimpleDumpData(c.getValue()));
table.appendRow(1, new SimpleDumpData("path"), new SimpleDumpData(c.getPath()));
table.appendRow(1, new SimpleDumpData("secure"), new SimpleDumpData(c.getSecure()));
table.appendRow(1, new SimpleDumpData("maxAge"), new SimpleDumpData(c.getMaxAge()));
table.appendRow(1, new SimpleDumpData("version"), new SimpleDumpData(c.getVersion()));
table.appendRow(1, new SimpleDumpData("domain"), new SimpleDumpData(c.getDomain()));
table.appendRow(1, new SimpleDumpData("httpOnly"), new SimpleDumpData(CookieImpl.isHTTPOnly(c)));
table.appendRow(1, new SimpleDumpData("comment"), new SimpleDumpData(c.getComment()));
return table;
}
// Resource
if (o instanceof Resource) {
DumpTable table = new DumpTable("resource", "#ffcc00", "#ffff66", "#000000");
table.appendRow(1, new SimpleDumpData("Resource"), new SimpleDumpData(o.toString()));
return table;
}
// byte[]
if (o instanceof byte[]) {
byte[] bytes = (byte[]) o;
int max = 5000;
DumpTable table = new DumpTable("array", "#ff9900", "#ffcc00", "#000000");
table.setTitle("Native Array (" + Caster.toClassName(o) + ")");
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < bytes.length; i++) {
if (i != 0)
sb.append(",");
sb.append(bytes[i]);
if (i == max) {
sb.append(", ...truncated");
break;
}
}
sb.append("]");
table.appendRow(1, new SimpleDumpData("Raw" + (bytes.length < max ? "" : " (truncated)")), new SimpleDumpData(sb.toString()));
if (bytes.length < max) {
// base64
table.appendRow(1, new SimpleDumpData("Base64 Encoded"), new SimpleDumpData(Base64Coder.encode(bytes)));
/*try {
table.appendRow(1,new SimpleDumpData("CFML expression"),new SimpleDumpData("evaluateJava('"+JavaConverter.serialize(bytes)+"')"));
}
catch (IOException e) {}*/
}
return table;
}
// Collection.Key
if (o instanceof Collection.Key) {
Collection.Key key = (Collection.Key) o;
DumpTable table = new DumpTable("string", "#ff6600", "#ffcc99", "#000000");
table.appendRow(1, new SimpleDumpData("Collection.Key"), new SimpleDumpData(key.getString()));
return table;
}
String id = "" + IDGenerator.intId();
String refid = ThreadLocalDump.get(o);
if (refid != null) {
DumpTable table = new DumpTable("ref", "#ffffff", "#cccccc", "#000000");
table.appendRow(1, new SimpleDumpData("Reference"), new SimpleDumpData(refid));
table.setRef(refid);
return setId(id, table);
}
ThreadLocalDump.set(o, id);
try {
int top = props.getMaxlevel();
// Printable
if (o instanceof Dumpable) {
return setId(id, ((Dumpable) o).toDumpData(pageContext, maxlevel, props));
}
// Map
if (o instanceof Map) {
Map map = (Map) o;
Iterator it = map.keySet().iterator();
DumpTable table = new DumpTable("struct", "#ff9900", "#ffcc00", "#000000");
table.setTitle("Map (" + Caster.toClassName(o) + ")");
while (it.hasNext()) {
Object next = it.next();
table.appendRow(1, toDumpData(next, pageContext, maxlevel, props), toDumpData(map.get(next), pageContext, maxlevel, props));
}
return setId(id, table);
}
// List
if (o instanceof List) {
List list = (List) o;
ListIterator it = list.listIterator();
DumpTable table = new DumpTable("array", "#ff9900", "#ffcc00", "#000000");
table.setTitle("Array (List)");
if (list.size() > top)
table.setComment("Rows: " + list.size() + " (showing top " + top + ")");
int i = 0;
while (it.hasNext() && i++ < top) {
table.appendRow(1, new SimpleDumpData(it.nextIndex() + 1), toDumpData(it.next(), pageContext, maxlevel, props));
}
return setId(id, table);
}
// Set
if (o instanceof Set) {
Set set = (Set) o;
Iterator it = set.iterator();
DumpTable table = new DumpTable("array", "#ff9900", "#ffcc00", "#000000");
table.setTitle("Set (" + set.getClass().getName() + ")");
int i = 0;
while (it.hasNext() && i++ < top) {
table.appendRow(1, toDumpData(it.next(), pageContext, maxlevel, props));
}
return setId(id, table);
}
// Resultset
if (o instanceof ResultSet) {
try {
DumpData dd = new QueryImpl((ResultSet) o, "query", pageContext.getTimeZone()).toDumpData(pageContext, maxlevel, props);
if (dd instanceof DumpTable)
((DumpTable) dd).setTitle(Caster.toClassName(o));
return setId(id, dd);
} catch (PageException e) {
}
}
// Enumeration
if (o instanceof Enumeration) {
Enumeration e = (Enumeration) o;
DumpTable table = new DumpTable("enumeration", "#ff9900", "#ffcc00", "#000000");
table.setTitle("Enumeration");
int i = 0;
while (e.hasMoreElements() && i++ < top) {
table.appendRow(0, toDumpData(e.nextElement(), pageContext, maxlevel, props));
}
return setId(id, table);
}
// Object[]
if (Decision.isNativeArray(o)) {
Array arr;
try {
arr = Caster.toArray(o);
DumpTable htmlBox = new DumpTable("array", "#ff9900", "#ffcc00", "#000000");
htmlBox.setTitle("Native Array (" + Caster.toClassName(o) + ")");
int length = arr.size();
for (int i = 1; i <= length; i++) {
Object ox = null;
try {
ox = arr.getE(i);
} catch (Exception e) {
}
htmlBox.appendRow(1, new SimpleDumpData(i), toDumpData(ox, pageContext, maxlevel, props));
}
return setId(id, htmlBox);
} catch (PageException e) {
return setId(id, new SimpleDumpData(""));
}
}
// Node
if (o instanceof Node) {
return setId(id, XMLCaster.toDumpData((Node) o, pageContext, maxlevel, props));
}
// ObjectWrap
if (o instanceof ObjectWrap) {
maxlevel++;
return setId(id, toDumpData(((ObjectWrap) o).getEmbededObject(null), pageContext, maxlevel, props));
}
// NodeList
if (o instanceof NodeList) {
NodeList list = (NodeList) o;
int len = list.getLength();
DumpTable table = new DumpTable("xml", "#cc9999", "#ffffff", "#000000");
for (int i = 0; i < len; i++) {
table.appendRow(1, new SimpleDumpData(i), toDumpData(list.item(i), pageContext, maxlevel, props));
}
return setId(id, table);
}
// AttributeMap
if (o instanceof NamedNodeMap) {
NamedNodeMap attr = (NamedNodeMap) o;
int len = attr.getLength();
DumpTable dt = new DumpTable("array", "#ff9900", "#ffcc00", "#000000");
dt.setTitle("NamedNodeMap (" + Caster.toClassName(o) + ")");
for (int i = 0; i < len; i++) {
dt.appendRow(1, new SimpleDumpData(i), toDumpData(attr.item(i), pageContext, maxlevel, props));
}
return setId(id, dt);
}
// HttpSession
if (o instanceof HttpSession) {
HttpSession hs = (HttpSession) o;
Enumeration e = hs.getAttributeNames();
DumpTable htmlBox = new DumpTable("httpsession", "#9999ff", "#ccccff", "#000000");
htmlBox.setTitle("HttpSession");
while (e.hasMoreElements()) {
String key = e.nextElement().toString();
htmlBox.appendRow(1, new SimpleDumpData(key), toDumpData(hs.getAttribute(key), pageContext, maxlevel, props));
}
return setId(id, htmlBox);
}
if (o instanceof Pojo) {
DumpTable table = new DumpTable(o.getClass().getName(), "#ff99cc", "#ffccff", "#000000");
Class clazz = o.getClass();
if (o instanceof Class)
clazz = (Class) o;
String fullClassName = clazz.getName();
int pos = fullClassName.lastIndexOf('.');
String className = pos == -1 ? fullClassName : fullClassName.substring(pos + 1);
table.setTitle("Java Bean - " + className + " (" + fullClassName + ")");
table.appendRow(3, new SimpleDumpData("Property Name"), new SimpleDumpData("Value"));
// collect the properties
Method[] methods = clazz.getMethods();
String propName;
Object value;
String exName = null;
String exValue = null;
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
if (Object.class == method.getDeclaringClass())
continue;
propName = method.getName();
if (propName.startsWith("get") && method.getParameterTypes().length == 0) {
propName = propName.substring(3);
value = null;
try {
value = method.invoke(o, new Object[0]);
if (exName == null && value instanceof String && ((String) value).length() < 20) {
exName = propName;
exValue = value.toString();
}
} catch (Throwable t) {
ExceptionUtil.rethrowIfNecessary(t);
value = "not able to retrieve the data:" + t.getMessage();
}
table.appendRow(0, new SimpleDumpData(propName), toDumpData(value, pageContext, maxlevel, props));
}
}
if (exName == null) {
exName = "LastName";
exValue = "Sorglos";
}
table.setComment("JavaBeans are reusable software components for Java." + "\nThey are classes that encapsulate many objects into a single object (the bean)." + "\nThey allow access to properties using getter and setter methods or directly.");
return setId(id, table);
}
// reflect
// else {
DumpTable table = new DumpTable(o.getClass().getName(), "#6289a3", "#dee3e9", "#000000");
Class clazz = o.getClass();
if (o instanceof Class)
clazz = (Class) o;
String fullClassName = clazz.getName();
int pos = fullClassName.lastIndexOf('.');
String className = pos == -1 ? fullClassName : fullClassName.substring(pos + 1);
table.setTitle(className);
table.appendRow(1, new SimpleDumpData("class"), new SimpleDumpData(fullClassName));
// Fields
Field[] fields = clazz.getFields();
DumpTable fieldDump = new DumpTable("#6289a3", "#dee3e9", "#000000");
fieldDump.appendRow(-1, new SimpleDumpData("name"), new SimpleDumpData("pattern"), new SimpleDumpData("value"));
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
DumpData value;
try {
// print.out(o+":"+maxlevel);
value = new SimpleDumpData(Caster.toString(field.get(o), ""));
} catch (Exception e) {
value = new SimpleDumpData("");
}
fieldDump.appendRow(0, new SimpleDumpData(field.getName()), new SimpleDumpData(field.toString()), value);
}
if (fields.length > 0)
table.appendRow(1, new SimpleDumpData("fields"), fieldDump);
// Constructors
Constructor[] constructors = clazz.getConstructors();
DumpTable constrDump = new DumpTable("#6289a3", "#dee3e9", "#000000");
constrDump.appendRow(-1, new SimpleDumpData("interface"), new SimpleDumpData("exceptions"));
for (int i = 0; i < constructors.length; i++) {
Constructor constr = constructors[i];
// exceptions
StringBuilder sbExp = new StringBuilder();
Class[] exceptions = constr.getExceptionTypes();
for (int p = 0; p < exceptions.length; p++) {
if (p > 0)
sbExp.append("\n");
sbExp.append(Caster.toClassName(exceptions[p]));
}
// parameters
StringBuilder sbParams = new StringBuilder("<init>");
sbParams.append('(');
Class[] parameters = constr.getParameterTypes();
for (int p = 0; p < parameters.length; p++) {
if (p > 0)
sbParams.append(", ");
sbParams.append(Caster.toClassName(parameters[p]));
}
sbParams.append(')');
constrDump.appendRow(0, new SimpleDumpData(sbParams.toString()), new SimpleDumpData(sbExp.toString()));
}
if (constructors.length > 0)
table.appendRow(1, new SimpleDumpData("constructors"), constrDump);
// Methods
StringBuilder objMethods = new StringBuilder();
Method[] methods = clazz.getMethods();
DumpTable methDump = new DumpTable("#6289a3", "#dee3e9", "#000000");
methDump.appendRow(-1, new SimpleDumpData("return"), new SimpleDumpData("interface"), new SimpleDumpData("exceptions"));
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
if (Object.class == method.getDeclaringClass()) {
if (objMethods.length() > 0)
objMethods.append(", ");
objMethods.append(method.getName());
continue;
}
// exceptions
StringBuilder sbExp = new StringBuilder();
Class[] exceptions = method.getExceptionTypes();
for (int p = 0; p < exceptions.length; p++) {
if (p > 0)
sbExp.append("\n");
sbExp.append(Caster.toClassName(exceptions[p]));
}
// parameters
StringBuilder sbParams = new StringBuilder(method.getName());
sbParams.append('(');
Class[] parameters = method.getParameterTypes();
for (int p = 0; p < parameters.length; p++) {
if (p > 0)
sbParams.append(", ");
sbParams.append(Caster.toClassName(parameters[p]));
}
sbParams.append(')');
methDump.appendRow(0, new SimpleDumpData(Caster.toClassName(method.getReturnType())), new SimpleDumpData(sbParams.toString()), new SimpleDumpData(sbExp.toString()));
}
if (methods.length > 0)
table.appendRow(1, new SimpleDumpData("methods"), methDump);
DumpTable inherited = new DumpTable("#6289a3", "#dee3e9", "#000000");
inherited.appendRow(7, new SimpleDumpData("Methods inherited from java.lang.Object"));
inherited.appendRow(0, new SimpleDumpData(objMethods.toString()));
table.appendRow(1, new SimpleDumpData(""), inherited);
// Bundle Info
ClassLoader cl = clazz.getClassLoader();
if (cl instanceof BundleClassLoader) {
BundleClassLoader bcl = (BundleClassLoader) cl;
Bundle b = bcl.getBundle();
Struct sct = new StructImpl();
sct.setEL(KeyConstants._id, b.getBundleId());
sct.setEL(KeyConstants._name, b.getSymbolicName());
sct.setEL("location", b.getLocation());
sct.setEL(KeyConstants._version, b.getVersion().toString());
DumpTable bd = new DumpTable("#6289a3", "#dee3e9", "#000000");
bd.appendRow(1, new SimpleDumpData("id"), new SimpleDumpData(b.getBundleId()));
bd.appendRow(1, new SimpleDumpData("symbolic-name"), new SimpleDumpData(b.getSymbolicName()));
bd.appendRow(1, new SimpleDumpData("version"), new SimpleDumpData(b.getVersion().toString()));
bd.appendRow(1, new SimpleDumpData("location"), new SimpleDumpData(b.getLocation()));
requiredBundles(bd, b);
table.appendRow(1, new SimpleDumpData("bundle-info"), bd);
}
return setId(id, table);
// }
} finally {
ThreadLocalDump.remove(o);
}
}
Aggregations