From f2d86b0927bfbe68f8e1d6fd13ef01bde1f76c3e Mon Sep 17 00:00:00 2001 From: Flavian Alexandru Date: Wed, 20 May 2015 03:41:11 +0100 Subject: [PATCH 1/2] Moving infrastructure to bintray. Fixing resolvers. Adding more tests. Bumping version. --- README.md | 2 +- .../connectors/CassandraConnector.scala | 5 +- .../connectors/ConnectorReferenceTest.scala | 24 +++++- .../com/websudos/phantom/CassandraTable.scala | 6 +- .../phantom/builder/QueryBuilder.scala | 13 +-- .../phantom/builder/query/CQLQuery.scala | 4 +- .../phantom/builder/query/DeleteQuery.scala | 4 +- .../serializers/DeleteQueryBuilder.scala | 19 +++++ .../phantom/builder/query/CQLQueryTest.scala | 27 ++++++ .../builder/query/db/crud/InsertTest.scala | 84 +++++++++++-------- .../CreateQuerySerialisationTest.scala | 12 +++ .../serializers/DeleteQueryBuilderTest.scala | 12 +++ .../DeleteQuerySerialisationTest.scala | 8 +- .../websudos/phantom/tables/TestTable.scala | 12 +++ project/PhantomBuild.scala | 15 ++-- project/build.properties | 2 +- project/plugins.sbt | 4 +- 17 files changed, 181 insertions(+), 72 deletions(-) create mode 100644 phantom-dsl/src/main/scala/com/websudos/phantom/builder/serializers/DeleteQueryBuilder.scala create mode 100644 phantom-dsl/src/test/scala/com/websudos/phantom/builder/query/CQLQueryTest.scala create mode 100644 phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/CreateQuerySerialisationTest.scala diff --git a/README.md b/README.md index 0c513c15d..0191d0863 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ We publish phantom in 2 formats, stable releases and bleeding edge. ### Latest versions - Latest stable version: 1.8.4 (Maven Central) -- Bleeding edge: 1.8.6 (Websudos OSS releases on Bintray) +- Bleeding edge: 1.8.9 (Websudos OSS releases on Bintray) You will also be needing the default resolvers for Maven Central and the typesafe releases. Phantom will never rely on any snapshots or be published as a snapshot version, the bleeding edge is always subject to internal scrutiny before any releases into the wild. diff --git a/phantom-connectors/src/main/scala/com/websudos/phantom/connectors/CassandraConnector.scala b/phantom-connectors/src/main/scala/com/websudos/phantom/connectors/CassandraConnector.scala index c24b8cf07..1c210fe33 100644 --- a/phantom-connectors/src/main/scala/com/websudos/phantom/connectors/CassandraConnector.scala +++ b/phantom-connectors/src/main/scala/com/websudos/phantom/connectors/CassandraConnector.scala @@ -54,7 +54,10 @@ trait CassandraConnector { val manager: CassandraManager = DefaultCassandraManager - implicit def session: Session = manager.session + implicit def session: Session = { + manager.initIfNotInited(keySpace.name) + manager.session + } def cassandraVersions: Set[VersionNumber] = { manager.cassandraVersions diff --git a/phantom-connectors/src/test/scala/com/websudos/phantom/connectors/ConnectorReferenceTest.scala b/phantom-connectors/src/test/scala/com/websudos/phantom/connectors/ConnectorReferenceTest.scala index 4c7f92658..ac7c3c5c0 100644 --- a/phantom-connectors/src/test/scala/com/websudos/phantom/connectors/ConnectorReferenceTest.scala +++ b/phantom-connectors/src/test/scala/com/websudos/phantom/connectors/ConnectorReferenceTest.scala @@ -1,7 +1,27 @@ package com.websudos.phantom.connectors -import org.scalatest.FlatSpec +import org.scalatest.{ FlatSpec, Matchers } -class ConnectorReferenceTest extends FlatSpec { +trait MyConnector extends SimpleCassandraConnector { + implicit val keySpace = KeySpace("test") +} + +object Test extends MyConnector + +object Test2 extends MyConnector + + +class ConnectorReferenceTest extends FlatSpec with Matchers { + it should "reference the same session inside multiple mixins of the same connector" in { + (Test.session eq Test2.session) shouldEqual true + } + + it should "reference the same manager inside multiple mixins of the same connctor" in { + (Test.manager eq Test2.manager) shouldEqual true + } + + it should "reference the same cluster inside multiple mixins of the same connctor" in { + (Test.manager.clusterRef eq Test2.manager.clusterRef) shouldEqual true + } } diff --git a/phantom-dsl/src/main/scala/com/websudos/phantom/CassandraTable.scala b/phantom-dsl/src/main/scala/com/websudos/phantom/CassandraTable.scala index 3cff5fb1e..e6022c042 100644 --- a/phantom-dsl/src/main/scala/com/websudos/phantom/CassandraTable.scala +++ b/phantom-dsl/src/main/scala/com/websudos/phantom/CassandraTable.scala @@ -82,7 +82,9 @@ abstract class CassandraTable[T <: CassandraTable[T, R], R] extends SelectTable[ final def delete()(implicit keySpace: KeySpace): DeleteQuery.Default[T, R] = DeleteQuery[T, R](this.asInstanceOf[T]) - final def delete(clause: T => AbstractColumn[_])(implicit keySpace: KeySpace): DeleteQuery.Default[T, R] = DeleteQuery[T, R](this.asInstanceOf[T], clause(this.asInstanceOf[T]).name) + final def delete(clause: T => AbstractColumn[_])(implicit keySpace: KeySpace): DeleteQuery.Default[T, R] = { + DeleteQuery[T, R](this.asInstanceOf[T], clause(this.asInstanceOf[T]).name) + } final def truncate()(implicit keySpace: KeySpace): TruncateQuery.Default[T, R] = TruncateQuery[T, R](this.asInstanceOf[T]) @@ -102,8 +104,6 @@ abstract class CassandraTable[T <: CassandraTable[T, R], R] extends SelectTable[ def clustered: Boolean = clusteringColumns.nonEmpty - - /** * This method will filter the columns from a Clustering Order definition. * It is used to define TimeSeries tables, using the ClusteringOrder trait diff --git a/phantom-dsl/src/main/scala/com/websudos/phantom/builder/QueryBuilder.scala b/phantom-dsl/src/main/scala/com/websudos/phantom/builder/QueryBuilder.scala index ad246869b..94724817a 100644 --- a/phantom-dsl/src/main/scala/com/websudos/phantom/builder/QueryBuilder.scala +++ b/phantom-dsl/src/main/scala/com/websudos/phantom/builder/QueryBuilder.scala @@ -37,6 +37,8 @@ private[phantom] object QueryBuilder { case object Create extends CreateTableBuilder + case object Delete extends DeleteQueryBuilder + case object Update extends UpdateQueryBuilder case object Collections extends CollectionModifiers @@ -115,17 +117,6 @@ private[phantom] object QueryBuilder { .forcePad.append(value.toString) } - def delete(table: String): CQLQuery = { - CQLQuery(CQLSyntax.delete) - .forcePad.append(CQLSyntax.from) - .forcePad.append(table) - } - def deleteColumn(table: String, column: String): CQLQuery = { - CQLQuery(CQLSyntax.delete) - .forcePad.append(column) - .forcePad.append(CQLSyntax.from) - .forcePad.append(table) - } } diff --git a/phantom-dsl/src/main/scala/com/websudos/phantom/builder/query/CQLQuery.scala b/phantom-dsl/src/main/scala/com/websudos/phantom/builder/query/CQLQuery.scala index c96eaefe8..1159ecda8 100644 --- a/phantom-dsl/src/main/scala/com/websudos/phantom/builder/query/CQLQuery.scala +++ b/phantom-dsl/src/main/scala/com/websudos/phantom/builder/query/CQLQuery.scala @@ -57,7 +57,7 @@ case class CQLQuery(queryString: String) { def prependIfAbsent(st: CQLQuery): CQLQuery = prependIfAbsent(st.queryString) def escape(st: String): String = "`" + st + "`" - def singleQuote(st: String): String = "'" + st + "'" + def singleQuote(st: String): String = "'" + st.replaceAll("'", "''") + "'" def spaced: Boolean = queryString.endsWith(" ") def pad: CQLQuery = if (spaced) this else CQLQuery(queryString + " ") @@ -79,7 +79,7 @@ case class CQLQuery(queryString: String) { object CQLQuery { def empty: CQLQuery = CQLQuery("") - def escape(str: String): String = "'" + str + "'" + def escape(str: String): String = "'" + str.replaceAll("'", "''") + "'" def apply(collection: TraversableOnce[String]): CQLQuery = CQLQuery(collection.mkString(", ")) } diff --git a/phantom-dsl/src/main/scala/com/websudos/phantom/builder/query/DeleteQuery.scala b/phantom-dsl/src/main/scala/com/websudos/phantom/builder/query/DeleteQuery.scala index dabe5852e..67e53276a 100644 --- a/phantom-dsl/src/main/scala/com/websudos/phantom/builder/query/DeleteQuery.scala +++ b/phantom-dsl/src/main/scala/com/websudos/phantom/builder/query/DeleteQuery.scala @@ -69,11 +69,11 @@ object DeleteQuery { type Default[T <: CassandraTable[T, _], R] = DeleteQuery[T, R, Unlimited, Unordered, Unspecified, Unchainned] def apply[T <: CassandraTable[T, _], R](table: T)(implicit keySpace: KeySpace): DeleteQuery.Default[T, R] = { - new DeleteQuery(table, QueryBuilder.delete(QueryBuilder.keyspace(keySpace.name, table.tableName).queryString)) + new DeleteQuery(table, QueryBuilder.Delete.delete(QueryBuilder.keyspace(keySpace.name, table.tableName).queryString)) } def apply[T <: CassandraTable[T, _], R](table: T, col: String)(implicit keySpace: KeySpace): DeleteQuery.Default[T, R] = { - new DeleteQuery(table, QueryBuilder.deleteColumn(QueryBuilder.keyspace(keySpace.name, table.tableName).queryString, col)) + new DeleteQuery(table, QueryBuilder.Delete.deleteColumn(QueryBuilder.keyspace(keySpace.name, table.tableName).queryString, col)) } diff --git a/phantom-dsl/src/main/scala/com/websudos/phantom/builder/serializers/DeleteQueryBuilder.scala b/phantom-dsl/src/main/scala/com/websudos/phantom/builder/serializers/DeleteQueryBuilder.scala new file mode 100644 index 000000000..c9a171ab8 --- /dev/null +++ b/phantom-dsl/src/main/scala/com/websudos/phantom/builder/serializers/DeleteQueryBuilder.scala @@ -0,0 +1,19 @@ +package com.websudos.phantom.builder.serializers + +import com.websudos.phantom.builder.query.CQLQuery +import com.websudos.phantom.builder.syntax.CQLSyntax + +private[builder] class DeleteQueryBuilder { + def delete(table: String): CQLQuery = { + CQLQuery(CQLSyntax.delete) + .forcePad.append(CQLSyntax.from) + .forcePad.append(table) + } + + def deleteColumn(table: String, column: String): CQLQuery = { + CQLQuery(CQLSyntax.delete) + .forcePad.append(column) + .forcePad.append(CQLSyntax.from) + .forcePad.append(table) + } +} diff --git a/phantom-dsl/src/test/scala/com/websudos/phantom/builder/query/CQLQueryTest.scala b/phantom-dsl/src/test/scala/com/websudos/phantom/builder/query/CQLQueryTest.scala new file mode 100644 index 000000000..4d823eafe --- /dev/null +++ b/phantom-dsl/src/test/scala/com/websudos/phantom/builder/query/CQLQueryTest.scala @@ -0,0 +1,27 @@ +package com.websudos.phantom.builder.query + +import org.scalatest.{Matchers, FlatSpec} +import com.websudos.util.testing._ + +class CQLQueryTest extends FlatSpec with Matchers { + it should "create an empty CQL query using the empty method on the companion object" in { + CQLQuery.empty.queryString shouldEqual "" + } + + it should "automatically serialize a list of strings using the apply method from the companion object" in { + val list = List("test", "test2") + + CQLQuery(list).queryString shouldEqual "test, test2" + } + + it should "escape strings without single quotes inside them by wrapping the string in single quotes" in { + val test = gen[String] + CQLQuery.escape(test) shouldEqual s"'$test'" + } + + it should "escape single quotes inside a string using the scape method of the companion" in { + val test = "test'" + CQLQuery.escape(test) shouldEqual "'test'''" + } + +} diff --git a/phantom-dsl/src/test/scala/com/websudos/phantom/builder/query/db/crud/InsertTest.scala b/phantom-dsl/src/test/scala/com/websudos/phantom/builder/query/db/crud/InsertTest.scala index 0e1971e86..ea3dcdc6a 100644 --- a/phantom-dsl/src/test/scala/com/websudos/phantom/builder/query/db/crud/InsertTest.scala +++ b/phantom-dsl/src/test/scala/com/websudos/phantom/builder/query/db/crud/InsertTest.scala @@ -83,25 +83,33 @@ class InsertTest extends PhantomCassandraTestSuite { } } - it should "work fine with List, Set, Map" in { - val row = gen[TestRow] + it should "insert strings with single quotes inside them and automatically escape them" in { + val row = gen[TestRow].copy(key = "test'") - val rcp = TestTable.insert - .value(_.key, row.key) - .value(_.list, row.list) - .value(_.setText, row.setText) - .value(_.mapTextToText, row.mapTextToText) - .value(_.setInt, row.setInt) - .value(_.mapIntToText, row.mapIntToText) - .future() flatMap { - _ => { - for { - one <- TestTable.select.where(_.key eqs row.key).one - multi <- TestTable.select.fetch - } yield (one.get === row, multi.contains(row)) + val chain = for { + store <- TestTable.store(row).future() + one <- TestTable.select.where(_.key eqs row.key).one + multi <- TestTable.select.fetch + } yield (one.get === row, multi.contains(row)) + + chain successful { + res => { + assert (res._1) + assert (res._2) } } - rcp successful { + } + + it should "insert strings with single quotes inside them and automatically escape them with Twitter Futures" in { + val row = gen[TestRow].copy(key = "test'") + + val chain = for { + store <- TestTable.store(row).execute() + one <- TestTable.select.where(_.key eqs row.key).get + multi <- TestTable.select.collect() + } yield (one.get === row, multi.contains(row)) + + chain successful { res => { assert (res._1) assert (res._2) @@ -109,30 +117,36 @@ class InsertTest extends PhantomCassandraTestSuite { } } - it should "work fine with List, Set, Map and Twitter futures" in { + it should "work fine with List, Set, Map" in { val row = gen[TestRow] - val rcp = TestTable.insert - .value(_.key, row.key) - .value(_.list, row.list) - .value(_.setText, row.setText) - .value(_.mapTextToText, row.mapTextToText) - .value(_.setInt, row.setInt) - .value(_.mapIntToText, row.mapIntToText) - .execute() flatMap { - _ => { - for { - one <- TestTable.select.where(_.key eqs row.key).get - multi <- TestTable.select.collect() - } yield (one, multi) + val chain = for { + store <- TestTable.store(row).future() + one <- TestTable.select.where(_.key eqs row.key).one + multi <- TestTable.select.fetch + } yield (one.get === row, multi.contains(row)) + + chain successful { + res => { + assert (res._1) + assert (res._2) } } - rcp successful { - res => { - res._1.isDefined shouldEqual true - res._1.get shouldEqual row + } - res._2.contains(row) shouldEqual true + it should "work fine with List, Set, Map and Twitter futures" in { + val row = gen[TestRow] + + val chain = for { + store <- TestTable.store(row).execute() + one <- TestTable.select.where(_.key eqs row.key).get + multi <- TestTable.select.collect() + } yield (one.get === row, multi.contains(row)) + + chain successful { + res => { + assert (res._1) + assert (res._2) } } } diff --git a/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/CreateQuerySerialisationTest.scala b/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/CreateQuerySerialisationTest.scala new file mode 100644 index 000000000..443c6d98c --- /dev/null +++ b/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/CreateQuerySerialisationTest.scala @@ -0,0 +1,12 @@ +package com.websudos.phantom.builder.serializers + +import com.websudos.phantom.builder.query.QueryBuilderTest +import com.websudos.phantom.tables.TimeSeriesTable + +class CreateQuerySerialisationTest extends QueryBuilderTest { + "The CREATE query builder" - { + "should generate clustering keys for a schema queries" - { + val qb = TimeSeriesTable.defineTableKey() + } + } +} diff --git a/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/DeleteQueryBuilderTest.scala b/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/DeleteQueryBuilderTest.scala index fd1055c03..1217ccb41 100644 --- a/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/DeleteQueryBuilderTest.scala +++ b/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/DeleteQueryBuilderTest.scala @@ -1,7 +1,19 @@ package com.websudos.phantom.builder.serializers +import com.websudos.phantom.builder.QueryBuilder import com.websudos.phantom.builder.query.QueryBuilderTest class DeleteQueryBuilderTest extends QueryBuilderTest { + "The DELETE query builder" - { + "should allow specifying column delete queries" - { + val qb = QueryBuilder.Delete.deleteColumn("table", "col").queryString + qb shouldEqual "DELETE col FROM table" + } + + "should allow specifying full delete queries" - { + val qb = QueryBuilder.Delete.delete("table").queryString + qb shouldEqual "DELETE FROM table" + } + } } diff --git a/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/DeleteQuerySerialisationTest.scala b/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/DeleteQuerySerialisationTest.scala index 881861167..526b0387e 100644 --- a/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/DeleteQuerySerialisationTest.scala +++ b/phantom-dsl/src/test/scala/com/websudos/phantom/builder/serializers/DeleteQuerySerialisationTest.scala @@ -1,9 +1,15 @@ package com.websudos.phantom.builder.serializers import com.websudos.phantom.builder.query.QueryBuilderTest +import com.websudos.phantom.tables.BasicTable class DeleteQuerySerialisationTest extends QueryBuilderTest { - "The DELETE query builder" - { + "The DELETE query builder" - { + "should generate table column deletion queries" - { + "should create a delete query for a single column" - { + BasicTable.delete(_.id) + } + } } } diff --git a/phantom-dsl/src/test/scala/com/websudos/phantom/tables/TestTable.scala b/phantom-dsl/src/test/scala/com/websudos/phantom/tables/TestTable.scala index 146fc4882..f48420e15 100644 --- a/phantom-dsl/src/test/scala/com/websudos/phantom/tables/TestTable.scala +++ b/phantom-dsl/src/test/scala/com/websudos/phantom/tables/TestTable.scala @@ -29,6 +29,7 @@ */ package com.websudos.phantom.tables +import com.websudos.phantom.builder.query.InsertQuery import com.websudos.phantom.dsl._ import com.websudos.phantom.testkit._ @@ -69,5 +70,16 @@ sealed class TestTable extends CassandraTable[TestTable, TestRow] { object TestTable extends TestTable with PhantomCassandraConnector { override val tableName = "TestTable" + + def store(row: TestRow): InsertQuery.Default[TestTable, TestRow] = { + insert + .value(_.key, row.key) + .value(_.list, row.list) + .value(_.setText, row.setText) + .value(_.mapTextToText, row.mapTextToText) + .value(_.setInt, row.setInt) + .value(_.mapIntToText, row.mapIntToText) + } + } diff --git a/project/PhantomBuild.scala b/project/PhantomBuild.scala index b132a9def..e07643a5e 100644 --- a/project/PhantomBuild.scala +++ b/project/PhantomBuild.scala @@ -36,14 +36,13 @@ import sbt._ object PhantomBuild extends Build { - val UtilVersion = "0.8.0" + val UtilVersion = "0.8.4" val DatastaxDriverVersion = "2.1.5" val ScalaTestVersion = "2.2.4" val ShapelessVersion = "2.2.0-RC4" val FinagleVersion = "6.25.0" val TwitterUtilVersion = "6.24.0" val ScroogeVersion = "3.17.0" - val ThriftVersion = "0.9.1" val ScalatraVersion = "2.3.0" val PlayVersion = "2.4.0-M1" val Json4SVersion = "3.2.11" @@ -97,9 +96,10 @@ object PhantomBuild extends Build { def performanceFilter(name: String): Boolean = name endsWith "PerformanceTest" val publishSettings: Seq[Def.Setting[_]] = Seq( - publishMavenStyle := false, + publishMavenStyle := true, bintray.BintrayKeys.bintrayOrganization := Some("websudos"), bintray.BintrayKeys.bintrayRepository := "oss-releases", + bintray.BintrayKeys.bintrayReleaseOnPublish in ThisBuild := true, publishArtifact in Test := false, pomIncludeRepository := { _ => true}, licenses += ("Apache-2.0", url("https://www.apache.org/licenses/LICENSE-2.0")) @@ -108,7 +108,7 @@ object PhantomBuild extends Build { val sharedSettings: Seq[Def.Setting[_]] = Defaults.coreDefaultSettings ++ Seq( organization := "com.websudos", - version := "1.8.4", + version := "1.8.9", scalaVersion := "2.11.6", crossScalaVersions := Seq("2.10.5", "2.11.6"), resolvers ++= Seq( @@ -120,8 +120,6 @@ object PhantomBuild extends Build { "Sonatype staging" at "http://oss.sonatype.org/content/repositories/staging", "Java.net Maven2 Repository" at "http://download.java.net/maven/2/", "Twitter Repository" at "http://maven.twttr.com", - "Websudos releases" at "http://maven.websudos.co.uk/ext-release-local", - "Websudos snapshots" at "http://maven.websudos.co.uk/ext-snapshot-local", Resolver.bintrayRepo("websudos", "oss-releases") ), scalacOptions ++= Seq( @@ -136,14 +134,13 @@ object PhantomBuild extends Build { "-feature", "-unchecked" ), - bintray.BintrayKeys.bintrayReleaseOnPublish in ThisBuild := true, fork in Test := true, javaOptions in Test ++= Seq("-Xmx2G"), testFrameworks in PerformanceTest := Seq(new TestFramework("org.scalameter.ScalaMeterFramework")), testOptions in Test := Seq(Tests.Filter(x => !performanceFilter(x))), testOptions in PerformanceTest := Seq(Tests.Filter(x => performanceFilter(x))), fork in PerformanceTest := true - ) ++ net.virtualvoid.sbt.graph.Plugin.graphSettings ++ mavenPublishSettings ++ + ) ++ net.virtualvoid.sbt.graph.Plugin.graphSettings ++ publishSettings ++ GitProject.gitSettings ++ VersionManagement.newSettings @@ -262,8 +259,6 @@ object PhantomBuild extends Build { ).settings( name := "phantom-thrift", libraryDependencies ++= Seq( - "org.apache.thrift" % "libthrift" % ThriftVersion, - "com.twitter" %% "scrooge-core" % ScroogeVersion, "com.twitter" %% "scrooge-serializer" % ScroogeVersion, "org.scalatest" %% "scalatest" % ScalaTestVersion % "test, provided", "com.websudos" %% "util-testing" % UtilVersion % "test, provided" diff --git a/project/build.properties b/project/build.properties index a8c4f8e79..a6e117b61 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=0.13.7-RC1 +sbt.version=0.13.8 diff --git a/project/plugins.sbt b/project/plugins.sbt index 944a65282..a9d581639 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -5,7 +5,7 @@ resolvers ++= Seq( "sonatype-releases" at "https://oss.sonatype.org/content/repositories/releases/" ) -addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.7.4") +addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.7.5") addSbtPlugin("com.twitter" %% "scrooge-sbt-plugin" % "3.15.0") @@ -13,8 +13,6 @@ addSbtPlugin("org.scoverage" %% "sbt-scoverage" % "1.0.4") addSbtPlugin("org.scoverage" %% "sbt-coveralls" % "1.0.0.BETA1") -addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.6.0") - addSbtPlugin("com.typesafe.sbt" % "sbt-pgp" % "0.8.3") addSbtPlugin("org.scalastyle" %% "scalastyle-sbt-plugin" % "0.6.0") From 89b682166fafb226eb25ce45b75e57639632728f Mon Sep 17 00:00:00 2001 From: Flavian Alexandru Date: Wed, 20 May 2015 14:34:33 +0100 Subject: [PATCH 2/2] Bumping util version --- project/PhantomBuild.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/PhantomBuild.scala b/project/PhantomBuild.scala index e07643a5e..ef6d64605 100644 --- a/project/PhantomBuild.scala +++ b/project/PhantomBuild.scala @@ -36,7 +36,7 @@ import sbt._ object PhantomBuild extends Build { - val UtilVersion = "0.8.4" + val UtilVersion = "0.8.8" val DatastaxDriverVersion = "2.1.5" val ScalaTestVersion = "2.2.4" val ShapelessVersion = "2.2.0-RC4"