Example usage for org.dom4j.dom DOMDocument appendChild

List of usage examples for org.dom4j.dom DOMDocument appendChild

Introduction

In this page you can find the example usage for org.dom4j.dom DOMDocument appendChild.

Prototype

public org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild) throws DOMException 

Source Link

Usage

From source file:org.onesocialweb.openfire.handler.activity.ActivityQueryHandler.java

License:Apache License

@SuppressWarnings({ "deprecation" })
@Override// w  ww. java 2  s  . c o m
public IQ handleIQ(IQ packet) throws UnauthorizedException {

    JID sender = packet.getFrom();
    JID target = packet.getTo();

    // Process the request inside a try/catch so that unhandled exceptions
    // (oufofbounds etc...) can trigger a server error and we can send a
    // error result packet
    try {
        // If no recipient, then the target is the sender
        if (target == null || target.getNode() == null) {
            target = packet.getFrom();
        }

        // A valid request is an IQ of type get, for a valid and local recipient
        if (!(packet.getType().equals(IQ.Type.get) && target != null && target.getNode() != null
                && userManager.isRegisteredUser(target.getNode()))) {
            IQ result = IQ.createResultIQ(packet);
            result.setChildElement(packet.getChildElement().createCopy());
            result.setError(PacketError.Condition.bad_request);
            return result;
        }

        // We fetch the activities of the target user
        List<ActivityEntry> activities = ActivityManager.getInstance().getActivities(sender.toBareJID(),
                target.toBareJID());

        // Prepare the result packet
        ActivityDomWriter writer = new DefaultActivityDomWriter();
        DOMDocument domDocument = new DOMDocument();
        IQ result = IQ.createResultIQ(packet);
        org.dom4j.Element pubsubElement = result.setChildElement("pubsub", "http://jabber.org/protocol/pubsub");
        org.dom4j.Element itemsElement = pubsubElement.addElement("items");
        itemsElement.addAttribute("node", PEPActivityHandler.NODE);

        for (ActivityEntry entry : activities) {
            Element entryElement = (Element) domDocument
                    .appendChild(domDocument.createElementNS(Atom.NAMESPACE, Atom.ENTRY_ELEMENT));
            writer.write(entry, entryElement);
            domDocument.removeChild(entryElement);
            org.dom4j.Element itemElement = itemsElement.addElement("item");
            itemElement.addAttribute("id", entry.getId());
            itemElement.add((org.dom4j.Element) entryElement);
        }

        // Return and send the result packet
        return result;

    } catch (Exception e) {
        Log.error(LocaleUtils.getLocalizedString("admin.error"), e);
        IQ result = IQ.createResultIQ(packet);
        result.setChildElement(packet.getChildElement().createCopy());
        result.setError(PacketError.Condition.internal_server_error);
        return result;
    }
}

From source file:org.onesocialweb.openfire.handler.inbox.InboxQueryHandler.java

License:Apache License

@SuppressWarnings({ "deprecation" })
@Override/*  w  w w .  j a v a2 s  .  c  om*/
public IQ handleIQ(IQ packet) throws UnauthorizedException {

    final JID sender = packet.getFrom();
    final JID recipient = packet.getTo();

    // Process the request inside a try/catch so that unhandled exceptions
    // (oufofbounds etc...) can trigger a server error and we can send a
    // error result packet
    try {
        // A valid request is an IQ of type get
        if (!(packet.getType().equals(IQ.Type.get))) {
            IQ result = IQ.createResultIQ(packet);
            result.setChildElement(packet.getChildElement().createCopy());
            result.setError(PacketError.Condition.bad_request);
            return result;
        }

        // If a recipient is specified, it must be equal to the sender
        // bareJID
        if (recipient != null && !recipient.toString().equals(sender.toBareJID())) {
            IQ result = IQ.createResultIQ(packet);
            result.setChildElement(packet.getChildElement().createCopy());
            result.setError(PacketError.Condition.not_authorized);
            return result;
        }

        // Only a local user has an inbox
        if (!userManager.isRegisteredUser(sender.getNode())) {
            IQ result = IQ.createResultIQ(packet);
            result.setChildElement(packet.getChildElement().createCopy());
            result.setError(PacketError.Condition.not_authorized);
            return result;
        }

        // We fetch the notifications fot the requesting user
        List<ActivityMessage> messages = inboxManager.getMessages(sender.toBareJID());

        // Prepare the result packet
        ActivityDomWriter writer = new DefaultActivityDomWriter();
        DOMDocument domDocument = new DOMDocument();
        IQ result = IQ.createResultIQ(packet);
        org.dom4j.Element pubsubElement = result.setChildElement("pubsub", "http://jabber.org/protocol/pubsub");
        org.dom4j.Element itemsElement = pubsubElement.addElement("items");
        itemsElement.addAttribute("node", PEPActivityHandler.NODE);

        for (ActivityMessage message : messages) {
            Element entryElement = (Element) domDocument
                    .appendChild(domDocument.createElementNS(Atom.NAMESPACE, Atom.ENTRY_ELEMENT));
            writer.write(message.getActivity(), entryElement);
            domDocument.removeChild(entryElement);
            org.dom4j.Element itemElement = itemsElement.addElement("item");
            itemElement.addAttribute("id", message.getActivity().getId());
            itemElement.add((org.dom4j.Element) entryElement);
        }

        // Return and send the result packet
        return result;

    } catch (Exception e) {
        Log.error(LocaleUtils.getLocalizedString("admin.error"), e);
        IQ result = IQ.createResultIQ(packet);
        result.setChildElement(packet.getChildElement().createCopy());
        result.setError(PacketError.Condition.internal_server_error);
        return result;
    }
}

From source file:org.onesocialweb.openfire.handler.profile.IQProfileQueryHandler.java

License:Apache License

@SuppressWarnings({ "deprecation" })
@Override//from   w  w w  .  jav a 2 s .co m
public IQ handleIQ(IQ packet) throws UnauthorizedException {

    JID sender = packet.getFrom();
    JID target = packet.getTo();

    // Process the request inside a try/catch so that unhandled exceptions
    // (oufofbounds etc...) can trigger a server error and we can send a
    // error result packet
    try {
        // If no recipient, then the target is the sender
        if (target == null || target.getNode() == null) {
            target = packet.getFrom();
        }

        // A valid request is an IQ of type get, for a valid and local recipient
        if (!(packet.getType().equals(IQ.Type.get) && target != null && target.getNode() != null
                && userManager.isRegisteredUser(target.getNode()))) {
            IQ result = IQ.createResultIQ(packet);
            result.setChildElement(packet.getChildElement().createCopy());
            result.setError(PacketError.Condition.bad_request);
            return result;
        }

        // We fetch the profile of the target user
        Profile profile = ProfileManager.getInstance().getProfile(sender.toBareJID(), target.toBareJID());

        // Prepare the result packet
        VCard4DomWriter writer = new DefaultVCard4DomWriter();
        DOMDocument domDocument = new DOMDocument();
        IQ result = IQ.createResultIQ(packet);
        Element query = (Element) domDocument.appendChild(domDocument.createElementNS(NAMESPACE, NAME));
        if (profile != null) {
            writer.toElement(profile, query);
        } else {
            query.appendChild(domDocument.createElementNS(VCard4.NAMESPACE, VCard4.VCARD_ELEMENT));
        }
        result.setChildElement((org.dom4j.Element) query);

        // Return and send the result packet
        return result;

    } catch (Exception e) {
        Log.error(LocaleUtils.getLocalizedString("admin.error"), e);
        IQ result = IQ.createResultIQ(packet);
        result.setChildElement(packet.getChildElement().createCopy());
        result.setError(PacketError.Condition.internal_server_error);
        return result;
    }
}

From source file:org.onesocialweb.openfire.handler.relation.IQRelationQueryHandler.java

License:Apache License

@SuppressWarnings({ "deprecation" })
@Override/*from   w w w . j a v a2 s .  c o m*/
public IQ handleIQ(IQ packet) throws UnauthorizedException {

    JID sender = packet.getFrom();
    JID target = packet.getTo();

    // Process the request inside a try/catch so that unhandled exceptions
    // (oufofbounds etc...) can trigger a server error and we can send a
    // error result packet
    try {
        // If no recipient, then the target is the sender
        if (target == null || target.getNode() == null) {
            target = packet.getFrom();
        }

        // A valid request is an IQ of type get, for a valid and local recipient
        if (!(packet.getType().equals(IQ.Type.get) && target != null && target.getNode() != null
                && userManager.isRegisteredUser(target.getNode()))) {
            IQ result = IQ.createResultIQ(packet);
            result.setChildElement(packet.getChildElement().createCopy());
            result.setError(PacketError.Condition.bad_request);
            return result;
        }

        // We fetch the relations of the target user
        List<Relation> relations = RelationManager.getInstance().getRelations(sender.toBareJID(),
                target.toBareJID());

        // Prepare the result packet
        RelationDomWriter writer = new DefaultRelationDomWriter();
        DOMDocument domDocument = new DOMDocument();
        IQ result = IQ.createResultIQ(packet);
        Element query = (Element) domDocument.appendChild(domDocument.createElementNS(NAMESPACE, NAME));
        for (Relation relation : relations) {
            writer.toElement(relation, query);
        }
        result.setChildElement((org.dom4j.Element) query);
        // Return and send the result packet
        return result;

    } catch (Exception e) {
        Log.error(LocaleUtils.getLocalizedString("admin.error"), e);
        IQ result = IQ.createResultIQ(packet);
        result.setChildElement(packet.getChildElement().createCopy());
        result.setError(PacketError.Condition.internal_server_error);
        return result;
    }
}

From source file:org.onesocialweb.openfire.manager.ActivityManager.java

License:Apache License

private void notify(String fromJID, ActivityEntry entry) throws UserNotFoundException {

    // TODO We may want to do some cleaning of activities before
    // forwarding them (e.g. remove the acl, it is no one business)
    final ActivityDomWriter writer = new DefaultActivityDomWriter();
    final XMPPServer server = XMPPServer.getInstance();
    final List<Subscription> subscriptions = getSubscribers(fromJID);
    //   final Roster roster = XMPPServer.getInstance().getRosterManager().getRoster(new JID(fromJID).getNode());
    final DOMDocument domDocument = new DOMDocument();

    // Prepare the message
    final Element entryElement = (Element) domDocument
            .appendChild(domDocument.createElementNS(Atom.NAMESPACE, Atom.ENTRY_ELEMENT));
    writer.write(entry, entryElement);/*  www  . j  a  va  2 s.  com*/
    domDocument.removeChild(entryElement);

    final Message message = new Message();
    message.setFrom(fromJID);
    message.setBody("New activity: " + entry.getTitle());
    message.setType(Message.Type.headline);
    org.dom4j.Element eventElement = message.addChildElement("event",
            "http://jabber.org/protocol/pubsub#event");
    org.dom4j.Element itemsElement = eventElement.addElement("items");
    itemsElement.addAttribute("node", PEPActivityHandler.NODE);
    org.dom4j.Element itemElement = itemsElement.addElement("item");
    itemElement.addAttribute("id", entry.getId());
    itemElement.add((org.dom4j.Element) entryElement);

    // Keep a list of people we sent it to avoid duplicates
    List<String> alreadySent = new ArrayList<String>();

    // Send to this user
    alreadySent.add(fromJID);
    message.setTo(fromJID);
    server.getMessageRouter().route(message);

    // Send to all subscribers
    for (Subscription activitySubscription : subscriptions) {
        String recipientJID = activitySubscription.getSubscriber();
        if (!canSee(fromJID, entry, recipientJID)) {
            continue;
        }
        alreadySent.add(recipientJID);
        message.setTo(recipientJID);
        server.getMessageRouter().route(message);
    }

    // Send to recipients, if they can see it and have not already received it
    if (entry.hasRecipients()) {
        for (AtomReplyTo recipient : entry.getRecipients()) {
            //TODO This is dirty, the recipient should be an IRI etc...
            String recipientJID = recipient.getHref();
            if (!alreadySent.contains(recipientJID) && canSee(fromJID, entry, recipientJID)) {
                alreadySent.add(fromJID);

                message.setTo(recipientJID);
                server.getMessageRouter().route(message);
            }
        }
    }
}

From source file:org.onesocialweb.openfire.manager.RelationManager.java

License:Apache License

private void notify(String localJID, Relation relation) {
    final DOMDocument domDocument = new DOMDocument();
    final Element entryElement = (Element) domDocument
            .appendChild(domDocument.createElementNS(Onesocialweb.NAMESPACE, Onesocialweb.RELATION_ELEMENT));
    final RelationDomWriter writer = new DefaultRelationDomWriter();
    writer.write(relation, entryElement);
    domDocument.removeChild(entryElement);

    final Message message = new Message();
    message.setFrom(localJID);/* w ww . ja  va2  s.  c o m*/
    message.setType(Message.Type.headline);
    org.dom4j.Element eventElement = message.addChildElement("event",
            "http://jabber.org/protocol/pubsub#event");
    org.dom4j.Element itemsElement = eventElement.addElement("items");
    itemsElement.addAttribute("node", NODE);
    org.dom4j.Element itemElement = itemsElement.addElement("item");
    itemElement.addAttribute("id", relation.getId());
    itemElement.add((org.dom4j.Element) entryElement);

    // Send to this user
    message.setTo(getOtherEnd(relation, localJID));
    server.getMessageRouter().route(message);
}