src/server/webdav/saxhandler.h

changeset 107
7e81699d1f77
parent 106
b122f34ddc80
child 108
2a394ccdd778
equal deleted inserted replaced
106:b122f34ddc80 107:7e81699d1f77
1 /*
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
3 *
4 * Copyright 2013 Olaf Wintermann. All rights reserved.
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions are met:
8 *
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #ifndef SAXHANDLER_H
30 #define SAXHANDLER_H
31
32 #include "davparser.h"
33
34 #include <xercesc/sax2/DefaultHandler.hpp>
35
36 using namespace xercesc;
37
38 /* stack */
39 #define XSTACK_PUSH(elm) xstack_push(&xmlStack, elm)
40 #define XSTACK_POP() xstack_pop(&xmlStack)
41 #define XSTACK_CUR() (xmlStack) ? (XmlElement*)xmlStack->data : NULL;
42 void xstack_push(UcxList **stack, XmlElement *elm);
43 XmlElement* xstack_pop(UcxList **stack);
44
45 class PropfindHandler : public DefaultHandler {
46 public:
47 PropfindHandler(PropfindRequest *rq, pool_handle_t *p);
48 virtual ~PropfindHandler();
49
50 void startElement(
51 const XMLCh* const uri,
52 const XMLCh* const localname,
53 const XMLCh* const qname,
54 const Attributes& attrs);
55
56 void endElement(
57 const XMLCh* const uri,
58 const XMLCh* const localname,
59 const XMLCh* const qname);
60
61 void startDocument();
62
63 void endDocument();
64
65 private:
66 PropfindRequest *davrq;
67 pool_handle_t *pool;
68
69 bool davPropTag;
70 DavProperty *property;
71 };
72
73
74 class ProppatchHandler : public DefaultHandler {
75 public:
76 ProppatchHandler(ProppatchRequest *rq, pool_handle_t *p);
77 virtual ~ProppatchHandler();
78
79 void startElement(
80 const XMLCh* const uri,
81 const XMLCh* const localname,
82 const XMLCh* const qname,
83 const Attributes& attrs);
84
85 void endElement(
86 const XMLCh* const uri,
87 const XMLCh* const localname,
88 const XMLCh* const qname);
89
90 void characters(const XMLCh *const chars, const XMLSize_t length);
91
92 void startDocument();
93
94 void endDocument();
95
96 private:
97 ProppatchRequest *davrq;
98 pool_handle_t *pool;
99
100 bool davPropTag;
101 XmlElement *rootElement;
102 XmlElement *newElement;
103 UcxList *xmlStack;
104
105 //DavProperty *property;
106 int updateMode; /* 0 = set, 1 = remove, -1 = undefined */
107 };
108
109 #endif /* SAXHANDLER_H */
110

mercurial