Map<String, Object> props = new HashMap<String, Object>();
props.put("contextMatchStrategy", "stem");
sf.setProperties(props);
ServerImpl svr = (ServerImpl) sf.create();
URIMapper mapper = (URIMapper) svr.getEndpoint().getService().get(URIMapper.class.getName());
assertNotNull(mapper);
BindingOperationInfo bop = mapper.getOperation("/customers", "GET", null);
assertNotNull(bop);
assertEquals("getCustomers", bop.getName().getLocalPart());
bop = mapper.getOperation("/customers", "POST", null);
assertNotNull(bop);
assertEquals("addCustomer", bop.getName().getLocalPart());
bop = mapper.getOperation("/customers/123", "GET", null);
assertNotNull(bop);
assertEquals("getCustomer", bop.getName().getLocalPart());
bop = mapper.getOperation("/customers/123", "PUT", null);
assertNotNull(bop);
assertEquals("updateCustomer", bop.getName().getLocalPart());
// TEST POST/GETs
Document res = get("http://localhost:9001/foo/customers");
assertNotNull(res);
addNamespace("c", "http://cxf.apache.org/jra");
assertValid("/c:customers", res);
assertValid("/c:customers/c:customer/c:id[text()='123']", res);
assertValid("/c:customers/c:customer/c:name[text()='Dan Diephouse']", res);
res = get("http://localhost:9001/foo/customers/123");
assertNotNull(res);
assertValid("/c:customer", res);
assertValid("/c:customer/c:id[text()='123']", res);
assertValid("/c:customer/c:name[text()='Dan Diephouse']", res);
// Try invalid customer
res = get("http://localhost:9001/foo/customers/0", 500);
assertNotNull(res);
assertValid("//c:CustomerNotFoundDetails", res);
res = put("http://localhost:9001/foo/customers/123", "update.xml");
assertNotNull(res);
assertValid("/c:updateCustomer", res);
res = post("http://localhost:9001/foo/customers", "add.xml");
assertNotNull(res);
assertValid("/c:addCustomer", res);
// Get the updated document
res = get("http://localhost:9001/foo/customers/123");
assertNotNull(res);
assertValid("/c:customer", res);
assertValid("/c:customer/c:id[text()='123']", res);
assertValid("/c:customer/c:name[text()='Danno Manno']", res);
svr.stop();
}