Fixed all of Tal's remarks.
Switched to using the predefined BoolValue Protobuf.PollingStation-ScannerWebApp
							parent
							
								
									347e826f73
								
							
						
					
					
						commit
						ffac7c1e34
					
				|  | @ -1,5 +1,6 @@ | |||
| package meerkat.bulletinboard; | ||||
| 
 | ||||
| import com.google.protobuf.BoolValue; | ||||
| import com.google.protobuf.ByteString; | ||||
| import meerkat.comm.CommunicationException; | ||||
| import meerkat.crypto.Digest; | ||||
|  | @ -70,7 +71,7 @@ public class SimpleBulletinBoardClient implements BulletinBoardClient{ | |||
|                 // Only consider valid responses
 | ||||
|                 if (response.getStatusInfo() == Response.Status.OK | ||||
|                         || response.getStatusInfo() == Response.Status.CREATED) { | ||||
|                     response.readEntity(BoolMsg.class).getValue(); | ||||
|                     response.readEntity(BoolValue.class).getValue(); | ||||
|                 } | ||||
|             } | ||||
|         } catch (Exception e) { // Occurs only when server replies with valid status but invalid data
 | ||||
|  |  | |||
|  | @ -7,12 +7,10 @@ import com.google.common.util.concurrent.MoreExecutors; | |||
| import com.google.protobuf.ByteString; | ||||
| import meerkat.bulletinboard.workers.singleserver.*; | ||||
| import meerkat.comm.CommunicationException; | ||||
| import meerkat.protobuf.BulletinBoardAPI; | ||||
| import meerkat.protobuf.BulletinBoardAPI.*; | ||||
| import meerkat.protobuf.Voting.BulletinBoardClientParams; | ||||
| import meerkat.util.BulletinBoardUtils; | ||||
| 
 | ||||
| import javax.ws.rs.NotFoundException; | ||||
| import java.util.Arrays; | ||||
| import java.util.Iterator; | ||||
| import java.util.LinkedList; | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| package meerkat.bulletinboard.workers.singleserver; | ||||
| 
 | ||||
| import com.google.protobuf.BoolValue; | ||||
| import meerkat.bulletinboard.SingleServerWorker; | ||||
| import meerkat.comm.CommunicationException; | ||||
| import meerkat.protobuf.Comm.*; | ||||
|  | @ -43,8 +44,8 @@ public class SingleServerGenericPostWorker<T> extends SingleServerWorker<T, Bool | |||
| 
 | ||||
|         try { | ||||
| 
 | ||||
|             // If a BoolMsg entity is returned: the post was successful
 | ||||
|             response.readEntity(BoolMsg.class); | ||||
|             // If a BoolValue entity is returned: the post was successful
 | ||||
|             response.readEntity(BoolValue.class); | ||||
|             return Boolean.TRUE; | ||||
| 
 | ||||
|         } catch (ProcessingException | IllegalStateException e) { | ||||
|  |  | |||
|  | @ -401,12 +401,12 @@ public class BulletinBoardSQLServer implements BulletinBoardServer{ | |||
| 	} | ||||
| 	 | ||||
| 	/** | ||||
| 	 * This procedure is used to convert a boolean to a BoolMsg. | ||||
| 	 * This procedure is used to convert a boolean to a BoolValue. | ||||
| 	 * @param b is the boolean to convert. | ||||
| 	 * @return a ProtoBuf message with boolean payload. | ||||
| 	 */ | ||||
| 	private BoolMsg boolToBoolMsg(boolean b){ | ||||
| 		return BoolMsg.newBuilder() | ||||
| 	private BoolValue boolToBoolValue(boolean b){ | ||||
| 		return BoolValue.newBuilder() | ||||
| 			.setValue(b) | ||||
| 			.build(); | ||||
| 	} | ||||
|  | @ -419,10 +419,10 @@ public class BulletinBoardSQLServer implements BulletinBoardServer{ | |||
| 	 * @return TRUE if the post is successful and FALSE otherwise | ||||
| 	 * @throws CommunicationException | ||||
|      */ | ||||
| 	public BoolMsg postMessage(BulletinBoardMessage msg, boolean checkSignature) throws CommunicationException{ | ||||
| 	public BoolValue postMessage(BulletinBoardMessage msg, boolean checkSignature) throws CommunicationException{ | ||||
| 
 | ||||
| 		if (checkSignature && !verifyMessage(msg)) { | ||||
| 			return boolToBoolMsg(false); | ||||
| 			return boolToBoolValue(false); | ||||
| 		} | ||||
| 
 | ||||
| 		String sql; | ||||
|  | @ -520,12 +520,12 @@ public class BulletinBoardSQLServer implements BulletinBoardServer{ | |||
| 
 | ||||
| 		jdbcTemplate.batchUpdate(sql,namedParameterArray); | ||||
| 
 | ||||
| 		return boolToBoolMsg(true); | ||||
| 		return boolToBoolValue(true); | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	@Override | ||||
| 	public BoolMsg postMessage(BulletinBoardMessage msg) throws CommunicationException { | ||||
| 	public BoolValue postMessage(BulletinBoardMessage msg) throws CommunicationException { | ||||
| 		return postMessage(msg, true);	// Perform a post and check the signature for authenticity
 | ||||
| 	} | ||||
| 
 | ||||
|  | @ -691,11 +691,11 @@ public class BulletinBoardSQLServer implements BulletinBoardServer{ | |||
| 
 | ||||
| 
 | ||||
| 	@Override | ||||
| 	public BoolMsg beginBatch(BeginBatchMessage message) throws CommunicationException { | ||||
| 	public BoolValue beginBatch(BeginBatchMessage message) throws CommunicationException { | ||||
| 
 | ||||
| 		// Check if batch is closed
 | ||||
| 		if (isBatchClosed(message.getSignerId(), message.getBatchId())) { | ||||
| 			return BoolMsg.newBuilder().setValue(false).build(); | ||||
| 			return BoolValue.newBuilder().setValue(false).build(); | ||||
| 		} | ||||
| 
 | ||||
| 		// Add new tags to table
 | ||||
|  | @ -721,17 +721,17 @@ public class BulletinBoardSQLServer implements BulletinBoardServer{ | |||
| 
 | ||||
| 		jdbcTemplate.batchUpdate(sql,namedParameters); | ||||
| 
 | ||||
| 		return BoolMsg.newBuilder().setValue(true).build(); | ||||
| 		return BoolValue.newBuilder().setValue(true).build(); | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	@Override | ||||
| 	public BoolMsg postBatchMessage(BatchMessage batchMessage) throws CommunicationException{ | ||||
| 	public BoolValue postBatchMessage(BatchMessage batchMessage) throws CommunicationException{ | ||||
| 
 | ||||
| 		// Check if batch is closed
 | ||||
| 		if (isBatchClosed(batchMessage.getSignerId(), batchMessage.getBatchId())) { | ||||
| 			return BoolMsg.newBuilder().setValue(false).build(); | ||||
| 			return BoolValue.newBuilder().setValue(false).build(); | ||||
| 		} | ||||
| 
 | ||||
| 		// Add data
 | ||||
|  | @ -745,13 +745,13 @@ public class BulletinBoardSQLServer implements BulletinBoardServer{ | |||
| 
 | ||||
| 		jdbcTemplate.update(sql, namedParameters); | ||||
| 
 | ||||
| 		return BoolMsg.newBuilder().setValue(true).build(); | ||||
| 		return BoolValue.newBuilder().setValue(true).build(); | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
| 	@Override | ||||
| 	public BoolMsg closeBatchMessage(CloseBatchMessage message) throws CommunicationException { | ||||
| 	public BoolValue closeBatchMessage(CloseBatchMessage message) throws CommunicationException { | ||||
| 
 | ||||
| 		ByteString signerId = message.getSig().getSignerId(); | ||||
| 		int batchId = message.getBatchId(); | ||||
|  | @ -770,7 +770,7 @@ public class BulletinBoardSQLServer implements BulletinBoardServer{ | |||
| 		List<Long> lengthResult = jdbcTemplate.query(sql, namedParameters, new LongMapper()); | ||||
| 
 | ||||
| 		if (lengthResult.get(0) != message.getBatchLength()) { | ||||
| 			return BoolMsg.newBuilder().setValue(false).build(); | ||||
| 			return BoolValue.newBuilder().setValue(false).build(); | ||||
| 		} | ||||
| 
 | ||||
| 		// Get Tags and add them to CompleteBatch
 | ||||
|  | @ -813,7 +813,7 @@ public class BulletinBoardSQLServer implements BulletinBoardServer{ | |||
| //			TODO: Actual verification
 | ||||
| //			//signer.verify(completeBatch);
 | ||||
| //		} catch (CertificateException | InvalidKeyException | SignatureException e) {
 | ||||
| //			return BoolMsg.newBuilder().setValue(false).build();
 | ||||
| //			return BoolValue.newBuilder().setValue(false).build();
 | ||||
| //		}
 | ||||
| 
 | ||||
| 		// Batch verified: finalize it
 | ||||
|  | @ -849,7 +849,7 @@ public class BulletinBoardSQLServer implements BulletinBoardServer{ | |||
| 
 | ||||
| 		// Return TRUE
 | ||||
| 
 | ||||
| 		return BoolMsg.newBuilder().setValue(true).build(); | ||||
| 		return BoolValue.newBuilder().setValue(true).build(); | ||||
| 	} | ||||
| 
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ import javax.ws.rs.core.Context; | |||
| import javax.ws.rs.core.MediaType; | ||||
| import javax.ws.rs.core.StreamingOutput; | ||||
| 
 | ||||
| import com.google.protobuf.BoolValue; | ||||
| import meerkat.bulletinboard.BulletinBoardServer; | ||||
| import meerkat.bulletinboard.sqlserver.BulletinBoardSQLServer; | ||||
| import meerkat.bulletinboard.sqlserver.H2QueryProvider; | ||||
|  | @ -88,7 +89,7 @@ public class BulletinBoardWebApp implements BulletinBoardServer, ServletContextL | |||
| 	@Consumes(MEDIATYPE_PROTOBUF) | ||||
| 	@Produces(MEDIATYPE_PROTOBUF) | ||||
| 	@Override | ||||
| 	public BoolMsg postMessage(BulletinBoardMessage msg) throws CommunicationException { | ||||
| 	public BoolValue postMessage(BulletinBoardMessage msg) throws CommunicationException { | ||||
| 		init(); | ||||
| 		return bulletinBoard.postMessage(msg); | ||||
| 	} | ||||
|  | @ -132,7 +133,7 @@ public class BulletinBoardWebApp implements BulletinBoardServer, ServletContextL | |||
| 	@Consumes(MEDIATYPE_PROTOBUF) | ||||
| 	@Produces(MEDIATYPE_PROTOBUF) | ||||
| 	@Override | ||||
| 	public BoolMsg beginBatch(BeginBatchMessage message) { | ||||
| 	public BoolValue beginBatch(BeginBatchMessage message) { | ||||
| 		try { | ||||
| 			init(); | ||||
| 			return bulletinBoard.beginBatch(message); | ||||
|  | @ -147,7 +148,7 @@ public class BulletinBoardWebApp implements BulletinBoardServer, ServletContextL | |||
| 	@Consumes(MEDIATYPE_PROTOBUF) | ||||
| 	@Produces(MEDIATYPE_PROTOBUF) | ||||
| 	@Override | ||||
| 	public BoolMsg postBatchMessage(BatchMessage batchMessage) { | ||||
| 	public BoolValue postBatchMessage(BatchMessage batchMessage) { | ||||
| 		try { | ||||
| 			init(); | ||||
| 			return bulletinBoard.postBatchMessage(batchMessage); | ||||
|  | @ -162,7 +163,7 @@ public class BulletinBoardWebApp implements BulletinBoardServer, ServletContextL | |||
| 	@Consumes(MEDIATYPE_PROTOBUF) | ||||
| 	@Produces(MEDIATYPE_PROTOBUF) | ||||
| 	@Override | ||||
| 	public BoolMsg closeBatchMessage(CloseBatchMessage message) { | ||||
| 	public BoolValue closeBatchMessage(CloseBatchMessage message) { | ||||
| 		try { | ||||
| 			init(); | ||||
| 			return bulletinBoard.closeBatchMessage(message); | ||||
|  |  | |||
|  | @ -1,6 +1,7 @@ | |||
| package meerkat.bulletinboard; | ||||
| 
 | ||||
| 
 | ||||
| import com.google.protobuf.BoolValue; | ||||
| import com.google.protobuf.ByteString; | ||||
| import com.google.protobuf.TextFormat; | ||||
| 
 | ||||
|  | @ -61,7 +62,7 @@ public class BulletinBoardSQLServerIntegrationTest { | |||
| 
 | ||||
|         WebTarget webTarget; | ||||
|         Response response; | ||||
|         BoolMsg bool; | ||||
|         BoolValue bool; | ||||
|          | ||||
|         BulletinBoardMessage msg; | ||||
|          | ||||
|  | @ -95,7 +96,7 @@ public class BulletinBoardSQLServerIntegrationTest { | |||
| 
 | ||||
|         response = webTarget.request(Constants.MEDIATYPE_PROTOBUF).post(Entity.entity(msg, Constants.MEDIATYPE_PROTOBUF)); | ||||
|         System.err.println(response); | ||||
|         bool = response.readEntity(BoolMsg.class); | ||||
|         bool = response.readEntity(BoolValue.class); | ||||
|     	assert bool.getValue(); | ||||
|          | ||||
|     	msg = BulletinBoardMessage.newBuilder() | ||||
|  | @ -114,7 +115,7 @@ public class BulletinBoardSQLServerIntegrationTest { | |||
|     	 | ||||
|     	response = webTarget.request(Constants.MEDIATYPE_PROTOBUF).post(Entity.entity(msg, Constants.MEDIATYPE_PROTOBUF)); | ||||
|         System.err.println(response); | ||||
|         bool = response.readEntity(BoolMsg.class); | ||||
|         bool = response.readEntity(BoolValue.class); | ||||
|     	assert bool.getValue(); | ||||
|     	 | ||||
|     	// Test reading mechanism
 | ||||
|  |  | |||
|  | @ -17,6 +17,7 @@ import java.security.UnrecoverableKeyException; | |||
| import java.security.cert.CertificateException; | ||||
| import java.util.*; | ||||
| 
 | ||||
| import com.google.protobuf.BoolValue; | ||||
| import com.google.protobuf.ByteString; | ||||
| 
 | ||||
| import com.google.protobuf.Timestamp; | ||||
|  | @ -457,7 +458,7 @@ public class GenericBulletinBoardServerTest { | |||
| 				.setSeconds(978325) | ||||
| 				.setNanos(8097234) | ||||
| 				.build()); | ||||
| 		BoolMsg result; | ||||
| 		BoolValue result; | ||||
| 
 | ||||
| 		// Create data
 | ||||
| 
 | ||||
|  | @ -527,7 +528,7 @@ public class GenericBulletinBoardServerTest { | |||
| 				.build()); | ||||
| 		int currentBatch = completeBatches.size(); | ||||
| 
 | ||||
| 		BoolMsg result; | ||||
| 		BoolValue result; | ||||
| 
 | ||||
| 		// Define batch data
 | ||||
| 
 | ||||
|  | @ -646,7 +647,7 @@ public class GenericBulletinBoardServerTest { | |||
| 
 | ||||
| 		BulletinBoardMessage newMessage = bulletinBoardMessageGenerator.generateRandomMessage(signers, timestamp, 10, 10); | ||||
| 
 | ||||
| 		BoolMsg result = bulletinBoardServer.postMessage(newMessage); | ||||
| 		BoolValue result = bulletinBoardServer.postMessage(newMessage); | ||||
| 		assertThat("Failed to post message to BB Server", result.getValue(), is(true)); | ||||
| 
 | ||||
| 		ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); | ||||
|  |  | |||
|  | @ -1,9 +1,9 @@ | |||
| package meerkat.bulletinboard; | ||||
| 
 | ||||
| import com.google.protobuf.BoolValue; | ||||
| import meerkat.comm.CommunicationException; | ||||
| import meerkat.comm.MessageOutputStream; | ||||
| import meerkat.protobuf.BulletinBoardAPI.*; | ||||
| import meerkat.protobuf.Comm.*; | ||||
| 
 | ||||
| import java.util.Collection; | ||||
| 
 | ||||
|  | @ -30,7 +30,7 @@ public interface BulletinBoardServer{ | |||
| 	 * @return TRUE if the message has been authenticated and FALSE otherwise (in ProtoBuf form) | ||||
| 	 * @throws CommunicationException on DB connection error | ||||
|      */ | ||||
| 	public BoolMsg postMessage(BulletinBoardMessage msg) throws CommunicationException; | ||||
| 	public BoolValue postMessage(BulletinBoardMessage msg) throws CommunicationException; | ||||
| 
 | ||||
| 	 /** | ||||
| 	  * Read all messages posted matching the given filter | ||||
|  | @ -48,7 +48,7 @@ public interface BulletinBoardServer{ | |||
| 	 * 		However, if such a batch exists and is already closed: the value returned will be FALSE | ||||
| 	 * @throws CommunicationException on DB connection error | ||||
|      */ | ||||
| 	public BoolMsg beginBatch(BeginBatchMessage message) throws CommunicationException; | ||||
| 	public BoolValue beginBatch(BeginBatchMessage message) throws CommunicationException; | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Posts a (part of a) batch message to the bulletin board | ||||
|  | @ -60,7 +60,7 @@ public interface BulletinBoardServer{ | |||
| 	 * 		However, requiring to open a batch before insertion of messages is implementation-dependent | ||||
| 	 * @throws CommunicationException on DB connection error | ||||
|      */ | ||||
| 	public BoolMsg postBatchMessage(BatchMessage batchMessage) throws CommunicationException; | ||||
| 	public BoolValue postBatchMessage(BatchMessage batchMessage) throws CommunicationException; | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Attempts to stop and finalize a batch message | ||||
|  | @ -69,7 +69,7 @@ public interface BulletinBoardServer{ | |||
| 	 * 		Specifically, if the signature is invalid or if some of the batch parts have not yet been submitted: the value returned will be FALSE | ||||
| 	 * @throws CommunicationException on DB connection error | ||||
|      */ | ||||
| 	public BoolMsg closeBatchMessage(CloseBatchMessage message) throws CommunicationException; | ||||
| 	public BoolValue closeBatchMessage(CloseBatchMessage message) throws CommunicationException; | ||||
| 
 | ||||
| 	/** | ||||
| 	 * Reads a batch message from the server (starting with the supplied position) | ||||
|  |  | |||
|  | @ -1,7 +1,7 @@ | |||
| package meerkat.pollingstation; | ||||
| 
 | ||||
| import com.google.common.util.concurrent.FutureCallback; | ||||
| import meerkat.protobuf.Comm.BoolMsg; | ||||
| import com.google.protobuf.BoolValue; | ||||
| import meerkat.protobuf.PollingStation.*; | ||||
| /** | ||||
|  * Created by Arbel on 05/05/2016. | ||||
|  | @ -45,16 +45,16 @@ public interface PollingStationScanner { | |||
|         /** | ||||
|          * Sends a scan to all subscribers | ||||
|          * @param scannedData contains the scanned data | ||||
|          * @return a BoolMsg containing TRUE iff the scanned data has been sent to at least one subscriber | ||||
|          * @return a BoolValue containing TRUE iff the scanned data has been sent to at least one subscriber | ||||
|          */ | ||||
|         public BoolMsg newScan(ScannedData scannedData); | ||||
|         public BoolValue newScan(ScannedData scannedData); | ||||
| 
 | ||||
|         /** | ||||
|          * Notifies subscribers about an error that occurred during scan | ||||
|          * @param errorMsg is the error that occurred | ||||
|          * @return a BoolMsg containing TRUE iff the error has been sent to at least one subscriber | ||||
|          * @return a BoolValue containing TRUE iff the error has been sent to at least one subscriber | ||||
|          */ | ||||
|         public BoolMsg reportScanError(ErrorMsg errorMsg); | ||||
|         public BoolValue reportScanError(ErrorMsg errorMsg); | ||||
| 
 | ||||
|     } | ||||
|      | ||||
|  |  | |||
|  | @ -12,11 +12,4 @@ message ScannedData { | |||
| // Container for error messages | ||||
| message ErrorMsg { | ||||
|     string msg = 1; | ||||
| } | ||||
| 
 | ||||
| // Container for HTTP address | ||||
| message HTTPAddress { | ||||
|     string hostname = 1; | ||||
|     int32 port = 2; | ||||
|     string address = 3; | ||||
| } | ||||
|  | @ -10,12 +10,4 @@ message BroadcastMessage { | |||
|     bool is_private = 3; | ||||
| 
 | ||||
|     bytes payload = 5; | ||||
| } | ||||
| 
 | ||||
| message BoolMsg { | ||||
|     bool value = 1; | ||||
| } | ||||
| 
 | ||||
| message IntMsg { | ||||
|     int32 value = 1; | ||||
| } | ||||
| } | ||||
|  | @ -5,7 +5,7 @@ package meerkat.pollingstation; | |||
|  */ | ||||
| 
 | ||||
| import com.google.common.util.concurrent.FutureCallback; | ||||
| import meerkat.protobuf.Comm; | ||||
| import com.google.protobuf.BoolValue; | ||||
| import meerkat.protobuf.PollingStation; | ||||
| 
 | ||||
| import javax.annotation.PostConstruct; | ||||
|  | @ -16,7 +16,6 @@ import javax.ws.rs.Path; | |||
| import javax.ws.rs.Produces; | ||||
| import javax.ws.rs.core.Context; | ||||
| import java.io.IOException; | ||||
| import java.util.Iterator; | ||||
| 
 | ||||
| import static meerkat.pollingstation.PollingStationConstants.POLLING_STATION_WEB_SCANNER_ERROR_PATH; | ||||
| import static meerkat.pollingstation.PollingStationConstants.POLLING_STATION_WEB_SCANNER_SCAN_PATH; | ||||
|  | @ -32,14 +31,14 @@ public class PollingStationScannerWebApp implements PollingStationScanner.Produc | |||
|     @Context | ||||
|     ServletContext servletContext; | ||||
| 
 | ||||
|     Iterator<FutureCallback<PollingStation.ScannedData>> callbacks; | ||||
|     Iterable<FutureCallback<PollingStation.ScannedData>> callbacks; | ||||
| 
 | ||||
|     /** | ||||
|      * This method is called by the Jetty engine when instantiating the servlet | ||||
|      */ | ||||
|     @PostConstruct | ||||
|     public void init() throws Exception{ | ||||
|         callbacks = ((PollingStationWebScanner.CallbackAccessor) servletContext.getAttribute(PollingStationWebScanner.CALLBACKS_ATTRIBUTE_NAME)).getCallbackIterator(); | ||||
|         callbacks = (Iterable<FutureCallback<PollingStation.ScannedData>>) servletContext.getAttribute(PollingStationWebScanner.CALLBACKS_ATTRIBUTE_NAME); | ||||
|     } | ||||
| 
 | ||||
|     @POST | ||||
|  | @ -47,18 +46,18 @@ public class PollingStationScannerWebApp implements PollingStationScanner.Produc | |||
|     @Consumes(MEDIATYPE_PROTOBUF) | ||||
|     @Produces(MEDIATYPE_PROTOBUF) | ||||
|     @Override | ||||
|     public Comm.BoolMsg newScan(PollingStation.ScannedData scannedData) { | ||||
|     public BoolValue newScan(PollingStation.ScannedData scannedData) { | ||||
| 
 | ||||
|         boolean handled = false; | ||||
| 
 | ||||
|         while (callbacks.hasNext()){ | ||||
|         for (FutureCallback<PollingStation.ScannedData> callback : callbacks){ | ||||
| 
 | ||||
|             callbacks.next().onSuccess(scannedData); | ||||
|             callback.onSuccess(scannedData); | ||||
|             handled = true; | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         return Comm.BoolMsg.newBuilder() | ||||
|         return BoolValue.newBuilder() | ||||
|                 .setValue(handled) | ||||
|                 .build(); | ||||
| 
 | ||||
|  | @ -69,18 +68,18 @@ public class PollingStationScannerWebApp implements PollingStationScanner.Produc | |||
|     @Consumes(MEDIATYPE_PROTOBUF) | ||||
|     @Produces(MEDIATYPE_PROTOBUF) | ||||
|     @Override | ||||
|     public Comm.BoolMsg reportScanError(PollingStation.ErrorMsg errorMsg) { | ||||
|     public BoolValue reportScanError(PollingStation.ErrorMsg errorMsg) { | ||||
| 
 | ||||
|         boolean handled = false; | ||||
| 
 | ||||
|         while (callbacks.hasNext()){ | ||||
|         for (FutureCallback<PollingStation.ScannedData> callback : callbacks){ | ||||
| 
 | ||||
|             callbacks.next().onFailure(new IOException(errorMsg.getMsg())); | ||||
|             callback.onFailure(new IOException(errorMsg.getMsg())); | ||||
|             handled = true; | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         return Comm.BoolMsg.newBuilder() | ||||
|         return BoolValue.newBuilder() | ||||
|                 .setValue(handled) | ||||
|                 .build(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,6 +1,5 @@ | |||
| package meerkat.pollingstation; | ||||
| 
 | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
| import java.util.LinkedList; | ||||
| 
 | ||||
|  | @ -8,7 +7,6 @@ import com.google.common.util.concurrent.FutureCallback; | |||
| import org.eclipse.jetty.server.Server; | ||||
| import org.eclipse.jetty.servlet.*; | ||||
| 
 | ||||
| import meerkat.protobuf.PollingStation.*; | ||||
| import org.glassfish.jersey.servlet.ServletContainer; | ||||
| import org.glassfish.jersey.server.ResourceConfig; | ||||
| 
 | ||||
|  | @ -26,14 +24,14 @@ public class PollingStationWebScanner implements PollingStationScanner.Consumer{ | |||
|     private final Server server; | ||||
|     private final List<FutureCallback<ScannedData>> callbacks; | ||||
| 
 | ||||
|     public PollingStationWebScanner(HTTPAddress address) { | ||||
|     public PollingStationWebScanner(int port, String subAddress) { | ||||
| 
 | ||||
|         callbacks = new LinkedList<>(); | ||||
| 
 | ||||
|         server = new Server(address.getPort()); | ||||
|         server = new Server(port); | ||||
| 
 | ||||
|         ServletContextHandler servletContextHandler = new ServletContextHandler(server, address.getAddress()); | ||||
|         servletContextHandler.setAttribute(CALLBACKS_ATTRIBUTE_NAME, new CallbackAccessor()); | ||||
|         ServletContextHandler servletContextHandler = new ServletContextHandler(server, subAddress); | ||||
|         servletContextHandler.setAttribute(CALLBACKS_ATTRIBUTE_NAME, (Iterable<FutureCallback<ScannedData>>) callbacks); | ||||
| 
 | ||||
|         ResourceConfig resourceConfig = new ResourceConfig(PollingStationScannerWebApp.class); | ||||
|         resourceConfig.register(ProtobufMessageBodyReader.class); | ||||
|  | @ -59,10 +57,4 @@ public class PollingStationWebScanner implements PollingStationScanner.Consumer{ | |||
|         callbacks.add(scanCallback); | ||||
|     } | ||||
| 
 | ||||
|     public class CallbackAccessor { | ||||
|         public Iterator<FutureCallback<ScannedData>> getCallbackIterator() { | ||||
|             return callbacks.iterator(); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  |  | |||
|  | @ -2,8 +2,6 @@ package meerkat.pollingstation; | |||
| 
 | ||||
| import com.google.common.util.concurrent.FutureCallback; | ||||
| import com.google.protobuf.ByteString; | ||||
| import com.sun.org.apache.regexp.internal.RE; | ||||
| import meerkat.protobuf.PollingStation; | ||||
| import meerkat.protobuf.PollingStation.*; | ||||
| import meerkat.rest.Constants; | ||||
| 
 | ||||
|  | @ -18,12 +16,10 @@ import javax.ws.rs.client.Entity; | |||
| import javax.ws.rs.client.WebTarget; | ||||
| import javax.ws.rs.core.Response; | ||||
| 
 | ||||
| import java.io.IOException; | ||||
| import java.util.concurrent.Semaphore; | ||||
| 
 | ||||
| import static meerkat.pollingstation.PollingStationConstants.*; | ||||
| 
 | ||||
| import static org.hamcrest.CoreMatchers.*; | ||||
| import static org.hamcrest.MatcherAssert.assertThat; | ||||
| 
 | ||||
| /** | ||||
|  | @ -32,7 +28,9 @@ import static org.hamcrest.MatcherAssert.assertThat; | |||
| public class PollingStationWebScannerTest { | ||||
| 
 | ||||
|     private PollingStationScanner.Consumer scanner; | ||||
|     private HTTPAddress httpAddress; | ||||
|     private static final String ADDRESS = "http://localhost"; | ||||
|     private static final String SUB_ADDRESS = ""; | ||||
|     private static final int PORT = 8080; | ||||
| 
 | ||||
|     private Semaphore semaphore; | ||||
|     private Throwable thrown; | ||||
|  | @ -86,12 +84,7 @@ public class PollingStationWebScannerTest { | |||
| 
 | ||||
|         System.err.println("Setting up Scanner WebApp!"); | ||||
| 
 | ||||
|         httpAddress = HTTPAddress.newBuilder() | ||||
|                 .setPort(8080) | ||||
|                 .setHostname("http://localhost") | ||||
|                 .build(); | ||||
| 
 | ||||
|         scanner = new PollingStationWebScanner(httpAddress); | ||||
|         scanner = new PollingStationWebScanner(PORT, SUB_ADDRESS); | ||||
| 
 | ||||
|         semaphore = new Semaphore(0); | ||||
|         thrown = null; | ||||
|  | @ -110,8 +103,8 @@ public class PollingStationWebScannerTest { | |||
|         Client client = ClientBuilder.newClient(); | ||||
|         client.register(ProtobufMessageBodyReader.class); | ||||
|         client.register(ProtobufMessageBodyWriter.class); | ||||
|         WebTarget webTarget = client.target(httpAddress.getHostname() + ":" + httpAddress.getPort()) | ||||
|                 .path(httpAddress.getAddress()).path(POLLING_STATION_WEB_SCANNER_SCAN_PATH); | ||||
|         WebTarget webTarget = client.target(ADDRESS + ":" + PORT) | ||||
|                 .path(SUB_ADDRESS).path(POLLING_STATION_WEB_SCANNER_SCAN_PATH); | ||||
| 
 | ||||
|         byte[] data = {(byte) 1, (byte) 2}; | ||||
| 
 | ||||
|  | @ -136,8 +129,8 @@ public class PollingStationWebScannerTest { | |||
|         Client client = ClientBuilder.newClient(); | ||||
|         client.register(ProtobufMessageBodyReader.class); | ||||
|         client.register(ProtobufMessageBodyWriter.class); | ||||
|         WebTarget webTarget = client.target(httpAddress.getHostname() + ":" + httpAddress.getPort()) | ||||
|                 .path(httpAddress.getAddress()).path(POLLING_STATION_WEB_SCANNER_ERROR_PATH); | ||||
|         WebTarget webTarget = client.target(ADDRESS + ":" + PORT) | ||||
|                 .path(SUB_ADDRESS).path(POLLING_STATION_WEB_SCANNER_ERROR_PATH); | ||||
| 
 | ||||
|         ErrorMsg errorMsg = ErrorMsg.newBuilder() | ||||
|                 .setMsg("!Error Message!") | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue