Hi Rajat,
you can replace @PathParam with @Context UriInfo info and then call
info.getPathParameters()
(see 
https://jersey.java.net/apidocs/latest/jersey/javax/ws/rs/core/UriInfo.html#getPathParameters())
which will return Map<String, String>; key is path param name, value is 
its value.
Hope it helps,
Pavel
On 28/01/16 07:42, rajat shukla wrote:
> I'm trying to create jersey resources programatically (without 
> Annotations). I have a method raiseAlarm that takes a Name and id as 
> input parameter. I want to take Name from the JSON input and I want id 
> to come from path parameter. The code looks some thing like this...
> {code}
> |public class JerseyExample { public static void main(String[] args) { 
> JerseyExample deployer = new JerseyExample(); deployer.init(); } 
> public static class BaseResource extends ResourceConfig { public 
> BaseResource() { init(); } public void init() { try { Resource.Builder 
> resourceBuilder2 = Resource.builder(); 
> resourceBuilder2.path("/raiseAlarm/{id}"); ResourceMethod.Builder 
> method2 = resourceBuilder2.addMethod("POST") 
> .consumes(MediaType.APPLICATION_JSON_TYPE) 
> .produces(MediaType.APPLICATION_JSON_TYPE) .handledBy(this, 
> this.getClass().getMethod("raiseAlarm", Name.class, String.class)); 
> Resource childResource1 = resourceBuilder2.build(); Resource.Builder 
> resourceBuilder = Resource.builder(); 
> resourceBuilder.path("/employee/status"); 
> resourceBuilder.addChildResource(childResource1); Resource 
> rootResource = resourceBuilder.build(); 
> registerResources(rootResource); } catch (Exception e) { 
> e.printStackTrace(); } } public String raiseAlarm(Name 
> notification,_at_PathParam("id") String id) { System.out.println("INSIDE 
> RAISE ALARM "); System.out.println(notification.toString() + " ID: 
> "+id); return "Result"; } public void destroy() { } public static 
> class Name { String firstName; String lastName; String middleName; 
> public String getFirstName() { return firstName; } public void 
> setFirstName(String firstName) { this.firstName = firstName; } public 
> String getLastName() { return lastName; } public void 
> setLastName(String lastName) { this.lastName = lastName; } public 
> String getMiddleName() { return middleName; } public void 
> setMiddleName(String middleName) { this.middleName = middleName; } 
> @Override public String toString() { return firstName + " " + 
> middleName + " " + lastName; } } } public void init() { Server server 
> = new Server(); ServletContextHandler context0 = new 
> ServletContextHandler(ServletContextHandler.SESSIONS); ServletHolder 
> serveltHolder1 = new ServletHolder(new ServletContainer(new 
> BaseResource())); context0.addServlet(serveltHolder1, "/*"); 
> context0.setVirtualHosts(new String[]{"@external"}); ServerConnector 
> connector = new ServerConnector(server); 
> connector.setHost("localhost"); connector.setPort(9069); 
> connector.setName("external"); HandlerCollection collection = new 
> HandlerCollection(); collection.addHandler(context0); 
> server.setHandler(collection); server.addConnector(connector); try { 
> server.start(); server.join(); } catch (Exception e) { 
> e.printStackTrace(); } } }|
>
> {code}
>
> The above code works. I want to know a way in which I can declare the 
> Path paramenters or Query parameters programatically, so that I can 
> define my method signature as raiseAlarm(Name notification,String id) 
> and avoid @PathParam("id") annotation.
>
> Regards,
> Rajat.