// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CDMPrimitiveProperty.java
// public interface CDMPrimitiveProperty extends CDMProperty, ReadableCDMPrimitiveProperty {
// 	
// 	public void setType(PrimitiveDataType type);
// 	
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CDMReferenceProperty.java
// public interface CDMReferenceProperty extends CDMProperty, ReadableCDMReferenceProperty {
// 	
// 	public void setTargetDataType(CanonicalDataType type);
// 	
// 	public CDMReferenceProperty withTargetDataType(CanonicalDataType type);
// 	
// 	public void setInverseProperty(CDMReferenceProperty inverse);
// 	
// 	public CDMReferenceProperty withInverseProperty(CDMReferenceProperty inverse);
// 
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CanonicalDataType.java
// public interface CanonicalDataType {
// 	
// 	public String getName();
// 	
// 	public void setName(String name);
// 	
// 	public Iterable<CDMProperty> getProperties();
// 	
// 	public CDMProperty getProperty(String propName);
// 	
// 	public boolean hasProperty(CDMProperty property);
// 	
// 	public CanonicalDataType withPrimitive(String name, PrimitiveDataType type);
// 	
// 	public CanonicalDataType withPrimitive(String name, PrimitiveDataType type, Cardinality cardinality);
// 
// 	public CanonicalDataType withReference(String name, CanonicalDataType type);
// 
// 	public CanonicalDataType withReference(String name, CanonicalDataType type, Cardinality cardinality);
// 
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/resource/nativeImpl/NativeRDMFactory.java
// public class NativeRDMFactory implements RDMFactory {
// 
// 	@Override
// 	public RDMPrimitiveProperty createRDMPrimitiveProperty(
// 			CDMPrimitiveProperty cdmProperty) {
// 		return new RDMPrimitivePropertyImpl(cdmProperty);
// 	}
// 
// 	@Override
// 	public ReferenceLink createReferenceLink(CDMReferenceProperty cdmProperty) {
// 		return new ReferenceLinkImpl(cdmProperty);
// 	}
// 
// 	@Override
// 	public ReferenceEmbed createReferenceEmbed(CDMReferenceProperty cdmProperty) {
// 		return new ReferenceEmbedImpl(cdmProperty);
// 	}
// 
// 	@Override
// 	public ResourceDataModel createResourceDataModel(CanonicalDataType cdt) {
// 		return new ResourceDataModelImpl(cdt);
// 	}
// 
// 	@Override
// 	public ObjectResource createObjectResource(Object canonicalObject, URI uri,
// 			ObjectResourceDefinition definition) {
// 		return new ObjectResourceImpl(canonicalObject, uri, definition);
// 	}
// 
// 	@Override
// 	public ObjectResourceDefinition createObjectResourceDefinition(
// 			String uriTemplate, ResourceDataModel rdm) {
// 		return new ObjectResourceDefinitionImpl(uriTemplate, rdm);
// 	}
// 
// }


import java.net.URI;
import com.modelsolv.kaboom.model.canonical.CDMPrimitiveProperty;
import com.modelsolv.kaboom.model.canonical.CDMReferenceProperty;
import com.modelsolv.kaboom.model.canonical.CanonicalDataType;
import com.modelsolv.kaboom.model.resource.nativeImpl.NativeRDMFactory;
/*******************************************************************************
 * 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.model.resource;



public interface RDMFactory {

	public static RDMFactory INSTANCE = new NativeRDMFactory();

	public RDMPrimitiveProperty createRDMPrimitiveProperty(
			CDMPrimitiveProperty cdmProperty);

	public ReferenceLink createReferenceLink(CDMReferenceProperty cdmProperty);

	public ReferenceEmbed createReferenceEmbed(CDMReferenceProperty cdmProperty);

	public ResourceDataModel createResourceDataModel(CanonicalDataType cdt);
	
	public ObjectResourceDefinition createObjectResourceDefinition(String uriTemplate, ResourceDataModel rdm);

	public ObjectResource createObjectResource(Object canonicalObject, URI uri,
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CDMPrimitiveProperty.java
// public interface CDMPrimitiveProperty extends CDMProperty, ReadableCDMPrimitiveProperty {
// 	
// 	public void setType(PrimitiveDataType type);
// 	
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CDMReferenceProperty.java
// public interface CDMReferenceProperty extends CDMProperty, ReadableCDMReferenceProperty {
// 	
// 	public void setTargetDataType(CanonicalDataType type);
// 	
// 	public CDMReferenceProperty withTargetDataType(CanonicalDataType type);
// 	
// 	public void setInverseProperty(CDMReferenceProperty inverse);
// 	
// 	public CDMReferenceProperty withInverseProperty(CDMReferenceProperty inverse);
// 
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/canonical/CanonicalDataType.java
// public interface CanonicalDataType {
// 	
// 	public String getName();
// 	
// 	public void setName(String name);
// 	
// 	public Iterable<CDMProperty> getProperties();
// 	
// 	public CDMProperty getProperty(String propName);
// 	
// 	public boolean hasProperty(CDMProperty property);
// 	
// 	public CanonicalDataType withPrimitive(String name, PrimitiveDataType type);
// 	
// 	public CanonicalDataType withPrimitive(String name, PrimitiveDataType type, Cardinality cardinality);
// 
// 	public CanonicalDataType withReference(String name, CanonicalDataType type);
// 
// 	public CanonicalDataType withReference(String name, CanonicalDataType type, Cardinality cardinality);
// 
// }
// 
// Path: src/main/java/com/modelsolv/kaboom/model/resource/nativeImpl/NativeRDMFactory.java
// public class NativeRDMFactory implements RDMFactory {
// 
// 	@Override
// 	public RDMPrimitiveProperty createRDMPrimitiveProperty(
// 			CDMPrimitiveProperty cdmProperty) {
// 		return new RDMPrimitivePropertyImpl(cdmProperty);
// 	}
// 
// 	@Override
// 	public ReferenceLink createReferenceLink(CDMReferenceProperty cdmProperty) {
// 		return new ReferenceLinkImpl(cdmProperty);
// 	}
// 
// 	@Override
// 	public ReferenceEmbed createReferenceEmbed(CDMReferenceProperty cdmProperty) {
// 		return new ReferenceEmbedImpl(cdmProperty);
// 	}
// 
// 	@Override
// 	public ResourceDataModel createResourceDataModel(CanonicalDataType cdt) {
// 		return new ResourceDataModelImpl(cdt);
// 	}
// 
// 	@Override
// 	public ObjectResource createObjectResource(Object canonicalObject, URI uri,
// 			ObjectResourceDefinition definition) {
// 		return new ObjectResourceImpl(canonicalObject, uri, definition);
// 	}
// 
// 	@Override
// 	public ObjectResourceDefinition createObjectResourceDefinition(
// 			String uriTemplate, ResourceDataModel rdm) {
// 		return new ObjectResourceDefinitionImpl(uriTemplate, rdm);
// 	}
// 
// }


// Path: src/main/java/com/modelsolv/kaboom/model/resource/RDMFactory.java
import java.net.URI;
import com.modelsolv.kaboom.model.canonical.CDMPrimitiveProperty;
import com.modelsolv.kaboom.model.canonical.CDMReferenceProperty;
import com.modelsolv.kaboom.model.canonical.CanonicalDataType;
import com.modelsolv.kaboom.model.resource.nativeImpl.NativeRDMFactory;

/*******************************************************************************
 * 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.model.resource;



public interface RDMFactory {

	public static RDMFactory INSTANCE = new NativeRDMFactory();

	public RDMPrimitiveProperty createRDMPrimitiveProperty(
			CDMPrimitiveProperty cdmProperty);

	public ReferenceLink createReferenceLink(CDMReferenceProperty cdmProperty);

	public ReferenceEmbed createReferenceEmbed(CDMReferenceProperty cdmProperty);

	public ResourceDataModel createResourceDataModel(CanonicalDataType cdt);
	
	public ObjectResourceDefinition createObjectResourceDefinition(String uriTemplate, ResourceDataModel rdm);

	public ObjectResource createObjectResource(Object canonicalObject, URI uri,
			ObjectResourceDefinition ord);