KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > idaremedia > antx > valueuri > SIDsValueURIHandler


1 /**
2  * $Id: SIDsValueURIHandler.java 180 2007-03-15 12:56:38Z ssmc $
3  * Copyright 2005 iDare Media, Inc. All rights reserved.
4  *
5  * Originally written by iDare Media, Inc. for release into the public domain. This
6  * library, source form and binary form, is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public License (LGPL) as published
8  * by the Free Software Foundation; either version 2.1 of the License, or (at your option)
9  * any later version.<p>
10  *
11  * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12  * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13  * See the GNU LGPL for more details.<p>
14  *
15  * You should have received a copy of the GNU Lesser General Public License along with this
16  * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite
17  * 330, Boston, MA 02111-1307 USA. The GNU LGPL can be found online at
18  * http://www.fsf.org/copyleft/lesser.html<p>
19  *
20  * This product has been influenced by several projects within the open-source community.
21  * The JWare developers wish to acknowledge the open-source community's support. For more
22  * information regarding the open-source products used within JWare, please visit the
23  * JWare website.
24  *----------------------------------------------------------------------------------------*
25  * WEBSITE- http://www.jware.info EMAIL- inquiries@jware.info
26  *----------------------------------------------------------------------------------------*
27  **/

28
29 package com.idaremedia.antx.valueuri;
30
31 import com.idaremedia.antx.apis.Requester;
32 import com.idaremedia.antx.helpers.SIDs;
33 import com.idaremedia.antx.helpers.Tk;
34 import com.idaremedia.antx.starters.ValueURIHandlerSkeleton;
35
36 /**
37  * Value URI handler that generates an AntX {@linkplain SIDs random value}. Very useful
38  * in tests and SAMS artifact definition methods. There are three types of pseudo-random
39  * values: string, int[eger], and long. The string and int[eger] options also support a
40  * single parameter that is used as a prefix (in case of string) and an upper bound (in
41  * case of int[eger]. The long value URI does not support any parameters. If you are
42  * generating a value to be used as a reference identifier in a particular project, use
43  * the complementary {@linkplain NewRefIdValueURIHandler $newrefid:} handler instead.
44  * Be careful when using this value URI as part of an overlaid property's value&#8212;
45  * the value <em>will change everytime</em> the property is dereferenced!
46  * <p/>
47  * <b>Example Usage:</b><pre>
48  * &lt;assign var="_localkey" value="${<b>$random:string?key</b>}"/&gt;
49  * &lt;assign var="_duration" value="${<b>$random:int?999999</b>}"/&gt;
50  * &lt;assign var="_branch" value="${<b>$random:boolean</b>}"/&gt;
51  *
52  * -- To Install --
53  * &lt;manageuris action="install"&gt;
54  * &lt;parameter name="random"
55  * value="com.idaremedia.antx.valueuri.SIDsValueURIHandler"/&gt;
56  * &lt;/manageuris&gt;
57  * </pre>
58  *
59  * @since JWare/AntX 0.5
60  * @author ssmc, &copy;2005 <a HREF="http://www.jware.info">iDare&nbsp;Media,&nbsp;Inc.</a>
61  * @version 0.5
62  * @.safety multiple
63  * @.group api,helper
64  * @see NewRefIdValueURIHandler
65  **/

66
67 public final class SIDsValueURIHandler extends ValueURIHandlerSkeleton
68 {
69     /**
70      * Initalizes a new random value generator.
71      **/

72     public SIDsValueURIHandler()
73     {
74         super();
75     }
76     
77
78     /**
79      * Returns a random value based on the incoming instruction.
80      **/

81     public String JavaDoc valueFrom(String JavaDoc uriFragment, String JavaDoc fullUri, Requester clnt)
82     {
83         if (uriFragment.length()==0) {
84             return SIDs.next();
85         }
86         String JavaDoc adjustment = "";
87         int i = uriFragment.indexOf("?");
88         if (i>0) {
89             if (i<uriFragment.length()-1) {
90                 adjustment = uriFragment.substring(i+1);
91             }
92             uriFragment = uriFragment.substring(0,i);
93         }
94         uriFragment = Tk.lowercaseFrom(uriFragment);
95         switch (uriFragment.charAt(0)) {
96             case 's': {
97                 return SIDs.next(adjustment/*prefix*/);
98             }
99             case 'i': {
100                 int limit = Tk.NO_INT;
101                 if (adjustment.length()>0) {
102                     limit = Tk.integerFrom(adjustment,Tk.NO_INT);
103                 }
104                 if (limit!=Tk.NO_INT) {
105                     return String.valueOf(SIDs.nextInt(limit));
106                 }
107                 return String.valueOf(SIDs.nextInt());
108             }
109             case 'l': {
110                 return String.valueOf(SIDs.nextLong());
111             }
112             case 'b': {
113                 int value = SIDs.nextInt(2);
114                 return String.valueOf(value!=0);
115             }
116         }
117         return getDefaultValue(fullUri,clnt);
118     }
119 }
120
121 /* end-of-SIDsValueURIHandler.java */
Popular Tags