All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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