src/Pure/Thy/sessions.scala
changeset 75738 9cc5ee625adb
parent 75737 288c4d4042cc
child 75739 5b37466c1463
equal deleted inserted replaced
75737:288c4d4042cc 75738:9cc5ee625adb
  1198   ) extends AutoCloseable {
  1198   ) extends AutoCloseable {
  1199     def cache: Term.Cache = store.cache
  1199     def cache: Term.Cache = store.cache
  1200 
  1200 
  1201     def close(): Unit = database_server.foreach(_.close())
  1201     def close(): Unit = database_server.foreach(_.close())
  1202 
  1202 
  1203     def output_database[A](session: String)(f: SQL.Database => A): A =
  1203     def database_output[A](session: String)(f: SQL.Database => A): A =
  1204       database_server match {
  1204       database_server match {
  1205         case Some(db) => f(db)
  1205         case Some(db) => f(db)
  1206         case None => using(store.open_database(session, output = true))(f)
  1206         case None => using(store.open_database(session, output = true))(f)
  1207       }
  1207       }
  1208 
  1208 
  1209     def input_database[A](session: String)(f: SQL.Database => Option[A]): Option[A] =
  1209     def database[A](session: String)(f: SQL.Database => Option[A]): Option[A] =
  1210       database_server match {
  1210       database_server match {
  1211         case Some(db) => f(db)
  1211         case Some(db) => f(db)
  1212         case None =>
  1212         case None =>
  1213           store.try_open_database(session) match {
  1213           store.try_open_database(session) match {
  1214             case Some(db) => using(db)(f)
  1214             case Some(db) => using(db)(f)
  1242     {
  1242     {
  1243       (for {
  1243       (for {
  1244         name <- structure.build_requirements(List(session))
  1244         name <- structure.build_requirements(List(session))
  1245         patterns = structure(name).export_classpath if patterns.nonEmpty
  1245         patterns = structure(name).export_classpath if patterns.nonEmpty
  1246       } yield {
  1246       } yield {
  1247         input_database(name) { db =>
  1247         database(name) { db =>
  1248           db.transaction {
  1248           db.transaction {
  1249             val matcher = Export.make_matcher(patterns)
  1249             val matcher = Export.make_matcher(patterns)
  1250             val res =
  1250             val res =
  1251               for {
  1251               for {
  1252                 entry_name <- Export.read_entry_names(db, name) if matcher(entry_name)
  1252                 entry_name <- Export.read_entry_names(db, name) if matcher(entry_name)