%%% ==================================================================== %%% ``The contents of this file are subject to the Erlang Public License, %%% Version 1.1, (the "License"); you may not use this file except in %%% compliance with the License. You should have received a copy of the %%% Erlang Public License along with this software. If not, it can be %%% retrieved via the world wide web at http://www.erlang.org/. %%% %%% Software distributed under the License is distributed on an "AS IS" %%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %%% the License for the specific language governing rights and limitations %%% under the License. %%% %%% The Initial Developer of the Original Code is ProcessOne. %%% Portions created by ProcessOne are Copyright 2006-2013, ProcessOne %%% All Rights Reserved.'' %%% This software is copyright 2006-2013, ProcessOne. %%% %%% %%% @copyright 2006-2013 ProcessOne %%% @author Christophe Romain %%% [http://www.process-one.net/] %%% @version {@vsn}, {@date} {@time} %%% @end %%% ==================================================================== %%% @private %%% @doc

The module {@module} defines the PubSub node %%% tree plugin behaviour. This behaviour is used to check that a PubSub %%% node tree plugin respects the current ejabberd PubSub plugin API.

-module(gen_pubsub_nodetree). -include("jlib.hrl"). -type(host() :: mod_pubsub:host() | mod_pubsub_odbc:host() ). -type(nodeId() :: mod_pubsub:nodeId() | mod_pubsub_odbc:nodeId() ). -type(nodeIdx() :: mod_pubsub:nodeIdx() | mod_pubsub_odbc:nodeIdx() ). -type(itemId() :: mod_pubsub:itemId() | mod_pubsub_odbc:itemId() ). -type(pubsubNode() :: mod_pubsub:pubsubNode() | mod_pubsub_odbc:pubsubNode() ). -type(nodeOptions() :: mod_pubsub:nodeOptions() | mod_pubsub_odbc:nodeOptions() ). -callback init(Host :: host(), ServerHost :: binary(), Opts :: [any()]) -> atom(). -callback terminate(Host :: host(), ServerHost :: binary()) -> atom(). -callback options() -> nodeOptions(). -callback set_node(PubsubNode :: pubsubNode()) -> ok | {result, NodeIdx::mod_pubsub_odbc:nodeIdx()} | {error, xmlel()}. -callback get_node(Host :: host(), NodeId :: nodeId(), From :: jid()) -> pubsubNode() | {error, xmlel()}. -callback get_node(Host :: host(), NodeId :: nodeId()) -> pubsubNode() | {error, xmlel()}. -callback get_node(NodeIdx :: nodeIdx()) -> pubsubNode() | {error, xmlel()}. -callback get_nodes(Host :: host(), From :: jid())-> [pubsubNode()]. -callback get_nodes(Host :: host())-> [pubsubNode()]. -callback get_parentnodes(Host :: host(), NodeId :: nodeId(), From :: jid()) -> [pubsubNode()] | {error, xmlel()}. -callback get_parentnodes_tree(Host :: host(), NodeId :: nodeId(), From :: jid()) -> [{0, [pubsubNode(),...]}]. -callback get_subnodes(Host :: host(), NodeId :: nodeId(), From :: ljid()) -> [pubsubNode()]. -callback get_subnodes_tree(Host :: host(), NodeId :: nodeId(), From :: ljid()) -> [pubsubNode()]. -callback create_node(Host :: host(), NodeId :: nodeId(), Type :: binary(), Owner :: jid(), Options :: nodeOptions(), Parents :: [nodeId()]) -> {ok, NodeIdx::nodeIdx()} | {error, xmlel()}. -callback delete_node(Host :: host(), NodeId :: nodeId()) -> [pubsubNode()].