001package com.nimbusds.jose.util; 002 003 004import net.jcip.annotations.ThreadSafe; 005 006 007/** 008 * Abstract retrieval of resources by URL with HTTP timeout and entity size 009 * restrictions. 010 */ 011@ThreadSafe 012public abstract class AbstractRestrictedResourceRetriever implements RestrictedResourceRetriever { 013 014 015 /** 016 * The HTTP connect timeout, in milliseconds. 017 */ 018 private int connectTimeout; 019 020 021 /** 022 * The HTTP read timeout, in milliseconds. 023 */ 024 private int readTimeout; 025 026 027 /** 028 * The HTTP entity size limit, in bytes. 029 */ 030 private int sizeLimit; 031 032 033 /** 034 * Creates a new abstract restricted resource retriever. 035 * 036 * @param connectTimeout The HTTP connects timeout, in milliseconds, 037 * zero for infinite. Must not be negative. 038 * @param readTimeout The HTTP read timeout, in milliseconds, zero 039 * for infinite. Must not be negative. 040 * @param sizeLimit The HTTP entity size limit, in bytes, zero for 041 * infinite. Must not be negative. 042 */ 043 public AbstractRestrictedResourceRetriever(int connectTimeout, int readTimeout, int sizeLimit) { 044 setConnectTimeout(connectTimeout); 045 setReadTimeout(readTimeout); 046 setSizeLimit(sizeLimit); 047 } 048 049 050 @Override 051 public int getConnectTimeout() { 052 053 return connectTimeout; 054 } 055 056 057 @Override 058 public void setConnectTimeout(final int connectTimeoutMs) { 059 060 if (connectTimeoutMs < 0) { 061 throw new IllegalArgumentException("The connect timeout must not be negative"); 062 } 063 064 this.connectTimeout = connectTimeoutMs; 065 } 066 067 068 @Override 069 public int getReadTimeout() { 070 071 return readTimeout; 072 } 073 074 075 @Override 076 public void setReadTimeout(final int readTimeoutMs) { 077 078 if (readTimeoutMs < 0) { 079 throw new IllegalArgumentException("The read timeout must not be negative"); 080 } 081 082 this.readTimeout = readTimeoutMs; 083 } 084 085 086 @Override 087 public int getSizeLimit() { 088 089 return sizeLimit; 090 } 091 092 093 @Override 094 public void setSizeLimit(int sizeLimitBytes) { 095 096 if (sizeLimitBytes < 0) { 097 throw new IllegalArgumentException("The size limit must not be negative"); 098 } 099 100 this.sizeLimit = sizeLimitBytes; 101 } 102}