@ -1,12 +1,22 @@
@@ -1,12 +1,22 @@
package org.springframework.platform.netflix.eureka.event ;
import com.google.common.base.Optional ;
import com.google.common.base.Predicate ;
import com.netflix.appinfo.InstanceInfo ;
import com.netflix.discovery.DiscoveryManager ;
import com.netflix.discovery.shared.Application ;
import com.netflix.eureka.PeerAwareInstanceRegistry ;
import com.netflix.eureka.lease.LeaseManager ;
import org.slf4j.Logger ;
import org.slf4j.LoggerFactory ;
import org.springframework.beans.factory.annotation.Autowired ;
import org.springframework.context.ApplicationContext ;
import javax.annotation.Nullable ;
import java.util.List ;
import static com.google.common.collect.Iterables.* ;
/ * *
* @author Spencer Gibb
* /
@ -21,8 +31,7 @@ public class LeaseManagerMessageBroker implements LeaseManager<InstanceInfo> {
@@ -21,8 +31,7 @@ public class LeaseManagerMessageBroker implements LeaseManager<InstanceInfo> {
logger . debug ( "register {}, vip {}, leaseDuration {}, isReplication {}" ,
info . getAppName ( ) , info . getVIPAddress ( ) , leaseDuration , isReplication ) ;
//TODO: what to publish from info (whole object?)
ctxt . publishEvent ( new EurekaInstanceRegisteredEvent ( this , info . getAppName ( ) ,
info . getVIPAddress ( ) , leaseDuration , isReplication ) ) ;
ctxt . publishEvent ( new EurekaInstanceRegisteredEvent ( this , info , leaseDuration , isReplication ) ) ;
}
@Override
@ -33,9 +42,25 @@ public class LeaseManagerMessageBroker implements LeaseManager<InstanceInfo> {
@@ -33,9 +42,25 @@ public class LeaseManagerMessageBroker implements LeaseManager<InstanceInfo> {
}
@Override
public boolean renew ( String appName , String serverId , boolean isReplication ) {
public boolean renew ( final String appName , final String serverId , boolean isReplication ) {
logger . debug ( "renew {}, serverId {}, isReplication {}" , appName , serverId , isReplication ) ;
ctxt . publishEvent ( new EurekaInstanceRenewedEvent ( this , appName , serverId , isReplication ) ) ;
List < Application > applications = PeerAwareInstanceRegistry . getInstance ( ) . getSortedApplications ( ) ;
Optional < Application > app = tryFind ( applications , new Predicate < Application > ( ) {
@Override
public boolean apply ( @Nullable Application input ) {
return input . getName ( ) . equals ( appName ) ;
}
} ) ;
if ( app . isPresent ( ) ) {
Optional < InstanceInfo > info = tryFind ( app . get ( ) . getInstances ( ) , new Predicate < InstanceInfo > ( ) {
@Override
public boolean apply ( @Nullable InstanceInfo input ) {
return input . getHostName ( ) . equals ( serverId ) ;
}
} ) ;
ctxt . publishEvent ( new EurekaInstanceRenewedEvent ( this , appName , serverId , info . orNull ( ) , isReplication ) ) ;
}
return false ;
}