void CEspBinding::getNavigationData(IEspContext &context, IPropertyTree & data)
{
    IEspWsdlSections *wsdl = dynamic_cast<IEspWsdlSections *>(this);
    if (wsdl)
    {
        StringBuffer serviceName, params;
        wsdl->getServiceName(serviceName);
        if (!getUrlParams(context.queryRequestParameters(), params))
        {
            if (context.getClientVersion()>0)
                params.appendf("%cver_=%g", params.length()?'&':'?', context.getClientVersion());
        }

        StringBuffer encodedparams;
        if (params.length())
            encodeUtf8XML(params.str(), encodedparams, 0);

        if (params.length())
            params.setCharAt(0,'&'); //the entire params string will follow the initial param: "?form"

        VStringBuffer folderpath("Folder[@name='%s']", serviceName.str());

        IPropertyTree *folder = data.queryPropTree(folderpath.str());
        if(!folder)
        {
            folder=createPTree("Folder");
            folder->addProp("@name", serviceName.str());
            folder->addProp("@info", serviceName.str());
            folder->addProp("@urlParams", encodedparams);
            if (showSchemaLinks())
                folder->addProp("@showSchemaLinks", "true");
            folder->addPropBool("@isDynamicBinding", isDynamicBinding());
            folder->addPropBool("@isBound", isBound());
            data.addPropTree("Folder", folder);
        }

        MethodInfoArray methods;
        wsdl->getQualifiedNames(context, methods);
        ForEachItemIn(idx, methods)
        {
            CMethodInfo &method = methods.item(idx);
            IPropertyTree *link=createPTree("Link");
            link->addProp("@name", method.m_label.str());
            link->addProp("@info", method.m_label.str());
            StringBuffer path;
            path.appendf("../%s/%s?form%s", serviceName.str(), method.m_label.str(),params.str());
            link->addProp("@path", path.str());

            folder->addPropTree("Link", link);
        }
    }
static void serializeAttributes(StringBuffer& outbuf, IProperties* attrs)
{
    if (attrs)
    {
        Owned<IPropertyIterator> it = attrs->getIterator();
        for (it->first(); it->isValid(); it->next())
        {
            const char* k = it->getPropKey();
            const char* v = attrs->queryProp(k);
            outbuf.append(' ').append(k).append("=\"");
            encodeUtf8XML(v,outbuf);
            outbuf.append('"');
        }
    }
}
Beispiel #3
0
 virtual void endNode(const char *tag, unsigned length, const void *value, bool binary, offset_t endOffset)
 {
     if (datasetLevel)
     {
         if (length)
         {
             if (binary)
                 JBASE64_Encode(value, length, buffer);
             else
                 encodeUtf8XML((const char *)value, buffer);
         }
         buffer.append("</").append(tag).append('>');
         if (streq("Dataset", tag) || streq("Exception", tag))
             datasetLevel--;
     }
 }
 virtual void endNode(const char *tag, unsigned length, const void *value, bool binary, offset_t endOffset)
 {
     if (resultlevel)
     {
         if (length)
         {
             if (binary)
                 JBASE64_Encode(value, length, buffer);
             else
                 encodeUtf8XML((const char *)value, buffer);
         }
         buffer.append("</").append(tag).append('>');
         bool *pIsResultTag = resultChildTags.getValue(tag);
         if (pIsResultTag && *pIsResultTag)
             resultlevel--;
     }
 }
 virtual void newAttribute(const char *name, const char *value)
 {
     if (resultlevel)
     {
         if (streq(name, "@xmlns"))
         {
             if (!(flags & WWV_INCL_NAMESPACES))
                 return;
             if (resultlevel==1)
                 hasXmlns=true;
         }
         if (resultlevel==1 && streq(name, "@name"))
             dsname.set(value).toLowerCase().replace(' ', '_');;
         buffer.append(' ').append(name+1).append("=\"");
         encodeUtf8XML(value, buffer);
         buffer.append('\"');
     }
 }
Beispiel #6
0
inline StringBuffer& operator<<(StringBuffer& buf, const XML& f)
{
    encodeUtf8XML(f.s,buf);
    return buf;
}