/*
* Licensed to csti consulting
* You may obtain a copy of the License at
*
* http://www.csticonsulting.com
* Copyright (c) 2006-Aug 25, 2010 Consultation CS-TI inc.
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package com.salesmanager.catalog;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import com.opensymphony.xwork2.ActionInvocation;
import com.salesmanager.common.SalesManagerBaseAction;
import com.salesmanager.core.util.www.SalesManagerInterceptor;
public class URLInterceptor extends SalesManagerInterceptor {
@Override
protected String baseIntercept(ActionInvocation invoke,
HttpServletRequest req, HttpServletResponse resp) throws Exception {
// TODO Auto-generated method stub
/**
* This interceptor is used for urls invoked using SEO type urls The
* system is configured to support /category/category-name
* /product/product-name /pagelink/page-name
*/
// get the product from the path
String path = StringUtils.removeStart(req.getRequestURI(), req
.getContextPath());
/**
* should have left /category/<PRODUCT-URL>?request parameters or should
* have left /pagelink/<PAGE-URL>?request parameters or should have left
* /product/<PRODUCT-URL>?request parameters keep after second / and
* before ?
*/
// remove /product or /category or /page
String pathnocontext = path.substring(1);// remove /
// should now have product/<PRODUCT-ID>?request parameters or
// category/<CATEGORY-ID>?request parameters or pagelink/<PAGE-ID>
String[] parameters = pathnocontext.split("/");
// should now have
// parameters[0] = product or category or pagelink
// parameters[1] = <PRODUCT-ID>?parameters
if (parameters == null || parameters.length == 1) {
throw new Exception("Invalid parameters in request " + path);
}
String id = parameters[1];
if(id.contains(".action")) {
id = id.substring(0,id.indexOf(".action"));
}
SalesManagerBaseAction action = ((SalesManagerBaseAction) invoke
.getAction());
action.setRequestedEntityId(id);
return null;
}
}