@@ -43,6 +43,8 @@ public IHttpActionResult Put(string id, T trigger)
4343 return BadRequest ( ) ;
4444 if ( ! ModelState . IsValid )
4545 return BadRequest ( ModelState ) ;
46+ if ( ! IsValidJobType ( trigger . JobType ) )
47+ return BadRequest ( string . Format ( "JobType is not registered: {0}" , trigger . JobType ) ) ;
4648 var updatedTrigger = Repository . Update ( trigger ) ;
4749 EngineScheduler . ScheduleJobWithTrigger ( updatedTrigger ) ;
4850 return Ok ( updatedTrigger ) ;
@@ -54,6 +56,8 @@ public IHttpActionResult Post(T trigger)
5456 {
5557 if ( ! ModelState . IsValid )
5658 return BadRequest ( ModelState ) ;
59+ if ( ! IsValidJobType ( trigger . JobType ) )
60+ return BadRequest ( string . Format ( "JobType is not registered: {0}" , trigger . JobType ) ) ;
5761 var triggerWithId = Repository . Insert ( trigger ) ;
5862 EngineScheduler . ScheduleJobWithTrigger ( triggerWithId ) ;
5963 return CreatedAtRoute ( "DefaultApi" , new { id = triggerWithId . Id } , triggerWithId ) ;
@@ -70,5 +74,21 @@ public IHttpActionResult Delete(string id)
7074 EngineScheduler . DeleteTrigger ( trigger ) ;
7175 return Ok ( trigger ) ;
7276 }
77+
78+ /// <summary>
79+ /// Determines whether this instance is valid JobType given a jobTypeName.
80+ /// </summary>
81+ /// <returns><c>true</c> if the jobTypeName is the name of a registered JobType; otherwise, <c>false</c>.
82+ /// Also, return <c>true</c> if the jobTypeName is an empty string, because returning <c>false</c>
83+ /// would mean that the JobType is required which is an additional constraint - it is not
84+ /// the responsibility of this method to enforce that constraint.
85+ /// </returns>
86+ /// <param name="jobTypeName">The fully qualified name of a JobType.</param>
87+ public bool IsValidJobType ( string jobTypeName )
88+ {
89+ if ( string . IsNullOrEmpty ( jobTypeName ) )
90+ return true ;
91+ return EngineScheduler . IsJobTypeRegistered ( jobTypeName ) ;
92+ }
7393 }
7494}
0 commit comments