/*******************************************************************************
* Copyright (c) 2006-2010 eBay Inc. All Rights Reserved.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/
package org.ebayopensource.turmeric.runtime.tests.service1.sample.handlers;
import java.util.Iterator;
import java.util.Map;
import org.ebayopensource.turmeric.runtime.common.impl.handlers.BaseHandler;
import org.ebayopensource.turmeric.runtime.common.pipeline.Message;
import org.ebayopensource.turmeric.runtime.common.pipeline.MessageContext;
import org.ebayopensource.turmeric.runtime.spf.pipeline.ServerMessageContext;
import org.ebayopensource.turmeric.runtime.tests.service1.exceptions.ServiceException;
import org.ebayopensource.turmeric.runtime.tests.service1.sample.errors.TestErrorTypes;
public class ReadHeaderHandler extends BaseHandler {
public void invoke(MessageContext ctx) throws org.ebayopensource.turmeric.runtime.common.exceptions.ServiceException {
Message request = ctx.getRequestMessage();
Message response = ctx.getResponseMessage();
Map<String, String> requestHeaders = request.getTransportHeaders();
if (null == requestHeaders || requestHeaders.isEmpty()) {
throw new ServiceException(TestErrorTypes.NO_REQUEST_HEADERS);
}
ServerMessageContext serverCtx = (ServerMessageContext) ctx;
String serverName = serverCtx.getTargetServerName();
int serverPort = serverCtx.getTargetServerPort();
Map<String,String> queryParams = serverCtx.getQueryParams();
response.setTransportHeader(ClientReadHeaderHandler.SERVER_NAME, serverName);
response.setTransportHeader(ClientReadHeaderHandler.SERVER_PORT, String.valueOf(serverPort));
String t1p = queryParams.get("test1param");
String t2p = queryParams.get("test2param");
StringBuffer b = new StringBuffer();
b.append("test1param=").append(t1p).append(",test2param=").append(t2p);
response.setTransportHeader(ClientReadHeaderHandler.RETURN_QUERY_PARAMS, b.toString());
boolean hasAnyHeaders = false;
Iterator<String> iter = requestHeaders.keySet().iterator();
// Echos all the request headers to response.
while (iter.hasNext()) {
String name = iter.next();
String value = requestHeaders.get(name);
response.setTransportHeader(ClientReadHeaderHandler.COPIED_REQUEST_HEADER_PREFIX + name, value);
hasAnyHeaders = true;
}
if (!hasAnyHeaders) {
throw new ServiceException(TestErrorTypes.NO_REQUEST_HEADERS);
}
}
}