1 package org
.argeo
.cms
.dav
;
3 import java
.io
.IOException
;
4 import java
.io
.InputStream
;
5 import java
.util
.ArrayList
;
8 import javax
.xml
.namespace
.QName
;
9 import javax
.xml
.stream
.FactoryConfigurationError
;
10 import javax
.xml
.stream
.XMLInputFactory
;
11 import javax
.xml
.stream
.XMLStreamException
;
12 import javax
.xml
.stream
.XMLStreamReader
;
14 public class DavPropfind
{
15 private DavDepth depth
;
16 private boolean propname
= false;
17 private boolean allprop
= false;
18 private List
<QName
> props
= new ArrayList
<>();
20 public DavPropfind(DavDepth depth
) {
24 public boolean isPropname() {
28 public void setPropname(boolean propname
) {
29 this.propname
= propname
;
32 public boolean isAllprop() {
36 public void setAllprop(boolean allprop
) {
37 this.allprop
= allprop
;
40 public List
<QName
> getProps() {
44 public DavDepth
getDepth() {
48 public static DavPropfind
load(DavDepth depth
, InputStream in
) throws IOException
{
50 DavPropfind res
= null;
51 XMLInputFactory inputFactory
= XMLInputFactory
.newFactory();
52 XMLStreamReader reader
= inputFactory
.createXMLStreamReader(in
);
53 while (reader
.hasNext()) {
55 if (reader
.isStartElement()) {
56 QName name
= reader
.getName();
57 // System.out.println(name);
58 DavXmlElement davXmlElement
= DavXmlElement
.toEnum(name
);
59 if (davXmlElement
!= null) {
60 switch (davXmlElement
) {
62 res
= new DavPropfind(depth
);
68 res
.setPropname(true);
75 // TODO check that the format is really respected
76 res
.getProps().add(reader
.getName());
83 if (res
.isPropname()) {
84 if (!res
.getProps().isEmpty() || res
.isAllprop())
85 throw new IllegalArgumentException("Cannot set other values if propname is set");
88 } catch (FactoryConfigurationError
| XMLStreamException e
) {
89 throw new RuntimeException("Cannot load propfind", e
);