/* * Copyright (c) JForum Team * All rights reserved. * * Redistribution and use in source and binary forms, * with or without modification, are permitted provided * that the following conditions are met: * * 1) Redistributions of source code must retain the above * copyright notice, this list of conditions and the * following disclaimer. * 2) Redistributions in binary form must reproduce the * above copyright notice, this list of conditions and * the following disclaimer in the documentation and/or * other materials provided with the distribution. * 3) Neither the name of "Rafael Steil" nor * the names of its contributors may be used to endorse * or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL * THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER * IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE * * * The JForum Project * http://www.jforum.net */ package net.jforum; /** * URL Patterns keeper. * Represents a single URL pattern. Each pattern is composed * by a name, the pattern itself, the pattern's size and the * splited variables. <br><br> * * The pattern is expected in the form <i>var1, var2, varN</i>, in the * correct order. This means that if <i>var1</i> comes first, it <b>must</b> * come first in the URL. The same is valid to others.<br><br> * * Please note that "first" here is "first" after regular URL, which is * composed by server and servlet name, in the most simple case.<br><br> * * <b>Example:</b><br> * * URL: <i>http://localhost:8080/webappName/someDir/myServlet/news/view/3.page<i>. * <br> * In this case, <i>http://localhost:8080/webappName/someDir/myServlet/</i> is the * regular URL, the part that we don't care about. We only want the part * <i>news/view/3.page</i> ( where .page is the servlet extension ). * <br>For this URL, we could make the following pattern:<br><br> * * <i>news.view.1 = news_id</i><br><br> * * Here, <i>news.view.1</i> is the pattern's name, and <i>news_id</i> is * the patterns itself. <br> * Another example:<br><br> * * <i>news.view.2 = page, news_id</i><br><br> * * In this case we have a new var called <i>page</i>, that represents the page being seen.<br> * Each entry is composed in the form:<br><br> * * <i><moduleName>.<actionName>.<numberOfParameters> = <var 1>,<var n></i> * <br><br> * * Please note that module and action's name aren't pattern's composition, so * don't put them there. The system will consider that the pattern only contains * the variables diferent to each request ( e.g, id's ). If the pattern you're * constructing doesn't have any variable, just leave it blank, like<br><br> * * <i>myModule.myAction.0 = </i><br><br> * * @author Rafael Steil * @version $Id: UrlPattern.java,v 1.1 2006/08/23 02:13:49 rafaelsteil Exp $ */ public class UrlPattern { private String name; private String value; private int size; private String[] vars; public UrlPattern(String name, String value) { this.name = name; this.value = value; this.processPattern(); } private void processPattern() { String[] p = this.value.split(","); this.vars = new String[p.length]; this.size = ((((p[0]).trim()).equals("")) ? 0 : p.length); for (int i = 0; i < this.size; i++) { this.vars[i] = (p[i]).trim(); } } /** * Gets the pattern name * * @return String with the pattern name */ public String getName() { return this.name; } /** * Get pattern's total vars * * @return The total */ public int getSize() { return this.size; } /** * Gets the vars. * The URL variables are in the correct order, which means * that the first position always will be "something1", the * second "something2" and so on. The system expects this * order never changes from requisition to requisition. * * @return The vars */ public String[] getVars() { return this.vars; } }