// Path: src/main/java/org/geekmj/model/ConstructorDateParamModel.java
// public class ConstructorDateParamModel {
// 
// 	private String dateAsString;
// 
// 	/* Expecting ISO-8601 format date string */
// 	public ConstructorDateParamModel(String dateAsString) {
// 		this.dateAsString = dateAsString;
// 
// 	}
// 
// 	public LocalDateTime getDate() {
// 		LocalDateTime dateTime = null;
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE_TIME);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date time failed.");
// 		}
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date failed.");
// 		}
// 
// 		return dateTime;
// 	}
// 
// }
// 
// Path: src/main/java/org/geekmj/model/DateParamModel.java
// public class DateParamModel {
// 
// 	private String dateAsString;
// 
// 	public String getDateAsString() {
// 		return dateAsString;
// 	}
// 
// 	public void setDateAsString(String dateAsString) {
// 		this.dateAsString = dateAsString;
// 	}
// 
// 	public LocalDateTime getDate() {
// 		LocalDateTime dateTime = null;
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE_TIME);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date time failed.");
// 		}
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date failed.");
// 		}
// 
// 		return dateTime;
// 	}
// 
// }
// 
// Path: src/main/java/org/geekmj/model/StaticMethodDateParamModel.java
// public class StaticMethodDateParamModel {
// 
// 	private String dateAsString;
// 
// 	public StaticMethodDateParamModel() {
// 	}
// 
// 	public String getDateAsString() {
// 		return dateAsString;
// 	}
// 
// 	public void setDateAsString(String dateAsString) {
// 		this.dateAsString = dateAsString;
// 	}
// 
// 	public LocalDateTime getDate() {
// 		LocalDateTime dateTime = null;
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE_TIME);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date time failed.");
// 		}
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date failed.");
// 		}
// 
// 		return dateTime;
// 	}
// 
// 	/*
// 	 * Expecting ISO-8601 format date string
// 	 *  
// 	 */
// 	public static StaticMethodDateParamModel valueOf(String dateAsString) {
// 		StaticMethodDateParamModel staticMethodDateParamModel = new StaticMethodDateParamModel();
// 		staticMethodDateParamModel.setDateAsString(dateAsString);
// 		return staticMethodDateParamModel;
// 	}
// 
// }


import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ws.rs.Consumes;
import javax.ws.rs.CookieParam;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.geekmj.model.ConstructorDateParamModel;
import org.geekmj.model.DateParamModel;
import org.geekmj.model.StaticMethodDateParamModel;
import org.springframework.stereotype.Component;
package org.geekmj.resource;




@Path("/custom-type-for-parameters")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Component
public class CustomTypeParamterConsumeResource {

	@QueryParam("datesAsStrings")
	private List<DateParamModel> dateParamModels;

	@CookieParam("dateParamModelAsCookie")
	private StaticMethodDateParamModel cookieDateParamModel;

	@HeaderParam("dateParamModelAsHeader")
// Path: src/main/java/org/geekmj/model/ConstructorDateParamModel.java
// public class ConstructorDateParamModel {
// 
// 	private String dateAsString;
// 
// 	/* Expecting ISO-8601 format date string */
// 	public ConstructorDateParamModel(String dateAsString) {
// 		this.dateAsString = dateAsString;
// 
// 	}
// 
// 	public LocalDateTime getDate() {
// 		LocalDateTime dateTime = null;
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE_TIME);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date time failed.");
// 		}
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date failed.");
// 		}
// 
// 		return dateTime;
// 	}
// 
// }
// 
// Path: src/main/java/org/geekmj/model/DateParamModel.java
// public class DateParamModel {
// 
// 	private String dateAsString;
// 
// 	public String getDateAsString() {
// 		return dateAsString;
// 	}
// 
// 	public void setDateAsString(String dateAsString) {
// 		this.dateAsString = dateAsString;
// 	}
// 
// 	public LocalDateTime getDate() {
// 		LocalDateTime dateTime = null;
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE_TIME);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date time failed.");
// 		}
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date failed.");
// 		}
// 
// 		return dateTime;
// 	}
// 
// }
// 
// Path: src/main/java/org/geekmj/model/StaticMethodDateParamModel.java
// public class StaticMethodDateParamModel {
// 
// 	private String dateAsString;
// 
// 	public StaticMethodDateParamModel() {
// 	}
// 
// 	public String getDateAsString() {
// 		return dateAsString;
// 	}
// 
// 	public void setDateAsString(String dateAsString) {
// 		this.dateAsString = dateAsString;
// 	}
// 
// 	public LocalDateTime getDate() {
// 		LocalDateTime dateTime = null;
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE_TIME);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date time failed.");
// 		}
// 		try {
// 			dateTime = LocalDateTime.parse(dateAsString, DateTimeFormatter.ISO_DATE);
// 		} catch (DateTimeParseException ex) {
// 			System.err.println("Conversion of dateAsString: " + dateAsString + " using ISO date failed.");
// 		}
// 
// 		return dateTime;
// 	}
// 
// 	/*
// 	 * Expecting ISO-8601 format date string
// 	 *  
// 	 */
// 	public static StaticMethodDateParamModel valueOf(String dateAsString) {
// 		StaticMethodDateParamModel staticMethodDateParamModel = new StaticMethodDateParamModel();
// 		staticMethodDateParamModel.setDateAsString(dateAsString);
// 		return staticMethodDateParamModel;
// 	}
// 
// }


// Path: src/main/java/org/geekmj/resource/CustomTypeParamterConsumeResource.java
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ws.rs.Consumes;
import javax.ws.rs.CookieParam;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.geekmj.model.ConstructorDateParamModel;
import org.geekmj.model.DateParamModel;
import org.geekmj.model.StaticMethodDateParamModel;
import org.springframework.stereotype.Component;

package org.geekmj.resource;




@Path("/custom-type-for-parameters")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Component
public class CustomTypeParamterConsumeResource {

	@QueryParam("datesAsStrings")
	private List<DateParamModel> dateParamModels;

	@CookieParam("dateParamModelAsCookie")
	private StaticMethodDateParamModel cookieDateParamModel;

	@HeaderParam("dateParamModelAsHeader")
	private ConstructorDateParamModel headerDateParamModel;