Hi, Please use the user@ mailing list instead of use dev@ to ask this kind of question. I just checked the code of camel-restlet, it is a litter more complicate than just setup the Cache-Control header[1].
RestLet message provides the setCacheDirectives() method to do this kind of work. I just fill a JIRA[1] in camel-restlet for it [1]http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9 [2]https://issues.apache.org/jira/browse/CAMEL-6085 -- Willem Jiang Red Hat, Inc. FuseSource is now part of Red Hat Web: http://www.fusesource.com | http://www.redhat.com Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English) http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese) Twitter: willemjiang Weibo: 姜宁willem On Thursday, February 14, 2013 at 10:49 PM, apatel wrote: > We try to set the Cache-Control metadata in restlet route as below. But It > did not set Cache-Control on response. Also when i look at the code The > Restlet component Representation class does not have set Cache-Control > method. > > Please help me to resolve this issue. > > > <route xmlns="http://camel.apache.org/schema/spring" trace="true"> > <from > uri="restlet:/test/maxAgeCache?headerFilterStrategy=encoreRestletHeaderFilterStrategy"/> > <setHeader headerName="Content-Type"> > <constant>application/json</constant> > </setHeader> > <setHeader headerName="Cache-Control"> > <constant>max-age=20</constant> > </setHeader> > <setBody> > <constant>{ "status":"SUCCESS" }</constant> > </setBody> > </route> > > Struts2 also suggest to use the Cache-Control & Expires. > ================================ > > Use the correct HTTP headers (Cache-Control & Expires). > When returning HTML views, make sure to add the correct headers so browsers > know how to cache them. > > http://struts.apache.org/development/2.x/docs/performance-tuning.html > ============================================= > > > Below method in DefaultRestletBinding class only set the headers that set in > ((Representation) message.getEntity()).setxxx methods. I don't see the > Cache-Control sets anywhere. > > protected void setResponseHeader(Exchange exchange, org.restlet.Message > message, String header, Object value) { > // put the header first > message.getAttributes().put(header, value); > > // there must be a value going forward > if (value == null) { > return; > } > > // special for certain headers > if (message.getEntity() != null) { > if (header.equalsIgnoreCase(HeaderConstants.HEADER_EXPIRES)) { > if (value instanceof Calendar) { > message.getEntity().setExpirationDate(((Calendar) > value).getTime()); > } else if (value instanceof Date) { > message.getEntity().setExpirationDate((Date) value); > } else if (value instanceof String) { > SimpleDateFormat format = new > SimpleDateFormat(RFC_2822_DATE_PATTERN, Locale.ENGLISH); > try { > Date date = format.parse((String) value); > message.getEntity().setExpirationDate(date); > } catch (ParseException e) { > LOG.debug("Header {} with value {} cannot be > converted as a Date. The value will be ignored.", > HeaderConstants.HEADER_EXPIRES, value); > } > } > } > > if > (header.equalsIgnoreCase(HeaderConstants.HEADER_LAST_MODIFIED)) { > if (value instanceof Calendar) { > message.getEntity().setModificationDate(((Calendar) > value).getTime()); > } else if (value instanceof Date) { > message.getEntity().setModificationDate((Date) value); > } else if (value instanceof String) { > SimpleDateFormat format = new > SimpleDateFormat(RFC_2822_DATE_PATTERN, Locale.ENGLISH); > try { > Date date = format.parse((String) value); > message.getEntity().setModificationDate(date); > } catch (ParseException e) { > LOG.debug("Header {} with value {} cannot be > converted as a Date. The value will be ignored.", > HeaderConstants.HEADER_LAST_MODIFIED, value); > } > } > } > > if > (header.equalsIgnoreCase(HeaderConstants.HEADER_CONTENT_LENGTH)) { > if (value instanceof Long) { > message.getEntity().setSize((Long) value); > } else if (value instanceof Integer) { > message.getEntity().setSize((Integer) value); > } else { > Long num = > exchange.getContext().getTypeConverter().tryConvertTo(Long.class, value); > if (num != null) { > message.getEntity().setSize(num); > } else { > LOG.debug("Header {} with value {} cannot be > converted as a Long. The value will be ignored.", > HeaderConstants.HEADER_CONTENT_LENGTH, value); > } > } > } > > if > (header.equalsIgnoreCase(HeaderConstants.HEADER_CONTENT_TYPE)) { > if (value instanceof MediaType) { > message.getEntity().setMediaType((MediaType) value); > } else { > String type = value.toString(); > MediaType media = MediaType.valueOf(type); > if (media != null) { > message.getEntity().setMediaType(media); > } else { > LOG.debug("Header {} with value {} cannot be > converted as a MediaType. The value will be ignored.", > HeaderConstants.HEADER_CONTENT_TYPE, value); > } > } > } > } > } > > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/Camel-restlet-setting-Cache-Control-metadata-tp5727602.html > Sent from the Camel Development mailing list archive at Nabble.com > (http://Nabble.com).