Make perms case insensitive - need to write unit test still
This commit is contained in:
parent
185dc97ca6
commit
7eac22d362
@ -36,6 +36,7 @@ import net.md_5.bungee.packet.Packet9Respawn;
|
||||
import net.md_5.bungee.packet.PacketCCSettings;
|
||||
import net.md_5.bungee.packet.PacketFAPluginMessage;
|
||||
import net.md_5.bungee.packet.PacketFFKick;
|
||||
import net.md_5.bungee.util.CaseInsensitiveSet;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public final class UserConnection implements ProxiedPlayer
|
||||
@ -72,8 +73,8 @@ public final class UserConnection implements ProxiedPlayer
|
||||
@Setter
|
||||
private int ping = 100;
|
||||
/*========================================================================*/
|
||||
private final Collection<String> groups = new HashSet<>();
|
||||
private final Collection<String> permissions = new HashSet<>();
|
||||
private final Collection<String> groups = new CaseInsensitiveSet();
|
||||
private final Collection<String> permissions = new CaseInsensitiveSet();
|
||||
/*========================================================================*/
|
||||
@Getter
|
||||
private int clientEntityId;
|
||||
|
@ -0,0 +1,21 @@
|
||||
package net.md_5.bungee.util;
|
||||
|
||||
import gnu.trove.strategy.HashingStrategy;
|
||||
|
||||
class CaseInsensitiveHashingStrategy implements HashingStrategy<String>
|
||||
{
|
||||
|
||||
static final CaseInsensitiveHashingStrategy INSTANCE = new CaseInsensitiveHashingStrategy();
|
||||
|
||||
@Override
|
||||
public int computeHashCode(String object)
|
||||
{
|
||||
return object.toLowerCase().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(String o1, String o2)
|
||||
{
|
||||
return o1.toLowerCase().equals( o2.toLowerCase() );
|
||||
}
|
||||
}
|
@ -1,34 +1,18 @@
|
||||
package net.md_5.bungee.util;
|
||||
|
||||
import gnu.trove.map.hash.TCustomHashMap;
|
||||
import gnu.trove.strategy.HashingStrategy;
|
||||
import java.util.Map;
|
||||
|
||||
public class CaseInsensitiveMap<V> extends TCustomHashMap<String, V>
|
||||
{
|
||||
|
||||
private static final HashingStrategy<String> hashingStrategy = new HashingStrategy<String>()
|
||||
{
|
||||
@Override
|
||||
public int computeHashCode(String object)
|
||||
{
|
||||
return object.toLowerCase().hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(String o1, String o2)
|
||||
{
|
||||
return o1.toLowerCase().equals( o2.toLowerCase() );
|
||||
}
|
||||
};
|
||||
|
||||
public CaseInsensitiveMap()
|
||||
{
|
||||
super( hashingStrategy );
|
||||
super( CaseInsensitiveHashingStrategy.INSTANCE );
|
||||
}
|
||||
|
||||
public CaseInsensitiveMap(Map<? extends String, ? extends V> map)
|
||||
{
|
||||
super( hashingStrategy, map );
|
||||
super( CaseInsensitiveHashingStrategy.INSTANCE, map );
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,18 @@
|
||||
package net.md_5.bungee.util;
|
||||
|
||||
import gnu.trove.set.hash.TCustomHashSet;
|
||||
import java.util.Collection;
|
||||
|
||||
public class CaseInsensitiveSet extends TCustomHashSet<String>
|
||||
{
|
||||
|
||||
public CaseInsensitiveSet()
|
||||
{
|
||||
super( CaseInsensitiveHashingStrategy.INSTANCE );
|
||||
}
|
||||
|
||||
public CaseInsensitiveSet(Collection<? extends String> collection)
|
||||
{
|
||||
super( CaseInsensitiveHashingStrategy.INSTANCE, collection );
|
||||
}
|
||||
}
|
@ -16,4 +16,10 @@ public class CaseInsensitiveTest
|
||||
Assert.assertTrue( map.contains( "foo" ) ); // Assert that it is case insensitive
|
||||
Assert.assertTrue( map.entrySet().iterator().next().getKey().equals( "FOO" ) ); // Asert that case is preserved
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSets()
|
||||
{
|
||||
throw new UnsupportedOperationException( "Need a unit test!!!" );
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user