
com.dslplatform.api.client.ClientRepository.scala Maven / Gradle / Ivy
package com.dslplatform.api.client
import com.dslplatform.api.patterns.Identifiable
import com.dslplatform.api.patterns.Repository
import com.dslplatform.api.patterns.ServiceLocator
import scala.concurrent.Future
import scala.reflect.ClassTag
/**
* Common base implementation for {@link Repository repository}.
* It redirects calls to proxy services.
* It shouldn't be used or resolved.
* Instead domain model repositories should be resolved.
*
* DSL example:
*
* module Todo {
* aggregate Task;
* snowflake<Task> TaskList;
* }
*
* Java usage:
*
* IServiceLocator locator;
* Repository<Todo.TaskList> repository = locator.resolve(Todo.TaskListRepository.class);
*
* @param [T] domain object type
*/
class ClientRepository[TIdentifiable <: Identifiable : ClassTag](
locator: ServiceLocator)
extends ClientSearchableRepository[TIdentifiable](locator)
with Repository[TIdentifiable] {
protected val crudProxy: CrudProxy = locator.resolve[CrudProxy]
/**
* Generated class will provide class manifest and locator
*
* @param manifest domain object type
* @param locator context in which domain object lives
*/
def find(uris: TraversableOnce[String]): Future[IndexedSeq[TIdentifiable]] = domainProxy.find(uris)
def find(uri: String): Future[TIdentifiable] = crudProxy.read(uri)
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy