/**
 * Copyright (c) 2011, 2014 - Lunifera GmbH (Gross Enzersdorf), Loetz GmbH&Co.KG (Heidelberg)
 * 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
 */
package org.eclipse.osbp.entitydsl.documentation.demo {
		
	datatype String jvmType String;
	datatype long jvmType Long;
	
	
	entity Foo {
		inheritance per class{}
		id long id;
		var String name;
	}
	
	entity Bar extends Foo {
		var long number;
		
		def String getnumberasstring() {
			return java.lang.Long::toString(number)
		}
	}

}


 