Constructor-Based Properties

The com.gigaspaces.annotation.pojo.SpaceClassConstructor annotation on a constructor will cause the data class property analysis to be based on properties found in the constructor (instead of getters/setters). This allows data class properties to be immutable.

Usage

The following is an example of this type of data class.

package org.openspaces.scala.example.data
import scala.beans.BeanProperty

/*
 * This imports enhanced space annotations such as @SpaceId, @SpaceRouting, etc...
 * with a @beanGetter annotation attached to them so annotations will be attached to the generated getter method.
 */
import org.openspaces.scala.core.aliases.annotation._

/**
 * Data properties should be inferred from the constructor.
 * This allows the pojo properties to remain immutable as demonstrated below.
 */
case class Data @SpaceClassConstructor() (

  @BeanProperty
  @SpaceId
  @SpaceProperty(nullValue = "-1")
  id: Long = -1,

  @BeanProperty
  @SpaceRouting
  @SpaceProperty(nullValue = "-1")
  routingClosed The mechanism that is in charge of routing the objects into and out of the corresponding partitions. The routing is based on a designated attribute inside the objects that are written to the Space, called the Routing Index.: Long = -1,

  @BeanProperty
  data: String = null

)

Considerations