
import ns org.eclipse.osbp.dsl.tests.carstore.dtos.CarDto
import ns org.eclipse.osbp.dsl.tests.carstore.dtos.AddonDto
import ns org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle1Dto
import ns org.eclipse.osbp.dsl.tests.carstore.dtos.ToCycle2Dto
import ns org.eclipse.osbp.dsl.tests.carstore.dtos.PersonDto
package org.eclipse.osbp.dsl.tests.carstore.dtos.service {

	dtoservice CarDtoService provides CarDto {
		mutable persistenceUnit testCarstore
	}

	dtoservice AddonDtoService provides AddonDto {
		mutable persistenceUnit testCarstore
	}

	dtoservice ToCycle1DtoService provides ToCycle1Dto {
		mutable persistenceUnit testCarstore
	}

	dtoservice ToCycle2DtoService provides ToCycle2Dto {
		mutable persistenceUnit testCarstore
	}

	dtoservice PersonDtoService provides PersonDto {
		mutable persistenceUnit testCarstore
	}
}