Done! https://code.google.com/p/google-guice/issues/detail?id=779

On Wednesday, November 6, 2013 4:22:49 PM UTC-5, Sam Berlin wrote:
>
> Hey Tavis, could you file these as issues on the issue site @ 
> https://code.google.com/p/google-guice/issues/list and attach the patches 
> as separate files?  Thanks!
>
>  sam
>
>
> On Wed, Nov 6, 2013 at 4:17 PM, Tavian Barnes 
> <[email protected]<javascript:>
> > wrote:
>
>> If a binding has two equivalent ProvisionListeners, only fire one of them.
>> ---
>>  .../inject/internal/ProvisionListenerStackCallback.java     |  9 
>> ++++++---
>>  core/test/com/google/inject/ProvisionListenerTest.java      | 13 
>> +++++++++++++
>>  2 files changed, 19 insertions(+), 3 deletions(-)
>>
>> diff --git 
>> a/core/src/com/google/inject/internal/ProvisionListenerStackCallback.java 
>> b/core/src/com/google/inject/internal/ProvisionListenerStackCallback.java
>> index a99c513..45347f0 100644
>> --- 
>> a/core/src/com/google/inject/internal/ProvisionListenerStackCallback.java
>> +++ 
>> b/core/src/com/google/inject/internal/ProvisionListenerStackCallback.java
>> @@ -16,14 +16,16 @@
>>
>>  package com.google.inject.internal;
>>
>> +import java.util.List;
>> +import java.util.Set;
>> +
>>  import com.google.common.collect.ImmutableList;
>> +import com.google.common.collect.Sets;
>>  import com.google.inject.Binding;
>>  import com.google.inject.ProvisionException;
>>  import com.google.inject.spi.DependencyAndSource;
>>  import com.google.inject.spi.ProvisionListener;
>>
>> -import java.util.List;
>> -
>>  /**
>>   * Intercepts provisions with a stack of listeners.
>>   *
>> @@ -49,7 +51,8 @@ final class ProvisionListenerStackCallback<T> {
>>      if (listeners.isEmpty()) {
>>        this.listeners = EMPTY_LISTENER;
>>      } else {
>> -      this.listeners = listeners.toArray(new 
>> ProvisionListener[listeners.size()]);
>> +      Set<ProvisionListener> deDuplicated = 
>> Sets.newLinkedHashSet(listeners);
>> +      this.listeners = deDuplicated.toArray(new 
>> ProvisionListener[deDuplicated.size()]);
>>      }
>>    }
>>
>> diff --git a/core/test/com/google/inject/ProvisionListenerTest.java 
>> b/core/test/com/google/inject/ProvisionListenerTest.java
>> index 478949f..54a11fa 100644
>> --- a/core/test/com/google/inject/ProvisionListenerTest.java
>> +++ b/core/test/com/google/inject/ProvisionListenerTest.java
>> @@ -694,4 +694,17 @@ public class ProvisionListenerTest extends TestCase {
>>        this.x = xProvider.get();
>>      }
>>    }
>> +
>> +  public void testDeDuplicateProvisionListeners() {
>> +    final Counter counter = new Counter();
>> +    Injector injector = Guice.createInjector(new AbstractModule() {
>> +      @Override
>> +      protected void configure() {
>> +        bindListener(Matchers.any(), counter);
>> +        bindListener(Matchers.any(), counter);
>> +      }
>> +    });
>> +    injector.getInstance(Many.class);
>> +    assertEquals("ProvisionListener not de-duplicated", 1, 
>> counter.count);
>> +  }
>>  }
>> --
>> 1.8.4.2
>>
>> --
>> You received this message because you are subscribed to the Google Groups 
>> "google-guice" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected]<javascript:>
>> .
>> Visit this group at http://groups.google.com/group/google-guice.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/google-guice.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to