Changeset 290 for tools

Show
Ignore:
Timestamp:
04/10/09 14:41:38 (11 months ago)
Author:
anton
Message:

First working version with JSON input and GML output for route service

Location:
tools/routingservice/branches/wrs-2.0
Files:
53 added
10 modified

Legend:

Unmodified
Added
Removed
  • tools/routingservice/branches/wrs-2.0/data/resources.xml

    r289 r290  
    99                        <parameter name="srid" type="integer" key="srid" value="4301"/> 
    1010                        <parameter name="units" type="string" key="units" value="dd"/> 
     11                        <parameter name="box" type="double" key="box" value="0.01"/> 
     12                        <parameter name="cost" type="string" key="cost" value="length"/> 
    1113                </parameters>            
    1214                <services> 
     
    1921                <password></password> 
    2022                <query> 
    21                 SELECT gid, AsText(the_geom) AS wkt FROM 
    22                 $function$('_hcc_algo_shooting_pedestrian', $parameters$) 
     23                SELECT gid as id, length(the_geom) as cost, astext(the_geom) as line FROM 
     24                $function$('_hcc_algo_shooting_pedestrian', $parameters$, true, true) 
    2325                </query> 
    2426        </resource> 
  • tools/routingservice/branches/wrs-2.0/data/services.xml

    r287 r290  
    77                <description>Returns a shortest path between points A and B</description> 
    88                <in> 
    9                         <parameter name="startX" type="double" key="x1"/> 
    10                         <parameter name="startY" type="double" key="y1"/> 
    11                         <parameter name="endX" type="double" key="x2"/> 
    12                         <parameter name="endY" type="double" key="y2"/> 
    13                         <parameter name="cost" type="string" key="cost"/> 
     9                        <parameter key="startX" type="double" name="x1"/> 
     10                        <parameter key="startY" type="double" name="y1"/> 
     11                        <parameter key="endX" type="double" name="x2"/> 
     12                        <parameter key="endY" type="double" name="y2"/> 
     13                        <parameter key="cost" type="string" name="cost"/> 
     14                        <parameter key="bbox" type="double" name="box"/> 
    1415                </in>            
    1516                <out> 
    1617                        <parameter name="id" type="integer" key="id"/> 
    17                         <parameter name="cost" type="integer" key="cost"/> 
     18                        <parameter name="cost" type="double" key="cost"/> 
    1819                        <parameter name="line" type="geometry" key="the_geom"/> 
    19                         <parameter name="description" type="string" key="desc"/> 
    20                         <parameter name="error" type="string" key="error"/> 
    2120                </out>           
    2221        </service> 
  • tools/routingservice/branches/wrs-2.0/data/templates/route/route_gml.st

    r284 r290  
    44        xsi:schemaLocation="http://www.opengis.net/gml http://schemas.opengis.net/gml/3.1.1/profiles/gmlsfProfile/1.0.0/gmlsf.xsd"  
    55        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    6 $edges:{ e | 
     6$parameters:{ p | 
    77        <gml:featureMember>      
    88                <feature:feature xmlns:feature="http://example.com/feature"> 
     
    1010                                <gml:LineString> 
    1111                                        <gml:posList> 
    12                                                 $e.points:{ p |$p.x$ $p.y$};separator=" "$ 
     12                                                $p.line$ 
    1313                                        </gml:posList> 
    1414                                </gml:LineString> 
    1515                        </feature:geometry> 
    16                         <feature:id>$e.id$</feature:id> 
     16                        <feature:id>$p.id$</feature:id> 
    1717                </feature:feature> 
    1818        </gml:featureMember> 
  • tools/routingservice/branches/wrs-2.0/src/WRS.java

    r289 r290  
    55import java.util.ArrayList; 
    66import java.util.Enumeration; 
     7import java.util.HashMap; 
    78import java.util.Hashtable; 
    89import java.util.Iterator; 
     
    1819import model.Template; 
    1920 
     21import org.antlr.stringtemplate.StringTemplate; 
    2022import org.restlet.Component; 
    2123import org.restlet.Restlet; 
     
    2426import util.IOHelper; 
    2527import util.Log; 
     28import util.ObjectPool; 
    2629import util.Parameter; 
    2730import util.ServiceRequest; 
     
    2932import util.conf.Configuration; 
    3033import util.conf.Configuration.Includes.Include; 
     34import util.format.FormatParser; 
     35import util.format.GMLTemplateFiller; 
     36import util.format.JSONParser; 
     37import util.format.TemplateFiller; 
    3138import util.profile.Profiles; 
    3239import util.profile.Profiles.Profile.Resources.Rref; 
     
    6471                TEMPLATES, SERVICES, PROFILES, RESOURCES; 
    6572        } 
     73 
     74        public enum ParameterSources 
     75        { 
     76                URL, PROFILE, RESOURCE; 
     77        } 
     78 
     79        public enum Formats 
     80        { 
     81                JSON(JSONParser.class), GEOJSON(null), KML(null), GML(null), XLS(null), GEORSS( 
     82                                null), GPX(null); 
     83 
     84                private Class<? extends FormatParser> parserType; 
     85 
     86                Formats(Class<? extends FormatParser> p) 
     87                { 
     88                        this.parserType = p; 
     89                } 
     90 
     91                public FormatParser getInstance() throws InstantiationException, 
     92                                IllegalAccessException 
     93                { 
     94                        return parserType.newInstance(); 
     95                } 
     96        } 
     97         
     98        public enum Fillers 
     99        { 
     100                JSON(null), GEOJSON(null), KML(null), GML(GMLTemplateFiller.class), XLS(null), GEORSS( 
     101                                null), GPX(null); 
     102 
     103                private Class<? extends TemplateFiller> fillerType; 
     104 
     105                Fillers(Class<? extends TemplateFiller> p) 
     106                { 
     107                        this.fillerType = p; 
     108                } 
     109 
     110                public TemplateFiller getInstance() throws InstantiationException, 
     111                                IllegalAccessException 
     112                { 
     113                        return fillerType.newInstance(); 
     114                } 
     115        }        
    66116 
    67117        public WRS(String[] args) throws Exception 
     
    127177                                                        handler.setResource(resource); 
    128178 
    129                                                         Vector<Parameter> output = handler 
    130                                                                         .handle(serviceRequest); 
     179                                                        ArrayList<HashMap<String, Parameter>> output = handler 
     180                                                                        .handle(serviceRequest, log); 
     181                                                         
     182                                                        String templateName = serviceRequest.getTemplate().getName(); 
     183                                                         
     184                                                        try 
     185                                                        { 
     186                                                                TemplateFiller filler = Fillers.valueOf(templateName.toUpperCase()) 
     187                                                                                .getInstance(); 
     188                                                                result = filler.fillOutputTemplate(serviceRequest, output, 
     189                                                                                handler, log); 
     190                                                        } 
     191                                                        // TODO process the error more carefully 
     192                                                        catch (InstantiationException e) 
     193                                                        { 
     194                                                                log.logger.warning("Wrong output format " + templateName); 
     195                                                        } 
     196                                                        catch (IllegalAccessException e) 
     197                                                        { 
     198                                                                log.logger.warning("Wrong output format " + templateName); 
     199                                                        } 
     200                                                        catch (NullPointerException e) 
     201                                                        { 
     202                                                                log.logger.warning("Output format " + templateName + " is not supported yet."); 
     203                                                        } 
     204 
    131205                                                } 
    132206                                                // TODO process the error more carefully 
     
    183257        } 
    184258 
     259 
    185260        public ServiceRequest parseURL(Request req) 
    186261                        throws ArrayIndexOutOfBoundsException, InvalidVersionException, 
     
    264339                } 
    265340 
    266                 Vector<Parameter> parameters = new Vector<Parameter>(); 
    267341                Iterator<String> ni = form.getNames().iterator(); 
    268342                while (ni.hasNext()) 
     
    270344                        String name = ni.next(); 
    271345                        String value = form.getValuesMap().get(name); 
    272                         Parameter param = new Parameter(); 
    273                         param.setName(name); 
    274                         param.setKey(name); 
    275                         param.setValue(value); 
    276                         parameters.add(param); 
     346 
     347                        Parameter p = new Parameter(); 
     348                        p.setSource("url"); 
     349                        p.setName(name); 
     350                        p.setValue(value); 
     351                        request.getParameters().put(name, p); 
     352 
     353                        try 
     354                        { 
     355                                FormatParser parser = Formats.valueOf(name.toUpperCase()) 
     356                                                .getInstance(); 
     357                                Hashtable<String, Parameter> params = parser.parse(value); 
     358                                addParameters(request.getParameters(), params); 
     359                        } 
     360                        // TODO process the error more carefully 
     361                        catch (InstantiationException e) 
     362                        { 
     363                                log.logger.warning("Wrong format " + name); 
     364                        } 
     365                        catch (IllegalAccessException e) 
     366                        { 
     367                                log.logger.warning("Wrong format " + name); 
     368                        } 
     369                        catch (NullPointerException e) 
     370                        { 
     371                                log.logger.warning("Format " + name + " is not supported yet."); 
     372                        } 
    277373                } 
    278374 
    279375                return request; 
     376        } 
     377 
     378        private void addParameters(Hashtable<String, Parameter> parameters, 
     379                        Hashtable<String, Parameter> params) 
     380        { 
     381                // TODO check for ability to override parameters 
     382                parameters.putAll(params); 
    280383        } 
    281384 
     
    359462                                util.resource.Resources.Resource res = li.next(); 
    360463                                Resource resource = new Resource(res.getName(), res.getType(), 
    361                                                 res.getUrl(), res.getUser(), res.getPassword()); 
     464                                                res.getUrl(), res.getUser(), res.getPassword(), res 
     465                                                                .getQuery()); 
    362466 
    363467                                ListIterator<Parameter> pi = res.getParameters().getParameter() 
     
    592696                                { 
    593697                                        Parameter param = outpi.next(); 
    594                                         service.getIn().put(param.getName(), param); 
     698                                        service.getOut().put(param.getName(), param); 
    595699                                } 
    596700 
     
    644748                        { 
    645749                                resource = res; 
     750                                addParameters(serviceRequest.getParameters(), res 
     751                                                .getParameters()); 
    646752                                break; 
    647753                        } 
  • tools/routingservice/branches/wrs-2.0/src/handler/PgRoutingHandler.java

    r289 r290  
    11package handler; 
    22 
     3import geometry.Point; 
     4 
     5import java.math.BigDecimal; 
    36import java.sql.Connection; 
     7import java.sql.ResultSet; 
     8import java.sql.SQLException; 
     9import java.sql.Statement; 
     10import java.util.ArrayList; 
     11import java.util.Arrays; 
     12import java.util.Enumeration; 
     13import java.util.HashMap; 
    414import java.util.Hashtable; 
     15import java.util.Iterator; 
    516import java.util.Vector; 
    617 
    718import model.Resource; 
     19import model.Service; 
     20import util.Log; 
    821import util.ObjectPool; 
    922import util.Parameter; 
     
    1326import org.antlr.stringtemplate.StringTemplate; 
    1427 
    15 public class PgRoutingHandler implements ResourceHandler 
     28public class PgRoutingHandler extends ResourceHandler 
    1629{ 
    1730        private Resource resource; 
     
    2134        public static final String UNITS = "units"; 
    2235 
     36        public static final String FUNCTION = "function"; 
     37        public static final String PARAMETERS = "parameters"; 
     38 
     39        // Arrays in Services enum's elements specify an order of parameters 
     40        private enum Services 
     41        { 
     42                ROUTE 
     43                { 
     44                        ArrayList getParameters() 
     45                        { 
     46                                String[] p = { "x1", "y1", "x2", "y2", "box", "cost" }; 
     47                                return new ArrayList(Arrays.asList(p)); 
     48                        } 
     49                }; 
     50 
     51                abstract ArrayList getParameters(); 
     52        } 
     53 
    2354        public PgRoutingHandler() 
    2455        { 
     56                // TODO implement reading functions mapping from a config file 
    2557                this.functions = new Hashtable<String, String>(); 
    2658                this.functions.put("route", "shootingstar_sp_smart"); 
     
    2961 
    3062        @Override 
    31         public Vector<Parameter> handle(ServiceRequest request) 
    32         { 
    33                 Vector<Parameter> out = new Vector<Parameter>(); 
     63        public ArrayList<HashMap<String, Parameter>> handleRequest( 
     64                        ServiceRequest request, Log log) 
     65        { 
     66                ArrayList<HashMap<String, Parameter>> out = new ArrayList<HashMap<String, Parameter>>(); 
    3467 
    3568                if (this.resource != null) 
    3669                { 
    37  
    38                         StringTemplate queryTemplate = new StringTemplate(this.resource 
    39                                         .getQuery()); 
     70                        System.out.println("<<<<<<< " + this.resource.getQuery() + " from " 
     71                                        + this.resource.getName()); 
     72 
     73                        String query = fillQueryTemplate(this.resource.getQuery(), request 
     74                                        .getService(), request.getParameters()); 
     75 
     76                        System.out.println(">>>>>>> " + query); 
     77 
    4078                        ObjectPool<Connection> pool = this.resource.getPool(); 
    4179                        Connection con = pool.checkOut(); 
    42                          
    43                         //TODO send query and get a result 
    44                          
    45                         pool.checkIn(con); 
     80 
     81                        if (con != null) 
     82                        { 
     83 
     84                                // TODO send query and get a result 
     85                                try 
     86                                { 
     87                                        Statement stmt = con.createStatement(); 
     88                                        ResultSet result = stmt.executeQuery(query); 
     89 
     90                                        while (result.next()) 
     91                                        { 
     92                                                Iterator<String> keys = request.getService().getOut() 
     93                                                                .keySet().iterator(); 
     94                                                HashMap<String, Parameter> paraMap = new HashMap<String, Parameter>(); 
     95                                                while (keys.hasNext()) 
     96                                                { 
     97                                                        String key = keys.next(); 
     98                                                        Parameter op = new Parameter(); 
     99                                                        op.setName(key); 
     100                                                        op.setType(request.getService().getOut().get(key) 
     101                                                                        .getType()); 
     102                                                        op.setValue(result.getString(key)); 
     103 
     104                                                        paraMap.put(key, op); 
     105                                                } 
     106                                                out.add(paraMap); 
     107                                        } 
     108 
     109                                } 
     110                                catch (SQLException e) 
     111                                { 
     112                                        // TODO Auto-generated catch block 
     113                                        e.printStackTrace(); 
     114                                } 
     115 
     116                                pool.checkIn(con); 
     117                        } 
     118                        else 
     119                        { 
     120                                // Connection pool is full 
     121                                log.logger.severe("Connection to " + resource.getUrl() 
     122                                                + " failed."); 
     123                        } 
    46124                } 
    47125                return out; 
     
    54132        } 
    55133 
     134        @Override 
     135        public String fillQueryTemplate(String template, Service service, 
     136                        Hashtable<String, Parameter> parameters) 
     137        { 
     138                StringTemplate query = new StringTemplate(template); 
     139                String function = this.functions.get(service.getName()); 
     140                query.setAttribute(FUNCTION, function); 
     141 
     142                StringBuffer params = new StringBuffer(""); 
     143 
     144                // fill parameters 
     145                // Iterator<String> keys = service.getIn().keySet().iterator(); 
     146                Iterator<String> keys = Services.valueOf( 
     147                                service.getName().toUpperCase()).getParameters().iterator(); 
     148                while (keys.hasNext()) 
     149                { 
     150                        try 
     151                        { 
     152                                String key = keys.next(); 
     153                                if (service.getIn().containsKey(key)) 
     154                                { 
     155                                        Parameter p = parameters.get(key); 
     156                                        String value = p.getValue(); 
     157                                        if (service.getIn().get(key).getType().toLowerCase() 
     158                                                        .equals(STRING)) 
     159                                        { 
     160                                                value = "'" + value + "'"; 
     161                                        } 
     162                                        params.append(value); 
     163 
     164                                        if (keys.hasNext()) 
     165                                                params.append(","); 
     166                                } 
     167                                else 
     168                                { 
     169                                        // Service doesn't know about the parameter 
     170                                        // TODO do something smart here 
     171                                } 
     172                        } 
     173                        catch (NullPointerException e) 
     174                        { 
     175                                // Required parameter is missing! 
     176                                // TODO do something smart here 
     177                        } 
     178                } 
     179 
     180                System.out.println(">>PARAMETERS>>>>> " + params.toString()); 
     181                query.setAttribute(PARAMETERS, params.toString()); 
     182 
     183                return query.toString(); 
     184        } 
     185 
     186        @Override 
     187        public boolean checkService(Service service) 
     188        { 
     189                return this.resource.getServices().containsKey(service.getName()); 
     190        } 
     191 
     192        @Override 
     193        public ArrayList<Point> parseGeometry(String geom) 
     194        { 
     195                ArrayList<Point> points = new ArrayList<Point>(); 
     196                String[] wkts = parseWKT(geom); 
     197                 
     198                for (int i = 0; i < wkts.length; i++) 
     199                { 
     200                        String wkt2[] = wkts[i].split(","); 
     201                        for (int j = 0; j < wkt2.length; j++) 
     202                        { 
     203                                Point point = new Point(); 
     204                                point.setX(new BigDecimal(wkt2[j].split(" ")[0])); 
     205                                point.setY(new BigDecimal(wkt2[j].split(" ")[1])); 
     206                                points.add(point); 
     207                        } 
     208 
     209                } 
     210                return points; 
     211        } 
     212 
     213        /** 
     214         * Parses a WKT geometry string to an array 
     215         *  
     216         * @param resultSet 
     217         * @return 
     218         * @throws SQLException 
     219         */ 
     220        private String[] parseWKT(String wkt) 
     221        { 
     222                String wkts[] = null; 
     223 
     224                if (wkt.contains("MULTILINESTRING")) 
     225                { 
     226                        wkt = wkt.split("MULTILINESTRING\\(\\(")[1].split("\\)\\)")[0]; 
     227                        wkts = wkt.split("\\)\\("); 
     228                } 
     229                else if (wkt.contains("POINT")) 
     230                { 
     231                        wkts = wkt.split("POINT\\(\\(")[1].split("\\)\\)"); 
     232                } 
     233                else if (wkt.contains("LINESTRING")) 
     234                { 
     235                        wkts = wkt.split("LINESTRING\\(\\(")[1].split("\\)\\)"); 
     236                } 
     237                else if (wkt.contains("POLYGON")) 
     238                { 
     239                        wkts = wkt.split("POLYGON\\(\\(")[1].split("\\)\\)"); 
     240                } 
     241 
     242                return wkts; 
     243        } 
     244 
    56245} 
  • tools/routingservice/branches/wrs-2.0/src/handler/ResourceHandler.java

    r289 r290  
    11package handler; 
    22 
     3import java.util.ArrayList; 
     4import java.util.HashMap; 
     5import java.util.Hashtable; 
    36import java.util.Vector; 
    47 
     8import exception.InvalidServiceException; 
     9import geometry.Point; 
     10 
    511import model.Resource; 
     12import model.Service; 
     13import util.Log; 
    614import util.Parameter; 
    715import util.ServiceRequest; 
    816 
    9 public interface ResourceHandler 
     17public abstract class ResourceHandler 
    1018{ 
    1119 
    12         public void setResource(Resource resource); 
    13         public Vector<Parameter> handle(ServiceRequest request); 
     20        public static final String STRING = "string"; 
     21        public static final String INTEGER = "integer"; 
     22        public static final String DOUBLE = "double"; 
     23        public static final String GEOMETRY = "geometry"; 
     24 
     25        public abstract void setResource(Resource resource); 
     26 
     27        public abstract boolean checkService(Service service); 
     28 
     29        public ArrayList<HashMap<String, Parameter>> handle(ServiceRequest request, 
     30                        Log log) throws InvalidServiceException 
     31        { 
     32                if (checkService(request.getService())) 
     33                { 
     34                        return handleRequest(request, log); 
     35                } 
     36                else 
     37                { 
     38                        throw new InvalidServiceException(request.getService().getName()); 
     39                } 
     40        } 
     41 
     42        protected abstract ArrayList<HashMap<String, Parameter>> handleRequest( 
     43                        ServiceRequest request, Log log); 
     44 
     45        public abstract String fillQueryTemplate(String template, Service service, 
     46                        Hashtable<String, Parameter> parameters); 
     47         
     48        public abstract ArrayList<Point> parseGeometry(String geometry); 
    1449 
    1550} 
  • tools/routingservice/branches/wrs-2.0/src/model/Resource.java

    r289 r290  
    5555        private ObjectPool pool; 
    5656 
    57         public Resource(String name, String type, String url, String user, String password) 
     57        public Resource(String name, String type, String url, String user, String password, String query) 
    5858        { 
    5959                super(); 
    6060                this.name = name; 
    6161                this.type = type; 
     62                this.url = url; 
     63                this.user = user; 
     64                this.password = password; 
     65                this.query = query; 
    6266 
    6367                try 
  • tools/routingservice/branches/wrs-2.0/src/model/Service.java

    r287 r290  
    11package model; 
    22 
     3import java.util.ArrayList; 
    34import java.util.Hashtable; 
     5import java.util.HashMap; 
    46 
    57import util.Parameter; 
     
    1113        private String description; 
    1214 
    13         private Hashtable<String, Parameter> in; 
    14         private Hashtable<String, Parameter> out; 
    15          
     15        private HashMap<String, Parameter> in; 
     16        private HashMap<String, Parameter> out; 
    1617         
    1718 
     
    2021                super(); 
    2122                this.name = name; 
    22                 this.in = new Hashtable<String, Parameter>(); 
    23                 this.out = new Hashtable<String, Parameter>(); 
     23                this.in = new HashMap<String, Parameter>(); 
     24                this.out = new HashMap<String, Parameter>(); 
    2425        } 
    2526 
     
    5455        } 
    5556 
    56         public Hashtable<String, Parameter> getIn() 
     57        public HashMap<String, Parameter> getIn() 
    5758        { 
    5859                return in; 
    5960        } 
    6061 
    61         public Hashtable<String, Parameter> getOut() 
     62        public HashMap<String, Parameter> getOut() 
    6263        { 
    6364                return out; 
  • tools/routingservice/branches/wrs-2.0/src/util/ObjectPool.java

    r289 r290  
    1212        private long expirationTime; 
    1313        private Hashtable<T, Long> locked, unlocked; 
     14        private int capacity; 
    1415 
    1516        public ObjectPool(String url, String user, String password) 
     
    1920                this.password = password; 
    2021 
    21                 expirationTime = 30000; // 30 seconds 
     22                expirationTime = 60000; // 1 minute 
     23                capacity = 10; 
    2224                locked = new Hashtable<T, Long>(); 
    2325                unlocked = new Hashtable<T, Long>(); 
     
    3638                T t; 
    3739 
    38                 if (unlocked.size() > 0) 
     40                if (locked.size() + unlocked.size() < capacity) 
    3941                { 
    40                         Enumeration<T> e = unlocked.keys(); 
     42                        if (unlocked.size() > 0) 
     43                        { 
     44                                Enumeration<T> e = unlocked.keys(); 
    4145 
    42                         while (e.hasMoreElements()) 
    43                         { 
    44                                 t = e.nextElement(); 
     46                                while (e.hasMoreElements()) 
     47                                { 
     48                                        t = e.nextElement(); 
    4549 
    46                                 if ((now - unlocked.get(t)) > expirationTime) 
    47                                 { 
    48                                         // object has expired 
    49                                         unlocked.remove(t); 
    50                                         expire(t); 
    51                                         t = null; 
    52                                 } 
    53                                 else 
    54                                 { 
    55                                         if (validate(t)) 
     50                                        if ((now - unlocked.get(t)) > expirationTime) 
    5651                                        { 
    57                                                 unlocked.remove(t); 
    58                                                 locked.put(t, now); 
    59                                                 return (t); 
    60                                         } 
    61                                         else 
    62                                         { 
    63                                                 // object failed validation 
     52                                                // object has expired 
    6453                                                unlocked.remove(t); 
    6554                                                expire(t); 
    6655                                                t = null; 
    6756                                        } 
     57                                        else 
     58                                        { 
     59                                                if (validate(t)) 
     60                                                { 
     61                                                        unlocked.remove(t); 
     62                                                        locked.put(t, now); 
     63                                                        return (t); 
     64                                                } 
     65                                                else 
     66                                                { 
     67                                                        // object failed validation 
     68                                                        unlocked.remove(t); 
     69                                                        expire(t); 
     70                                                        t = null; 
     71                                                } 
     72                                        } 
    6873                                } 
    6974                        } 
     75 
     76                        // no objects available, create a new one 
     77                        t = create(); 
     78                        locked.put(t, now); 
     79                        return (t); 
     80 
     81                } 
     82                else 
     83                { 
     84                        //TODO Process error 
     85                        return null; 
    7086                } 
    7187 
    72                 // no objects available, create a new one 
    73                 t = create(); 
    74                 locked.put(t, now); 
    75                 return (t); 
    7688        } 
    7789 
  • tools/routingservice/branches/wrs-2.0/src/util/ServiceRequest.java

    r287 r290  
    11package util; 
    22 
     3import java.util.Hashtable; 
    34import java.util.Vector; 
    45 
     
    1213        private Service service; 
    1314        private Template template; 
    14         private Vector<Parameter> parameters; 
     15        private Hashtable<String, Parameter> parameters; 
    1516 
    1617        public ServiceRequest(Profile profile, Service service, Template template) 
     
    2021                this.service = service; 
    2122                this.template = template; 
     23                this.parameters = new Hashtable<String, Parameter>(); 
    2224        } 
    2325 
    24         public Vector<Parameter> getParameters() 
     26        public Hashtable<String, Parameter> getParameters() 
    2527        { 
    2628                return parameters; 
    27         } 
    28  
    29         public void setParameters(Vector<Parameter> parameters) 
    30         { 
    31                 this.parameters = parameters; 
    3229        } 
    3330