예제 #1
0
 public static void addDateHeaderIfRequired(HttpServerExchange exchange) {
   HeaderMap responseHeaders = exchange.getResponseHeaders();
   if (exchange.getConnection().getUndertowOptions().get(UndertowOptions.ALWAYS_SET_DATE, true)
       && !responseHeaders.contains(Headers.DATE)) {
     long time = System.nanoTime();
     if (time < nextUpdateTime) {
       responseHeaders.put(Headers.DATE, cachedDateString);
     } else {
       long realTime = System.currentTimeMillis();
       String dateString = DateUtils.toDateString(new Date(realTime));
       cachedDateString = dateString;
       nextUpdateTime = time + 1000000000;
       responseHeaders.put(Headers.DATE, dateString);
     }
   }
 }
예제 #2
0
 /**
  * Get the set of names for all text headers
  *
  * @param caseInsensitive {@code true} if names should be added in a case insensitive
  * @return The set of names for all text headers
  */
 public Set<AsciiString> names(boolean caseInsensitive) {
   final Set<AsciiString> names =
       caseInsensitive
           ? new TreeSet<AsciiString>(AsciiString.CASE_INSENSITIVE_ORDER)
           : new LinkedHashSet<AsciiString>(size());
   headers.forEachName(
       new HeaderMap.NameVisitor() {
         @Override
         public boolean visit(CharSequence name) {
           names.add((AsciiString) name);
           return true;
         }
       });
   return names;
 }
예제 #3
0
 @Override
 public BinaryHeaders forEachEntry(final BinaryHeaders.BinaryHeaderVisitor visitor) {
   headers.forEachEntry(
       new HeaderMap.EntryVisitor() {
         @Override
         public boolean visit(Entry<CharSequence, CharSequence> entry) {
           try {
             return visitor.visit((AsciiString) entry.getKey(), (AsciiString) entry.getValue());
           } catch (Exception e) {
             PlatformDependent.throwException(e);
             return false;
           }
         }
       });
   return this;
 }
예제 #4
0
  @Override
  public List<Map.Entry<AsciiString, AsciiString>> entries() {
    int size = size();
    @SuppressWarnings("unchecked")
    final Map.Entry<AsciiString, AsciiString>[] all = new Map.Entry[size];

    headers.forEachEntry(
        new HeaderMap.EntryVisitor() {
          int cnt;

          @Override
          public boolean visit(Entry<CharSequence, CharSequence> entry) {
            all[cnt++] = new AsciiStringHeaderEntry(entry);
            return true;
          }
        });

    return Arrays.asList(all);
  }
예제 #5
0
 @Override
 public boolean remove(AsciiString name) {
   return headers.remove(name);
 }
예제 #6
0
 @Override
 public BinaryHeaders add(AsciiString name, AsciiString... values) {
   headers.add(name, values);
   return this;
 }
예제 #7
0
 @Override
 public BinaryHeaders add(AsciiString name, Iterable<AsciiString> values) {
   headers.add(name, values);
   return this;
 }
예제 #8
0
 @Override
 public Set<AsciiString> names() {
   return names(headers.isIgnoreCase());
 }
예제 #9
0
 public boolean contains(AsciiString name, AsciiString value, boolean ignoreCase) {
   return headers.contains(name, value);
 }
예제 #10
0
 @Override
 public boolean isEmpty() {
   return headers.isEmpty();
 }
예제 #11
0
 @Override
 public int size() {
   return headers.size();
 }
예제 #12
0
 @Override
 public List<AsciiString> getAllAndRemove(AsciiString name) {
   return headers.getAllAndRemove(name, VALUE_UNMARSHALLER);
 }
예제 #13
0
 @Override
 public AsciiString getAndRemove(AsciiString name) {
   return (AsciiString) headers.getAndRemove(name);
 }
예제 #14
0
 @Override
 public AsciiString get(AsciiString name) {
   return (AsciiString) headers.get(name);
 }
예제 #15
0
 @Override
 public BinaryHeaders clear() {
   headers.clear();
   return this;
 }
예제 #16
0
 @Override
 public BinaryHeaders set(AsciiString name, AsciiString value) {
   headers.set(name, value);
   return this;
 }