use of lucee.runtime.component.Property in project Lucee by lucee.
the class AxisCaster method _toPojo.
private static Pojo _toPojo(PageContext pc, Pojo pojo, TypeMapping tm, TypeEntry typeEntry, QName type, Component comp, Set<Object> done) throws PageException {
// print.ds();System.exit(0);
comp = ComponentSpecificAccess.toComponentSpecificAccess(Component.ACCESS_PRIVATE, comp);
ComponentScope scope = comp.getComponentScope();
// create Pojo
if (pojo == null) {
try {
pojo = (Pojo) ClassUtil.loadInstance(ComponentUtil.getComponentPropertiesClass(pc, comp));
} catch (ClassException e) {
throw Caster.toPageException(e);
}
}
// initialize Pojo
Property[] props = comp.getProperties(false, true, false, false);
_initPojo(pc, typeEntry, type, pojo, props, scope, comp, tm, done);
return pojo;
}
use of lucee.runtime.component.Property in project Lucee by lucee.
the class AxisCaster method _toPojo.
private static Pojo _toPojo(PageContext pc, Pojo pojo, TypeMapping tm, TypeEntry typeEntry, QName type, Struct sct, Set<Object> done) throws PageException {
// print.ds();System.exit(0);
if (pojo == null) {
try {
PhysicalClassLoader cl = (PhysicalClassLoader) pc.getConfig().getRPCClassLoader(false);
pojo = (Pojo) ClassUtil.loadInstance(ComponentUtil.getStructPropertiesClass(pc, sct, cl));
} catch (ClassException e) {
throw Caster.toPageException(e);
} catch (IOException e) {
throw Caster.toPageException(e);
}
}
// initialize
List<Property> props = new ArrayList<Property>();
Iterator<Entry<Key, Object>> it = sct.entryIterator();
Entry<Key, Object> e;
PropertyImpl p;
while (it.hasNext()) {
e = it.next();
p = new PropertyImpl();
p.setAccess(Component.ACCESS_PUBLIC);
p.setName(e.getKey().getString());
p.setType(e.getValue() == null ? "any" : Caster.toTypeName(e.getValue()));
props.add(p);
}
_initPojo(pc, typeEntry, type, pojo, props.toArray(new Property[props.size()]), sct, null, tm, done);
return pojo;
}
use of lucee.runtime.component.Property in project Lucee by lucee.
the class ScriptConverter method _serializeComponent.
/**
* serialize a Component
* @param c Component to serialize
* @param sb
* @param done
* @throws ConverterException
*/
private void _serializeComponent(Component c, StringBuilder sb, Set<Object> done) throws ConverterException {
ComponentSpecificAccess cw = new ComponentSpecificAccess(Component.ACCESS_PRIVATE, c);
sb.append(goIn());
try {
sb.append("evaluateComponent(").append(QUOTE_CHR).append(c.getAbsName()).append(QUOTE_CHR).append(',').append(QUOTE_CHR).append(ComponentUtil.md5(c)).append(QUOTE_CHR).append(",{");
} catch (Exception e) {
throw toConverterException(e);
}
boolean doIt = false;
Object member;
{
Iterator<Entry<Key, Object>> it = cw.entryIterator();
deep++;
Entry<Key, Object> e;
while (it.hasNext()) {
e = it.next();
member = e.getValue();
if (member instanceof UDF)
continue;
if (doIt)
sb.append(',');
doIt = true;
sb.append(QUOTE_CHR);
sb.append(escape(e.getKey().getString()));
sb.append(QUOTE_CHR);
sb.append(':');
_serialize(member, sb, done);
}
sb.append("}");
deep--;
}
{
boolean isPeristent = c.isPersistent();
ComponentScope scope = c.getComponentScope();
Iterator<Entry<Key, Object>> it = scope.entryIterator();
sb.append(",{");
deep++;
doIt = false;
Property p;
Boolean remotingFetch;
Struct props = ignoreRemotingFetch ? null : ComponentUtil.getPropertiesAsStruct(c, false);
Entry<Key, Object> e;
Key k;
while (it.hasNext()) {
e = it.next();
k = e.getKey();
// String key=Caster.toString(it.next(),"");
if (KeyConstants._THIS.equalsIgnoreCase(k))
continue;
if (!ignoreRemotingFetch) {
p = (Property) props.get(k, null);
if (p != null) {
remotingFetch = Caster.toBoolean(p.getDynamicAttributes().get(REMOTING_FETCH, null), null);
if (remotingFetch == null) {
if (isPeristent && ORMUtil.isRelated(p))
continue;
} else if (!remotingFetch.booleanValue())
continue;
}
}
member = e.getValue();
if (member instanceof UDF)
continue;
if (doIt)
sb.append(',');
doIt = true;
sb.append(QUOTE_CHR);
sb.append(escape(k.getString()));
sb.append(QUOTE_CHR);
sb.append(':');
_serialize(member, sb, done);
}
sb.append("}");
deep--;
}
sb.append(")");
// sb.append("");
// throw new ConverterException("can't serialize a component "+component.getDisplayName());
}
use of lucee.runtime.component.Property in project Lucee by lucee.
the class WDDXConverter method _serializeComponent.
/**
* serialize a Component
*
* @param component
* Component to serialize
* @param done
* @return serialized component
* @throws ConverterException
*/
private String _serializeComponent(Component component, Set<Object> done) throws ConverterException {
StringBuilder sb = new StringBuilder();
Component ca;
component = new ComponentSpecificAccess(Component.ACCESS_PRIVATE, ca = component);
boolean isPeristent = ca.isPersistent();
deep++;
Object member;
Iterator<Key> it = component.keyIterator();
Collection.Key key;
while (it.hasNext()) {
key = Caster.toKey(it.next(), null);
member = component.get(key, null);
if (member instanceof UDF)
continue;
sb.append(goIn() + "<var scope=\"this\" name=" + del + XMLUtil.escapeXMLString(key.toString()) + del + ">");
sb.append(_serialize(member, done));
sb.append(goIn() + "</var>");
}
Property p;
Boolean remotingFetch;
Struct props = ignoreRemotingFetch ? null : ComponentUtil.getPropertiesAsStruct(ca, false);
ComponentScope scope = ca.getComponentScope();
it = scope.keyIterator();
while (it.hasNext()) {
key = Caster.toKey(it.next(), null);
if (!ignoreRemotingFetch) {
p = (Property) props.get(key, null);
if (p != null) {
remotingFetch = Caster.toBoolean(p.getDynamicAttributes().get(REMOTING_FETCH, null), null);
if (remotingFetch == null) {
if (isPeristent && ORMUtil.isRelated(p))
continue;
} else if (!remotingFetch.booleanValue())
continue;
}
}
member = scope.get(key, null);
if (member instanceof UDF || key.equals(KeyConstants._this))
continue;
sb.append(goIn() + "<var scope=\"variables\" name=" + del + XMLUtil.escapeXMLString(key.toString()) + del + ">");
sb.append(_serialize(member, done));
sb.append(goIn() + "</var>");
}
deep--;
try {
// return goIn()+"<struct>"+sb+"</struct>";
return goIn() + "<component md5=\"" + ComponentUtil.md5(component) + "\" name=\"" + XMLUtil.escapeXMLString(component.getAbsName()) + "\">" + sb + "</component>";
} catch (Exception e) {
throw toConverterException(e);
}
}
use of lucee.runtime.component.Property in project Lucee by lucee.
the class ComponentImpl method thisScope.
static DumpTable thisScope(ComponentImpl ci, PageContext pc, int maxlevel, DumpProperties dp, int access) {
DumpTable table = new DumpTable("#ffffff", "#cccccc", "#000000");
DumpTable[] accesses = new DumpTable[4];
accesses[Component.ACCESS_REMOTE] = new DumpTable("#ccffcc", "#ffffff", "#000000");
accesses[Component.ACCESS_REMOTE].setTitle("remote");
accesses[Component.ACCESS_PUBLIC] = new DumpTable("#ffcc99", "#ffffcc", "#000000");
accesses[Component.ACCESS_PUBLIC].setTitle("public");
accesses[Component.ACCESS_PACKAGE] = new DumpTable("#ff9966", "#ffcc99", "#000000");
accesses[Component.ACCESS_PACKAGE].setTitle("package");
accesses[Component.ACCESS_PRIVATE] = new DumpTable("#ff6633", "#ff9966", "#000000");
accesses[Component.ACCESS_PRIVATE].setTitle("private");
maxlevel--;
ComponentSpecificAccess cw = new ComponentSpecificAccess(Component.ACCESS_PRIVATE, ci);
Collection.Key[] keys = cw.keys();
List<DumpRow>[] drAccess = new List[4];
for (int i = 0; i < drAccess.length; i++) // ACCESS_REMOTE=0, ACCESS_PUBLIC=1, ACCESS_PACKAGE=2, ACCESS_PRIVATE=3
drAccess[i] = new ArrayList();
Collection.Key key;
for (int i = 0; i < keys.length; i++) {
key = keys[i];
List<DumpRow> box = drAccess[ci.getAccess(key)];
Object o = cw.get(key, null);
if (o == ci)
o = "[this]";
if (DumpUtil.keyValid(dp, maxlevel, key)) {
String memberName = (o instanceof UDF) ? ((UDF) o).getFunctionName() : key.getString();
box.add(new DumpRow(1, new SimpleDumpData(memberName), DumpUtil.toDumpData(o, pc, maxlevel, dp)));
}
}
List<DumpRow> dumpRows;
for (int i = 0; i < drAccess.length; i++) {
dumpRows = drAccess[i];
if (!dumpRows.isEmpty()) {
Collections.sort(dumpRows, new Comparator<DumpRow>() {
@Override
public int compare(DumpRow o1, DumpRow o2) {
DumpData[] rowItems1 = o1.getItems();
DumpData[] rowItems2 = o2.getItems();
if (rowItems1.length >= 0 && rowItems2.length > 0 && rowItems1[0] instanceof SimpleDumpData && rowItems2[0] instanceof SimpleDumpData)
return String.CASE_INSENSITIVE_ORDER.compare(rowItems1[0].toString(), rowItems2[0].toString());
return 0;
}
});
DumpTable dtAccess = accesses[i];
dtAccess.setWidth("100%");
for (DumpRow dr : dumpRows) dtAccess.appendRow(dr);
table.appendRow(0, dtAccess);
}
}
// properties
if (ci.top.properties.persistent || ci.top.properties.accessors) {
Property[] properties = ci.getProperties(false, true, false, false);
DumpTable prop = new DumpTable("#99cc99", "#ccffcc", "#000000");
prop.setTitle("Properties");
prop.setWidth("100%");
Property p;
Object child;
for (int i = 0; i < properties.length; i++) {
p = properties[i];
child = ci.scope.get(KeyImpl.init(p.getName()), null);
DumpData dd;
if (child instanceof Component) {
DumpTable t = new DumpTable("component", "#99cc99", "#ffffff", "#000000");
t.appendRow(1, new SimpleDumpData(((Component) child).getPageSource().getDialect() == CFMLEngine.DIALECT_CFML ? "Component" : "Class"), new SimpleDumpData(((Component) child).getCallName()));
dd = t;
} else {
dd = DumpUtil.toDumpData(child, pc, maxlevel - 1, dp);
}
prop.appendRow(1, new SimpleDumpData(p.getName()), dd);
}
if (access >= ACCESS_PUBLIC && !prop.isEmpty()) {
table.appendRow(0, prop);
}
}
return table;
}
Aggregations