Search in sources :

Example 6 with Node

use of com.predic8.membrane.core.interceptor.balancer.Node in project service-proxy by membrane.

the class EtcdRegistryApiConfig method findAdminConsole.

private EtcdNodeInformation findAdminConsole() {
    Object routerObj = context.getBean(Router.class);
    if (routerObj == null)
        throw new RuntimeException("Router not found, cannot publish admin console");
    Router router = (Router) routerObj;
    for (Rule r : router.getRuleManager().getRules()) {
        if (!(r instanceof AbstractServiceProxy))
            continue;
        for (Interceptor i : r.getInterceptors()) {
            if (i instanceof AdminConsoleInterceptor) {
                String name = r.getName();
                String host = ((ServiceProxy) r).getExternalHostname();
                if (host == null)
                    host = getLocalHostname();
                String port = Integer.toString(((AbstractServiceProxy) r).getPort());
                EtcdNodeInformation node = new EtcdNodeInformation(null, null, host, port, name);
                return node;
            }
        }
    }
    throw new RuntimeException("Admin console not found but is needed. Add a service proxy with an admin console.");
}
Also used : AbstractServiceProxy(com.predic8.membrane.core.rules.AbstractServiceProxy) AdminConsoleInterceptor(com.predic8.membrane.core.interceptor.administration.AdminConsoleInterceptor) ServiceProxy(com.predic8.membrane.core.rules.ServiceProxy) AbstractServiceProxy(com.predic8.membrane.core.rules.AbstractServiceProxy) EtcdNodeInformation(com.predic8.membrane.core.cloud.etcd.EtcdNodeInformation) Router(com.predic8.membrane.core.Router) Rule(com.predic8.membrane.core.rules.Rule) Interceptor(com.predic8.membrane.core.interceptor.Interceptor) AdminConsoleInterceptor(com.predic8.membrane.core.interceptor.administration.AdminConsoleInterceptor)

Example 7 with Node

use of com.predic8.membrane.core.interceptor.balancer.Node in project service-proxy by membrane.

the class AdminPageBuilder method createNodesTable.

protected void createNodesTable(String balancerName) throws Exception {
    table().attr("cellpadding", "0", "cellspacing", "0", "border", "0", "class", "display nodesTable");
    thead();
    tr();
    createThs("Node", "Status", "Count", "Errors", "Time since last up", "Sessions", "Current Threads", "Action");
    end();
    end();
    tbody();
    for (Node n : BalancerUtil.lookupBalancer(router, balancerName).getAllNodesByCluster(params.get("cluster"))) {
        tr();
        td();
        createLink("" + n.getHost() + ":" + n.getPort(), "node", "show", createQueryString("balancer", balancerName, "cluster", params.get("cluster"), "host", n.getHost(), "port", "" + n.getPort()));
        end();
        createTds(getStatusString(n), "" + n.getCounter(), String.format("%1$.2f%%", n.getErrors() * 100), formatDurationHMS(System.currentTimeMillis() - n.getLastUpTime()), "" + BalancerUtil.lookupBalancer(router, balancerName).getSessionsByNode(params.get("cluster"), n).size(), "" + n.getThreads());
        td();
        createIcon("ui-icon-eject", "node", "takeout", "takeout", createQuery4Node(n));
        createIcon("ui-icon-circle-arrow-n", "node", "up", "up", createQuery4Node(n));
        createIcon("ui-icon-circle-arrow-s", "node", "down", "down", createQuery4Node(n));
        if (!readOnly)
            createIcon("ui-icon-trash", "node", "delete", "delete", createQuery4Node(n));
        end();
        end();
    }
    end();
    end();
    script().raw("$(document).ready(function() { $('.nodesTable').dataTable({'bJQueryUI': true, \"bPaginate\": false}); } );").end();
}
Also used : Node(com.predic8.membrane.core.interceptor.balancer.Node)

Example 8 with Node

use of com.predic8.membrane.core.interceptor.balancer.Node in project service-proxy by membrane.

the class XMLContentFilter method createElementFinder.

/**
 * Constructs an XMLElementFinder which can make a first decision whether a
 * given XPath expression has any chance of succeeding.
 *
 * This only works if the XPath expression is simple enough. (The XPath
 * expression must be a UnionExpr consisting of PathExprs, which start with
 * "//foo", optionally followed by "[namespace-uri()='http://bar/']").
 *
 * @return the xmlElementFinder as described above, or null if the XPath
 *         expression is too complex.
 */
static XMLElementFinder createElementFinder(String xPath) {
    SimpleXPathAnalyzer a = new SimpleXPathAnalyzer();
    List<ContainerNode> intersectExceptExprs = a.getIntersectExceptExprs(xPath);
    if (intersectExceptExprs == null)
        return null;
    List<QName> rootElements = new ArrayList<QName>();
    for (ContainerNode node : intersectExceptExprs) {
        QName n = a.getElement(node);
        if (n == null)
            return null;
        rootElements.add(n);
    }
    return new XMLElementFinder(rootElements);
}
Also used : QName(javax.xml.namespace.QName) ArrayList(java.util.ArrayList) ContainerNode(com.predic8.membrane.core.interceptor.xmlcontentfilter.SimpleXPathParser.ContainerNode)

Example 9 with Node

use of com.predic8.membrane.core.interceptor.balancer.Node in project service-proxy by membrane.

the class XMLContentFilter method removeElementsIfNecessary.

/**
 * @param originalMessage
 * @param xopDecodedMessage
 * @param doc
 * @throws XPathExpressionException
 * @throws TransformerException
 * @throws TransformerConfigurationException
 * @throws TransformerFactoryConfigurationError
 */
private void removeElementsIfNecessary(Message originalMessage, Message xopDecodedMessage, Document doc) throws XPathExpressionException, TransformerException, TransformerConfigurationException, TransformerFactoryConfigurationError {
    NodeList toBeDeleted = (NodeList) createXPathExpression().evaluate(doc, XPathConstants.NODESET);
    if (toBeDeleted.getLength() > 0) {
        // change is necessary
        originalMessage.getHeader().removeFields(Header.CONTENT_ENCODING);
        if (xopDecodedMessage != null) {
            originalMessage.getHeader().removeFields(Header.CONTENT_TYPE);
            if (xopDecodedMessage.getHeader().getContentType() != null)
                originalMessage.getHeader().setContentType(xopDecodedMessage.getHeader().getContentType());
        }
        for (int i = 0; i < toBeDeleted.getLength(); i++) {
            Node n = toBeDeleted.item(i);
            n.getParentNode().removeChild(n);
        }
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        createTransformer().transform(new DOMSource(doc), new StreamResult(baos));
        originalMessage.setBodyContent(baos.toByteArray());
    }
}
Also used : DOMSource(javax.xml.transform.dom.DOMSource) StreamResult(javax.xml.transform.stream.StreamResult) NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) ContainerNode(com.predic8.membrane.core.interceptor.xmlcontentfilter.SimpleXPathParser.ContainerNode) ByteArrayOutputStream(java.io.ByteArrayOutputStream)

Example 10 with Node

use of com.predic8.membrane.core.interceptor.balancer.Node in project service-proxy by membrane.

the class BlueprintElementParser method parseChildren.

protected void parseChildren(Element element, ParserContext context, MutableBeanMetadata mcm, BlueprintParser globalParser) {
    element.setUserData(BlueprintNamespaceParser.KEY_PARENT_CLASS_NAME, mcm.getRuntimeClass().getName(), null);
    NodeList nl = element.getChildNodes();
    for (int i = 0; i < nl.getLength(); i++) {
        Node node = nl.item(i);
        if (node instanceof Element) {
            handleChildElement((Element) node, context, mcm, globalParser);
        }
    }
}
Also used : NodeList(org.w3c.dom.NodeList) Node(org.w3c.dom.Node) Element(org.w3c.dom.Element) MCElement(com.predic8.membrane.annot.MCElement)

Aggregations

Exchange (com.predic8.membrane.core.exchange.Exchange)5 Node (com.predic8.membrane.core.interceptor.balancer.Node)5 ContainerNode (com.predic8.membrane.core.interceptor.xmlcontentfilter.SimpleXPathParser.ContainerNode)4 ServiceProxy (com.predic8.membrane.core.rules.ServiceProxy)4 MCElement (com.predic8.membrane.annot.MCElement)3 Test (org.junit.Test)3 Element (org.w3c.dom.Element)3 LoadBalancingInterceptor (com.predic8.membrane.core.interceptor.balancer.LoadBalancingInterceptor)2 Node (com.predic8.membrane.core.interceptor.xmlcontentfilter.SimpleXPathParser.Node)2 RoundBracketNode (com.predic8.membrane.core.interceptor.xmlcontentfilter.SimpleXPathParser.RoundBracketNode)2 SquareBracketNode (com.predic8.membrane.core.interceptor.xmlcontentfilter.SimpleXPathParser.SquareBracketNode)2 StringNode (com.predic8.membrane.core.interceptor.xmlcontentfilter.SimpleXPathParser.StringNode)2 UnparsedStringNode (com.predic8.membrane.core.interceptor.xmlcontentfilter.SimpleXPathParser.UnparsedStringNode)2 StringWriter (java.io.StringWriter)2 ArrayList (java.util.ArrayList)2 QName (javax.xml.namespace.QName)2 Node (org.w3c.dom.Node)2 NodeList (org.w3c.dom.NodeList)2 Router (com.predic8.membrane.core.Router)1 EtcdNodeInformation (com.predic8.membrane.core.cloud.etcd.EtcdNodeInformation)1