// Path: src/main/java/com/github/jasminb/jsonapi/ResourceIdHandler.java
// public interface ResourceIdHandler {
// 	
// 	/**
// 	 * Convert identifier to {@link String}.
// 	 *
// 	 * @param identifier to convert
// 	 * @return {@link String} identifier string representation
// 	 */
// 	String asString(Object identifier);
// 	
// 	/**
// 	 * Create identifier object by consuming its string representation.
// 	 *
// 	 * @param source {@link String} identifier
// 	 * @return target object
// 	 */
// 	Object fromString(String source);
// }
// 
// Path: src/main/java/com/github/jasminb/jsonapi/StringIdHandler.java
// public class StringIdHandler implements ResourceIdHandler {
// 	
// 	/**
// 	 * Creates new StringIdHandler.
// 	 *
// 	 */
// 	public StringIdHandler() {
// 		// Default constructor
// 	}
// 	
// 	@Override
// 	public String asString(Object identifier) {
// 		if (identifier != null) {
// 			return String.valueOf(identifier);
// 		}
// 		return null;
// 	}
// 	
// 	@Override
// 	public String fromString(String source) {
// 		return source;
// 	}
// }


import com.github.jasminb.jsonapi.ResourceIdHandler;
import com.github.jasminb.jsonapi.StringIdHandler;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
package com.github.jasminb.jsonapi.annotations;



/**
 * Annotation used to mark resource field as an id in JSON API resource class.
 *
 * @author jbegic
 */

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Id {
// Path: src/main/java/com/github/jasminb/jsonapi/ResourceIdHandler.java
// public interface ResourceIdHandler {
// 	
// 	/**
// 	 * Convert identifier to {@link String}.
// 	 *
// 	 * @param identifier to convert
// 	 * @return {@link String} identifier string representation
// 	 */
// 	String asString(Object identifier);
// 	
// 	/**
// 	 * Create identifier object by consuming its string representation.
// 	 *
// 	 * @param source {@link String} identifier
// 	 * @return target object
// 	 */
// 	Object fromString(String source);
// }
// 
// Path: src/main/java/com/github/jasminb/jsonapi/StringIdHandler.java
// public class StringIdHandler implements ResourceIdHandler {
// 	
// 	/**
// 	 * Creates new StringIdHandler.
// 	 *
// 	 */
// 	public StringIdHandler() {
// 		// Default constructor
// 	}
// 	
// 	@Override
// 	public String asString(Object identifier) {
// 		if (identifier != null) {
// 			return String.valueOf(identifier);
// 		}
// 		return null;
// 	}
// 	
// 	@Override
// 	public String fromString(String source) {
// 		return source;
// 	}
// }


// Path: src/main/java/com/github/jasminb/jsonapi/annotations/Id.java
import com.github.jasminb.jsonapi.ResourceIdHandler;
import com.github.jasminb.jsonapi.StringIdHandler;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

package com.github.jasminb.jsonapi.annotations;



/**
 * Annotation used to mark resource field as an id in JSON API resource class.
 *
 * @author jbegic
 */

@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Id {
	Class<? extends ResourceIdHandler> value() default StringIdHandler.class;