View Javadoc

1   package com.atlassian.plugins.rest.module.filter;
2   
3   import java.text.ParseException;
4   
5   import com.sun.jersey.core.header.reader.HttpHeaderReader;
6   
7   // Direct copy from Jersey sources, made because source class is
8   // package private. DO NOT CHANGE!
9   /* package */ class HttpHeaderListAdapter extends HttpHeaderReader {
10      private HttpHeaderReader reader;
11  
12      boolean isTerminated;
13  
14      public HttpHeaderListAdapter(HttpHeaderReader reader) {
15          this.reader = reader;
16      }
17  
18      public void reset() {
19          isTerminated = false;
20      }
21  
22  
23      @Override
24      public boolean hasNext() {
25          if (isTerminated)
26              return false;
27  
28          if (reader.hasNext()) {
29              if (reader.hasNextSeparator(',', true)) {
30                  isTerminated = true;
31                  return false;
32              } else
33                  return true;
34          }
35  
36          return false;
37      }
38  
39      @Override
40      public boolean hasNextSeparator(char separator, boolean skipWhiteSpace) {
41          if (isTerminated)
42              return false;
43  
44          if (reader.hasNextSeparator(',', skipWhiteSpace)) {
45              isTerminated = true;
46              return false;
47          } else
48              return reader.hasNextSeparator(separator, skipWhiteSpace);
49      }
50  
51      @Override
52      public Event next() throws ParseException {
53          return next(true);
54      }
55  
56      @Override
57      public HttpHeaderReader.Event next(boolean skipWhiteSpace) throws ParseException {
58          return next(skipWhiteSpace, false);
59      }
60  
61      @Override
62      public HttpHeaderReader.Event next(boolean skipWhiteSpace, boolean preserveBackslash) throws ParseException {
63          if (isTerminated)
64              throw new ParseException("End of header", getIndex());
65  
66          if (reader.hasNextSeparator(',', skipWhiteSpace)) {
67              isTerminated = true;
68              throw new ParseException("End of header", getIndex());
69          }
70  
71          return reader.next(skipWhiteSpace, preserveBackslash);
72      }
73  
74      @Override
75      public String nextSeparatedString(char startSeparator, char endSeparator) throws ParseException {
76          if (isTerminated)
77              throw new ParseException("End of header", getIndex());
78  
79          if (reader.hasNextSeparator(',', true)) {
80              isTerminated = true;
81              throw new ParseException("End of header", getIndex());
82          }
83  
84          return reader.nextSeparatedString(startSeparator, endSeparator);
85      }
86  
87      @Override
88      public HttpHeaderReader.Event getEvent() {
89          return reader.getEvent();
90      }
91  
92      @Override
93      public String getEventValue() {
94          return reader.getEventValue();
95      }
96  
97      @Override
98      public String getRemainder() {
99          return reader.getRemainder();
100     }
101 
102     @Override
103     public int getIndex() {
104         return reader.getIndex();
105     }
106 }