Ended the refactoring of the code acording to Arbel Peled first CR commit
parent
6ec0d4a668
commit
20d2b3e68c
|
@ -2,13 +2,11 @@ package meerkat;
|
|||
|
||||
import meerkat.bulletinboard.BulletinBoardClient;
|
||||
import meerkat.crypto.DigitalSignature;
|
||||
import meerkat.protobuf.BulletinBoardAPI;
|
||||
import meerkat.protobuf.BulletinBoardAPI.BulletinBoardMessage;
|
||||
import meerkat.protobuf.BulletinBoardAPI.MessageFilter;
|
||||
import meerkat.protobuf.BulletinBoardAPI.MessageFilterList;
|
||||
import meerkat.protobuf.BulletinBoardAPI.UnsignedBulletinBoardMessage;
|
||||
import meerkat.protobuf.Crypto;
|
||||
import util.AccurateTimestamp;
|
||||
import util.CollectionMessagesUtils;
|
||||
import util.RegistryTags;
|
||||
|
||||
import java.security.SignatureException;
|
||||
|
@ -55,29 +53,6 @@ public class SimpleRegistry implements VoterRegistry{
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets messages that have the wanted id tag and have or the ADD_TO_GROUP_TAG or REMOVE_FROM_GROUP_TAG
|
||||
*
|
||||
* @param tags the tags based on which the messages will be filtered
|
||||
* @return MessageFilterList.
|
||||
*/
|
||||
public MessageFilterList GetRelevantMessagesFilters(List<String> tags) {
|
||||
MessageFilterList.Builder filters = MessageFilterList.newBuilder();
|
||||
|
||||
if (tags == null){
|
||||
return filters.build();
|
||||
}
|
||||
|
||||
for (String tag : tags) {
|
||||
MessageFilter.Builder filter =
|
||||
MessageFilter.newBuilder().setTag(tag)
|
||||
.setType(BulletinBoardAPI.FilterType.TAG);
|
||||
|
||||
filters.addFilter(filter);
|
||||
}
|
||||
return filters.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tries to post basicMessage and return true if its been successfully posted
|
||||
*
|
||||
|
@ -125,7 +100,7 @@ public class SimpleRegistry implements VoterRegistry{
|
|||
List<String> GroupsActionsTags = new ArrayList<String>() {{
|
||||
add(RegistryTags.GROUP_ID_TAG + groupID.getId());
|
||||
}};
|
||||
bulletinBoardClient.readMessages(GetRelevantMessagesFilters(GroupsActionsTags),
|
||||
bulletinBoardClient.readMessages(CollectionMessagesUtils.GetRelevantMessagesFilters(GroupsActionsTags),
|
||||
new RelevantDataCallBack(callback));
|
||||
}
|
||||
|
||||
|
@ -134,7 +109,7 @@ public class SimpleRegistry implements VoterRegistry{
|
|||
add(RegistryTags.ID_TAG + voterID.getId());
|
||||
add(RegistryTags.VOTER_ENTRY_TAG.toString());
|
||||
}};
|
||||
bulletinBoardClient.readMessages(GetRelevantMessagesFilters(GroupsActionsTags),
|
||||
bulletinBoardClient.readMessages(CollectionMessagesUtils.GetRelevantMessagesFilters(GroupsActionsTags),
|
||||
new RelevantDataCallBack(callback));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,12 +10,20 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Created by Vladimir Eliezer Tokarev on 1/15/2016.
|
||||
* adds extra functionality to Messages collections
|
||||
*/
|
||||
public abstract class CollectionMessagesUtils {
|
||||
|
||||
static class EmptyListException extends Exception {
|
||||
public EmptyListException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts lost of UnsignedBulletinBoardMessage to VoterRegistryMessages
|
||||
* @param messages list<VoterRegistryMessage>
|
||||
|
@ -65,9 +73,16 @@ public abstract class CollectionMessagesUtils {
|
|||
return groupsIds;
|
||||
}
|
||||
|
||||
public static VoterRegistryMessage GetLatestMessage(List<VoterRegistryMessage> messages) throws ParseException {
|
||||
/**
|
||||
* Gets the message with the latest timestamp from messages
|
||||
* @param messages List<VoterRegistryMessage>
|
||||
* @return VoterRegistryMessage
|
||||
* @throws ParseException
|
||||
* @throws EmptyListException
|
||||
*/
|
||||
public static VoterRegistryMessage GetLatestMessage(List<VoterRegistryMessage> messages) throws ParseException, EmptyListException {
|
||||
if (messages.size() == 0 ){
|
||||
return null;
|
||||
throw new EmptyListException("The list of messages passed to GetLatestMessage is empty.");
|
||||
}
|
||||
VoterRegistryMessage LatestMessage = messages.get(0);
|
||||
|
||||
|
@ -79,4 +94,26 @@ public abstract class CollectionMessagesUtils {
|
|||
return LatestMessage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets messages that have the wanted id tag and have or the ADD_TO_GROUP_TAG or REMOVE_FROM_GROUP_TAG
|
||||
*
|
||||
* @param tags the tags based on which the messages will be filtered
|
||||
* @return MessageFilterList.
|
||||
*/
|
||||
public static BulletinBoardAPI.MessageFilterList GetRelevantMessagesFilters(List<String> tags) {
|
||||
BulletinBoardAPI.MessageFilterList.Builder filters = BulletinBoardAPI.MessageFilterList.newBuilder();
|
||||
|
||||
if (tags.isEmpty()){
|
||||
return filters.build();
|
||||
}
|
||||
|
||||
for (String tag : tags) {
|
||||
BulletinBoardAPI.MessageFilter.Builder filter =
|
||||
BulletinBoardAPI.MessageFilter.newBuilder().setTag(tag)
|
||||
.setType(BulletinBoardAPI.FilterType.TAG);
|
||||
|
||||
filters.addFilter(filter);
|
||||
}
|
||||
return filters.build();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import meerkat.bulletinboard.ThreadedBulletinBoardClient;
|
|||
import meerkat.crypto.concrete.ECDSASignature;
|
||||
import meerkat.protobuf.BulletinBoardAPI;
|
||||
import meerkat.protobuf.Voting;
|
||||
import util.CollectionMessagesUtils;
|
||||
import util.RegistryTags;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
@ -22,7 +23,7 @@ import java.util.concurrent.Semaphore;
|
|||
import static util.CollectionMessagesUtils.ConvertToVoterRegistryMessages;
|
||||
|
||||
/**
|
||||
* TODO: add logs prints for the tests to be clear what they are
|
||||
* TODO: add logs prints for the tests to be clear what they are
|
||||
*/
|
||||
|
||||
|
||||
|
@ -35,7 +36,7 @@ import static util.CollectionMessagesUtils.ConvertToVoterRegistryMessages;
|
|||
public class SimpleRegistryTest extends TestCase {
|
||||
|
||||
private ECDSASignature signer;
|
||||
private BulletinBoardClient communicator;
|
||||
private BulletinBoardClient bulletinBoardClient;
|
||||
private SecureRandom random = new SecureRandom();
|
||||
public static String KEYFILE_EXAMPLE = "/certs/enduser-certs/user1-key-with-password-secret.p12";
|
||||
public static String KEYFILE_PASSWORD = "secret";
|
||||
|
@ -80,9 +81,9 @@ public class SimpleRegistryTest extends TestCase {
|
|||
* Creates the communication object (the bulletinBoardClient)
|
||||
*/
|
||||
private void CommunicatorSetup() {
|
||||
communicator = new ThreadedBulletinBoardClient();
|
||||
bulletinBoardClient = new ThreadedBulletinBoardClient();
|
||||
String BULLETIN_BOARD_SERVER_ADDRESS = "http://localhost:8081";
|
||||
communicator.init(Voting.BulletinBoardClientParams.newBuilder()
|
||||
bulletinBoardClient.init(Voting.BulletinBoardClientParams.newBuilder()
|
||||
.addBulletinBoardAddress(BULLETIN_BOARD_SERVER_ADDRESS)
|
||||
.setMinRedundancy((float) 1.0)
|
||||
.build());
|
||||
|
@ -120,7 +121,7 @@ public class SimpleRegistryTest extends TestCase {
|
|||
*/
|
||||
public void testSimpleRegistryCreation() {
|
||||
try {
|
||||
new SimpleRegistry(signer, communicator);
|
||||
new SimpleRegistry(signer, bulletinBoardClient);
|
||||
} catch (Exception e) {
|
||||
assert false : "While creating the SimpleRegistry exception have been thrown " + e;
|
||||
}
|
||||
|
@ -165,16 +166,16 @@ public class SimpleRegistryTest extends TestCase {
|
|||
RegistryMessages.VoterInfo voterInfo = RegistryMessages.VoterInfo.newBuilder().
|
||||
setId(RegistryMessages.VoterID.newBuilder().setId(id)).setInfo(data).build();
|
||||
|
||||
SimpleRegistry registry = new SimpleRegistry(signer, communicator);
|
||||
SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient);
|
||||
registry.AddVoter(voterInfo, handler);
|
||||
|
||||
jobSemaphore.acquire();
|
||||
assertEquals(1, handler.counter );
|
||||
|
||||
List<String> tags = new ArrayList<String>(){{ add(RegistryTags.VOTER_ENTRY_TAG.toString());}};
|
||||
BulletinBoardAPI.MessageFilterList filters = registry.GetRelevantMessagesFilters(tags);
|
||||
BulletinBoardAPI.MessageFilterList filters = CollectionMessagesUtils.GetRelevantMessagesFilters(tags);
|
||||
DummyBulletinBoardCallBackHandler bulletinHandler = new DummyBulletinBoardCallBackHandler();
|
||||
communicator.readMessages(filters, bulletinHandler);
|
||||
bulletinBoardClient.readMessages(filters, bulletinHandler);
|
||||
|
||||
jobSemaphore.acquire();
|
||||
|
||||
|
@ -193,16 +194,16 @@ public class SimpleRegistryTest extends TestCase {
|
|||
String id = new BigInteger(130, random).toString(32);
|
||||
RegistryMessages.VoterID voterInfo = RegistryMessages.VoterID.newBuilder().setId(id).build();
|
||||
|
||||
SimpleRegistry registry = new SimpleRegistry(signer, communicator);
|
||||
SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient);
|
||||
registry.SetVoted(voterInfo, handler);
|
||||
|
||||
jobSemaphore.acquire();
|
||||
assertEquals(1, handler.counter );
|
||||
|
||||
List<String> tags = new ArrayList<String>(){{ add(RegistryTags.VOTE_ACTION_TAG.toString());}};
|
||||
BulletinBoardAPI.MessageFilterList filters = registry.GetRelevantMessagesFilters(tags);
|
||||
BulletinBoardAPI.MessageFilterList filters = CollectionMessagesUtils.GetRelevantMessagesFilters(tags);
|
||||
DummyBulletinBoardCallBackHandler bulletinHandler = new DummyBulletinBoardCallBackHandler();
|
||||
communicator.readMessages(filters, bulletinHandler);
|
||||
bulletinBoardClient.readMessages(filters, bulletinHandler);
|
||||
|
||||
jobSemaphore.acquire();
|
||||
|
||||
|
@ -223,7 +224,7 @@ public class SimpleRegistryTest extends TestCase {
|
|||
.setVoterId(RegistryMessages.VoterID.newBuilder().setId(voterId))
|
||||
.setGroupId(RegistryMessages.GroupID.newBuilder().setId(groupId)).build();
|
||||
|
||||
SimpleRegistry registry = new SimpleRegistry(signer, communicator);
|
||||
SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient);
|
||||
registry.AddToGroup(voterInfo, handler);
|
||||
|
||||
jobSemaphore.acquire();
|
||||
|
@ -231,9 +232,9 @@ public class SimpleRegistryTest extends TestCase {
|
|||
|
||||
List<String> tags = new ArrayList<String>(){{ add(RegistryTags.GROUP_ACTION_TAG .toString()
|
||||
+ RegistryTags.ADD_TO_GROUP_TAG.toString());}};
|
||||
BulletinBoardAPI.MessageFilterList filters = registry.GetRelevantMessagesFilters(tags);
|
||||
BulletinBoardAPI.MessageFilterList filters = CollectionMessagesUtils.GetRelevantMessagesFilters(tags);
|
||||
DummyBulletinBoardCallBackHandler bulletinHandler = new DummyBulletinBoardCallBackHandler();
|
||||
communicator.readMessages(filters, bulletinHandler);
|
||||
bulletinBoardClient.readMessages(filters, bulletinHandler);
|
||||
|
||||
jobSemaphore.acquire();
|
||||
|
||||
|
@ -257,7 +258,7 @@ public class SimpleRegistryTest extends TestCase {
|
|||
.setVoterId(RegistryMessages.VoterID.newBuilder().setId(voterId))
|
||||
.setGroupId(RegistryMessages.GroupID.newBuilder().setId(groupId)).build();
|
||||
|
||||
SimpleRegistry registry = new SimpleRegistry(signer, communicator);
|
||||
SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient);
|
||||
registry.AddToGroup(voterInfo, handler);
|
||||
|
||||
jobSemaphore.acquire();
|
||||
|
@ -284,7 +285,7 @@ public class SimpleRegistryTest extends TestCase {
|
|||
RegistryMessages.VoterInfo voterInfo = RegistryMessages.VoterInfo.newBuilder().
|
||||
setId(RegistryMessages.VoterID.newBuilder().setId(id)).setInfo(data).build();
|
||||
|
||||
SimpleRegistry registry = new SimpleRegistry(signer, communicator);
|
||||
SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient);
|
||||
registry.AddVoter(voterInfo, handler);
|
||||
|
||||
jobSemaphore.acquire();
|
||||
|
|
Loading…
Reference in New Issue