com.google.appengine.api.datastore.dev

## Class DefaultHighRepJobPolicy

- java.lang.Object
- - com.google.appengine.api.datastore.dev.DefaultHighRepJobPolicy

- All Implemented Interfaces:
    HighRepJobPolicy

      public class DefaultHighRepJobPolicy
      extends java.lang.Object
      implements HighRepJobPolicy

  An implementation of `HighRepJobPolicy` in which a user-defined percentage of jobs do not apply. The percentage applies to both new (initial write) and existing (roll forward) jobs. The user can also provide a random seed, which can be used to make the behavior of this class deterministic in tests.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `RANDOM_SEED_PROPERTY` A long that will be used as the seed for the `Random` that determines whether or not a job application attempt fails.
    `static java.lang.String` | `UNAPPLIED_JOB_PERCENTAGE_PROPERTY` A float >= 0 and <= 100 representing the percentage of job application attempts that will fail.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DefaultHighRepJobPolicy(long unappliedJobSeed, float unappliedJobPercentage)` Constructs a `DefaultHighRepJobPolicy`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `shouldApplyNewJob(com.google.appengine.api.datastore.Key entityGroup)`
    `boolean` | `shouldRollForwardExistingJob(com.google.appengine.api.datastore.Key entityGroup)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### RANDOM_SEED_PROPERTY

          public static final java.lang.String RANDOM_SEED_PROPERTY

      A long that will be used as the seed for the `Random` that determines whether or not a job application attempt fails. Must be parsable via `Long.parseLong(String)`. If not provided we use the current time (in millis) as the seed.
      See Also:
        Constant Field Values

    - #### UNAPPLIED_JOB_PERCENTAGE_PROPERTY

          public static final java.lang.String UNAPPLIED_JOB_PERCENTAGE_PROPERTY

      A float >= 0 and <= 100 representing the percentage of job application attempts that will fail. Must be parsable via `Float.parseFloat(String)`. Any portion of the value beyond two decimal places will be truncated. If not provided we set the percentage to 0, which yields the master/slave consistency model.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### DefaultHighRepJobPolicy

          public DefaultHighRepJobPolicy(long unappliedJobSeed,
                                         float unappliedJobPercentage)

      Constructs a `DefaultHighRepJobPolicy`.
      Parameters:
        `unappliedJobSeed` - The seed to use for random number generation.
        `unappliedJobPercentage` - The percentage of jobs that should fail to apply. This percentage applies to both new jobs and attempts to roll forward existing unapplied jobs.

  - ### Method Detail

    - #### shouldApplyNewJob

          public boolean shouldApplyNewJob(com.google.appengine.api.datastore.Key entityGroup)

      Specified by:
        `shouldApplyNewJob` in interface `HighRepJobPolicy`
      Parameters:
        `entityGroup` - A unique identifier for the entity group.
      Returns:
        `true` if the new job should apply according to the policy, `false` otherwise.

    - #### shouldRollForwardExistingJob

          public boolean shouldRollForwardExistingJob(com.google.appengine.api.datastore.Key entityGroup)

      Specified by:
        `shouldRollForwardExistingJob` in interface `HighRepJobPolicy`
      Parameters:
        `entityGroup` - A unique identifier for the entity group.
      Returns:
        `true` if the existing job should roll forward according to the policy, `false` otherwise.