@@ -77,7 +77,7 @@ public static Payload from(String eventName, Map<String, Object> data) {
7777        String  repo  = null ;
7878
7979        if  (REPOSITORY_EVENTS .contains (eventName )) {
80-             Map <String , Object > m  = MapUtils .getMap (data , REPO_NAME_KEY , Collections . emptyMap ());
80+             Map <String , Object > m  = MapUtils .getMap (data , REPO_NAME_KEY , Map . of ());
8181            fullRepoName  = MapUtils .getString (m , "full_name" );
8282
8383            if  (fullRepoName  != null ) {
@@ -90,7 +90,7 @@ public static Payload from(String eventName, Map<String, Object> data) {
9090                repo  = as [1 ];
9191            }
9292        } else  if  (ORGANIZATION_EVENTS .contains (eventName )) {
93-             Map <String , Object > m  = MapUtils .getMap (data , ORGANIZATION_KEY , Collections . emptyMap ());
93+             Map <String , Object > m  = MapUtils .getMap (data , ORGANIZATION_KEY , Map . of ());
9494            org  = MapUtils .getString (m , "login" );
9595        } else  {
9696            return  null ;
@@ -115,8 +115,8 @@ protected Payload(String eventName, String fullRepoName, String org, String repo
115115
116116    public  String  getHost () {
117117        try  {
118-             Map <String , Object > repo  = MapUtils .getMap (data , REPO_NAME_KEY , Collections . emptyMap ());
119-             String  url  = MapUtils .getString (repo , "git_url" );
118+             Map <String , Object > repository  = MapUtils .getMap (data , REPO_NAME_KEY , Map . of ());
119+             String  url  = MapUtils .getString (repository , "git_url" );
120120            return  new  URI (url ).getHost ();
121121        } catch  (Exception  e ) {
122122            return  null ;
@@ -170,11 +170,11 @@ public String getHead() {
170170    }
171171
172172    public  Map <String , Set <String >> getFiles () {
173-         if  (!eventName . toLowerCase (). equals ( PUSH_EVENT )) {
174-             return  Collections . emptyMap ();
173+         if  (!PUSH_EVENT . equalsIgnoreCase ( eventName )) {
174+             return  Map . of ();
175175        }
176176
177-         List <Map <String , Object >> commits  = MapUtils .getList (data , "commits" , Collections . emptyList ());
177+         List <Map <String , Object >> commits  = MapUtils .getList (data , "commits" , List . of ());
178178        Map <String , Set <String >> files  = new  HashMap <>();
179179        for  (Map <String , Object > c  : commits ) {
180180            append (c , "added" , files );
@@ -184,20 +184,48 @@ public Map<String, Set<String>> getFiles() {
184184        return  files ;
185185    }
186186
187+     public  boolean  isPullRequestFromDifferentRepo () {
188+         Map <String , Object > pullRequest  = getPullRequestAttribute (this .raw ());
189+         String  baseCloneUrl  = getPullRequestCloneUrl (pullRequest , BASE_KEY );
190+         String  headCloneUrl  = getPullRequestCloneUrl (pullRequest , HEAD_KEY );
191+ 
192+         return  !Objects .equals (baseCloneUrl , headCloneUrl );
193+     }
194+ 
195+     /** 
196+      * @return <code>true</code> when event contains `pull_request` attribute.<br/> 
197+      *         NOTE: this does <em>not</em> indicate the payload is from a <code>pull_request</code> 
198+      *         event. It may be from another event related to a pull request such as 
199+      *         <code>pull_request_review</code> or <code>pull_request_review_comment</code> 
200+      */ 
201+     public  boolean  hasPullRequestEntry () {
202+         return  raw ().containsKey (PULL_REQUEST_EVENT );
203+     }
204+ 
205+     public  String  getPullRequestBaseUrl () {
206+         Map <String , Object > pullRequest  = getPullRequestAttribute (this .raw ());
207+         return  getPullRequestCloneUrl (pullRequest , BASE_KEY );
208+     }
209+ 
210+     public  String  getPullRequestHeadUrl () {
211+         Map <String , Object > pullRequest  = getPullRequestAttribute (this .raw ());
212+         return  getPullRequestCloneUrl (pullRequest , HEAD_KEY );
213+     }
214+ 
187215    private  static  void  append (Map <String , Object > c , String  name , Map <String , Set <String >> result ) {
188-         List <String > value  = MapUtils .getList (c , name , Collections . emptyList ());
216+         List <String > value  = MapUtils .getList (c , name , List . of ());
189217        result .compute (name , (k , v ) -> (v  == null ) ? new  HashSet <>(value ) : Stream .concat (v .stream (), value .stream ()).collect (Collectors .toSet ()));
190218    }
191219
192220    public  String  getSender () {
193-         Map <String , Object > sender  = MapUtils .getMap (data , "sender" , Collections . emptyMap ());
221+         Map <String , Object > sender  = MapUtils .getMap (data , "sender" , Map . of ());
194222        return  MapUtils .getString (sender , "login" );
195223    }
196224
197225    public  String  getSenderLdapDn () {
198226        Object  result  = ConfigurationUtils .get (data , "sender" , "ldap_dn" );
199-         if  (result  instanceof  String ) {
200-             return  ( String )  result ;
227+         if  (result  instanceof  String   s ) {
228+             return  s ;
201229        }
202230        return  null ;
203231    }
@@ -215,7 +243,7 @@ public Map<String, Object> raw() {
215243    }
216244
217245    private  static  String  getRef (Map <String , Object > event ) {
218-         String  ref  = MapUtils .getString (event , "ref" );
246+         String  ref  = MapUtils .getString (event , REF_KEY );
219247        if  (ref  == null ) {
220248            return  null ;
221249        }
@@ -224,15 +252,25 @@ private static String getRef(Map<String, Object> event) {
224252    }
225253
226254    private  static  String  getPullRequestHead (Map <String , Object > event ) {
227-         Map <String , Object > pr  = MapUtils .getMap (event , PULL_REQUEST_EVENT , Collections . emptyMap ());
228-         Map <String , Object > base  = MapUtils .getMap (pr , "head" ,  Collections . emptyMap ());
229-         return  MapUtils .getString (base , "ref" );
255+         Map <String , Object > pr  = MapUtils .getMap (event , PULL_REQUEST_EVENT , Map . of ());
256+         Map <String , Object > base  = MapUtils .getMap (pr , HEAD_KEY ,  Map . of ());
257+         return  MapUtils .getString (base , REF_KEY );
230258    }
231259
232260    private  static  String  getBranchPullRequest (Map <String , Object > event ) {
233-         Map <String , Object > pr  = MapUtils .getMap (event , PULL_REQUEST_EVENT , Collections .emptyMap ());
234-         Map <String , Object > base  = MapUtils .getMap (pr , "base" , Collections .emptyMap ());
235-         return  MapUtils .getString (base , "ref" );
261+         Map <String , Object > pr  = MapUtils .getMap (event , PULL_REQUEST_EVENT , Map .of ());
262+         Map <String , Object > base  = MapUtils .getMap (pr , BASE_KEY , Map .of ());
263+         return  MapUtils .getString (base , REF_KEY );
264+     }
265+ 
266+     private  static  Map <String , Object > getPullRequestAttribute (Map <String , Object > event ) {
267+         return  MapUtils .getMap (event , PULL_REQUEST_EVENT , Map .of ());
268+     }
269+ 
270+     private  static  String  getPullRequestCloneUrl (Map <String , Object > pullRequest , String  baseOrHead ) {
271+         Map <String , Object > head  = MapUtils .getMap (pullRequest , baseOrHead , Map .of ());
272+         Map <String , Object > headRepo  = MapUtils .getMap (head , "repo" , Map .of ());
273+         return  MapUtils .getString (headRepo , "clone_url" , "" );
236274    }
237275
238276    @ Override 
0 commit comments