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.bulletinboard.BulletinBoardClient; | ||||||
| import meerkat.crypto.DigitalSignature; | import meerkat.crypto.DigitalSignature; | ||||||
| import meerkat.protobuf.BulletinBoardAPI; |  | ||||||
| import meerkat.protobuf.BulletinBoardAPI.BulletinBoardMessage; | import meerkat.protobuf.BulletinBoardAPI.BulletinBoardMessage; | ||||||
| import meerkat.protobuf.BulletinBoardAPI.MessageFilter; |  | ||||||
| import meerkat.protobuf.BulletinBoardAPI.MessageFilterList; |  | ||||||
| import meerkat.protobuf.BulletinBoardAPI.UnsignedBulletinBoardMessage; | import meerkat.protobuf.BulletinBoardAPI.UnsignedBulletinBoardMessage; | ||||||
| import meerkat.protobuf.Crypto; | import meerkat.protobuf.Crypto; | ||||||
| import util.AccurateTimestamp; | import util.AccurateTimestamp; | ||||||
|  | import util.CollectionMessagesUtils; | ||||||
| import util.RegistryTags; | import util.RegistryTags; | ||||||
| 
 | 
 | ||||||
| import java.security.SignatureException; | 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 |      * 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>() {{ |         List<String> GroupsActionsTags = new ArrayList<String>() {{ | ||||||
|            add(RegistryTags.GROUP_ID_TAG + groupID.getId()); |            add(RegistryTags.GROUP_ID_TAG + groupID.getId()); | ||||||
|         }}; |         }}; | ||||||
|         bulletinBoardClient.readMessages(GetRelevantMessagesFilters(GroupsActionsTags), |         bulletinBoardClient.readMessages(CollectionMessagesUtils.GetRelevantMessagesFilters(GroupsActionsTags), | ||||||
|                 new RelevantDataCallBack(callback)); |                 new RelevantDataCallBack(callback)); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -134,7 +109,7 @@ public class SimpleRegistry  implements VoterRegistry{ | ||||||
|             add(RegistryTags.ID_TAG + voterID.getId()); |             add(RegistryTags.ID_TAG + voterID.getId()); | ||||||
|             add(RegistryTags.VOTER_ENTRY_TAG.toString()); |             add(RegistryTags.VOTER_ENTRY_TAG.toString()); | ||||||
|         }}; |         }}; | ||||||
|         bulletinBoardClient.readMessages(GetRelevantMessagesFilters(GroupsActionsTags), |         bulletinBoardClient.readMessages(CollectionMessagesUtils.GetRelevantMessagesFilters(GroupsActionsTags), | ||||||
|                 new RelevantDataCallBack(callback)); |                 new RelevantDataCallBack(callback)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -10,12 +10,20 @@ import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| /** | /** | ||||||
|  * Created by Vladimir Eliezer Tokarev  on 1/15/2016. |  * Created by Vladimir Eliezer Tokarev  on 1/15/2016. | ||||||
|  * adds extra functionality to Messages collections |  * adds extra functionality to Messages collections | ||||||
|  */ |  */ | ||||||
| public abstract class CollectionMessagesUtils { | public abstract class CollectionMessagesUtils { | ||||||
| 
 | 
 | ||||||
|  |     static class EmptyListException extends Exception { | ||||||
|  |         public EmptyListException(String message) { | ||||||
|  |             super(message); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Converts lost of UnsignedBulletinBoardMessage to VoterRegistryMessages |      * Converts lost of UnsignedBulletinBoardMessage to VoterRegistryMessages | ||||||
|      * @param messages list<VoterRegistryMessage> |      * @param messages list<VoterRegistryMessage> | ||||||
|  | @ -65,9 +73,16 @@ public abstract class CollectionMessagesUtils { | ||||||
|          return groupsIds; |          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 ){ |         if (messages.size() == 0 ){ | ||||||
|             return null; |             throw new EmptyListException("The list of messages passed to GetLatestMessage is empty."); | ||||||
|         } |         } | ||||||
|         VoterRegistryMessage LatestMessage = messages.get(0); |         VoterRegistryMessage LatestMessage = messages.get(0); | ||||||
| 
 | 
 | ||||||
|  | @ -79,4 +94,26 @@ public abstract class CollectionMessagesUtils { | ||||||
|         return LatestMessage; |         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.crypto.concrete.ECDSASignature; | ||||||
| import meerkat.protobuf.BulletinBoardAPI; | import meerkat.protobuf.BulletinBoardAPI; | ||||||
| import meerkat.protobuf.Voting; | import meerkat.protobuf.Voting; | ||||||
|  | import util.CollectionMessagesUtils; | ||||||
| import util.RegistryTags; | import util.RegistryTags; | ||||||
| 
 | 
 | ||||||
| import java.io.InputStream; | import java.io.InputStream; | ||||||
|  | @ -35,7 +36,7 @@ import static util.CollectionMessagesUtils.ConvertToVoterRegistryMessages; | ||||||
| public class SimpleRegistryTest extends TestCase { | public class SimpleRegistryTest extends TestCase { | ||||||
| 
 | 
 | ||||||
|     private ECDSASignature signer; |     private ECDSASignature signer; | ||||||
|     private BulletinBoardClient communicator; |     private BulletinBoardClient bulletinBoardClient; | ||||||
|     private SecureRandom random = new SecureRandom(); |     private SecureRandom random = new SecureRandom(); | ||||||
|     public static String KEYFILE_EXAMPLE = "/certs/enduser-certs/user1-key-with-password-secret.p12"; |     public static String KEYFILE_EXAMPLE = "/certs/enduser-certs/user1-key-with-password-secret.p12"; | ||||||
|     public static String KEYFILE_PASSWORD = "secret"; |     public static String KEYFILE_PASSWORD = "secret"; | ||||||
|  | @ -80,9 +81,9 @@ public class SimpleRegistryTest extends TestCase { | ||||||
|      * Creates the communication object (the bulletinBoardClient) |      * Creates the communication object (the bulletinBoardClient) | ||||||
|      */ |      */ | ||||||
|     private void CommunicatorSetup() { |     private void CommunicatorSetup() { | ||||||
|         communicator = new ThreadedBulletinBoardClient(); |         bulletinBoardClient = new ThreadedBulletinBoardClient(); | ||||||
|         String BULLETIN_BOARD_SERVER_ADDRESS = "http://localhost:8081"; |         String BULLETIN_BOARD_SERVER_ADDRESS = "http://localhost:8081"; | ||||||
|         communicator.init(Voting.BulletinBoardClientParams.newBuilder() |         bulletinBoardClient.init(Voting.BulletinBoardClientParams.newBuilder() | ||||||
|                 .addBulletinBoardAddress(BULLETIN_BOARD_SERVER_ADDRESS) |                 .addBulletinBoardAddress(BULLETIN_BOARD_SERVER_ADDRESS) | ||||||
|                 .setMinRedundancy((float) 1.0) |                 .setMinRedundancy((float) 1.0) | ||||||
|                 .build()); |                 .build()); | ||||||
|  | @ -120,7 +121,7 @@ public class SimpleRegistryTest extends TestCase { | ||||||
|      */ |      */ | ||||||
|     public void testSimpleRegistryCreation() { |     public void testSimpleRegistryCreation() { | ||||||
|         try { |         try { | ||||||
|             new SimpleRegistry(signer, communicator); |             new SimpleRegistry(signer, bulletinBoardClient); | ||||||
|         } catch (Exception e) { |         } catch (Exception e) { | ||||||
|             assert false : "While creating the SimpleRegistry exception have been thrown " + 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(). |         RegistryMessages.VoterInfo voterInfo = RegistryMessages.VoterInfo.newBuilder(). | ||||||
|                 setId(RegistryMessages.VoterID.newBuilder().setId(id)).setInfo(data).build(); |                 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); |         registry.AddVoter(voterInfo, handler); | ||||||
| 
 | 
 | ||||||
|         jobSemaphore.acquire(); |         jobSemaphore.acquire(); | ||||||
|         assertEquals(1, handler.counter ); |         assertEquals(1, handler.counter ); | ||||||
| 
 | 
 | ||||||
|         List<String> tags = new ArrayList<String>(){{ add(RegistryTags.VOTER_ENTRY_TAG.toString());}}; |         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(); |         DummyBulletinBoardCallBackHandler bulletinHandler = new DummyBulletinBoardCallBackHandler(); | ||||||
|         communicator.readMessages(filters, bulletinHandler); |         bulletinBoardClient.readMessages(filters, bulletinHandler); | ||||||
| 
 | 
 | ||||||
|         jobSemaphore.acquire(); |         jobSemaphore.acquire(); | ||||||
| 
 | 
 | ||||||
|  | @ -193,16 +194,16 @@ public class SimpleRegistryTest extends TestCase { | ||||||
|         String id = new BigInteger(130, random).toString(32); |         String id = new BigInteger(130, random).toString(32); | ||||||
|         RegistryMessages.VoterID voterInfo = RegistryMessages.VoterID.newBuilder().setId(id).build(); |         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); |         registry.SetVoted(voterInfo, handler); | ||||||
| 
 | 
 | ||||||
|         jobSemaphore.acquire(); |         jobSemaphore.acquire(); | ||||||
|         assertEquals(1, handler.counter ); |         assertEquals(1, handler.counter ); | ||||||
| 
 | 
 | ||||||
|         List<String> tags = new ArrayList<String>(){{ add(RegistryTags.VOTE_ACTION_TAG.toString());}}; |         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(); |         DummyBulletinBoardCallBackHandler bulletinHandler = new DummyBulletinBoardCallBackHandler(); | ||||||
|         communicator.readMessages(filters, bulletinHandler); |         bulletinBoardClient.readMessages(filters, bulletinHandler); | ||||||
| 
 | 
 | ||||||
|         jobSemaphore.acquire(); |         jobSemaphore.acquire(); | ||||||
| 
 | 
 | ||||||
|  | @ -223,7 +224,7 @@ public class SimpleRegistryTest extends TestCase { | ||||||
|                 .setVoterId(RegistryMessages.VoterID.newBuilder().setId(voterId)) |                 .setVoterId(RegistryMessages.VoterID.newBuilder().setId(voterId)) | ||||||
|                 .setGroupId(RegistryMessages.GroupID.newBuilder().setId(groupId)).build(); |                 .setGroupId(RegistryMessages.GroupID.newBuilder().setId(groupId)).build(); | ||||||
| 
 | 
 | ||||||
|         SimpleRegistry registry = new SimpleRegistry(signer, communicator); |         SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient); | ||||||
|         registry.AddToGroup(voterInfo, handler); |         registry.AddToGroup(voterInfo, handler); | ||||||
| 
 | 
 | ||||||
|         jobSemaphore.acquire(); |         jobSemaphore.acquire(); | ||||||
|  | @ -231,9 +232,9 @@ public class SimpleRegistryTest extends TestCase { | ||||||
| 
 | 
 | ||||||
|         List<String> tags = new ArrayList<String>(){{ add(RegistryTags.GROUP_ACTION_TAG .toString() |         List<String> tags = new ArrayList<String>(){{ add(RegistryTags.GROUP_ACTION_TAG .toString() | ||||||
|                 + RegistryTags.ADD_TO_GROUP_TAG.toString());}}; |                 + RegistryTags.ADD_TO_GROUP_TAG.toString());}}; | ||||||
|         BulletinBoardAPI.MessageFilterList filters = registry.GetRelevantMessagesFilters(tags); |         BulletinBoardAPI.MessageFilterList filters = CollectionMessagesUtils.GetRelevantMessagesFilters(tags); | ||||||
|         DummyBulletinBoardCallBackHandler bulletinHandler = new DummyBulletinBoardCallBackHandler(); |         DummyBulletinBoardCallBackHandler bulletinHandler = new DummyBulletinBoardCallBackHandler(); | ||||||
|         communicator.readMessages(filters, bulletinHandler); |         bulletinBoardClient.readMessages(filters, bulletinHandler); | ||||||
| 
 | 
 | ||||||
|         jobSemaphore.acquire(); |         jobSemaphore.acquire(); | ||||||
| 
 | 
 | ||||||
|  | @ -257,7 +258,7 @@ public class SimpleRegistryTest extends TestCase { | ||||||
|                 .setVoterId(RegistryMessages.VoterID.newBuilder().setId(voterId)) |                 .setVoterId(RegistryMessages.VoterID.newBuilder().setId(voterId)) | ||||||
|                 .setGroupId(RegistryMessages.GroupID.newBuilder().setId(groupId)).build(); |                 .setGroupId(RegistryMessages.GroupID.newBuilder().setId(groupId)).build(); | ||||||
| 
 | 
 | ||||||
|         SimpleRegistry registry = new SimpleRegistry(signer, communicator); |         SimpleRegistry registry = new SimpleRegistry(signer, bulletinBoardClient); | ||||||
|         registry.AddToGroup(voterInfo, handler); |         registry.AddToGroup(voterInfo, handler); | ||||||
| 
 | 
 | ||||||
|         jobSemaphore.acquire(); |         jobSemaphore.acquire(); | ||||||
|  | @ -284,7 +285,7 @@ public class SimpleRegistryTest extends TestCase { | ||||||
|         RegistryMessages.VoterInfo voterInfo = RegistryMessages.VoterInfo.newBuilder(). |         RegistryMessages.VoterInfo voterInfo = RegistryMessages.VoterInfo.newBuilder(). | ||||||
|                 setId(RegistryMessages.VoterID.newBuilder().setId(id)).setInfo(data).build(); |                 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); |         registry.AddVoter(voterInfo, handler); | ||||||
| 
 | 
 | ||||||
|         jobSemaphore.acquire(); |         jobSemaphore.acquire(); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue