text:
Q: Play, Ebeans: NullPointerException when starting application with multiple DBs I'm having an issue when trying to launch an application (using Play v2.5.10) that needs to be able to connect to two DB's (one master DB with entities and the other with time series data relating to the said entities). My project is structured as follows.
In my build.sbt I have the following line
playEbeanModels in Compile := Seq("models.sentinel.*", "models.kodi.*")

in my application.conf I have the following pointing to the package containing the Entity
ebean.sentinel = ["models.sentinel.*"]
ebean.kodi = ["models.kodi.*"]

and configured the datasources as such
db {
  sentinel {
    hikaricp {
      dataSourceClassName = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
      maxLifetime=900000
      idleTimeout=300000
      maximumPoolSize=100
      minimumIdle=5
      username = sentinel
      password = sentinelAdmin

      dataSource {
        user = *******
        password = "*************"
        databaseName = "sentinel"
        serverName = "**********"
        portNumber = 3306
        interactiveClient=true
        useUnicode=true
        autoReconnect=true
        prepStmtCacheSqlLimit=2048
        cachePrepStmts=true
        prepStmtCacheSize=250
        useServerPrepStmts=true
      }
    }
  }
  kodi {
    hikaricp {
      dataSourceClassName = "com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
      maxLifetime=900000
      idleTimeout=300000
      maximumPoolSize=100
      minimumIdle=5
         username = kodi
        password = kodiAdmin
      dataSource {
        user = ******
        password = "********"
        databaseName = "kodi"
        serverName = "********"
        portNumber = 3306
        interactiveClient=true
        useUnicode=true
        autoReconnect=true
        prepStmtCacheSqlLimit=2048
        cachePrepStmts=true
        prepStmtCacheSize=250
        useServerPrepStmts=true
      }
    }
  }
}

When I try and compile and following stack trace (truncated to fit)
[info] Babel compiling on 10 source(s)
[warn] application - Logger configuration in conf files is deprecated and has no effect. Use a logback configuration file instead.
[info] application - Creating Pool for datasource 'sentinel'
[info] p.a.d.DefaultDBApi - Database [sentinel] connected at jdbc:mysql://*********:3306/sentinel
[info] application - Creating Pool for datasource 'kodi'
[info] p.a.d.DefaultDBApi - Database [kodi] connected at jdbc:mysql://*********:3306/kodi
[error] i.e.s.d.BeanDescriptorManager - Error in deployment
java.lang.NullPointerException: null
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.derive(DocStoreBeanBaseAdapter.java:323)
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.<init>(DocStoreBeanBaseAdapter.java:110)
    at io.ebeanservice.docstore.none.NoneDocStoreBeanAdapter.<init>(NoneDocStoreBeanAdapter.java:17)
    at io.ebeanservice.docstore.none.NoneDocStoreFactory.createAdapter(NoneDocStoreFactory.java:24)
    at io.ebeaninternal.server.deploy.BeanDescriptorManager.createDocStoreBeanAdapter(BeanDescriptorManager.java:260)
    at io.ebeaninternal.server.deploy.BeanDescriptor.<init>(BeanDescriptor.java:491)
    at io.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityRelationships(BeanDescriptorManager.java:761)
    at io.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:323)
    at io.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:141)
    at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:127)
[error] i.e.s.d.BeanDescriptorManager - Error in deployment
java.lang.NullPointerException: null
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.derive(DocStoreBeanBaseAdapter.java:323)
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.<init>(DocStoreBeanBaseAdapter.java:110)
    at io.ebeanservice.docstore.none.NoneDocStoreBeanAdapter.<init>(NoneDocStoreBeanAdapter.java:17)
    at io.ebeanservice.docstore.none.NoneDocStoreFactory.createAdapter(NoneDocStoreFactory.java:24)
    at io.ebeaninternal.server.deploy.BeanDescriptorManager.createDocStoreBeanAdapter(BeanDescriptorManager.java:260)
    at io.ebeaninternal.server.deploy.BeanDescriptor.<init>(BeanDescriptor.java:491)
    at io.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityRelationships(BeanDescriptorManager.java:761)
    at io.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:323)
    at io.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:141)
    at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:127)
[info] application - ApplicationTimer demo: Starting application at 2017-03-29T13:44:16.602Z
[error] application -

! @73fn6o32j - Internal server error, for (GET) [/] ->

play.api.UnexpectedException: Unexpected exception[CreationException: Unable to create injector, see the following errors:

1) Error injecting constructor, java.lang.NullPointerException
  at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:35)
  at play.db.ebean.EbeanDynamicEvolutions.class(EbeanDynamicEvolutions.java:32)
  while locating play.db.ebean.EbeanDynamicEvolutions
  at play.db.ebean.EbeanModule.bindings(EbeanModule.java:21):
Binding(class play.api.db.evolutions.DynamicEvolutions to ConstructionTarget(class play.db.ebean.EbeanDynamicEvolutions) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.api.db.evolutions.DynamicEvolutions
  while locating play.api.db.evolutions.ApplicationEvolutionsProvider
  at play.api.db.evolutions.EvolutionsModule.<init>(EvolutionsModule.scala:20):
Binding(class play.api.db.evolutions.ApplicationEvolutions to ProviderConstructionTarget(class play.api.db.evolutions.ApplicationEvolutionsProvider) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.api.db.evolutions.ApplicationEvolutions
Caused by: java.lang.NullPointerException
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.derive(DocStoreBeanBaseAdapter.java:323)
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.<init>(DocStoreBeanBaseAdapter.java:110)
    ..............................
    at io.ebean.EbeanServerFactory.createInternal(EbeanServerFactory.java:108)
    at io.ebean.EbeanServerFactory.create(EbeanServerFactory.java:67)
    at play.db.ebean.EbeanDynamicEvolutions.lambda$start$3(EbeanDynamicEvolutions.java:49)
    at java.util.HashMap.forEach(HashMap.java:1288)
    at play.db.ebean.EbeanDynamicEvolutions.start(EbeanDynamicEvolutions.java:49)
    at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:38)
    at play.db.ebean.EbeanDynamicEvolutions$$FastClassByGuice$$52c94231.newInstance(<generated>)
    at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
    ..............................
    at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1015)
    at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1054)
    at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:405)
    at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:400)
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get$lzycompute(EvolutionsModule.scala:49)
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:49)
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:40)
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
    at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72)
    at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:61)
    at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:62)
    ..............................
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
    at com.google.inject.Guice.createInjector(Guice.java:99)
    at com.google.inject.Guice.createInjector(Guice.java:84)
    at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:181)
    at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:137)
    ..............................
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:126)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:118)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
    at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

2) Error injecting constructor, java.lang.NullPointerException
  at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:35)
  at play.db.ebean.EbeanDynamicEvolutions.class(EbeanDynamicEvolutions.java:32)
  while locating play.db.ebean.EbeanDynamicEvolutions
  at play.db.ebean.EbeanModule.bindings(EbeanModule.java:21):
Binding(class play.api.db.evolutions.DynamicEvolutions to ConstructionTarget(class play.db.ebean.EbeanDynamicEvolutions) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.api.db.evolutions.DynamicEvolutions
Caused by: java.lang.NullPointerException
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.derive(DocStoreBeanBaseAdapter.java:323)
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.<init>(DocStoreBeanBaseAdapter.java:110)
    ..............................
    at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:127)
    at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:44)
    at io.ebean.EbeanServerFactory.createInternal(EbeanServerFactory.java:108)
    at io.ebean.EbeanServerFactory.create(EbeanServerFactory.java:67)
    at play.db.ebean.EbeanDynamicEvolutions.lambda$start$3(EbeanDynamicEvolutions.java:49)
    at java.util.HashMap.forEach(HashMap.java:1288)
    at play.db.ebean.EbeanDynamicEvolutions.start(EbeanDynamicEvolutions.java:49)
    at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:38)
    at play.db.ebean.EbeanDynamicEvolutions$$FastClassByGuice$$52c94231.newInstance(<generated>)
    at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:90)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
    ..............................
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
    at com.google.inject.Guice.createInjector(Guice.java:99)
    at com.google.inject.Guice.createInjector(Guice.java:84)
    at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:181)
    at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:137)
    ..............................
    at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

2 errors]
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:178)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1.apply(DevServerStart.scala:128)
    at scala.Option.map(Option.scala:146)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:128)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1.apply(DevServerStart.scala:126)
    at scala.util.Success.flatMap(Try.scala:231)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:126)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1.apply(DevServerStart.scala:118)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
Caused by: com.google.inject.CreationException: Unable to create injector, see the following errors:

1) Error injecting constructor, java.lang.NullPointerException
  at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:35)
  at play.db.ebean.EbeanDynamicEvolutions.class(EbeanDynamicEvolutions.java:32)
  while locating play.db.ebean.EbeanDynamicEvolutions
  at play.db.ebean.EbeanModule.bindings(EbeanModule.java:21):
Binding(class play.api.db.evolutions.DynamicEvolutions to ConstructionTarget(class play.db.ebean.EbeanDynamicEvolutions) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.api.db.evolutions.DynamicEvolutions
  while locating play.api.db.evolutions.ApplicationEvolutionsProvider
  at play.api.db.evolutions.EvolutionsModule.<init>(EvolutionsModule.scala:20):
Binding(class play.api.db.evolutions.ApplicationEvolutions to ProviderConstructionTarget(class play.api.db.evolutions.ApplicationEvolutionsProvider) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.api.db.evolutions.ApplicationEvolutions
Caused by: java.lang.NullPointerException
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.derive(DocStoreBeanBaseAdapter.java:323)
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.<init>(DocStoreBeanBaseAdapter.java:110)
    at io.ebeanservice.docstore.none.NoneDocStoreBeanAdapter.<init>(NoneDocStoreBeanAdapter.java:17)
    ..............................
    at io.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:141)
    at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:127)
    at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:44)
    at io.ebean.EbeanServerFactory.createInternal(EbeanServerFactory.java:108)
    at io.ebean.EbeanServerFactory.create(EbeanServerFactory.java:67)
    at play.db.ebean.EbeanDynamicEvolutions.lambda$start$3(EbeanDynamicEvolutions.java:49)
    at java.util.HashMap.forEach(HashMap.java:1288)
    at play.db.ebean.EbeanDynamicEvolutions.start(EbeanDynamicEvolutions.java:49)
    at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:38)
    at play.db.ebean.EbeanDynamicEvolutions$$FastClassByGuice$$52c94231.newInstance(<generated>)
    at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:90)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
    at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
    ..............................
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
    at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1015)
    at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1054)
    at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:405)
    at play.api.inject.guice.GuiceInjector.instanceOf(GuiceInjectorBuilder.scala:400)
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get$lzycompute(EvolutionsModule.scala:49)
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:49)
    at play.api.db.evolutions.ApplicationEvolutionsProvider.get(EvolutionsModule.scala:40)
    at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
    at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:72)
    ..............................
    at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
    at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
    at com.google.inject.Guice.createInjector(Guice.java:99)
    at com.google.inject.Guice.createInjector(Guice.java:84)
    at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:181)
    at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:137)
    at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:166)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:163)
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
    ..............................
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

2) Error injecting constructor, java.lang.NullPointerException
  at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:35)
  at play.db.ebean.EbeanDynamicEvolutions.class(EbeanDynamicEvolutions.java:32)
  while locating play.db.ebean.EbeanDynamicEvolutions
  at play.db.ebean.EbeanModule.bindings(EbeanModule.java:21):
Binding(class play.api.db.evolutions.DynamicEvolutions to ConstructionTarget(class play.db.ebean.EbeanDynamicEvolutions) eagerly) (via modules: com.google.inject.util.Modules$OverrideModule -> play.api.inject.guice.GuiceableModuleConversions$$anon$1)
  while locating play.api.db.evolutions.DynamicEvolutions
Caused by: java.lang.NullPointerException
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.derive(DocStoreBeanBaseAdapter.java:323)
    at io.ebeanservice.docstore.api.support.DocStoreBeanBaseAdapter.<init>(DocStoreBeanBaseAdapter.java:110)
    at io.ebeanservice.docstore.none.NoneDocStoreBeanAdapter.<init>(NoneDocStoreBeanAdapter.java:17)
    at io.ebeanservice.docstore.none.NoneDocStoreFactory.createAdapter(NoneDocStoreFactory.java:24)
    ..............................
    at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:127)
    at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:44)
    at io.ebean.EbeanServerFactory.createInternal(EbeanServerFactory.java:108)
    at io.ebean.EbeanServerFactory.create(EbeanServerFactory.java:67)
    at play.db.ebean.EbeanDynamicEvolutions.lambda$start$3(EbeanDynamicEvolutions.java:49)
    at java.util.HashMap.forEach(HashMap.java:1288)
    at play.db.ebean.EbeanDynamicEvolutions.start(EbeanDynamicEvolutions.java:49)
    at play.db.ebean.EbeanDynamicEvolutions.<init>(EbeanDynamicEvolutions.java:38)
    at play.db.ebean.EbeanDynamicEvolutions$$FastClassByGuice$$52c94231.newInstance(<generated>)
    at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassProxy.newInstance(DefaultConstructionProxyFactory.java:89)
    at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)
    at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:90)
    at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:268)
    ..............................
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
    at com.google.inject.Guice.createInjector(Guice.java:99)
    at com.google.inject.Guice.createInjector(Guice.java:84)
    at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:181)
    at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:137)
    at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:166)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:163)
    at play.utils.Threads$.withContextClassLoader(Threads.scala:21)
    ..............................
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)

2 errors
    at com.google.inject.internal.Errors.throwCreationExceptionIfErrorsExist(Errors.java:470)
    at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:184)
    at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
    at com.google.inject.Guice.createInjector(Guice.java:99)
    at com.google.inject.Guice.createInjector(Guice.java:84)
    at play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:181)
    at play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:137)
    at play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:166)
    at play.core.server.DevServerStart$$anonfun$mainDev$1$$anon$1$$anonfun$get$1$$anonfun$apply$1$$anonfun$1$$anonfun$2.apply(DevServerStart.scala:163)

I've been spinning my wheels on this for the past week and would really appreciate any insight into what might be causing this

A: This is how your configuration should look like:
db {
  sentinel {
    driver=com.mysql.jdbc.Driver
    url="**********"
    username=****
    password="*******"
    hikaricp {
        ...
    }
  }

  kodi {
    driver=com.mysql.jdbc.Driver
    url="******"
    username=****
    password="****"
    hikaricp {
        ...
    }
  }
}

A: I went ahead and cleaned out my ivy cache. I re-ran the sbt build and it resolved the correct dependencies.


text:
$10 #Giveaway Playlist & Excerpt DARK EMBRACE by Elle Boon @ElleBoon1 Ends 2.13
February 7, 2018 By Mary
I am so excited that DARK EMBRACE by Elle Boon is available now and that I get to share the news!
If you haven't yet heard about this wonderful book by Author Elle Boon, be sure to check out all the details below.
This blitz also includes a giveaway for a signed finished copy of DARK LOVERS & a $10 Gift Card to the book retailer of their choice, International courtesy of Elle and Rockstar Book Tours. So if you'd like a chance to win, enter in the Rafflecopter at the bottom of this post.
Title: DARK EMBRACE (The Dark Legacy Series, #1)
Author: Elle Boon
Pub. Date: February 8, 2018
Publisher: Elle Boon
Formats: eBook
Find it: Goodreads, iBooks, B&N, Kobo
A DARK LEGACY where only the strong survive and those who are Goddess touched can complete the warriors who fight to protect the world from the creatures that go bump in the night.
DARK EMBRACE
Jennaveve, the Fey chosen by the Goddess to be the queen of her people for the past few millennium, is tired and wishes for a break, but hadn't counted on being reduced to almost mortal thanks to a dark stranger. They say you should be careful what you wish for. The last time she'd taken a break, her Fey had left their realm, resulting in shifters on Earth known as the Mystic and Iron Wolves and even more she was still searching for.
Damien and Lucas Cordell knew they'd share a Hearts Love when the time came. As the twin sons of the Vampire King who'd mated a shifter, they were the first of their kind. When they'd thought their mate was finally within their reach and was a shifter like their mother only to realize she wasn't theirs, they'd almost lost their lives to the alpha of the Iron Wolves, Kellen Styles. Instead, the error led them to the being that was…the Fey Queen Jennaveve. Only she was even more elusive than the wind.
Time and patience was something Damien and Lucas had in spades, until the female they'd already laid claim to, even if she hadn't accepted them yet, was taken by an enemy. Saving Jenna became their one and only focus. As time and realms slip between them, their fear for her had them forgetting about patience and made claiming Jenna as their Hearts Love, hoping she accepted their Dark Embrace.
Will the Cordell Twins be able to rescue Jenna from the evil who has taken her? Will Jenna get her powers back? Who is the dark presence and how will they defeat a being who is strong enough to bring the Fey Queen down to her knees?
books2read.com/u/4NR0ez
Lyric's Accidental Mate, Iron Wolves Book 1 is a crossover series with the first book being FREE http://amzn.to/1NOzmVF
Exclusive Excerpt!
They both turned as one toward the door as a commotion swirled into the room.
"What have you done?" Raina asked.
Lucas looked at the tall man who followed behind their sister, waiting to see what Creed, the son of Satan, had to say. Hellboy himself would be a good one to have on their side. "Shit, how'd you get in?" he asked as realization dawned.
Damien flashed to his sister. "Where did you come from?" He held her by the arms, giving her a little shake.
A deep rumble came from Creed. "Boy, I suggest you unhand my Eros, or I'll remove your arms from your body."
Lucas came to stand next to his brother. "Our Hearts Love is missing along with our father. We've been locked into this fucking castle and you two just strolled in like it's nothing. We just want to know if you can get us out." The last was yelled at a decibel that bordered on a roar, but Lucas was at the zero fucks giving point.
"You got two seconds before I start dismembering your brother. Tell him to get his fingers, palms, and any other body part off my Raina if he wants to keep them." Creed's voice had become the deep tone of his demon side.
"Damien, you might want to take a step back before we have to rumble with our brother-in-law in front of baby sis here. Raina, please answer the damn question while our brother is letting you go. Now, Damien, release her." He put as much order behind the last part, hoping to reach his twin, but he'd never seen his twin's eyes turn such a dark obsidian like their father's.
Raina wrapped her arms around their brother, stilling Creed from going killer beast. "Damien, calm down. We popped in like we always do. I felt mama's distress and told Creed I needed to visit. He of course insisted he come with. When we got here I couldn't find her, so I followed you two morons' scents. There's another, not quite the same, but familiar smell here too." Her voice shook, the slight tremor more an indication of her rising worry. She released Damien and went to the same corner. "It's like dad but toned down."
"Can you track him?" Damien asked.
"No," Creed growled.
"He took Jennaveve and our father went after him, alone. He's our…brother," Damien said in a barely there whisper.
Raina spun to face them, her hand going to her throat. "What?"
Creed flashed to her side. "She will not be your sniffing dog."
"Our father has another son. Goddess, its messed up to even say that. He's the one who hurt Jenna. He nearly killed her the last time he had his hands on her. Somehow that…bastard traced her back here and took her out from under our noses. Now, our father is tracking them alone while we stand here arguing. We can't breach these walls, but you two can. You can sense him, Raina. Please." Lucas held his hand out, holding the pillow with Jenna's scent still on it.
"That's why mother is hurting." She moved forward, a tear slipping down her cheek. "Creed, I can't stand here and do nothing when my family is falling apart."
"Damn it, I knew this family stuff was going to be a pain in my ass." Creed jerked the fabric out of Lucas's hand. "It's the Fey Queen. I can scent her as well. We go together, all of us on one condition."
Lucas and Damian nodded, waiting.
"I'm in charge and Raina is not to be harmed."
"Hellboy, you can call all the shots as long as we find our Love." There was nothing he wouldn't agree to in order to find Jenna.
"I'm so going to regret this." Creed dropped his chin to his chest.
Raina turned to face Creed.
Damien pointed at the two. "No making out with our sister in front of us. Save it for the bedroom. Let's go people, times a wasting." He changed into all black clothing, and although his words were teasing, the hardness behind the tone was anything but.
"Can I eat them?" Creed asked.
Raina shook her head. "You promised to be nice to my family."
"Can I let Liv eat them?"
Their sister snorted. "No, you told her she couldn't do that either. Come on, boys. Let's get this party started."
Lucas focused on Jenna's sweet smile and promised himself they'd have her tucked between them soon. When he opened his eyes, his brother was staring with that same single minded intent on his face. "We'll get her back and make sure she can't escape without one of us always knowing where she's at."
Raina snorted. "You two will learn, a woman like Jenna won't take to being caged or coddled."
He met Creed's dark stare. "How's that working for you, Hellboy?"
Creed lifted his middle finger. "You still wanting a way out of here, or we gonna sling insults back and forth? Believe me, your little nickname is nothing compared to the things I've been through and trust me, boy, I've definitely had much bigger beings say much nastier things than that to me."
Instant regret punched him in the gut. "Damn it, I'm sorry man. You're right. Hellboy isn't meant to be a…bad thing. Shit! I like you and I think you're great for our sister."
His sister's mate tilted his head and nodded. "Good enough. Let's go. One big circle like…well, one big happy family."
Damien groaned. "Son of a bitch, not you, too."
Their sister clapped like she was proud to be part of the crazy, wrapping one arm around Creed and held the other out. He moved forward, slipping his hand in hers, waiting for Damien to grab onto his other one.
Once they formed a circle, Creed's lips formed a straight line. "Here we go boys and my girl."
Darkness came quickly. The opulent bedroom replaced by a forest that had gone eerily quiet. Creed moved next to Raina, waving his hand around her, changing the sexy dress she'd had on into all black, making her resemble a character from the movie Underworld. He didn't have time to question the man as they all seemed to notice the unnatural quietness.
"Anyone know exactly where we are?" Damien's voice echoed around them.
Creed closed his eyes, then opened them quickly. "We're still on Earth. Something is unnatural here, but it's not demon born."
You don't know by Katelynn Turner
Sorry by Halsey
The Feeling by Justin Bieber and Halsey
I'm Gonna Show You Crazy by Bebe Rexa
Sway by Danielle Bradberry
Tennessee Whiskey by Justin Timberlake and Chris Stapelton
Tell Me You Love Me by Demi Levato
Faking by Calvin Harris Kehlani and Lil Yachty
Praying by Kesha
Bad at Love by Halsey
Dusk till Dawn by Zayn
Issues by Julia Michaels
Heavy by Linkn Park
At my Best by Machine Gun Kelly ft. Haily Steinfield
Scars to Your Beautiful by Alessia Cara
Glorious by Mackelmore and Skylar Grey
Perfect by Ed Sheeran
I Like Me Better by Lauv
Filthy by Justin Timberlake
There's Nothing Holding Me Back by Shawn Mendez
About Elle:
Elle Boon lives in Middle-Merica as she likes to say…with her husband, two kids, and a black lab who is more like a small pony. She'd never planned to be a writer, but when life threw her a curve, she swerved with it, since she's athletically challenged. She's known for saying "Bless Your Heart" and dropping lots of F-bombs, but she loves where this new journey has taken her.
She writes what she loves to read, and that is romance, whether it's erotic, Navy SEALs, or paranormal, as long as there is a happily ever after. Her biggest hope is that after readers have read one of her stories, they fall in love with her characters as much as she did. She loves creating new worlds, and has more stories just waiting to be written. Elle believes in happily ever afters, and can guarantee you will always get one with her stories.
Connect with Elle online, she loves to hear from you:
Sign up for Elle's Newsletter!
Website | Twitter| Instagram | Facebook | Amazon Author Page | BookBub | Goodreads
1 winner will receive a signed finished copy of DARK LOVERS & a $10 Gift Card to the book retailer of their choice, International.
Terri S says
I love the cover art! This sounds like a great read.

redpajama_set_name: RedPajamaCommonCrawl


I feel like my weekends are starting to slow down. I spent Saturday morning sleeping off the last of the flu shot, and then a thunderstorm swept through the area. I decided to shut down the computer and undock the Switch for a session of Mario Odyssey. I got the shopping done early this morning, then ran out of time to get a haircut, which I badly need. I also played a lot of Dominion along the way with Mom, which probably contributed to how little I got done in the way of cleaning, but I can't say that I mind. Having fun is also a vital part of a healthy life.


text:
ExploreNorth AmericaUnited StatesLos AngelesHike to the Hollywood Sign, Griffith Park
Hike to the Hollywood Sign, Griffith Park
By Marina Chetner - Writer
Seeing the Hollywood sign from afar is one thing; it's quite another to see the letters up close. To do so, you'll need a car (or catch a cab), a pair of good walking shoes and a few leisurely hours. Start the hike at the Hollyridge trailhead, located at the top of Beachwood Drive behind the "Sunset Ranch" sign. After 800 metres, make a sharp left at the fork to join Mulholland Trail. At the second fork, go right up the paved Mount Lee Drive to reach the backs of the 14-metre-high letters, obstructed only by a chain-link fence. Walk up a short dirt path to the mountain's peak, for 360-degree views of San Fernando Valley, Forest Lawn Memorial Park, Lake Hollywood Reservoi, and the distant Pacific Ocean. Parking is available by the trailhead. Don't forget your camera.
Griffith Park is the largest urban park in America. It offers mountain-bike and hiking trails, tennis courts, picnic areas and golf courses.
3400 N Beachwood Drive, Hollywood
SponsoredAll the New Disneyland Attractions You Need to Know About, Sponsored
All the New Disneyland Attractions You Need to Know About
LA Restaurants Perfect for Celebrity-spotting
What Not to Do in Los Angeles – and What to Do Instead
Two Insiders Reveal the Very Best Places to Eat in Los Angeles


TRUST Model – Transforming Relationships and Results to Unify and Strengthen Teams (aka Toxicity Removal for Underperforming and Stressed-out Teams), focuses on helping organizations move from relational fragility to relational agility. Given the recent spate of workplace violence, harassment, bullying, and abuses of all types, effective responses and sustainable results are of paramount importance. This interactive workshop is for ombuds professionals who are seeking new and creative ways to facilitate conflict transformation in their organizations.
Experience a number of activities designed to enhance trust in a workplace and receive instructions on how to replicate them in their ombuds practice.
Incorporate an understanding of cultural and intercultural elements into their practice of trust-building and conflict resolution.
Identify practical steps for applying a TRUST Model approach to ombuds services within their organizations.
Tatyana Fertelmeyster, born and raised in Moscow, Russia, came to the United States in 1989 as a refugee. Being a journalist by training, she went back to school in the US and became a mental health counselor. Tatyana's work experience included refugee resettlement and counseling for Russian- and English-speaking individuals, families, and groups before becoming an intercultural and diversity consultant and trainer. Founder and Principal of Connecting Differences, Tatyana is an expert in Intercultural Competence, Diversity and Inclusion, Global Agility Development, and Facilitation for Multicultural Groups. She is a Licensed Clinical Professional Counselor.
Tatyana partners with her clients to save their time and resources by increasing clarity of communication and decreasing conflict, creating positive customer experience and minimizing complains. Time saved is time invested into creativity, productivity, and building towards the future. Tatyana is proud of her unofficial title of a Chief Clarity Officer. Her practice of Spontaneous Facilitation supports Tatyana's ability to engage and sustain engagement through challenging moments and interactions. Her clients appreciate her intense attention to meaning-making, non-defensive listening, and ability to effectively articulate insights. Tatyana always brings to her very serious work her sense of humor, wit, and a bit of stand-up comedy.
Daniel Cantor Yalowitz, Ed.D., is a intercultural and developmental psychologist who specializes in the areas of conflict response and transformation, collaborative leadership, training development and design, intercultural communication and sensitivity , and emotional, social, and multiple intelligences. He is a highly sought-after trainer, consultant, and presenter. Dr. Yalowitz is known to be a dynamic and engaging facilitator both domestically and in many of the 88 countries where he has offered his programs and services to date. As a former long-term faculty member and senior level academic administrator in undergraduate and graduate programs throughout the northeast USA.
Dr. Yalowitz has worked over the decades to design, implement, and maintain highly functioning living and learning communities that thrive on effective and open communication, dealing proactively with change and conflict management, and personnel and human resources issues and challenges. His work is highly experiential and focuses on real-world solutions to the complex issues in the workplace. He has previously served as an ombudsperson for several international conferences and supervised others in this role on several university campuses. Dr. Yalowitz has just recently published his second book, Journeying with Your Archetypes: The Search for Deeper Meaning in Daily Life.


text:
Q: Apply Bold to Cell Value inside the text string of a HTMLbody I am having trouble with applying Bold on a part of a sentence for an automatically generated email.
In my VBA script:
Public strBody     As String
.HtmlBody = strBody
Dim FormulaCell     As Range
Dim FormulaRange    As Range

For Each FormulaCell In FormulaRange.Cells
    With FormulaCell

I am able to Bold a whole sentence using "" & "**Text Here**" & "" &
But it seems impossible to apply the same logic to a more complex sentence, or a referenced value.
strBody = "Hello, " & vbNewLine & vbNewLine & _
          "Your task : " & Cells(FormulaCell.Row, "B").Value & " with the mention: " & Cells(FormulaCell.Row, "C").Value & " is nearing its Due Date: "

What I would like to Bold in the above sentence is the value of the FormulaCells.
strBody = "Hello, " & vbNewLine & vbNewLine & _
                        "Your task : " & **Cells(FormulaCell.Row, "B").Value** & " with the mention: " & **Cells(FormulaCell.Row, "C")**.Value & " is nearing its Due Date: "

So it would look something like that in my email:

Hello
Your task : Eat Potatoes with the mention: Potatoes are Delicious is nearing its Due Date:

Is this something that can be done?

A: edited
strBody = "
Hello
, " & vbNewLine & vbNewLine & _
          "
Your task : " & Cells(FormulaCell.Row, "B").Value & _
          " with the mention: " & Cells(FormulaCell.Row, "C").Value & _
          " is nearing its Due Date:
"

redpajama_set_name: RedPajamaStackExchange


Convert EPUB to Mobi, Read ePUB on Kindle. Convert EPUB to Mobi, Read ePUB on Kindle, 1-Click to Convert all ePUB files to MOBI with ePUBee online service.
Ready to convert your PDF file to a MOBI? Just upload your file and click convert - our powerful servers will automatically convert your files and provide you with a secure, instant download.


Radio Jackie News: Mumford and Sons has rescheduled four gigs cancelled this week because of "unforeseen technical and logistical challenges".
Mumford and Sons has rescheduled four gigs cancelled this week because of "unforeseen technical and logistical challenges".
The band from Wimbledon has tweeted new summer dates in Liverpool, Sheffield, Manchester and Cardiff.
Apologising to fans in a heart-felt letter, they said they would "never postpone shows lightly" and were left with "no other choice".


Stateside fans of RÜFÜS DU SOL have a new reason to look forward to the cold season. The Australian electronic music trio have announced that they will embark on a North American 2016 fall tour - much of which consists of newly announced dates.
In Conversation with RÜFÜS DU SOL: How Did They Develop Their Distinct Musical Style?
In addition to what tour dates had already been made public, RÜFÜS DU SOL revealed that they would perform at ten more locations around the continent - including Detroit, Chicago, Montreal, Denver and Los Angeles. Two of their gigs are already sold out - one in Whistler, British Colombia and Seattle, Washington, to be specific - so their fans would do well to lock down tickets to their upcoming performances while they're still available.
To find out whether or not RÜFUS DU SOL will be playing a venue near you, take a look at their 2016 North American fall tour dates below - and to purchase tickets, click here.


text:
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows.Forms;
using NUnit.Framework;
using SIL.PlatformUtilities;
using SIL.Windows.Forms.Extensions;

namespace SIL.Windows.Forms.Tests.ControlExtensionsTests
{
	[TestFixture]
	public class ControlExtensionsTests
	{
		private Control _control;
		private Exception _threadException;

		// Theoretically, setting up the handler to call ApplicationOnThreadException is not needed on Linux because, for some
		// reason, Mono works differently than the Windows implementation of .Net, which *does* fire the ThreadException event.
		// But since it doesn't hurt anything, rather than making this conditionally compiled, we'll leave it here for the Mono
		// builds, too, just in case they ever make Mono work the same way.
		[TestFixtureSetUp]
		public void TestFixtureSetup()
		{
			Application.ThreadException += ApplicationOnThreadException;
		}

		[TestFixtureTearDown]
		public void TestFixtureTearDown()
		{
			Application.ThreadException -= ApplicationOnThreadException;
		}

		[SetUp]
		public void Setup()
		{
			_threadException = null;
			_control = new Control();
		}

		[TearDown]
		public void Teardown()
		{
			if (!_control.IsDisposed)
				_control.Dispose();
		}

		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreAll)]
		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreIfDisposed)]
		[TestCase(ControlExtensions.ErrorHandlingAction.Throw)]
		public void SafeInvoke_NullControl_ThrowsArgumentNullException(ControlExtensions.ErrorHandlingAction errorHandling)
		{
			var ex = Assert.Throws<ArgumentNullException>(() => { ControlExtensions.SafeInvoke(null, () => { }, "NullControlTest", errorHandling); });
			Assert.AreEqual("control", ex.ParamName);
		}

		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreAll)]
		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreIfDisposed)]
		[TestCase(ControlExtensions.ErrorHandlingAction.Throw)]
		public void SafeInvoke_NullAction_ThrowsArgumentNullException(ControlExtensions.ErrorHandlingAction errorHandling)
		{
			_control.CreateControl();
			var ex = Assert.Throws<ArgumentNullException>(() => { _control.SafeInvoke(null, "NullActionTest", errorHandling); });
			Assert.AreEqual("action", ex.ParamName);
		}

		[Test]
		public void SafeInvoke_OnUiThread_HandleNotCreated_IgnoreAll_ReturnsWithoutInvokingOrThrowing()
		{
			int i = 0;
			Assert.IsNull(_control.SafeInvoke(() => { i++; }, "HandleNotCreatedTest", ControlExtensions.ErrorHandlingAction.IgnoreAll));
			Assert.AreEqual(0, i);
		}

		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreIfDisposed)]
		[TestCase(ControlExtensions.ErrorHandlingAction.Throw)]
		public void SafeInvoke_OnUiThread_HandleNotCreated_NotIgnoreAll_ThrowsInvalidOperationException(ControlExtensions.ErrorHandlingAction errorHandling)
		{
			var ex = Assert.Throws<InvalidOperationException>(() => { _control.SafeInvoke(() => { }, "HandleNotCreatedTest", errorHandling); });
			Assert.AreEqual("SafeInvoke called before the control's handle was created. (HandleNotCreatedTest)", ex.Message);
		}

		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreAll)]
		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreIfDisposed)]
		public void SafeInvoke_OnUiThread_Disposed_Ignore_ReturnsWithoutInvokingOrThrowing(ControlExtensions.ErrorHandlingAction errorHandling)
		{
			var i = 0;
			_control.CreateControl();
			_control.Dispose();
			Assert.IsNull(_control.SafeInvoke(() => { i++; }, "DisposedTest", errorHandling));
			Assert.AreEqual(0, i);
		}

		[Test]
		public void SafeInvoke_OnUiThread_Disposed_Default_ThrowsObjectDisposedException()
		{
			var i = 0;
			_control.CreateControl();
			_control.Dispose();
			var ex = Assert.Throws<ObjectDisposedException>(() => { _control.SafeInvoke(() => { i++; }, "DisposedTest"); });
			Assert.AreEqual("SafeInvoke called after the control was disposed. (DisposedTest)", ex.ObjectName);
			Assert.AreEqual(0, i);
		}

		/// <summary>
		/// We thought that SafeInvoke would need to handle the edge case where an action is invoked asynchronously on a control, which is
		/// subsequently disposed (i.e., before the action can actually be performed), but it turns out that when the control's handle is
		/// destroyed, the action is dequeued, and an ObjectDisposedException is registered in the entry. That exception is available via
		/// EndInvoke, but since SafeInvoke does not return the IAsyncResult, this test cannot show that.
		/// Note that the first SafeInvoke in this test also tests the normal case of an action invoked asynchronously on a non-UI thread.
		/// </summary>
		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreAll)]
		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreIfDisposed)]
		[TestCase(ControlExtensions.ErrorHandlingAction.Throw)]
		public void SafeInvoke_DisposedAfterInvokingOnUiThread_InvokedActionDequeued(ControlExtensions.ErrorHandlingAction errorHandling)
		{
			string confirmationMessage = null;
			_control.CreateControl();
			IAsyncResult resultOfSafeInvokeCall1 = null;
			IAsyncResult resultOfSafeInvokeCall2 = null;
			bool action2WasExecuted = false;
			var worker = new BackgroundWorker();
			worker.DoWork += (sender, args) =>
			{
				var ctrl = (Control)args.Argument;
				Console.WriteLine("SafeInvoke 1");
				resultOfSafeInvokeCall1 = ctrl.SafeInvoke(() =>
				{
					Console.WriteLine("invoking 1");
					confirmationMessage = "First action got invoked";
					Assert.IsFalse(ctrl.InvokeRequired);
					ctrl.Dispose();
					Console.WriteLine("ctrl has been disposed");
				}, "Getting initial value, resetting control text, and disposing control.");
				Console.WriteLine("SafeInvoke 2");
				resultOfSafeInvokeCall2 = ctrl.SafeInvoke(() =>
				{
					action2WasExecuted = true;
					Assert.Fail("This should have been de-queued when the control was disposed.");
				}, "DisposedAfterInvokingOnUiThread", errorHandling);
				Console.WriteLine("About to sleep on worker thread : 50 ms");
				Thread.Sleep(60);
			};
			worker.RunWorkerAsync(_control);
			Thread.Sleep(20);
			Console.WriteLine("Ui thread waking up to begin processing queued-up aynchronous actions.");
			while (worker.IsBusy)
				Application.DoEvents();
			Assert.AreEqual("First action got invoked", confirmationMessage);
			Assert.IsNotNull(resultOfSafeInvokeCall1, "First call to SafeInvoke should have returned a non-null IAsyncResult.");
			Assert.IsFalse(resultOfSafeInvokeCall1.CompletedSynchronously, "Expected asynchronous invocation of action 1.");
			Assert.IsNull(_threadException, "If this is not null, then the second call to SafeInvoke must have thrown an exception.");
			Assert.IsNotNull(resultOfSafeInvokeCall2, "Second call to SafeInvoke should have returned a non-null IAsyncResult (even though it is later dequeued).");
			Assert.IsNull(_control.EndInvoke(resultOfSafeInvokeCall1)); // this should not throw an exception
			Assert.IsFalse(action2WasExecuted, "Action 2 should not have been executed at all.");
			if (Platform.IsWindows)
				VerifyExpectedExceptionInNest<ObjectDisposedException>(() => _control.EndInvoke(resultOfSafeInvokeCall2));
		}

		[Test]
		public void SafeInvoke_Asynchronous_InvokedAsynchronously()
		{
			string textFromControl = null;
			IAsyncResult resultOfSafeInvokeCall = null;
			_control.CreateControl();
			_control.Text = "Initial Text";
			var worker = new BackgroundWorker();
			worker.DoWork += (sender, args) =>
			{
				var ctrl = (Control)args.Argument;
				Console.WriteLine("SafeInvoke 1");
				resultOfSafeInvokeCall = ctrl.SafeInvoke(() =>
				{
					// Since this code is going to be executed on the UI thread, it is guaranteed not to execute until
					// the next time messages are "pumped", which in the case of this test happens during the call to
					// Application.DoEvents below.
					Console.WriteLine("invoking 1");
					textFromControl = ctrl.Text;
					ctrl.Text = "Final Text";
				}, "Getting initial value and resetting control text.");
				Assert.IsNull(textFromControl);
			};
			worker.RunWorkerAsync(_control);
			while (worker.IsBusy)
				Application.DoEvents();
			Assert.AreEqual("Initial Text", textFromControl);
			Assert.AreEqual("Final Text", _control.Text);
			Assert.IsNotNull(resultOfSafeInvokeCall, "Call to SafeInvoke should have returned a non-null IAsyncResult.");
			Assert.IsFalse(resultOfSafeInvokeCall.CompletedSynchronously, "Expected asynchronous invocation of action.");
			Assert.IsTrue(resultOfSafeInvokeCall.IsCompleted, "Asynchronous action should have completed.");
			Assert.IsNull(_threadException, "If this is not null, then the second call to SafeInvoke must have thrown an exception.");
			Assert.IsNull(_control.EndInvoke(resultOfSafeInvokeCall)); // this should not throw an exception
		}

		[Test]
		public void SafeInvoke_ForceSynchronous_InvokedSynchronously()
		{
			string textFromControl = null;
			IAsyncResult resultOfSafeInvokeCall = null;
			_control.CreateControl();
			_control.Text = "Initial Text";
			var worker = new BackgroundWorker();
			worker.DoWork += (sender, args) =>
			{
				var ctrl = (Control)args.Argument;
				Console.WriteLine("SafeInvoke 1");
				resultOfSafeInvokeCall = ctrl.SafeInvoke(() =>
				{
					// The calls to Thread.Sleep are sprinkled in here just to PROVE that this is being done synchronously and therefore
					// essentially blocks any further execution on either thread.
					Thread.Sleep(10);
					textFromControl = ctrl.Text;
					Thread.Sleep(10);
					ctrl.Text = "Final Text";
					Thread.Sleep(10);
				}, "Force synchronous.", forceSynchronous: true);
				Assert.AreEqual("Initial Text", textFromControl, "Since the invoke was done synchronously, this should have been set before SafeInvoke returned.");
				Assert.AreEqual("Final Text", ctrl.Text);
			};
			worker.RunWorkerAsync(_control);
			while (worker.IsBusy)
				Application.DoEvents(); // Even though the SafeInvoke call is synchronous, the worker thread obviously isn't, so we need to wait for it to finish.
			Assert.AreEqual("Final Text", _control.Text, "This just proves that we don't get here without having executed the worker thread's code.");
			Assert.IsNull(resultOfSafeInvokeCall, "When SafeInvoke results in a synchronous call, not IAsyncResult should be returned.");
		}

		[TestCase(true)]
		[TestCase(false)]
		public void SafeInvoke_OnUiThread_Normal_ActionInvokedSynchronously(bool forceSynchronous)
		{
			var i = 0;
			_control.CreateControl();
			Assert.IsNull(_control.SafeInvoke(() => { i++; }, "CalledOnUiThread_Normal", forceSynchronous: forceSynchronous));
			Assert.AreEqual(1, i);
		}

		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreAll)]
		[TestCase(ControlExtensions.ErrorHandlingAction.IgnoreIfDisposed)]
		public void SafeInvoke_OnNonUiThread_Disposed_Ignore_ReturnsWithoutInvokingOrThrowing(ControlExtensions.ErrorHandlingAction errorHandling)
		{
			IAsyncResult resultOfSafeInvokeCall = null;
			var i = 0;
			_control.CreateControl();
			_control.Dispose();
			var worker = new BackgroundWorker();
			worker.DoWork += (sender, args) =>
			{
				resultOfSafeInvokeCall = _control.SafeInvoke(() => { i++; }, "DisposedTest", errorHandling);
			};
			worker.RunWorkerAsync(_control);
			while (worker.IsBusy)
				Application.DoEvents();
			Assert.AreEqual(0, i);
			Assert.IsNull(resultOfSafeInvokeCall);
		}

		[Test]
		public void SafeInvoke_OnNonUiThread_Disposed_Default_ThrowsObjectDisposedException()
		{
			Exception exception = null;
			string textFromControl = null;
			_control.CreateControl();
			var worker = new BackgroundWorker();
			worker.DoWork += (sender, args) =>
			{
				var ctrl = (Control)args.Argument;
				try
				{
					ctrl.SafeInvoke(() => { textFromControl = ctrl.Text; }, "OnNonUiThread_Disposed");
				}
				catch (Exception e)
				{
					exception = e;
				}
			};
			_control.Dispose();
			worker.RunWorkerAsync(_control);
			while (worker.IsBusy)
				Application.DoEvents();
			Assert.IsNull(textFromControl);
			Assert.IsTrue(exception is ObjectDisposedException);
		}

		[Test]
		public void SafeInvoke_AsynchronousActionThrowsException_ExceptionHandledByApplicationThreadExceptionHandler()
		{
			Exception exceptionThrownBySafeInvoke = null;
			_control.CreateControl();
			IAsyncResult resultOfSafeInvoke = null;
			bool invokeWasRequired = false;
			bool actionWasInvoked = false;
			var worker = new BackgroundWorker();
			worker.DoWork += (sender, args) =>
			{
				var ctrl = (Control)args.Argument;
				invokeWasRequired = ctrl.InvokeRequired;
				try
				{
					resultOfSafeInvoke = ctrl.SafeInvoke(() =>
					{
						actionWasInvoked = true;
						throw new InvalidOperationException("Blah");
					}, "AsynchronousActionThrowsException");
				}
				catch (Exception e)
				{
					exceptionThrownBySafeInvoke = e;
				}
				Thread.Sleep(50); // Ensure that the UI thread has a chance to pump messages and perform the action
			};
			worker.RunWorkerAsync(_control);
			while (worker.IsBusy)
				Application.DoEvents();
			Application.DoEvents(); // Just for good measure. We're desperate!

			Assert.IsTrue(invokeWasRequired, "Because this is on a separate thread, we expected it to invoke");
			Assert.IsTrue(actionWasInvoked, "We expected the action to have been run by this point");
			Assert.IsNull(exceptionThrownBySafeInvoke);
			Assert.IsNotNull(resultOfSafeInvoke);
			Assert.IsFalse(resultOfSafeInvoke.CompletedSynchronously, "We really expected the SafeInvoke to be asynchronous.");
			var ex = VerifyExpectedExceptionInNest<InvalidOperationException>(() => _control.EndInvoke(resultOfSafeInvoke));
			Assert.AreEqual("Blah", ex.Message);
		}

		private void ApplicationOnThreadException(object sender, ThreadExceptionEventArgs threadExceptionEventArgs)
		{
			// This will be handled and returned when EndInvoke is called.
			_threadException = threadExceptionEventArgs.Exception;
		}

		[Test]
		public void SafeInvoke_SynchronousActionThrowsException_ExceptionThrownOutOfSafeInvoke()
		{
			Exception exceptionThrownBySafeInvoke = null;
			_control.CreateControl();
			bool finished = false;
			var worker = new BackgroundWorker();
			worker.DoWork += (sender, args) =>
			{
				var ctrl = (Control)args.Argument;
				try
				{
					ctrl.SafeInvoke(() => { throw new InvalidOperationException("Blah"); }, "SynchronousActionThrowsException", forceSynchronous:true);
				}
				catch (Exception e)
				{
					exceptionThrownBySafeInvoke = e;
				}
				finished = true;
			};
			worker.RunWorkerAsync(_control);
			// The next two lines are not *required*, but they help to prove that the action was really performed synchronously.
			Thread.Sleep(30); // Nothing should hapen on the non-UI-thread until we call DoEvents.
			Assert.IsFalse(finished);
			while (worker.IsBusy)
				Application.DoEvents();
			Assert.IsNotNull(exceptionThrownBySafeInvoke);
			var ex = VerifyExpectedExceptionInNest<InvalidOperationException>(exceptionThrownBySafeInvoke);
			Assert.AreEqual("Blah", ex.Message);
		}

		private static T VerifyExpectedExceptionInNest<T>(Action actionThatShouldThrowAnException) where T : Exception
		{
			try
			{
				actionThatShouldThrowAnException();
			}
			catch (Exception e)
			{
				return VerifyExpectedExceptionInNest<T>(e);
			}
			Assert.Fail("action should have thrown an exception");
			return null; // Can't get here, but we need to make the compiler happy.
		}

		private static T VerifyExpectedExceptionInNest<T>(Exception ex) where T : Exception
		{
			string nestedExceptions = "";
			while (ex != null && !(ex is T))
			{
				nestedExceptions += ex.GetType() + ": " + ex.Message + Environment.NewLine;
				ex = ex.InnerException;
			}
			Assert.IsNotNull(ex, nestedExceptions);
			Assert.IsTrue(ex is T, nestedExceptions);
			return (T)ex;
		}
	}
}

redpajama_set_name: RedPajamaGithub


Description: Antenna covering the 868 MHz ISM band. The antenna is designed for mounting on PCB/PWB by manual soldering of through hole connector pins. The antenna includes adhesive for attachment.
Description: Antenna covering the 915 MHz ISM band. The antenna is designed for mounting on PCB/PWB by manual soldering of through hole connector pins. The antenna includes adhesive for attachment.


text:
HERCONNECT (Member Login) Job seeker Login
Herc-Higher Education Recruitment Consortium
Advancing inclusive excellence in the higher education workforce
Search Higher Ed Jobs
Dual Careers
Regional Resources
Job Seeker Resources
Find your ideal job.
Be found by your
ideal employer.
Job seekers: Set up custom job alerts and upload your resume/CV.
Dual Career Advice
Find two jobs within a commutable distance.
Institutions? Post Jobs and More
Job Seekers, Welcome to HERC Jobs
Med-Psychiatry - Pennsylvania-Pittsburgh - (18001516)
The Department of Psychiatry at the University of Pittsburgh and the University of Pittsburgh Medical Centers (UPMC) is seeking PhD investigators of emotion regulation in children and adolescents for full-time tenure stream faculty positions at the associate level. Primary selection criteria are history of productivity and ability to enhance a dynamic research community within and across departments in the greater Pittsburgh academic environment. Interested candidates should submit their curriculum vitae and a research statement to psychfac@upmc.edu. EEO/AA/M/F/Vets/Disabled The University of Pittsburgh is an Affirmative Action/Equal Opportunity Employer and values equality of opportunity, human dignity and diversity. EOE, including disability/vets
Assignment Category: Fulltime-Regular
Campus: Pittsburgh
Child Protection Clearances: The following PA Act 153 clearances and background checks are required prior to commencement of employment and as a condition of continued employment: PA State Police Criminal Record Check, FBI Criminal Record Check, PA Child Abuse History Clearance.
Required Attachments: Other (see posting for additional details)
About University of Pittsburgh
Founded in 1787, the same year the U.S. Constitution was signed, the University of Pittsburgh is one of the oldest institutions of higher education in the United States. One of three state-related research universities in Pennsylvania, Pitt is a member of the Association of American Universities (AAU), which comprises 62 preeminent doctorate-granting research institutions in North America.Pitt faculty members have expanded knowledge in the humanities and sciences, earning such prestigious honors as the National Medal of Science, the MacArthur Foundation's "genius" grant, the Lasker-DeBakey Clinical Medical Research Award, and election to the National Academy of Sciences and the Institute of Medicine. Pitt scientists have defeated polio, unlocked the secrets of DNA, lead the world in organ transplantation, and pioneered TV and heavier-than-air flight, among numerous other accomplishments.Pitt students have earned Rhodes, Goldwater, Marshall, and Truman Scholarships, among other highly competitive national and international scholarships.Alumni have pioneered MRI and TV, won Nobel and Pulitzer Prizes, led corporations and universities, served in government and the military, conquered Hollywood and The New York Times bestsellers list, and won Super Bowls and NBA championships.
Assistant Professor Storrs, Connecticut
University of Connecticut Today
Postdoctoral Research Associate Princeton, New Jersey
Princeton University Today
Assistant, Associate or Full Professor Princeton, New Jersey
Join HERC
HERConnect (Member Login)
Regional HERCS
Central Midwest
Greater Chicago Midwest
Greater Kentucky
Greater Missouri
Greater Oregon
Greater Texas
Greater Washington State
Metro New York & Southern Connecticut
Mid -Atlantic
New Jersey - Eastern Pennsylvania - Delaware
Ohio - Western Pennsylvania - West Virginia
© 2000 - 2019 The Higher Education Recruitment Consortium is a project of the Tides Center, a 501 (c)3 non-profit organization.
Sitemap | Terms & Privacy