markusthoemmes closed pull request #3164: Add type property to entity documents 
- Take 2
URL: https://github.com/apache/incubator-openwhisk/pull/3164
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/common/scala/src/main/scala/whisk/core/entity/WhiskAction.scala 
b/common/scala/src/main/scala/whisk/core/entity/WhiskAction.scala
index 4aaddbd7e0..fc657da21d 100644
--- a/common/scala/src/main/scala/whisk/core/entity/WhiskAction.scala
+++ b/common/scala/src/main/scala/whisk/core/entity/WhiskAction.scala
@@ -72,7 +72,7 @@ case class WhiskActionPut(exec: Option[Exec] = None,
   }
 }
 
-abstract class WhiskActionLike(override val name: EntityName) extends 
WhiskEntity(name) {
+abstract class WhiskActionLike(override val name: EntityName) extends 
WhiskEntity(name, "action") {
   def exec: Exec
   def parameters: Parameters
   def limits: ActionLimits
diff --git 
a/common/scala/src/main/scala/whisk/core/entity/WhiskActivation.scala 
b/common/scala/src/main/scala/whisk/core/entity/WhiskActivation.scala
index cde75070a4..4931daa703 100644
--- a/common/scala/src/main/scala/whisk/core/entity/WhiskActivation.scala
+++ b/common/scala/src/main/scala/whisk/core/entity/WhiskActivation.scala
@@ -68,7 +68,7 @@ case class WhiskActivation(namespace: EntityPath,
                            publish: Boolean = false,
                            annotations: Parameters = Parameters(),
                            duration: Option[Long] = None)
-    extends WhiskEntity(EntityName(activationId.asString)) {
+    extends WhiskEntity(EntityName(activationId.asString), "activation") {
 
   require(cause != null, "cause undefined")
   require(start != null, "start undefined")
diff --git a/common/scala/src/main/scala/whisk/core/entity/WhiskEntity.scala 
b/common/scala/src/main/scala/whisk/core/entity/WhiskEntity.scala
index eafb7d56b6..f84606c00b 100644
--- a/common/scala/src/main/scala/whisk/core/entity/WhiskEntity.scala
+++ b/common/scala/src/main/scala/whisk/core/entity/WhiskEntity.scala
@@ -41,7 +41,7 @@ import whisk.http.Messages
  * @throws IllegalArgumentException if any argument is undefined
  */
 @throws[IllegalArgumentException]
-abstract class WhiskEntity protected[entity] (en: EntityName) extends 
WhiskDocument {
+abstract class WhiskEntity protected[entity] (en: EntityName, val entityType: 
String) extends WhiskDocument {
 
   val namespace: EntityPath
   val name = en
@@ -64,7 +64,10 @@ abstract class WhiskEntity protected[entity] (en: 
EntityName) extends WhiskDocum
    * Returns a JSON object with the fields specific to this abstract class.
    */
   protected def entityDocumentRecord: JsObject =
-    JsObject("name" -> JsString(name.toString), "updated" -> 
JsNumber(updated.toEpochMilli()))
+    JsObject(
+      "name" -> JsString(name.toString),
+      "updated" -> JsNumber(updated.toEpochMilli()),
+      "entityType" -> JsString(entityType))
 
   override def toDocumentRecord: JsObject = {
     val extraFields = entityDocumentRecord.fields
diff --git a/common/scala/src/main/scala/whisk/core/entity/WhiskPackage.scala 
b/common/scala/src/main/scala/whisk/core/entity/WhiskPackage.scala
index b9c1c467c5..a3a1228a19 100644
--- a/common/scala/src/main/scala/whisk/core/entity/WhiskPackage.scala
+++ b/common/scala/src/main/scala/whisk/core/entity/WhiskPackage.scala
@@ -71,7 +71,7 @@ case class WhiskPackage(namespace: EntityPath,
                         version: SemVer = SemVer(),
                         publish: Boolean = false,
                         annotations: Parameters = Parameters())
-    extends WhiskEntity(name) {
+    extends WhiskEntity(name, "package") {
 
   require(binding != null || (binding map { _ != null } getOrElse true), 
"binding undefined")
 
diff --git a/common/scala/src/main/scala/whisk/core/entity/WhiskRule.scala 
b/common/scala/src/main/scala/whisk/core/entity/WhiskRule.scala
index 550d1bd8b4..b064e324f0 100644
--- a/common/scala/src/main/scala/whisk/core/entity/WhiskRule.scala
+++ b/common/scala/src/main/scala/whisk/core/entity/WhiskRule.scala
@@ -76,7 +76,7 @@ case class WhiskRule(namespace: EntityPath,
                      version: SemVer = SemVer(),
                      publish: Boolean = false,
                      annotations: Parameters = Parameters())
-    extends WhiskEntity(name) {
+    extends WhiskEntity(name, "rule") {
 
   def withStatus(s: Status) = WhiskRuleResponse(namespace, name, s, trigger, 
action, version, publish, annotations)
 
diff --git a/common/scala/src/main/scala/whisk/core/entity/WhiskTrigger.scala 
b/common/scala/src/main/scala/whisk/core/entity/WhiskTrigger.scala
index ec105796cc..7883c701cb 100644
--- a/common/scala/src/main/scala/whisk/core/entity/WhiskTrigger.scala
+++ b/common/scala/src/main/scala/whisk/core/entity/WhiskTrigger.scala
@@ -67,7 +67,7 @@ case class WhiskTrigger(namespace: EntityPath,
                         publish: Boolean = false,
                         annotations: Parameters = Parameters(),
                         rules: Option[Map[FullyQualifiedEntityName, 
ReducedRule]] = None)
-    extends WhiskEntity(name) {
+    extends WhiskEntity(name, "trigger") {
 
   require(limits != null, "limits undefined")
 
diff --git 
a/tests/src/test/scala/whisk/core/controller/test/ControllerTestCommon.scala 
b/tests/src/test/scala/whisk/core/controller/test/ControllerTestCommon.scala
index 1370964ef8..28f4bb9ae2 100644
--- a/tests/src/test/scala/whisk/core/controller/test/ControllerTestCommon.scala
+++ b/tests/src/test/scala/whisk/core/controller/test/ControllerTestCommon.scala
@@ -165,7 +165,8 @@ protected trait ControllerTestCommon
                                  version: SemVer = SemVer(),
                                  publish: Boolean = false,
                                  annotations: Parameters = Parameters())
-      extends WhiskEntity(name) {
+      extends WhiskEntity(name, "badEntity") {
+
     override def toJson = BadEntity.serdes.write(this).asJsObject
   }
 
diff --git 
a/tests/src/test/scala/whisk/core/entity/test/MigrationEntities.scala 
b/tests/src/test/scala/whisk/core/entity/test/MigrationEntities.scala
index 5d9983f67e..4c65f79e12 100644
--- a/tests/src/test/scala/whisk/core/entity/test/MigrationEntities.scala
+++ b/tests/src/test/scala/whisk/core/entity/test/MigrationEntities.scala
@@ -37,7 +37,7 @@ case class OldWhiskRule(namespace: EntityPath,
                         version: SemVer = SemVer(),
                         publish: Boolean = false,
                         annotations: Parameters = Parameters())
-    extends WhiskEntity(name) {
+    extends WhiskEntity(name, "rule") {
 
   def toJson = OldWhiskRule.serdes.write(this).asJsObject
 
@@ -72,7 +72,7 @@ case class OldWhiskTrigger(namespace: EntityPath,
                            version: SemVer = SemVer(),
                            publish: Boolean = false,
                            annotations: Parameters = Parameters())
-    extends WhiskEntity(name) {
+    extends WhiskEntity(name, "trigger") {
 
   def toJson = OldWhiskTrigger.serdes.write(this).asJsObject
 
diff --git a/tests/src/test/scala/whisk/core/entity/test/WhiskEntityTests.scala 
b/tests/src/test/scala/whisk/core/entity/test/WhiskEntityTests.scala
index 55d8ca941a..1812f5ac20 100644
--- a/tests/src/test/scala/whisk/core/entity/test/WhiskEntityTests.scala
+++ b/tests/src/test/scala/whisk/core/entity/test/WhiskEntityTests.scala
@@ -33,10 +33,14 @@ import whisk.core.entity.WhiskActivation
 import whisk.core.entity.Subject
 import whisk.core.entity.ActivationId
 import java.time.Instant
+
+import spray.json.JsString
 import whisk.core.entity.ActivationLogs
 import whisk.core.entity.WhiskTrigger
 import whisk.core.entity.ReducedRule
 import whisk.core.entity.Status
+import whisk.core.entity.WhiskEntity
+import whisk.core.entity.WhiskRule
 
 @RunWith(classOf[JUnitRunner])
 class WhiskEntityTests extends FlatSpec with ExecHelpers with Matchers {
@@ -134,4 +138,28 @@ class WhiskEntityTests extends FlatSpec with ExecHelpers 
with Matchers {
     rulesRemoved.rules shouldBe None
     rulesRemoved.rev shouldBe trigger.rev
   }
+
+  behavior of "WhiskEntity"
+
+  it should "define the entityType property in its json representation" in {
+    def assertType(d: WhiskEntity, entityType: String) = {
+      d.toDocumentRecord.fields("entityType") shouldBe JsString(entityType)
+    }
+
+    val action = WhiskAction(namespace, name, jsDefault("code"), Parameters())
+    assertType(action, "action")
+
+    val activation = WhiskActivation(namespace, name, Subject(), 
ActivationId(), Instant.now(), Instant.now())
+    assertType(activation, "activation")
+
+    val whiskPackage = WhiskPackage(namespace, name)
+    assertType(whiskPackage, "package")
+
+    val rule =
+      WhiskRule(namespace, name, FullyQualifiedEntityName(namespace, name), 
FullyQualifiedEntityName(namespace, name))
+    assertType(rule, "rule")
+
+    val trigger = WhiskTrigger(namespace, name)
+    assertType(trigger, "trigger")
+  }
 }


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to