WW-3998 Extracts interface and adds default implementation base on existing code

git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1456961 13f79535-47bb-0310-9956-ffa450edef68