package org.caudexorigo.jpt.web.netty.routing.test;
import java.io.StringReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
import org.caudexorigo.http.netty.HttpAction;
import org.caudexorigo.http.netty.HttpRequestWrapper;
import org.caudexorigo.jpt.web.netty.NettyWebJptAction;
import org.caudexorigo.jpt.web.netty.routing.RoutingManager;
import org.jboss.netty.buffer.ChannelBuffer;
import org.jboss.netty.handler.codec.http.HttpHeaders;
import org.jboss.netty.handler.codec.http.HttpMethod;
import org.jboss.netty.handler.codec.http.HttpRequest;
import org.jboss.netty.handler.codec.http.HttpVersion;
/**
* Please read
*
*/
public class TestRouting
{
private static final String routingFile =
"#This is a comment\n" +
"\n" +
"#method uri pattern template\n" +
"\n" + "DENY /private/.*\n" +
"GET /<name> <name>.jpt\n" +
"GET /detalhes/<event> detalhes.jpt\n" +
"GET /subscricao/<action>/<event> private/event-<event>.jpt\n" + "\n" +
"POST /login login.jpt\n" +
"\n" +
"* /endpoint endpoint.jpt";
public static void main(String[] args)
{
StringReader reader = new StringReader(routingFile);
RoutingManager routingManager = new RoutingManager(reader, "/server/http/wwwroot/", "http://www.example.com");
HttpRequestWrapper requestWrapper = null;// getRequestWrapper();
System.out.println("Testing Routing manager");
System.out.println();
System.out.println("Configuration file");
System.out.println(routingFile);
System.out.println();
System.out.println();
HttpAction action = null;
String location = null;
String locations[] = { "/private/goldpot.doc", "/file", "/subscricao/criar/editar" };
for (int i = 0; i != locations.length; ++i)
{
try
{
location = locations[i];
System.out.println(String.format("- Acessing '%s'", location));
action = routingManager.map(HttpMethod.GET, location, requestWrapper);
if (action instanceof NettyWebJptAction)
{
System.out.println("File: " + ((NettyWebJptAction) action).getTemplateURI().toString());
}
else
{
String clazz = (action == null) ? "null" : action.getClass().getCanonicalName();
System.out.println("Something went wrong... Expecting an instance of NettyWebJptAction and got " + clazz);
}
}
catch (Exception e)
{
System.out.println("Failed to access." + e.getMessage());
}
}
String reverse = "file.jpt";
System.out.print("Reverse for " + reverse);
String reversed = routingManager.reverse(reverse);
System.out.println(" - " + reversed);
String reverse2 = "private/event-tempo.jpt";
System.out.print("Reverse for " + reverse2);
String reversed2 = routingManager.reverse(reverse2);
System.out.println(" - " + reversed2);
String reverse3 = "private/event-tempo.jpt";
HashMap<String, String> values = new HashMap<String, String>();
values.put("action", "editar");
System.out.print("Reverse for " + reverse3);
String reversed3 = routingManager.reverse(reverse3, values);
System.out.println(" (with default values) - " + reversed3);
}
public static HttpRequestWrapper getRequestWrapper()
{
HttpRequest request = new HttpRequest()
{
@Override
public void setProtocolVersion(HttpVersion arg0)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.setProtocolVersion()");
}
@Override
public void setHeader(String arg0, Iterable<?> arg1)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.setHeader()");
}
@Override
public void setHeader(String arg0, Object arg1)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.setHeader()");
}
@Override
public void setContent(ChannelBuffer arg0)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.setContent()");
}
@Override
public void setChunked(boolean arg0)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.setChunked()");
}
@Override
public void removeHeader(String arg0)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.removeHeader()");
}
public boolean isKeepAlive()
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.isKeepAlive()");
return false;
}
@Override
public boolean isChunked()
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.isChunked()");
return false;
}
@Override
public HttpVersion getProtocolVersion()
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.getProtocolVersion()");
return null;
}
@Override
public List<String> getHeaders(String arg0)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.getHeaders()");
return null;
}
@Override
public List<Entry<String, String>> getHeaders()
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.getHeaders()");
return null;
}
@Override
public Set<String> getHeaderNames()
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.getHeaderNames()");
return null;
}
@Override
public String getHeader(String arg0)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.getHeader()");
return null;
}
@Override
public ChannelBuffer getContent()
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.getContent()");
return null;
}
@Override
public boolean containsHeader(String arg0)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.containsHeader()");
return false;
}
@Override
public void clearHeaders()
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.clearHeaders()");
}
@Override
public void addHeader(String arg0, Object arg1)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.addHeader()");
}
@Override
public void setUri(String arg0)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.setUri()");
}
@Override
public void setMethod(HttpMethod arg0)
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.setMethod()");
}
@Override
public String getUri()
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.getUri()");
return null;
}
@Override
public HttpMethod getMethod()
{
System.out.println("TestRouting.getRequestWrapper().new HttpRequest() {...}.getMethod()");
return null;
}
@Override
public HttpHeaders headers()
{
// TODO Auto-generated method stub
return null;
}
};
HttpRequestWrapper requestWrapper = new HttpRequestWrapper(request);
return requestWrapper;
}
}