private static void setAnnotationIndexes ( final PersistenceUnitMetadataHolder puHolder , DeploymentUnit deploymentUnit ) { final Map < URL , Index > annotationIndexes = new HashMap <> ( ) ; do { for ( ResourceRoot root : DeploymentUtils . allResourceRoots ( deploymentUnit ) ) { final Index index = root . getAttachment ( Attachments . ANNOTATION_INDEX ) ; if ( index != null ) { try { ROOT_LOGGER . tracef ( "adding '%s' to annotation index map" , root . getRoot ( ) . toURL ( ) ) ; annotationIndexes . put ( root . getRoot ( ) . toURL ( ) , index ) ; } catch ( MalformedURLException e ) { throw new RuntimeException ( e ) ; } } } deploymentUnit = deploymentUnit . getParent ( ) ; // get annotation indexes for top level also } while ( deploymentUnit != null ) ; for ( PersistenceUnitMetadata pu : puHolder . getPersistenceUnits ( ) ) { pu . setAnnotationIndex ( annotationIndexes ) ; // hold onto the annotation index for Persistence Provider use during deployment } }
Setup the annotation index map