use of lucee.runtime.type.QueryImpl 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);
}
}
use of lucee.runtime.type.QueryImpl in project Lucee by lucee.
the class Map method invoke.
private static Query invoke(PageContext pc, Query qry, UDF udf, ExecutorService es, List<Future<Data<Object>>> futures, Query rtn) throws PageException {
Key[] colNames = qry.getColumnNames();
if (rtn == null) {
rtn = new QueryImpl(colNames, 0, qry.getName());
} else {
// check if we have the necessary columns
for (Key colName : colNames) {
if (rtn.getColumn(colName, null) == null) {
rtn.addColumn(colName, new ArrayImpl());
}
}
}
final int pid = pc.getId();
ForEachQueryIterator it = new ForEachQueryIterator(qry, pid);
int rowNbr;
Object row, res;
boolean async = es != null;
while (it.hasNext()) {
row = it.next();
rowNbr = qry.getCurrentrow(pid);
res = _inv(pc, udf, new Object[] { row, rowNbr, qry }, rowNbr, es, futures);
if (!async) {
addRow(Caster.toStruct(res), rtn);
}
}
return rtn;
}
use of lucee.runtime.type.QueryImpl in project Lucee by lucee.
the class MailClient method listAllFolder.
public Query listAllFolder(String folderName, boolean recurse, int startrow, int maxrows) throws MessagingException, PageException {
Query qry = new QueryImpl(new Collection.Key[] { FULLNAME, KeyConstants._NAME, TOTALMESSAGES, UNREAD, PARENT, NEW }, 0, "folders");
// if(StringUtil.isEmpty(folderName)) folderName="INBOX";
Folder folder = (StringUtil.isEmpty(folderName)) ? _store.getDefaultFolder() : _store.getFolder(folderName);
// Folder folder=_store.getFolder(folderName);
if (!folder.exists())
throw new ApplicationException("there is no folder with name [" + folderName + "].");
list(folder, qry, recurse, startrow, maxrows, 0);
return qry;
}
use of lucee.runtime.type.QueryImpl in project Lucee by lucee.
the class MailClient method getMails.
/**
* return all messages from inbox
* @param messageNumbers all messages with this ids
* @param uIds all messages with this uids
* @param withBody also return body
* @return all messages from inbox
* @throws MessagingException
* @throws IOException
*/
public Query getMails(String[] messageNumbers, String[] uids, boolean all) throws MessagingException, IOException {
Query qry = new QueryImpl(all ? _fldnew : _flddo, 0, "query");
Folder folder = _store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
try {
getMessages(qry, folder, uids, messageNumbers, startrow, maxrows, all);
} finally {
folder.close(false);
}
return qry;
}
use of lucee.runtime.type.QueryImpl in project Lucee by lucee.
the class GetUsageData method call.
public static Struct call(PageContext pc) throws PageException {
ConfigWeb cw = pc.getConfig();
ConfigServer cs = cw.getConfigServer("server");
ConfigWeb[] webs = cs.getConfigWebs();
CFMLEngineFactory.getInstance();
CFMLEngineImpl engine = (CFMLEngineImpl) cs.getCFMLEngine();
Struct sct = new StructImpl();
// Locks
/*LockManager manager = pc.getConfig().getLockManager();
String[] locks = manager.getOpenLockNames();
for(int i=0;i<locks.length;i++){
locks[i].
}
if(!ArrayUtil.isEmpty(locks))
strLocks=" open locks at this time ("+List.arrayToList(locks, ", ")+").";
*/
// Requests
Query req = new QueryImpl(new Collection.Key[] { KeyConstants._web, KeyConstants._uri, START_TIME, KeyConstants._timeout }, 0, "requests");
sct.setEL(KeyConstants._requests, req);
// Template Cache
Query tc = new QueryImpl(new Collection.Key[] { KeyConstants._web, ELEMENTS, KeyConstants._size }, 0, "templateCache");
sct.setEL(KeyImpl.init("templateCache"), tc);
// Scopes
Struct scopes = new StructImpl();
sct.setEL(KeyConstants._scopes, scopes);
Query app = new QueryImpl(new Collection.Key[] { KeyConstants._web, KeyConstants._application, ELEMENTS, KeyConstants._size }, 0, "templateCache");
scopes.setEL(KeyConstants._application, app);
Query sess = new QueryImpl(new Collection.Key[] { KeyConstants._web, KeyConstants._application, USERS, ELEMENTS, KeyConstants._size }, 0, "templateCache");
scopes.setEL(KeyConstants._session, sess);
// Query
Query qry = new QueryImpl(new Collection.Key[] { KeyConstants._web, KeyConstants._application, START_TIME, KeyConstants._sql }, 0, "requests");
sct.setEL(QUERIES, qry);
// Locks
Query lck = new QueryImpl(new Collection.Key[] { KeyConstants._web, KeyConstants._application, KeyConstants._name, START_TIME, KeyConstants._timeout, KeyConstants._type }, 0, "requests");
sct.setEL(LOCKS, lck);
// Loop webs
ConfigWebImpl web;
Map<Integer, PageContextImpl> pcs;
PageContextImpl _pc;
int row, openConnections = 0;
CFMLFactoryImpl factory;
ActiveQuery[] queries;
ActiveQuery aq;
ActiveLock[] locks;
ActiveLock al;
for (int i = 0; i < webs.length; i++) {
// Loop requests
web = (ConfigWebImpl) webs[i];
factory = (CFMLFactoryImpl) web.getFactory();
pcs = factory.getActivePageContexts();
Iterator<PageContextImpl> it = pcs.values().iterator();
while (it.hasNext()) {
_pc = it.next();
if (_pc.isGatewayContext())
continue;
// Request
row = req.addRow();
req.setAt(KeyConstants._web, row, web.getLabel());
req.setAt(KeyConstants._uri, row, getPath(_pc.getHttpServletRequest()));
req.setAt(START_TIME, row, new DateTimeImpl(pc.getStartTime(), false));
req.setAt(KeyConstants._timeout, row, new Double(pc.getRequestTimeout()));
// Query
queries = _pc.getActiveQueries();
if (queries != null) {
for (int y = 0; y < queries.length; y++) {
aq = queries[y];
row = qry.addRow();
qry.setAt(KeyConstants._web, row, web.getLabel());
qry.setAt(KeyConstants._application, row, _pc.getApplicationContext().getName());
qry.setAt(START_TIME, row, new DateTimeImpl(web, aq.startTime, true));
qry.setAt(KeyConstants._sql, row, aq.sql);
}
}
// Lock
locks = _pc.getActiveLocks();
if (locks != null) {
for (int y = 0; y < locks.length; y++) {
al = locks[y];
row = lck.addRow();
lck.setAt(KeyConstants._web, row, web.getLabel());
lck.setAt(KeyConstants._application, row, _pc.getApplicationContext().getName());
lck.setAt(KeyConstants._name, row, al.name);
lck.setAt(START_TIME, row, new DateTimeImpl(web, al.startTime, true));
lck.setAt(KeyConstants._timeout, row, Caster.toDouble(al.timeoutInMillis / 1000));
lck.setAt(KeyConstants._type, row, al.type == LockManager.TYPE_EXCLUSIVE ? "exclusive" : "readonly");
}
}
}
Iterator<Integer> _it = web.getDatasourceConnectionPool().openConnections().values().iterator();
while (_it.hasNext()) {
openConnections += _it.next().intValue();
}
// Template Cache
Mapping[] mappings = ConfigWebUtil.getAllMappings(web);
long[] tce = templateCacheElements(mappings);
row = tc.addRow();
tc.setAt(KeyConstants._web, row, web.getLabel());
tc.setAt(KeyConstants._size, row, new Double(tce[1]));
tc.setAt(ELEMENTS, row, new Double(tce[0]));
// Scope Application
getAllApplicationScopes(web, factory.getScopeContext(), app);
getAllCFSessionScopes(web, factory.getScopeContext(), sess);
}
// Datasource
Struct ds = new StructImpl();
sct.setEL(KeyConstants._datasources, ds);
// there is only one cache for all contexts
ds.setEL(CACHED_QUERIES, Caster.toDouble(pc.getConfig().getCacheHandlerCollection(Config.CACHE_TYPE_QUERY, null).size(pc)));
// ds.setEL(CACHED_QUERIES, Caster.toDouble(pc.getQueryCache().size(pc))); // there is only one cache for all contexts
ds.setEL(OPEN_CONNECTIONS, Caster.toDouble(openConnections));
// Memory
Struct mem = new StructImpl();
sct.setEL(KeyConstants._memory, mem);
mem.setEL("heap", SystemUtil.getMemoryUsageAsStruct(SystemUtil.MEMORY_TYPE_HEAP));
mem.setEL("nonheap", SystemUtil.getMemoryUsageAsStruct(SystemUtil.MEMORY_TYPE_NON_HEAP));
// uptime
sct.set("uptime", new DateTimeImpl(engine.uptime(), true));
// now
sct.set("now", new DateTimeImpl(pc));
return sct;
}
Aggregations