// Path: src/main/java/com/modelsolv/kaboom/model/resource/ObjectResource.java
// public interface ObjectResource {
// 	
// 	public Object getCanonicalObject();
// 	
// 	public void setCanonicalObject(Object obj);
// 
// 	public URI getURI();
// 	
// 	public void setURI(URI uri);
// 	
// 	public ObjectResourceDefinition getResourceDefinition();
// 	
// 	public void setResourceDefinition(ObjectResourceDefinition definition);
// 	
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/resource/ResourceDataModel.java
// public interface ResourceDataModel {
// 
// 	public CanonicalDataType getCanonicalDataType();
// 
// 	public void setCanonicalDataType(CanonicalDataType type);
// 
// 	public ResourceDataModel withCanonicalDataType(CanonicalDataType type);
// 
// 	public Iterable<RDMProperty> getIncludedProperties();
// 
// 	// Add a list of CDM properties from the CanonicalDataType
// 	public ResourceDataModel includingProperties(CDMProperty... properties);
// 
// 	public ResourceDataModel includingProperties(String... properties);
// 
// 	// Add Primitive Property from CDM Property
// 	public RDMPrimitiveProperty addPrimitiveProperty(
// 			CDMPrimitiveProperty property);
// 
// 	// Add Primitive Property directly, chainable, builder style
// 	public ResourceDataModel withPrimitiveProperty(
// 			RDMPrimitiveProperty property);
// 
// 	// Add ReferenceLink from CDMReferenceProperty
// 	public ReferenceLink addReferenceLink(CDMReferenceProperty property);
// 
// 	// Add ReferenceLink Directly, chainable, builder style
// 	public ResourceDataModel withReferenceLink(ReferenceLink refLink);
// 
// 	// Add ReferenceEmbed from CDMReferenceProperty
// 	public ReferenceEmbed addReferenceEmbed(CDMReferenceProperty property);
// 
// 	// Add ReferenceEmbed Directly, chainable, builder style
// 	public ResourceDataModel withReferenceEmbed(ReferenceEmbed refEmbed);
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/object/CanonicalObjectReader.java
// public interface CanonicalObjectReader {
// 	
// 	public Object getPropertyValue(Object obj, CDMProperty prop);
// 	
// 	public Object getPropertyValue(Object obj, RDMProperty prop);
// 	
// 	public Object getPropertyValue(Object obj, String propName);
// }


import com.modelsolv.kaboom.model.resource.ObjectResource;
import com.modelsolv.kaboom.model.resource.ResourceDataModel;
import com.modelsolv.kaboom.object.CanonicalObjectReader;
/*******************************************************************************
 * Copyright (c) 2014 ModelSolv, Inc. and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     ModelSolv, Inc. - initial API and implementation.
 *******************************************************************************/
package com.modelsolv.kaboom.serializer;


public interface Serializer {

	/**
	 * Serialize a canonical object. This is basic serialization without a URI
	 * associated with the root resource. However, referenced objects that have
	 * associated ResourceDefinitions through the
	 * ObjectResourceDefinitionRegistry will be rendered with their URIs.
	 * 
	 * @param obj
	 * @param reader
	 * @param rdm
	 * @return
	 */
	public String serialize(Object obj, CanonicalObjectReader reader,
// Path: src/main/java/com/modelsolv/kaboom/model/resource/ObjectResource.java
// public interface ObjectResource {
// 	
// 	public Object getCanonicalObject();
// 	
// 	public void setCanonicalObject(Object obj);
// 
// 	public URI getURI();
// 	
// 	public void setURI(URI uri);
// 	
// 	public ObjectResourceDefinition getResourceDefinition();
// 	
// 	public void setResourceDefinition(ObjectResourceDefinition definition);
// 	
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/resource/ResourceDataModel.java
// public interface ResourceDataModel {
// 
// 	public CanonicalDataType getCanonicalDataType();
// 
// 	public void setCanonicalDataType(CanonicalDataType type);
// 
// 	public ResourceDataModel withCanonicalDataType(CanonicalDataType type);
// 
// 	public Iterable<RDMProperty> getIncludedProperties();
// 
// 	// Add a list of CDM properties from the CanonicalDataType
// 	public ResourceDataModel includingProperties(CDMProperty... properties);
// 
// 	public ResourceDataModel includingProperties(String... properties);
// 
// 	// Add Primitive Property from CDM Property
// 	public RDMPrimitiveProperty addPrimitiveProperty(
// 			CDMPrimitiveProperty property);
// 
// 	// Add Primitive Property directly, chainable, builder style
// 	public ResourceDataModel withPrimitiveProperty(
// 			RDMPrimitiveProperty property);
// 
// 	// Add ReferenceLink from CDMReferenceProperty
// 	public ReferenceLink addReferenceLink(CDMReferenceProperty property);
// 
// 	// Add ReferenceLink Directly, chainable, builder style
// 	public ResourceDataModel withReferenceLink(ReferenceLink refLink);
// 
// 	// Add ReferenceEmbed from CDMReferenceProperty
// 	public ReferenceEmbed addReferenceEmbed(CDMReferenceProperty property);
// 
// 	// Add ReferenceEmbed Directly, chainable, builder style
// 	public ResourceDataModel withReferenceEmbed(ReferenceEmbed refEmbed);
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/object/CanonicalObjectReader.java
// public interface CanonicalObjectReader {
// 	
// 	public Object getPropertyValue(Object obj, CDMProperty prop);
// 	
// 	public Object getPropertyValue(Object obj, RDMProperty prop);
// 	
// 	public Object getPropertyValue(Object obj, String propName);
// }


// Path: src/main/java/com/modelsolv/kaboom/serializer/Serializer.java
import com.modelsolv.kaboom.model.resource.ObjectResource;
import com.modelsolv.kaboom.model.resource.ResourceDataModel;
import com.modelsolv.kaboom.object.CanonicalObjectReader;

/*******************************************************************************
 * Copyright (c) 2014 ModelSolv, Inc. and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     ModelSolv, Inc. - initial API and implementation.
 *******************************************************************************/
package com.modelsolv.kaboom.serializer;


public interface Serializer {

	/**
	 * Serialize a canonical object. This is basic serialization without a URI
	 * associated with the root resource. However, referenced objects that have
	 * associated ResourceDefinitions through the
	 * ObjectResourceDefinitionRegistry will be rendered with their URIs.
	 * 
	 * @param obj
	 * @param reader
	 * @param rdm
	 * @return
	 */
	public String serialize(Object obj, CanonicalObjectReader reader,
			ResourceDataModel rdm);