@Advice.OnMethodEnter static void enter(@FieldValue Map<?, ?> field, @Advice.Argument(0) Map<?, ?> argument, @MappedBy String mappedBy) { if ( field != null && Hibernate.isPropertyInitialized( field, mappedBy ) ) { Object[] array = field.values().toArray(); for ( int i = 0; i < array.length; i++ ) { if ( argument == null || !argument.values().contains( array[i] ) ) { setterNull( array[i], null ); } } } }
@Advice.OnMethodEnter static void enter(@Advice.This Object self, @FieldValue Collection<?> field, @Advice.Argument(0) Collection<?> argument, @MappedBy String mappedBy) { if ( field != null && Hibernate.isPropertyInitialized( field, mappedBy ) ) { Object[] array = field.toArray(); for ( int i = 0; i < array.length; i++ ) { if ( argument == null || !argument.contains( array[i] ) ) { getter( array[i] ).remove( self ); } } } }
@Advice.OnMethodExit static void exit(@Advice.This Object self, @Advice.Argument(0) Object argument, @MappedBy String mappedBy) { if ( argument != null && Hibernate.isPropertyInitialized( argument, mappedBy ) ) { Collection<Object> c = getter( argument ); if ( c != null && !c.contains( self ) ) { c.add( self ); } } }
@Advice.OnMethodExit(inline = false) public static void addInitializer(@Advice.Argument(0) Object bean) { if (bean instanceof ConfigurableEmbeddedServletContainer) { ((ConfigurableEmbeddedServletContainer) bean).addInitializers(new StagemonitorServletContextInitializer()); } }
@Advice.OnMethodExit static void $$_hibernate_areCollectionFieldsDirty( @FieldName String fieldName, @FieldValue Collection<?> collection, @Advice.Argument(0) DirtyTracker tracker, @Advice.FieldValue(EnhancerConstants.TRACKER_COLLECTION_NAME) CollectionTracker $$_hibernate_collectionTracker) { if ( $$_hibernate_collectionTracker != null ) { if ( collection == null && $$_hibernate_collectionTracker.getSize( fieldName ) != -1 ) { tracker.add( fieldName ); } else if ( collection != null && $$_hibernate_collectionTracker.getSize( fieldName ) != collection.size() ) { tracker.add( fieldName ); } } } }
@Advice.OnMethodExit static void $$_hibernate_clearDirtyCollectionNames( @FieldName String fieldName, @FieldValue Map<?, ?> map, @Advice.Argument(value = 0, readOnly = false) LazyAttributeLoadingInterceptor lazyInterceptor, @Advice.FieldValue(EnhancerConstants.TRACKER_COLLECTION_NAME) CollectionTracker $$_hibernate_collectionTracker) { if ( lazyInterceptor == null || lazyInterceptor.isAttributeLoaded( fieldName ) ) { if ( map == null ) { $$_hibernate_collectionTracker.add( fieldName, -1 ); } else { $$_hibernate_collectionTracker.add( fieldName, map.size() ); } } } }
@Advice.OnMethodExit static void $$_hibernate_clearDirtyCollectionNames( @FieldName String fieldName, @FieldValue Collection<?> collection, @Advice.Argument(value = 0, readOnly = false) LazyAttributeLoadingInterceptor lazyInterceptor, @Advice.FieldValue(EnhancerConstants.TRACKER_COLLECTION_NAME) CollectionTracker $$_hibernate_collectionTracker) { if ( lazyInterceptor == null || lazyInterceptor.isAttributeLoaded( fieldName ) ) { if ( collection == null ) { $$_hibernate_collectionTracker.add( fieldName, -1 ); } else { $$_hibernate_collectionTracker.add( fieldName, collection.size() ); } } } }
@Advice.OnMethodExit static void exit(@Advice.This Object self, @Advice.Argument(0) Collection<?> argument, @MappedBy String mappedBy) { if ( argument != null && Hibernate.isPropertyInitialized( argument, mappedBy ) ) { Object[] array = argument.toArray(); for ( int i = 0; i < array.length; i++ ) { if ( Hibernate.isPropertyInitialized( array[i], mappedBy ) ) { Collection<Object> c = getter( array[i] ); if ( c != self && c != null ) { c.add( self ); } } } } }
@Advice.OnMethodEnter static void $$_hibernate_trackChange( @Advice.Argument(0) String name, @Advice.FieldValue(EnhancerConstants.TRACKER_COMPOSITE_FIELD_NAME) CompositeOwnerTracker $$_hibernate_compositeOwners) { if ( $$_hibernate_compositeOwners != null ) { $$_hibernate_compositeOwners.callOwner( "." + name ); } } }
@Advice.OnMethodExit static void exit(@Advice.This Object self, @Advice.Argument(0) Collection<?> argument, @MappedBy String mappedBy) { if ( argument != null && Hibernate.isPropertyInitialized( argument, mappedBy ) ) { Object[] array = argument.toArray(); for ( int i = 0; i < array.length; i++ ) { if ( Hibernate.isPropertyInitialized( array[i], mappedBy ) && getter( array[i] ) != self ) { setterSelf( array[i], self ); } } } }
@Advice.OnMethodEnter static void $$_hibernate_suspendDirtyTracking( @Advice.Argument(0) boolean suspend, @Advice.FieldValue(value = EnhancerConstants.TRACKER_FIELD_NAME, readOnly = false) DirtyTracker $$_hibernate_tracker) { if ( $$_hibernate_tracker == null ) { $$_hibernate_tracker = new SimpleFieldTracker(); } $$_hibernate_tracker.suspend( suspend ); } }
@Advice.OnMethodEnter static void $$_hibernate_setOwner( @Advice.Argument(0) String name, @Advice.FieldValue(value = EnhancerConstants.TRACKER_COMPOSITE_FIELD_NAME, readOnly = false) CompositeOwnerTracker $$_hibernate_compositeOwners) { if ( $$_hibernate_compositeOwners != null ) { $$_hibernate_compositeOwners.removeOwner( name ); } } }
@Advice.OnMethodEnter static void enter(@FieldValue Collection<?> field, @Advice.Argument(0) Collection<?> argument, @MappedBy String mappedBy) { if ( field != null && Hibernate.isPropertyInitialized( field, mappedBy ) ) { Object[] array = field.toArray(); for ( int i = 0; i < array.length; i++ ) { if ( argument == null || !argument.contains( array[i] ) ) { setterNull( array[i], null ); } } } }
@Advice.OnMethodEnter static void enter(@FieldValue Object field, @Advice.Argument(0) Object argument, @MappedBy String mappedBy) { if ( field != null && Hibernate.isPropertyInitialized( field, mappedBy ) && argument != null ) { setterNull( field, null ); } }
@Advice.OnMethodEnter static void $$_hibernate_removeDirtyFields( @Advice.Argument(value = 0, readOnly = false) LazyAttributeLoadingInterceptor lazyInterceptor, @Advice.FieldValue(value = EnhancerConstants.INTERCEPTOR_FIELD_NAME) PersistentAttributeInterceptor $$_hibernate_attributeInterceptor) { if ( $$_hibernate_attributeInterceptor instanceof LazyAttributeLoadingInterceptor ) { lazyInterceptor = (LazyAttributeLoadingInterceptor) $$_hibernate_attributeInterceptor; } } }
@Advice.OnMethodExit static void exit(@Advice.This Object self, @Advice.Argument(0) Map<?, ?> argument, @MappedBy String mappedBy) { if ( argument != null && Hibernate.isPropertyInitialized( argument, mappedBy ) ) { Object[] array = argument.values().toArray(); for ( int i = 0; i < array.length; i++ ) { if ( Hibernate.isPropertyInitialized( array[i], mappedBy ) && getter( array[i] ) != self ) { setterSelf( array[i], self ); } } } }
@Advice.OnMethodExit static void exit(@Advice.This Object self, @Advice.Argument(0) Object argument, @MappedBy String mappedBy) { if ( argument != null && Hibernate.isPropertyInitialized( argument, mappedBy ) && getter( argument ) != self ) { setterSelf( argument, self ); } }
@Advice.OnMethodEnter static void $$_hibernate_trackChange( @Advice.Argument(0) String name, @Advice.FieldValue(value = EnhancerConstants.TRACKER_FIELD_NAME, readOnly = false) DirtyTracker $$_hibernate_tracker) { if ( $$_hibernate_tracker == null ) { $$_hibernate_tracker = new SimpleFieldTracker(); } $$_hibernate_tracker.add( name ); } }
@Advice.OnMethodEnter static void $$_hibernate_setOwner( @Advice.Argument(0) String name, @Advice.Argument(1) CompositeOwner tracker, @Advice.FieldValue(value = EnhancerConstants.TRACKER_COMPOSITE_FIELD_NAME, readOnly = false) CompositeOwnerTracker $$_hibernate_compositeOwners) { if ( $$_hibernate_compositeOwners == null ) { $$_hibernate_compositeOwners = new CompositeOwnerTracker(); } $$_hibernate_compositeOwners.add( name, tracker ); } }
@SuppressWarnings({"unused", "UnusedAssignment"}) @Advice.OnMethodExit private static void enter(@Advice.This Object self, @Advice.Argument(0) Object other, @Advice.Return(readOnly = false) boolean equals, @Advice.Enter boolean skipped) { if (skipped) { equals = self == other; } } }