bugfixes
This commit is contained in:
@@ -2,23 +2,16 @@ package ch.unisg.tapas;
|
||||
|
||||
import ch.unisg.tapas.auctionhouse.adapter.common.clients.TapasMqttClient;
|
||||
import ch.unisg.tapas.auctionhouse.adapter.in.messaging.mqtt.AuctionEventsMqttDispatcher;
|
||||
import ch.unisg.tapas.auctionhouse.domain.AuctionHouseDiscovery;
|
||||
import ch.unisg.tapas.auctionhouse.domain.AuctionHouseDiscoveryInformation;
|
||||
import ch.unisg.tapas.auctionhouse.adapter.common.clients.WebSubSubscriber;
|
||||
import ch.unisg.tapas.common.AuctionHouseResourceDirectory;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.eclipse.paho.client.mqttv3.MqttException;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.core.env.ConfigurableEnvironment;
|
||||
import org.springframework.core.env.Environment;
|
||||
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
/**
|
||||
* Main TAPAS Auction House application.
|
||||
@@ -36,8 +29,8 @@ public class TapasAuctionHouseApplication {
|
||||
ENVIRONMENT = tapasAuctioneerApp.run(args).getEnvironment();
|
||||
// TODO Set start up of message services with config
|
||||
// We will use these bootstrap methods in Week 6:
|
||||
bootstrapMarketplaceWithWebSub();
|
||||
//bootstrapMarketplaceWithMqtt();
|
||||
// bootstrapMarketplaceWithWebSub();
|
||||
bootstrapMarketplaceWithMqtt();
|
||||
}
|
||||
/**
|
||||
* Discovers auction houses and subscribes to WebSub notifications
|
||||
|
@@ -50,7 +50,6 @@ public class TapasMqttClient {
|
||||
mqttClient = new org.eclipse.paho.client.mqttv3.MqttClient(brokerAddress, mqttClientId, new MemoryPersistence());
|
||||
mqttClient.connect();
|
||||
mqttClient.setCallback(messageReceivedCallback);
|
||||
|
||||
subscribeToAllTopics();
|
||||
}
|
||||
|
||||
|
@@ -13,26 +13,27 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.eclipse.paho.client.mqttv3.MqttMessage;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
public class ExternalAuctionStartedEventListenerMqttAdapter extends AuctionEventMqttListener{
|
||||
private static final Logger LOGGER = LogManager.getLogger(ExternalAuctionStartedEventListenerMqttAdapter.class);
|
||||
|
||||
String auctionHouseURI = "https://tapas-auction-house.86-119-35-40.nip.io/";
|
||||
// String auctionHouseURI = "https://tapas-auction-house.86-119-35-40.nip.io/";
|
||||
String auctionHouseURI = "http://a888-77-59-152-182.eu.ngrok.io";
|
||||
|
||||
String taskListURI = "https://tapas-tasks.86-119-35-40.nip.io";
|
||||
// String taskListURI = "https://tapas-tasks.86-119-35-40.nip.io";
|
||||
String taskListURI = "http://e021-77-59-152-182.ngrok.io";
|
||||
|
||||
@Override
|
||||
public boolean handleEvent(MqttMessage message){
|
||||
String payload = new String(message.getPayload());
|
||||
|
||||
System.out.println("New auction");
|
||||
|
||||
try {
|
||||
// Note: this message representation is provided only as an example. You should use a
|
||||
// representation that makes sense in the context of your application.
|
||||
@@ -46,6 +47,7 @@ public class ExternalAuctionStartedEventListenerMqttAdapter extends AuctionEvent
|
||||
String deadline = data.get("deadline").asText();
|
||||
|
||||
var capable = ExecutorRegistry.getInstance().containsTaskType(new Auction.AuctionedTaskType(taskType));
|
||||
System.out.println("Capable: " + capable);
|
||||
// TODO check deadline
|
||||
if(capable){
|
||||
var bid = new Bid(
|
||||
|
@@ -1,11 +1,6 @@
|
||||
package ch.unisg.tapas.auctionhouse.adapter.in.web;
|
||||
|
||||
import ch.unisg.tapas.auctionhouse.adapter.common.formats.AuctionJsonRepresentation;
|
||||
import ch.unisg.tapas.auctionhouse.adapter.common.formats.BidJsonRepresentation;
|
||||
import ch.unisg.tapas.auctionhouse.adapter.common.formats.TaskJsonRepresentation;
|
||||
import ch.unisg.tapas.auctionhouse.adapter.in.messaging.mqtt.ExternalAuctionStartedEventListenerMqttAdapter;
|
||||
import ch.unisg.tapas.auctionhouse.domain.Task;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@@ -35,7 +30,7 @@ public class WinningBidWebController {
|
||||
try {
|
||||
var body = payload.serialize();
|
||||
LOGGER.info(body);
|
||||
var postURI = URI.create("https://tapas-tasks.86-119-35-40.nip.io/tasks/");
|
||||
var postURI = URI.create(taskListURI + "/tasks/");
|
||||
HttpRequest postRequest = HttpRequest.newBuilder()
|
||||
.uri(postURI)
|
||||
.header("Content-Type", TaskJsonRepresentation.MEDIA_TYPE)
|
||||
@@ -49,7 +44,7 @@ public class WinningBidWebController {
|
||||
|
||||
|
||||
HttpHeaders responseHeaders = new HttpHeaders();
|
||||
return new ResponseEntity<>(responseHeaders, HttpStatus.NO_CONTENT);
|
||||
return new ResponseEntity<>(responseHeaders, HttpStatus.ACCEPTED);
|
||||
}
|
||||
catch (
|
||||
IOException | InterruptedException e) {
|
||||
|
@@ -6,31 +6,33 @@ import ch.unisg.tapas.auctionhouse.adapter.in.messaging.mqtt.AuctionEventsMqttDi
|
||||
import ch.unisg.tapas.auctionhouse.application.port.out.AuctionStartedEventPort;
|
||||
import ch.unisg.tapas.auctionhouse.domain.AuctionStartedEvent;
|
||||
import ch.unisg.tapas.common.ConfigProperties;
|
||||
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.eclipse.paho.client.mqttv3.MqttException;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Component
|
||||
// @Primary
|
||||
@Primary
|
||||
public class PublishAuctionStartedEventMqttAdapter implements AuctionStartedEventPort {
|
||||
|
||||
private static final Logger LOGGER = LogManager.getLogger(PublishAuctionStartedEventMqttAdapter.class);
|
||||
Logger logger = Logger.getLogger(PublishAuctionStartedEventMqttAdapter.class.getName());
|
||||
|
||||
@Autowired
|
||||
private ConfigProperties config;
|
||||
|
||||
@Override
|
||||
public void publishAuctionStartedEvent(AuctionStartedEvent event) {
|
||||
logger.info("AuctionHouse | Publish auction started over Mqtt!");
|
||||
try{
|
||||
var mqttClient = TapasMqttClient.getInstance(config.getMqttBrokerUri().toString(), new AuctionEventsMqttDispatcher());
|
||||
mqttClient.publishMessage("ch/unisg/tapas/auctions", AuctionJsonRepresentation.serialize(event.getAuction()));
|
||||
}
|
||||
catch (MqttException | JsonProcessingException e){
|
||||
LOGGER.error(e.getMessage(), e);
|
||||
logger.severe(e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -19,7 +19,7 @@ import java.util.logging.Logger;
|
||||
* This class is a template for publishing auction started events via WebSub.
|
||||
*/
|
||||
@Component
|
||||
@Primary
|
||||
// @Primary
|
||||
public class PublishAuctionStartedEventWebSubAdapter implements AuctionStartedEventPort {
|
||||
@Value("${auction.house.uri}")
|
||||
private String auctionHouseUri;
|
||||
@@ -31,12 +31,12 @@ public class PublishAuctionStartedEventWebSubAdapter implements AuctionStartedEv
|
||||
|
||||
@Override
|
||||
public void publishAuctionStartedEvent(AuctionStartedEvent event) {
|
||||
logger.info("AuctionHouse | Publish auction started over WebSub!");
|
||||
|
||||
HttpClient client = HttpClient.newHttpClient();
|
||||
|
||||
String body = "hub.url=" + auctionHouseUri + "/auctions/&hub.mode=publish";
|
||||
|
||||
logger.info("Auctions updated:" + body);
|
||||
|
||||
HttpRequest request = HttpRequest.newBuilder()
|
||||
.uri(URI.create(webSubHubUri))
|
||||
.header("Content-Type", "application/x-www-form-urlencoded")
|
||||
@@ -46,7 +46,7 @@ public class PublishAuctionStartedEventWebSubAdapter implements AuctionStartedEv
|
||||
|
||||
try {
|
||||
client.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
logger.info("WEBSUB send successfuly");
|
||||
logger.info("AuctionHouse | Publish auction over WebSub successfuly!");
|
||||
} catch (InterruptedException e) {
|
||||
logger.log(Level.SEVERE, e.getLocalizedMessage(), e);
|
||||
Thread.currentThread().interrupt();
|
||||
|
@@ -1,7 +1,6 @@
|
||||
package ch.unisg.tapas.auctionhouse.adapter.out.web;
|
||||
|
||||
import ch.unisg.tapas.auctionhouse.adapter.common.formats.TaskJsonRepresentation;
|
||||
import ch.unisg.tapas.auctionhouse.application.handler.AuctionStartedHandler;
|
||||
import ch.unisg.tapas.auctionhouse.application.port.out.AuctionWonEventPort;
|
||||
import ch.unisg.tapas.auctionhouse.domain.AuctionRegistry;
|
||||
import ch.unisg.tapas.auctionhouse.domain.AuctionWonEvent;
|
||||
@@ -11,6 +10,7 @@ import org.apache.logging.log4j.Logger;
|
||||
import org.json.JSONObject;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -45,6 +45,10 @@ public class AuctionWonEventHttpAdapter implements AuctionWonEventPort {
|
||||
.build();
|
||||
|
||||
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
if (response.statusCode() != HttpStatus.OK.value()) {
|
||||
LOGGER.info("AuctionHouse | Could not get task from tasklist. Something went wrong...");
|
||||
return;
|
||||
}
|
||||
LOGGER.info(response.body());
|
||||
JSONObject responseBody = new JSONObject(response.body());
|
||||
|
||||
|
@@ -2,7 +2,6 @@ package ch.unisg.tapas.auctionhouse.application.service;
|
||||
|
||||
import ch.unisg.tapas.auctionhouse.application.port.in.LaunchAuctionCommand;
|
||||
import ch.unisg.tapas.auctionhouse.application.port.in.LaunchAuctionUseCase;
|
||||
import ch.unisg.tapas.auctionhouse.application.port.in.LaunchAuctionUseCase;
|
||||
import ch.unisg.tapas.auctionhouse.application.port.out.AuctionWonEventPort;
|
||||
import ch.unisg.tapas.auctionhouse.application.port.out.AuctionStartedEventPort;
|
||||
import ch.unisg.tapas.auctionhouse.domain.*;
|
||||
@@ -13,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.sql.Timestamp;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
@@ -27,10 +27,10 @@ import java.util.concurrent.TimeUnit;
|
||||
public class StartAuctionService implements LaunchAuctionUseCase {
|
||||
private static final Logger LOGGER = LogManager.getLogger(StartAuctionService.class);
|
||||
|
||||
private final Timestamp DEFAULT_AUCTION_DEADLINE_MILLIS = Timestamp.valueOf("1970-01-01 00:00:01");
|
||||
private final Timestamp DEFAULT_AUCTION_DEADLINE_MILLIS = new Timestamp(System.currentTimeMillis() + 20000);
|
||||
|
||||
// Event port used to publish an auction started event
|
||||
private final AuctionStartedEventPort auctionStartedEventPort;
|
||||
private final List<AuctionStartedEventPort> auctionStartedEventPorts;
|
||||
// Event port used to publish an auction won event
|
||||
private final AuctionWonEventPort auctionWonEventPort;
|
||||
|
||||
@@ -40,9 +40,9 @@ public class StartAuctionService implements LaunchAuctionUseCase {
|
||||
@Autowired
|
||||
private ConfigProperties config;
|
||||
|
||||
public StartAuctionService(AuctionStartedEventPort auctionStartedEventPort,
|
||||
public StartAuctionService(List<AuctionStartedEventPort> auctionStartedEventPorts,
|
||||
AuctionWonEventPort auctionWonEventPort) {
|
||||
this.auctionStartedEventPort = auctionStartedEventPort;
|
||||
this.auctionStartedEventPorts = auctionStartedEventPorts;
|
||||
this.auctionWonEventPort = auctionWonEventPort;
|
||||
this.auctions = AuctionRegistry.getInstance();
|
||||
this.service = Executors.newScheduledThreadPool(1);
|
||||
@@ -70,7 +70,9 @@ public class StartAuctionService implements LaunchAuctionUseCase {
|
||||
|
||||
// Publish an auction started event
|
||||
AuctionStartedEvent auctionStartedEvent = new AuctionStartedEvent(auction);
|
||||
auctionStartedEventPort.publishAuctionStartedEvent(auctionStartedEvent);
|
||||
for (AuctionStartedEventPort auctionStartedEventPort : auctionStartedEventPorts) {
|
||||
auctionStartedEventPort.publishAuctionStartedEvent(auctionStartedEvent);
|
||||
}
|
||||
|
||||
return auction;
|
||||
}
|
||||
|
@@ -5,8 +5,9 @@ broker.mqtt=tcp://broker.hivemq.com
|
||||
websub.hub=https://websub.appspot.com/
|
||||
websub.hub.publish=https://websub.appspot.com/
|
||||
|
||||
group=tapas-group-tutors
|
||||
group=tapas-group-1
|
||||
auction.house.uri=https://tapas-auction-house.86-119-35-40.nip.io
|
||||
# auction.house.uri=http://a888-77-59-152-182.eu.ngrok.io
|
||||
tasks.list.uri=http://localhost:8081
|
||||
|
||||
application.environment=development
|
||||
|
Reference in New Issue
Block a user