Using New Hooks API
There are a number of reasons why you may want to write your custom hook using the new Hooks API approach, which are highlighted below.
Hook Triggers
UI Changes
Changes aren’t always pushed in Bitbucket Server, you can for example create branches and tags through the UI. The old approach was to have a hook to handle the pushes and an event handler to handle the UI action. This resulted in duplication of business logic.
For example if you wanted a hook that checks branch names you could apply the following triggers to it:
branch-create
repo-push
The full list of triggers are explained in more detail here.
Checking Triggers
You can respond to different triggers in different ways by checking the trigger in the hook request.
The example below checks for tag create or branch create triggers:
import com.atlassian.bitbucket.hook.repository.StandardRepositoryHookTrigger if (hookRequest.trigger == StandardRepositoryHookTrigger.BRANCH_CREATE) { // handle branch create } else if (hookRequest.trigger == StandardRepositoryHookTrigger.TAG_CREATE) { // handle tag create }