test_class.declarator: restController
test_class.modifier: @Autowired
  	@Qualifier("/rest/**")
test_class.original_string: @Autowired
  	@Qualifier("/rest/**")
  	RestController restController;
test_class.type: RestController
test_class.var_name: restController
test_class.declarator: securityManager
test_class.modifier: @Autowired
  	private
test_class.original_string: @Autowired
  	private SecurityManager securityManager;
test_class.type: SecurityManager
test_class.var_name: securityManager
test_class.declarator: geoservice
test_class.modifier: @Autowired
  	private
test_class.original_string: @Autowired
  	private GeoService geoservice;
test_class.type: GeoService
test_class.var_name: geoservice
test_class.declarator: view
test_class.modifier: @Autowired
  	@Qualifier("rest.server.mvc.GeoJsonView")
  	private
test_class.original_string: @Autowired
  	@Qualifier("rest.server.mvc.GeoJsonView")
  	private View view;
test_class.type: View
test_class.var_name: view
test_class.declarator: adapter
test_class.modifier: private
test_class.original_string: private HandlerAdapter adapter;
test_class.type: HandlerAdapter
test_class.var_name: adapter
test_class.file: plugin/face-rest/face-rest/src/test/java/org/geomajas/rest/server/mvc/RestControllerTest.java
test_class.identifier: RestControllerTest
test_case.body: @Test
  	public void testReadOneFeature() throws Exception {
  
  		MockHttpServletRequest request = new MockHttpServletRequest();
  		request.setRequestURI("/rest/beans/1.json");
  		request.setMethod("GET");
  
  		MockHttpServletResponse response = new MockHttpServletResponse();
  		ModelAndView mav = adapter.handle(request, response, restController);
  
  		Object o = mav.getModel().get(RestController.FEATURE_COLLECTION);
  		Assert.assertTrue(o instanceof InternalFeature);
  		InternalFeature feature = (InternalFeature) o;
  
  		Assert.assertEquals("bean1", feature.getAttributes().get("stringAttr").getValue());
  		Assert.assertEquals(true, feature.getAttributes().get("booleanAttr").getValue());
  		Assert.assertEquals("100,23", feature.getAttributes().get("currencyAttr").getValue());
  		Calendar c = Calendar.getInstance();
  		c.set(2010, 1, 23, 0, 0, 0);
  		c.set(Calendar.MILLISECOND, 0);
  		Assert.assertEquals(c.getTime(), feature.getAttributes().get("dateAttr").getValue());
  		Assert.assertEquals(123.456, feature.getAttributes().get("doubleAttr").getValue());
  		Assert.assertEquals(456.789F, feature.getAttributes().get("floatAttr").getValue());
  		Assert.assertEquals("http://www.geomajas.org/image1",
  				fixSlash(feature.getAttributes().get("imageUrlAttr").getValue().toString()));
  		Assert.assertEquals(789, feature.getAttributes().get("integerAttr").getValue());
  		Assert.assertEquals(123456789L, feature.getAttributes().get("longAttr").getValue());
  		Assert.assertEquals((short) 123, feature.getAttributes().get("shortAttr").getValue());
  		Assert.assertEquals("http://www.geomajas.org/url1",
  				fixSlash(feature.getAttributes().get("urlAttr").getValue().toString()));
  
  		view.render(mav.getModel(), request, response);
  		response.flushBuffer();
  		Object json = new JSONParser().parse(response.getContentAsString());
  		String isodate = GeoJSONUtil.DATE_FORMAT.format(c.getTime());
  		Assert.assertTrue(json instanceof JSONObject);
  		Assert.assertEquals("{\"type\":\"Feature\"," + "\"geometry\":{\"type\":\"MultiPolygon\","
  				+ "\"coordinates\":[[[[0.0,0.0],[1,0.0],[1,1],[0.0,1],[0.0,0.0]]]]}," + "\"properties\":{"
  				+ "\"stringAttr\":\"bean1\"," + "\"booleanAttr\":true," + "\"currencyAttr\":\"100,23\","
  				+ "\"dateAttr\":\"" + isodate + "\"," + "\"doubleAttr\":123.456,\"floatAttr\":456.789,"
  				+ "\"imageUrlAttr\":\"http://www.geomajas.org/image1\","
  				+ "\"integerAttr\":789,\"longAttr\":123456789," + "\"shortAttr\":123,"
  				+ "\"urlAttr\":\"http://www.geomajas.org/url1\"}," + "\"id\":\"1\"}",
  				fixSlash(response.getContentAsString()));
  	}
test_case.class_method_signature: RestControllerTest.testReadOneFeature()
test_case.full_signature: @Test public void testReadOneFeature()
test_case.identifier: testReadOneFeature
test_case.invocations: setRequestURI setMethod handle get getModel assertTrue assertEquals getValue get getAttributes assertEquals getValue get getAttributes assertEquals getValue get getAttributes getInstance set set assertEquals getTime getValue get getAttributes assertEquals getValue get getAttributes assertEquals getValue get getAttributes assertEquals fixSlash toString getValue get getAttributes assertEquals getValue get getAttributes assertEquals getValue get getAttributes assertEquals getValue get getAttributes assertEquals fixSlash toString getValue get getAttributes render getModel flushBuffer parse getContentAsString format getTime assertTrue assertEquals fixSlash getContentAsString
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testReadOneFeature()
focal_class.declarator: vectorLayerService
focal_class.modifier: @Autowired
  	private
focal_class.original_string: @Autowired
  	private VectorLayerService vectorLayerService;
focal_class.type: VectorLayerService
focal_class.var_name: vectorLayerService
focal_class.declarator: filterService
focal_class.modifier: @Autowired
  	private
focal_class.original_string: @Autowired
  	private FilterService filterService;
focal_class.type: FilterService
focal_class.var_name: filterService
focal_class.declarator: configurationService
focal_class.modifier: @Autowired
  	private
focal_class.original_string: @Autowired
  	private ConfigurationService configurationService;
focal_class.type: ConfigurationService
focal_class.var_name: configurationService
focal_class.declarator: geoService
focal_class.modifier: @Autowired
  	private
focal_class.original_string: @Autowired
  	private GeoService geoService;
focal_class.type: GeoService
focal_class.var_name: geoService
focal_class.declarator: TEXT_VIEW = "rest.server.mvc.TextView"
focal_class.modifier: public static final
focal_class.original_string: public static final String TEXT_VIEW = "rest.server.mvc.TextView";
focal_class.type: String
focal_class.var_name: TEXT_VIEW
focal_class.declarator: GEOJSON_VIEW = "rest.server.mvc.GeoJsonView"
focal_class.modifier: public static final
focal_class.original_string: public static final String GEOJSON_VIEW = "rest.server.mvc.GeoJsonView";
focal_class.type: String
focal_class.var_name: GEOJSON_VIEW
focal_class.declarator: KML_VIEW = "rest.server.mvc.KmlView"
focal_class.modifier: public static final
focal_class.original_string: public static final String KML_VIEW = "rest.server.mvc.KmlView";
focal_class.type: String
focal_class.var_name: KML_VIEW
focal_class.declarator: SHAPE_VIEW = "rest.server.mvc.ShpView"
focal_class.modifier: public static final
focal_class.original_string: public static final String SHAPE_VIEW = "rest.server.mvc.ShpView";
focal_class.type: String
focal_class.var_name: SHAPE_VIEW
focal_class.declarator: FEATURE_COLLECTION = "FeatureCollection"
focal_class.modifier: public static final
focal_class.original_string: public static final String FEATURE_COLLECTION = "FeatureCollection";
focal_class.type: String
focal_class.var_name: FEATURE_COLLECTION
focal_class.declarator: VECTOR_LAYER_INFO = "VectorLayerInfo"
focal_class.modifier: public static final
focal_class.original_string: public static final String VECTOR_LAYER_INFO = "VectorLayerInfo";
focal_class.type: String
focal_class.var_name: VECTOR_LAYER_INFO
focal_class.declarator: VECTOR_LAYER_ID = "VectorLayerId"
focal_class.modifier: public static final
focal_class.original_string: public static final String VECTOR_LAYER_ID = "VectorLayerId";
focal_class.type: String
focal_class.var_name: VECTOR_LAYER_ID
focal_class.declarator: ATTRIBUTES = "Attrs"
focal_class.modifier: public static final
focal_class.original_string: public static final String ATTRIBUTES = "Attrs";
focal_class.type: String
focal_class.var_name: ATTRIBUTES
focal_class.file: plugin/face-rest/face-rest/src/main/java/org/geomajas/rest/server/mvc/RestController.java
focal_class.identifier: RestController
focal_class.class_method_signature: RestController.readOneFeature(@PathVariable String layerId, @PathVariable String featureId,
  			@PathVariable String format,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs, Model model)
focal_class.full_signature: @RequestMapping(value = "/rest/{layerId}/{featureId}.{format}", method = RequestMethod.GET) public String readOneFeature(@PathVariable String layerId, @PathVariable String featureId,
  			@PathVariable String format,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs, Model model)
focal_class.identifier: readOneFeature
focal_class.modifiers: @RequestMapping(value = "/rest/{layerId}/{featureId}.{format}", method = RequestMethod.GET) public
focal_class.parameters: (@PathVariable String layerId, @PathVariable String featureId,
  			@PathVariable String format,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs, Model model)
focal_class.return: String
focal_class.signature: String readOneFeature(@PathVariable String layerId, @PathVariable String featureId,
  			@PathVariable String format,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs, Model model)
focal_class.class_method_signature: RestController.readFeatures(@PathVariable String layerId,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs,
  			@RequestParam(value = "box", required = false) Envelope box,
  			@RequestParam(value = "bbox", required = false) Envelope bbox,
  			@RequestParam(value = "maxFeatures", required = false) Integer maxFeatures,
  			@RequestParam(value = "limit", required = false) Integer limit,
  			@RequestParam(value = "offset", required = false) Integer offset,
  			@RequestParam(value = "order_by", required = false) String orderBy,
  			@RequestParam(value = "dir", required = false) FeatureOrder dir,
  			@RequestParam(value = "queryable", required = false) String queryable,
  			@RequestParam(value = "format", required = false, defaultValue = "json") String format,
  			@RequestParam(value = "epsg", required = false) String epsg,
  			WebRequest request, Model model)
focal_class.full_signature: @RequestMapping(value = "/rest/{layerId}", method = RequestMethod.GET) public String readFeatures(@PathVariable String layerId,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs,
  			@RequestParam(value = "box", required = false) Envelope box,
  			@RequestParam(value = "bbox", required = false) Envelope bbox,
  			@RequestParam(value = "maxFeatures", required = false) Integer maxFeatures,
  			@RequestParam(value = "limit", required = false) Integer limit,
  			@RequestParam(value = "offset", required = false) Integer offset,
  			@RequestParam(value = "order_by", required = false) String orderBy,
  			@RequestParam(value = "dir", required = false) FeatureOrder dir,
  			@RequestParam(value = "queryable", required = false) String queryable,
  			@RequestParam(value = "format", required = false, defaultValue = "json") String format,
  			@RequestParam(value = "epsg", required = false) String epsg,
  			WebRequest request, Model model)
focal_class.identifier: readFeatures
focal_class.modifiers: @RequestMapping(value = "/rest/{layerId}", method = RequestMethod.GET) public
focal_class.parameters: (@PathVariable String layerId,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs,
  			@RequestParam(value = "box", required = false) Envelope box,
  			@RequestParam(value = "bbox", required = false) Envelope bbox,
  			@RequestParam(value = "maxFeatures", required = false) Integer maxFeatures,
  			@RequestParam(value = "limit", required = false) Integer limit,
  			@RequestParam(value = "offset", required = false) Integer offset,
  			@RequestParam(value = "order_by", required = false) String orderBy,
  			@RequestParam(value = "dir", required = false) FeatureOrder dir,
  			@RequestParam(value = "queryable", required = false) String queryable,
  			@RequestParam(value = "format", required = false, defaultValue = "json") String format,
  			@RequestParam(value = "epsg", required = false) String epsg,
  			WebRequest request, Model model)
focal_class.return: String
focal_class.signature: String readFeatures(@PathVariable String layerId,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs,
  			@RequestParam(value = "box", required = false) Envelope box,
  			@RequestParam(value = "bbox", required = false) Envelope bbox,
  			@RequestParam(value = "maxFeatures", required = false) Integer maxFeatures,
  			@RequestParam(value = "limit", required = false) Integer limit,
  			@RequestParam(value = "offset", required = false) Integer offset,
  			@RequestParam(value = "order_by", required = false) String orderBy,
  			@RequestParam(value = "dir", required = false) FeatureOrder dir,
  			@RequestParam(value = "queryable", required = false) String queryable,
  			@RequestParam(value = "format", required = false, defaultValue = "json") String format,
  			@RequestParam(value = "epsg", required = false) String epsg,
  			WebRequest request, Model model)
focal_class.class_method_signature: RestController.getView(String fileType)
focal_class.full_signature: private String getView(String fileType)
focal_class.identifier: getView
focal_class.modifiers: private
focal_class.parameters: (String fileType)
focal_class.return: String
focal_class.signature: String getView(String fileType)
focal_class.class_method_signature: RestController.createUpdateFeatures()
focal_class.full_signature: public ModelAndView createUpdateFeatures()
focal_class.identifier: createUpdateFeatures
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: ModelAndView
focal_class.signature: ModelAndView createUpdateFeatures()
focal_class.class_method_signature: RestController.updateFeature()
focal_class.full_signature: public ModelAndView updateFeature()
focal_class.identifier: updateFeature
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: ModelAndView
focal_class.signature: ModelAndView updateFeature()
focal_class.class_method_signature: RestController.deleteFeature()
focal_class.full_signature: public ModelAndView deleteFeature()
focal_class.identifier: deleteFeature
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: ModelAndView
focal_class.signature: ModelAndView deleteFeature()
focal_class.class_method_signature: RestController.countFeatures()
focal_class.full_signature: public ModelAndView countFeatures()
focal_class.identifier: countFeatures
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: ModelAndView
focal_class.signature: ModelAndView countFeatures()
focal_class.class_method_signature: RestController.initBinder(WebDataBinder binder)
focal_class.full_signature: @InitBinder public void initBinder(WebDataBinder binder)
focal_class.identifier: initBinder
focal_class.modifiers: @InitBinder public
focal_class.parameters: (WebDataBinder binder)
focal_class.return: void
focal_class.signature: void initBinder(WebDataBinder binder)
focal_class.class_method_signature: RestController.getIncludes(Boolean noGeom)
focal_class.full_signature: private int getIncludes(Boolean noGeom)
focal_class.identifier: getIncludes
focal_class.modifiers: private
focal_class.parameters: (Boolean noGeom)
focal_class.return: int
focal_class.signature: int getIncludes(Boolean noGeom)
focal_class.class_method_signature: RestController.getOffset(Integer offset)
focal_class.full_signature: private int getOffset(Integer offset)
focal_class.identifier: getOffset
focal_class.modifiers: private
focal_class.parameters: (Integer offset)
focal_class.return: int
focal_class.signature: int getOffset(Integer offset)
focal_class.class_method_signature: RestController.getLimit(Integer... limit)
focal_class.full_signature: private int getLimit(Integer... limit)
focal_class.identifier: getLimit
focal_class.modifiers: private
focal_class.parameters: (Integer... limit)
focal_class.return: int
focal_class.signature: int getLimit(Integer... limit)
focal_class.class_method_signature: RestController.and(List<Filter> filters)
focal_class.full_signature: private Filter and(List<Filter> filters)
focal_class.identifier: and
focal_class.modifiers: private
focal_class.parameters: (List<Filter> filters)
focal_class.return: Filter
focal_class.signature: Filter and(List<Filter> filters)
focal_class.class_method_signature: RestController.createBBoxFilter(String layerId, Crs crs, Envelope... bbox)
focal_class.full_signature: private Filter createBBoxFilter(String layerId, Crs crs, Envelope... bbox)
focal_class.identifier: createBBoxFilter
focal_class.modifiers: private
focal_class.parameters: (String layerId, Crs crs, Envelope... bbox)
focal_class.return: Filter
focal_class.signature: Filter createBBoxFilter(String layerId, Crs crs, Envelope... bbox)
focal_class.class_method_signature: RestController.createAttributeFilter(String attributeName, String operation, String value)
focal_class.full_signature: private Filter createAttributeFilter(String attributeName, String operation, String value)
focal_class.identifier: createAttributeFilter
focal_class.modifiers: private
focal_class.parameters: (String attributeName, String operation, String value)
focal_class.return: Filter
focal_class.signature: Filter createAttributeFilter(String attributeName, String operation, String value)
focal_class.class_method_signature: RestController.createComparator(VectorLayer layer, final String attributeName,
  			final FeatureOrder order)
focal_class.full_signature: private Comparator<? super InternalFeature> createComparator(VectorLayer layer, final String attributeName,
  			final FeatureOrder order)
focal_class.identifier: createComparator
focal_class.modifiers: private
focal_class.parameters: (VectorLayer layer, final String attributeName,
  			final FeatureOrder order)
focal_class.return: Comparator<? super InternalFeature>
focal_class.signature: Comparator<? super InternalFeature> createComparator(VectorLayer layer, final String attributeName,
  			final FeatureOrder order)
focal_method.body: @RequestMapping(value = "/rest/{layerId}/{featureId}.{format}", method = RequestMethod.GET)
  	public String readOneFeature(@PathVariable String layerId, @PathVariable String featureId,
  			@PathVariable String format,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs, Model model) throws RestException {
  		List<InternalFeature> features;
  		try {
  			features = vectorLayerService.getFeatures(layerId, null, filterService
  					.createFidFilter(new String[] { featureId }), null, getIncludes(noGeom));
  		} catch (GeomajasException e) {
  			throw new RestException(e, RestException.PROBLEM_READING_LAYERSERVICE, layerId);
  		}
  		if (features.size() != 1) {
  			throw new RestException(RestException.FEATURE_NOT_FOUND, featureId, layerId);
  		}
  		List<String> attributes = null;
  		if (attrs != null) {
  			attributes = Arrays.asList(attrs.split(","));
  		}
  
  		model.addAttribute(FEATURE_COLLECTION, features.get(0));
  		model.addAttribute(VECTOR_LAYER_INFO, features.get(0).getLayer().getLayerInfo());
  		model.addAttribute(ATTRIBUTES, attributes);
  		model.addAttribute(VECTOR_LAYER_ID, layerId);
  		return getView(format);
  	}
focal_method.class_method_signature: RestController.readOneFeature(@PathVariable String layerId, @PathVariable String featureId,
  			@PathVariable String format,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs, Model model)
focal_method.full_signature: @RequestMapping(value = "/rest/{layerId}/{featureId}.{format}", method = RequestMethod.GET) public String readOneFeature(@PathVariable String layerId, @PathVariable String featureId,
  			@PathVariable String format,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs, Model model)
focal_method.identifier: readOneFeature
focal_method.invocations: getFeatures createFidFilter getIncludes size asList split addAttribute get addAttribute getLayerInfo getLayer get addAttribute addAttribute getView
focal_method.modifiers: @RequestMapping(value = "/rest/{layerId}/{featureId}.{format}", method = RequestMethod.GET) public
focal_method.parameters: (@PathVariable String layerId, @PathVariable String featureId,
  			@PathVariable String format,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs, Model model)
focal_method.return: String
focal_method.signature: String readOneFeature(@PathVariable String layerId, @PathVariable String featureId,
  			@PathVariable String format,
  			@RequestParam(value = "no_geom", required = false) boolean noGeom,
  			@RequestParam(value = "attrs", required = false) String attrs, Model model)