Search in sources :

Example 1 with XMLStruct

use of lucee.runtime.text.xml.struct.XMLStruct in project Lucee by lucee.

the class XMLCaster method toNode.

public static Node toNode(Document doc, Object o, boolean clone) throws PageException {
    Node n = null;
    if (o instanceof XMLStruct)
        n = ((XMLStruct) o).toNode();
    else if (o instanceof Node)
        n = ((Node) o);
    if (n != null)
        return clone ? n.cloneNode(true) : n;
    String nodeName = Caster.toString(o);
    if (nodeName.length() == 0)
        nodeName = "Empty";
    return doc.createElement(nodeName);
}
Also used : Node(org.w3c.dom.Node) XMLStruct(lucee.runtime.text.xml.struct.XMLStruct)

Example 2 with XMLStruct

use of lucee.runtime.text.xml.struct.XMLStruct in project Lucee by lucee.

the class Caster method toArray.

/**
 * cast a Object to a Array Object
 * @param o Object to cast
 * @return casted Array
 * @throws PageException
 */
public static Array toArray(Object o) throws PageException {
    if (o instanceof Array)
        return (Array) o;
    else if (o instanceof Object[]) {
        return new ArrayImpl((Object[]) o);
    } else if (o instanceof List) {
        // new ArrayImpl(((List) o).toArray());
        return ListAsArray.toArray((List) o);
    } else if (o instanceof Set) {
        // new ArrayImpl(((List) o).toArray());
        return toArray(((Set) o).toArray());
    } else if (o instanceof XMLStruct) {
        XMLMultiElementStruct xmes;
        if (o instanceof XMLMultiElementStruct) {
            xmes = (XMLMultiElementStruct) o;
        } else {
            XMLStruct sct = (XMLStruct) o;
            Array a = new ArrayImpl();
            a.append(o);
            xmes = new XMLMultiElementStruct(a, sct.getCaseSensitive());
        }
        return new XMLMultiElementArray(xmes);
    } else if (o instanceof ObjectWrap) {
        return toArray(((ObjectWrap) o).getEmbededObject());
    } else if (o instanceof Struct) {
        // function _toArray
        if (o instanceof Component) {
            Component c = (Component) o;
            PageContext pc = ThreadLocalPageContext.get();
            if (pc != null) {
                Member member = c.getMember(Component.ACCESS_PRIVATE, KeyConstants.__toArray, false, false);
                // Object o = get(pc,"_toString",null);
                if (member instanceof UDFPlus) {
                    UDFPlus udf = (UDFPlus) member;
                    if (udf.getReturnType() == CFTypes.TYPE_ARRAY && udf.getFunctionArguments().length == 0) {
                        return Caster.toArray(c.call(pc, KeyConstants.__toArray, new Object[0]));
                    }
                }
            }
        }
        Struct sct = (Struct) o;
        Array arr = new ArrayImpl();
        Iterator<Entry<Key, Object>> it = sct.entryIterator();
        Entry<Key, Object> e = null;
        try {
            while (it.hasNext()) {
                e = it.next();
                arr.setE(toIntValue(e.getKey().getString()), e.getValue());
            }
        } catch (ExpressionException ee) {
            throw new ExpressionException("can't cast struct to a array, key [" + e.getKey().getString() + "] is not a number");
        }
        return arr;
    } else if (o instanceof boolean[])
        return new ArrayImpl(ArrayUtil.toReferenceType((boolean[]) o));
    else if (o instanceof byte[])
        return new ArrayImpl(ArrayUtil.toReferenceType((byte[]) o));
    else if (o instanceof char[])
        return new ArrayImpl(ArrayUtil.toReferenceType((char[]) o));
    else if (o instanceof short[])
        return new ArrayImpl(ArrayUtil.toReferenceType((short[]) o));
    else if (o instanceof int[])
        return new ArrayImpl(ArrayUtil.toReferenceType((int[]) o));
    else if (o instanceof long[])
        return new ArrayImpl(ArrayUtil.toReferenceType((long[]) o));
    else if (o instanceof float[])
        return new ArrayImpl(ArrayUtil.toReferenceType((float[]) o));
    else if (o instanceof double[])
        return new ArrayImpl(ArrayUtil.toReferenceType((double[]) o));
    throw new CasterException(o, "Array");
}
Also used : ResultSet(java.sql.ResultSet) Set(java.util.Set) ArrayImpl(lucee.runtime.type.ArrayImpl) ExpressionException(lucee.runtime.exp.ExpressionException) XMLMultiElementStruct(lucee.runtime.text.xml.struct.XMLMultiElementStruct) XMLStruct(lucee.runtime.text.xml.struct.XMLStruct) ObjectStruct(lucee.runtime.type.scope.ObjectStruct) MapAsStruct(lucee.runtime.type.wrap.MapAsStruct) Struct(lucee.runtime.type.Struct) CollectionStruct(lucee.runtime.type.CollectionStruct) Entry(java.util.Map.Entry) XMLMultiElementStruct(lucee.runtime.text.xml.struct.XMLMultiElementStruct) ArrayList(java.util.ArrayList) ArrayAsList(lucee.runtime.type.wrap.ArrayAsList) List(java.util.List) NodeList(org.w3c.dom.NodeList) ThreadLocalPageContext(lucee.runtime.engine.ThreadLocalPageContext) PageContext(lucee.runtime.PageContext) Component(lucee.runtime.Component) Member(lucee.runtime.component.Member) CasterException(lucee.runtime.exp.CasterException) ObjectWrap(lucee.runtime.type.ObjectWrap) XMLMultiElementArray(lucee.runtime.text.xml.struct.XMLMultiElementArray) UDFPlus(lucee.runtime.type.UDFPlus) Array(lucee.runtime.type.Array) XMLMultiElementArray(lucee.runtime.text.xml.struct.XMLMultiElementArray) ListAsArray(lucee.runtime.type.wrap.ListAsArray) XMLStruct(lucee.runtime.text.xml.struct.XMLStruct) JavaObject(lucee.runtime.java.JavaObject) Key(lucee.runtime.type.Collection.Key)

Example 3 with XMLStruct

use of lucee.runtime.text.xml.struct.XMLStruct in project Lucee by lucee.

the class Caster method toList.

/**
 * cast a Object to a Array Object
 * @param o Object to cast
 * @param duplicate
 * @return casted Array
 * @throws PageException
 */
public static List toList(Object o, boolean duplicate) throws PageException {
    if (o instanceof List) {
        if (duplicate) {
            List src = (List) o;
            int size = src.size();
            ArrayList trg = new ArrayList();
            for (int i = 0; i < size; i++) {
                trg.add(i, src.get(i));
            }
            return trg;
        }
        return (List) o;
    } else if (o instanceof Object[]) {
        ArrayList list = new ArrayList();
        Object[] arr = (Object[]) o;
        for (int i = 0; i < arr.length; i++) list.add(i, arr[i]);
        return list;
    } else if (o instanceof Array) {
        if (!duplicate)
            return ArrayAsList.toList((Array) o);
        ArrayList list = new ArrayList();
        Array arr = (Array) o;
        for (int i = 0; i < arr.size(); i++) list.add(i, arr.get(i + 1, null));
        return list;
    } else if (o instanceof Iterator) {
        Iterator it = (Iterator) o;
        ArrayList list = new ArrayList();
        while (it.hasNext()) {
            list.add(it.next());
        }
        return list;
    } else if (o instanceof XMLStruct) {
        XMLStruct sct = ((XMLStruct) o);
        if (sct instanceof XMLMultiElementStruct)
            return toList(new XMLMultiElementArray((XMLMultiElementStruct) o));
        ArrayList list = new ArrayList();
        list.add(sct);
        return list;
    } else if (o instanceof ObjectWrap) {
        return toList(((ObjectWrap) o).getEmbededObject());
    } else if (o instanceof Struct) {
        Struct sct = (Struct) o;
        ArrayList arr = new ArrayList();
        Iterator<Entry<Key, Object>> it = sct.entryIterator();
        Entry<Key, Object> e = null;
        try {
            while (it.hasNext()) {
                e = it.next();
                arr.add(toIntValue(e.getKey().getString()), e.getValue());
            }
        } catch (ExpressionException ee) {
            throw new ExpressionException("can't cast struct to a array, key [" + (e != null ? e.getKey() : "") + "] is not a number");
        }
        return arr;
    } else if (o instanceof boolean[])
        return toList(ArrayUtil.toReferenceType((boolean[]) o));
    else if (o instanceof byte[])
        return toList(ArrayUtil.toReferenceType((byte[]) o));
    else if (o instanceof char[])
        return toList(ArrayUtil.toReferenceType((char[]) o));
    else if (o instanceof short[])
        return toList(ArrayUtil.toReferenceType((short[]) o));
    else if (o instanceof int[])
        return toList(ArrayUtil.toReferenceType((int[]) o));
    else if (o instanceof long[])
        return toList(ArrayUtil.toReferenceType((long[]) o));
    else if (o instanceof float[])
        return toList(ArrayUtil.toReferenceType((float[]) o));
    else if (o instanceof double[])
        return toList(ArrayUtil.toReferenceType((double[]) o));
    throw new CasterException(o, "List");
}
Also used : CasterException(lucee.runtime.exp.CasterException) ObjectWrap(lucee.runtime.type.ObjectWrap) XMLMultiElementArray(lucee.runtime.text.xml.struct.XMLMultiElementArray) ArrayList(java.util.ArrayList) ExpressionException(lucee.runtime.exp.ExpressionException) XMLMultiElementStruct(lucee.runtime.text.xml.struct.XMLMultiElementStruct) XMLStruct(lucee.runtime.text.xml.struct.XMLStruct) ObjectStruct(lucee.runtime.type.scope.ObjectStruct) MapAsStruct(lucee.runtime.type.wrap.MapAsStruct) Struct(lucee.runtime.type.Struct) CollectionStruct(lucee.runtime.type.CollectionStruct) Array(lucee.runtime.type.Array) XMLMultiElementArray(lucee.runtime.text.xml.struct.XMLMultiElementArray) ListAsArray(lucee.runtime.type.wrap.ListAsArray) Entry(java.util.Map.Entry) XMLMultiElementStruct(lucee.runtime.text.xml.struct.XMLMultiElementStruct) Iterator(java.util.Iterator) XMLStruct(lucee.runtime.text.xml.struct.XMLStruct) ArrayList(java.util.ArrayList) ArrayAsList(lucee.runtime.type.wrap.ArrayAsList) List(java.util.List) NodeList(org.w3c.dom.NodeList) JavaObject(lucee.runtime.java.JavaObject) Key(lucee.runtime.type.Collection.Key)

Example 4 with XMLStruct

use of lucee.runtime.text.xml.struct.XMLStruct in project Lucee by lucee.

the class Caster method toArray.

/**
 * cast a Object to a Array Object
 * @param o Object to cast
 * @param defaultValue
 * @return casted Array
 */
public static Array toArray(Object o, Array defaultValue) {
    if (o instanceof Array)
        return (Array) o;
    else if (o instanceof Object[]) {
        return new ArrayImpl((Object[]) o);
    } else if (o instanceof List) {
        return new ArrayImpl(((List) o).toArray());
    } else if (o instanceof Set) {
        return new ArrayImpl(((Set) o).toArray());
    } else if (o instanceof XMLStruct) {
        Array arr = new ArrayImpl();
        arr.appendEL(o);
        return arr;
    } else if (o instanceof ObjectWrap) {
        return toArray(((ObjectWrap) o).getEmbededObject(defaultValue), defaultValue);
    // if(io!=null)return toArray(io,defaultValue);
    } else if (o instanceof Struct) {
        Struct sct = (Struct) o;
        Array arr = new ArrayImpl();
        Iterator<Entry<Key, Object>> it = sct.entryIterator();
        Entry<Key, Object> e = null;
        try {
            while (it.hasNext()) {
                e = it.next();
                arr.setEL(toIntValue(e.getKey().getString()), e.getValue());
            }
        } catch (ExpressionException ee) {
            return defaultValue;
        }
        return arr;
    } else if (o instanceof boolean[])
        return new ArrayImpl(ArrayUtil.toReferenceType((boolean[]) o));
    else if (o instanceof byte[])
        return new ArrayImpl(ArrayUtil.toReferenceType((byte[]) o));
    else if (o instanceof char[])
        return new ArrayImpl(ArrayUtil.toReferenceType((char[]) o));
    else if (o instanceof short[])
        return new ArrayImpl(ArrayUtil.toReferenceType((short[]) o));
    else if (o instanceof int[])
        return new ArrayImpl(ArrayUtil.toReferenceType((int[]) o));
    else if (o instanceof long[])
        return new ArrayImpl(ArrayUtil.toReferenceType((long[]) o));
    else if (o instanceof float[])
        return new ArrayImpl(ArrayUtil.toReferenceType((float[]) o));
    else if (o instanceof double[])
        return new ArrayImpl(ArrayUtil.toReferenceType((double[]) o));
    return defaultValue;
}
Also used : ResultSet(java.sql.ResultSet) Set(java.util.Set) ObjectWrap(lucee.runtime.type.ObjectWrap) ArrayImpl(lucee.runtime.type.ArrayImpl) ExpressionException(lucee.runtime.exp.ExpressionException) XMLMultiElementStruct(lucee.runtime.text.xml.struct.XMLMultiElementStruct) XMLStruct(lucee.runtime.text.xml.struct.XMLStruct) ObjectStruct(lucee.runtime.type.scope.ObjectStruct) MapAsStruct(lucee.runtime.type.wrap.MapAsStruct) Struct(lucee.runtime.type.Struct) CollectionStruct(lucee.runtime.type.CollectionStruct) Array(lucee.runtime.type.Array) XMLMultiElementArray(lucee.runtime.text.xml.struct.XMLMultiElementArray) ListAsArray(lucee.runtime.type.wrap.ListAsArray) Entry(java.util.Map.Entry) XMLStruct(lucee.runtime.text.xml.struct.XMLStruct) JavaObject(lucee.runtime.java.JavaObject) ArrayList(java.util.ArrayList) ArrayAsList(lucee.runtime.type.wrap.ArrayAsList) List(java.util.List) NodeList(org.w3c.dom.NodeList) Key(lucee.runtime.type.Collection.Key)

Aggregations

XMLStruct (lucee.runtime.text.xml.struct.XMLStruct)4 ArrayList (java.util.ArrayList)3 List (java.util.List)3 Entry (java.util.Map.Entry)3 ExpressionException (lucee.runtime.exp.ExpressionException)3 JavaObject (lucee.runtime.java.JavaObject)3 XMLMultiElementArray (lucee.runtime.text.xml.struct.XMLMultiElementArray)3 XMLMultiElementStruct (lucee.runtime.text.xml.struct.XMLMultiElementStruct)3 Array (lucee.runtime.type.Array)3 Key (lucee.runtime.type.Collection.Key)3 CollectionStruct (lucee.runtime.type.CollectionStruct)3 ObjectWrap (lucee.runtime.type.ObjectWrap)3 Struct (lucee.runtime.type.Struct)3 ObjectStruct (lucee.runtime.type.scope.ObjectStruct)3 ArrayAsList (lucee.runtime.type.wrap.ArrayAsList)3 ListAsArray (lucee.runtime.type.wrap.ListAsArray)3 MapAsStruct (lucee.runtime.type.wrap.MapAsStruct)3 NodeList (org.w3c.dom.NodeList)3 ResultSet (java.sql.ResultSet)2 Set (java.util.Set)2