diff --git a/week5_TinsaeGhilay/ReadME.md b/week5_TinsaeGhilay/ReadME.md new file mode 100644 index 0000000..8bcf8e0 --- /dev/null +++ b/week5_TinsaeGhilay/ReadME.md @@ -0,0 +1,40 @@ +## Start Glass fish +```bash +# start glassfish server +glassfish7/bin/asadmin start-domain + +# deploy app on it +glassfish7/bin/asadmin deploy target/shop-1.0-SNAPSHOT.war +``` + +we can browse server at [http://localhost:8080/shop-1.0-SNAPSHOT/api/items](http://localhost:8080/shop-1.0-SNAPSHOT/api/items) + +## Start client +```bash +# cd to clients project directory +cd client + +# compile and run project +mvn clean compile exec:java +``` + +The client class handles HTTP operations, while the Delegator class handles user interaction, input validation, and adapts the input into the correct format. Delegator then calls the appropriate Client methods, acting as a proxy in a liberal sense. + +## Ending the program + +Clent program can be ended by typing `done` or `exit` in the interactive terminal + +Glassfish can be stoped using the following command in terminal +```bash +# first check which domains are running +glassfish7/bin/asadmin list-domains +# you will get somehing like the below lines +# domain1 running +# Command list-domains executed successfully. +# we have domain1 running. so we stop it with +glassfish7/bin/asadmin stop-domain domain1 +``` + +## DONE + + diff --git a/week5_TinsaeGhilay/client/pom.xml b/week5_TinsaeGhilay/Task 2/client/pom.xml similarity index 100% rename from week5_TinsaeGhilay/client/pom.xml rename to week5_TinsaeGhilay/Task 2/client/pom.xml diff --git a/week5_TinsaeGhilay/client/src/main/java/net/tinsae/Client.java b/week5_TinsaeGhilay/Task 2/client/src/main/java/net/tinsae/Client.java similarity index 100% rename from week5_TinsaeGhilay/client/src/main/java/net/tinsae/Client.java rename to week5_TinsaeGhilay/Task 2/client/src/main/java/net/tinsae/Client.java diff --git a/week5_TinsaeGhilay/client/src/main/java/net/tinsae/Delegator.java b/week5_TinsaeGhilay/Task 2/client/src/main/java/net/tinsae/Delegator.java similarity index 100% rename from week5_TinsaeGhilay/client/src/main/java/net/tinsae/Delegator.java rename to week5_TinsaeGhilay/Task 2/client/src/main/java/net/tinsae/Delegator.java diff --git a/week5_TinsaeGhilay/client/src/main/java/net/tinsae/Main.java b/week5_TinsaeGhilay/Task 2/client/src/main/java/net/tinsae/Main.java similarity index 100% rename from week5_TinsaeGhilay/client/src/main/java/net/tinsae/Main.java rename to week5_TinsaeGhilay/Task 2/client/src/main/java/net/tinsae/Main.java diff --git a/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Client.class b/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Client.class index 45a7b0c..9d2a981 100644 Binary files a/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Client.class and b/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Client.class differ diff --git a/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Delegator.class b/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Delegator.class index e090147..38eba4a 100644 Binary files a/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Delegator.class and b/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Delegator.class differ diff --git a/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Main.class b/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Main.class index abc9d8e..5dcdb43 100644 Binary files a/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Main.class and b/week5_TinsaeGhilay/Task 2/client/target/classes/net/tinsae/Main.class differ diff --git a/week5_TinsaeGhilay/client/target/client-1.0-SNAPSHOT.jar b/week5_TinsaeGhilay/Task 2/client/target/client-1.0-SNAPSHOT.jar similarity index 100% rename from week5_TinsaeGhilay/client/target/client-1.0-SNAPSHOT.jar rename to week5_TinsaeGhilay/Task 2/client/target/client-1.0-SNAPSHOT.jar diff --git a/week5_TinsaeGhilay/client/target/maven-archiver/pom.properties b/week5_TinsaeGhilay/Task 2/client/target/maven-archiver/pom.properties similarity index 100% rename from week5_TinsaeGhilay/client/target/maven-archiver/pom.properties rename to week5_TinsaeGhilay/Task 2/client/target/maven-archiver/pom.properties diff --git a/week5_TinsaeGhilay/client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/week5_TinsaeGhilay/Task 2/client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst similarity index 100% rename from week5_TinsaeGhilay/client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst rename to week5_TinsaeGhilay/Task 2/client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst diff --git a/week5_TinsaeGhilay/client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/week5_TinsaeGhilay/Task 2/client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst similarity index 100% rename from week5_TinsaeGhilay/client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst rename to week5_TinsaeGhilay/Task 2/client/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst diff --git a/week5_TinsaeGhilay/shop/.gitignore b/week5_TinsaeGhilay/Task 2/shop/.gitignore similarity index 100% rename from week5_TinsaeGhilay/shop/.gitignore rename to week5_TinsaeGhilay/Task 2/shop/.gitignore diff --git a/week5_TinsaeGhilay/shop/.idea/.gitignore b/week5_TinsaeGhilay/Task 2/shop/.idea/.gitignore similarity index 100% rename from week5_TinsaeGhilay/shop/.idea/.gitignore rename to week5_TinsaeGhilay/Task 2/shop/.idea/.gitignore diff --git a/week5_TinsaeGhilay/shop/.idea/dataSources.xml b/week5_TinsaeGhilay/Task 2/shop/.idea/dataSources.xml similarity index 100% rename from week5_TinsaeGhilay/shop/.idea/dataSources.xml rename to week5_TinsaeGhilay/Task 2/shop/.idea/dataSources.xml diff --git a/week5_TinsaeGhilay/shop/.idea/encodings.xml b/week5_TinsaeGhilay/Task 2/shop/.idea/encodings.xml similarity index 100% rename from week5_TinsaeGhilay/shop/.idea/encodings.xml rename to week5_TinsaeGhilay/Task 2/shop/.idea/encodings.xml diff --git a/week5_TinsaeGhilay/shop/.idea/misc.xml b/week5_TinsaeGhilay/Task 2/shop/.idea/misc.xml similarity index 100% rename from week5_TinsaeGhilay/shop/.idea/misc.xml rename to week5_TinsaeGhilay/Task 2/shop/.idea/misc.xml diff --git a/week5_TinsaeGhilay/shop/.idea/sqldialects.xml b/week5_TinsaeGhilay/Task 2/shop/.idea/sqldialects.xml similarity index 100% rename from week5_TinsaeGhilay/shop/.idea/sqldialects.xml rename to week5_TinsaeGhilay/Task 2/shop/.idea/sqldialects.xml diff --git a/week5_TinsaeGhilay/shop/.mvn/wrapper/maven-wrapper.jar b/week5_TinsaeGhilay/Task 2/shop/.mvn/wrapper/maven-wrapper.jar similarity index 100% rename from week5_TinsaeGhilay/shop/.mvn/wrapper/maven-wrapper.jar rename to week5_TinsaeGhilay/Task 2/shop/.mvn/wrapper/maven-wrapper.jar diff --git a/week5_TinsaeGhilay/shop/.mvn/wrapper/maven-wrapper.properties b/week5_TinsaeGhilay/Task 2/shop/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from week5_TinsaeGhilay/shop/.mvn/wrapper/maven-wrapper.properties rename to week5_TinsaeGhilay/Task 2/shop/.mvn/wrapper/maven-wrapper.properties diff --git a/week5_TinsaeGhilay/shop/mvnw b/week5_TinsaeGhilay/Task 2/shop/mvnw similarity index 100% rename from week5_TinsaeGhilay/shop/mvnw rename to week5_TinsaeGhilay/Task 2/shop/mvnw diff --git a/week5_TinsaeGhilay/shop/mvnw.cmd b/week5_TinsaeGhilay/Task 2/shop/mvnw.cmd similarity index 100% rename from week5_TinsaeGhilay/shop/mvnw.cmd rename to week5_TinsaeGhilay/Task 2/shop/mvnw.cmd diff --git a/week5_TinsaeGhilay/shop/pom.xml b/week5_TinsaeGhilay/Task 2/shop/pom.xml similarity index 100% rename from week5_TinsaeGhilay/shop/pom.xml rename to week5_TinsaeGhilay/Task 2/shop/pom.xml diff --git a/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/App.java b/week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/App.java similarity index 100% rename from week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/App.java rename to week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/App.java diff --git a/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/Factory.java b/week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/Factory.java similarity index 100% rename from week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/Factory.java rename to week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/Factory.java diff --git a/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/InvalidItemException.java b/week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/InvalidItemException.java similarity index 100% rename from week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/InvalidItemException.java rename to week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/InvalidItemException.java diff --git a/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/Item.java b/week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/Item.java similarity index 100% rename from week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/Item.java rename to week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/Item.java diff --git a/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/ItemDao.java b/week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/ItemDao.java similarity index 100% rename from week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/ItemDao.java rename to week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/ItemDao.java diff --git a/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/Util.java b/week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/Util.java similarity index 100% rename from week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/Util.java rename to week5_TinsaeGhilay/Task 2/shop/src/main/java/net/tinsae/shop/Util.java diff --git a/week5_TinsaeGhilay/Task 2/shop/target/classes/META-INF/beans.xml b/week5_TinsaeGhilay/Task 2/shop/src/main/resources/META-INF/beans.xml similarity index 100% rename from week5_TinsaeGhilay/Task 2/shop/target/classes/META-INF/beans.xml rename to week5_TinsaeGhilay/Task 2/shop/src/main/resources/META-INF/beans.xml diff --git a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/App.class b/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/App.class deleted file mode 100644 index cdff5ee..0000000 Binary files a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/App.class and /dev/null differ diff --git a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/Factory.class b/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/Factory.class deleted file mode 100644 index 5288b02..0000000 Binary files a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/Factory.class and /dev/null differ diff --git a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/InvalidItemException.class b/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/InvalidItemException.class deleted file mode 100644 index cc6b65f..0000000 Binary files a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/InvalidItemException.class and /dev/null differ diff --git a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/Item.class b/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/Item.class deleted file mode 100644 index 0060949..0000000 Binary files a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/Item.class and /dev/null differ diff --git a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/ItemDao.class b/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/ItemDao.class deleted file mode 100644 index 2cf0f39..0000000 Binary files a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/ItemDao.class and /dev/null differ diff --git a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/Util.class b/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/Util.class deleted file mode 100644 index 797148b..0000000 Binary files a/week5_TinsaeGhilay/Task 2/shop/target/classes/net/tinsae/shop/Util.class and /dev/null differ diff --git a/week5_TinsaeGhilay/Task 2/shop/target/maven-archiver/pom.properties b/week5_TinsaeGhilay/Task 2/shop/target/maven-archiver/pom.properties deleted file mode 100644 index d133594..0000000 --- a/week5_TinsaeGhilay/Task 2/shop/target/maven-archiver/pom.properties +++ /dev/null @@ -1,3 +0,0 @@ -artifactId=shop -groupId=net.tinsae.rest -version=1.0-SNAPSHOT diff --git a/week5_TinsaeGhilay/Task 2/shop/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/week5_TinsaeGhilay/Task 2/shop/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index 50996ef..0000000 --- a/week5_TinsaeGhilay/Task 2/shop/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,6 +0,0 @@ -net/tinsae/shop/App.class -net/tinsae/shop/Item.class -net/tinsae/shop/Util.class -net/tinsae/shop/Factory.class -net/tinsae/shop/InvalidItemException.class -net/tinsae/shop/ItemDao.class diff --git a/week5_TinsaeGhilay/Task 2/shop/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/week5_TinsaeGhilay/Task 2/shop/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 8173d6f..0000000 --- a/week5_TinsaeGhilay/Task 2/shop/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,6 +0,0 @@ -/home/tgk/Repos/Trusted/DistributedSystems/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/App.java -/home/tgk/Repos/Trusted/DistributedSystems/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/Factory.java -/home/tgk/Repos/Trusted/DistributedSystems/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/InvalidItemException.java -/home/tgk/Repos/Trusted/DistributedSystems/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/Item.java -/home/tgk/Repos/Trusted/DistributedSystems/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/ItemDao.java -/home/tgk/Repos/Trusted/DistributedSystems/week5_TinsaeGhilay/shop/src/main/java/net/tinsae/shop/Util.java diff --git a/week5_TinsaeGhilay/Task 3/Table.pdf b/week5_TinsaeGhilay/Task 3/Table.pdf new file mode 100644 index 0000000..21380c5 Binary files /dev/null and b/week5_TinsaeGhilay/Task 3/Table.pdf differ diff --git a/week5_TinsaeGhilay/Task 4/Client.cpp b/week5_TinsaeGhilay/Task 4/Client.cpp new file mode 100644 index 0000000..0194e90 --- /dev/null +++ b/week5_TinsaeGhilay/Task 4/Client.cpp @@ -0,0 +1,52 @@ +#include +#include +#include + +size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) { + ((std::string*)userp)->append((char*)contents, size * nmemb); + return size * nmemb; +} + +std::string httpRequest(const std::string& url, + const std::string& method, + const std::string& body = "") { + CURL* curl; + CURLcode res; + std::string readBuffer; + + curl = curl_easy_init(); + if (curl) { + struct curl_slist* headers = NULL; + headers = curl_slist_append(headers, "Content-Type: application/json"); + + curl_easy_setopt(curl, CURLOPT_URL, url.c_str()); + curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, method.c_str()); + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers); + + if (!body.empty()) { + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, body.c_str()); + } + + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); + + res = curl_easy_perform(curl); + curl_easy_cleanup(curl); + } + return readBuffer; +} + +int main() { + std::string base = "http://localhost:8080/shop-1.0-SNAPSHOT/api/items"; + + // GET all items + std::cout << "GET all items:\n" << httpRequest(base, "GET") << "\n\n"; + + // GET item by ID + std::cout << "GET item 1:\n" << httpRequest(base + "/1", "GET") << "\n\n"; + + // POST new item + std::string newItem = R"({"name":"Mouse","price":1.25, "description":"Logitek gaming mouse"})"; + std::cout << "POST new item:\n" << httpRequest(base, "POST", newItem) << "\n\n"; + return 0; +} diff --git a/week5_TinsaeGhilay/Task 4/client b/week5_TinsaeGhilay/Task 4/client new file mode 100755 index 0000000..ecbe906 Binary files /dev/null and b/week5_TinsaeGhilay/Task 4/client differ diff --git a/week5_TinsaeGhilay/client/target/classes/net/tinsae/Client.class b/week5_TinsaeGhilay/client/target/classes/net/tinsae/Client.class deleted file mode 100644 index 9d2a981..0000000 Binary files a/week5_TinsaeGhilay/client/target/classes/net/tinsae/Client.class and /dev/null differ diff --git a/week5_TinsaeGhilay/client/target/classes/net/tinsae/Delegator.class b/week5_TinsaeGhilay/client/target/classes/net/tinsae/Delegator.class deleted file mode 100644 index 38eba4a..0000000 Binary files a/week5_TinsaeGhilay/client/target/classes/net/tinsae/Delegator.class and /dev/null differ diff --git a/week5_TinsaeGhilay/client/target/classes/net/tinsae/Main.class b/week5_TinsaeGhilay/client/target/classes/net/tinsae/Main.class deleted file mode 100644 index 5dcdb43..0000000 Binary files a/week5_TinsaeGhilay/client/target/classes/net/tinsae/Main.class and /dev/null differ diff --git a/week5_TinsaeGhilay/client/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/week5_TinsaeGhilay/client/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index 5fe1ffc..0000000 --- a/week5_TinsaeGhilay/client/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,3 +0,0 @@ -net/tinsae/Client.class -net/tinsae/Main.class -net/tinsae/Delegator.class diff --git a/week5_TinsaeGhilay/client/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/week5_TinsaeGhilay/client/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index 954887d..0000000 --- a/week5_TinsaeGhilay/client/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,3 +0,0 @@ -/home/tgk/Repos/Trusted/DistributedSystems/week5_TinsaeGhilay/client/src/main/java/net/tinsae/Client.java -/home/tgk/Repos/Trusted/DistributedSystems/week5_TinsaeGhilay/client/src/main/java/net/tinsae/Delegator.java -/home/tgk/Repos/Trusted/DistributedSystems/week5_TinsaeGhilay/client/src/main/java/net/tinsae/Main.java diff --git a/week5_TinsaeGhilay/shop/src/main/resources/META-INF/beans.xml b/week5_TinsaeGhilay/shop/src/main/resources/META-INF/beans.xml deleted file mode 100644 index 96b4c76..0000000 --- a/week5_TinsaeGhilay/shop/src/main/resources/META-INF/beans.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/week5_TinsaeGhilay/solutions.txt b/week5_TinsaeGhilay/solutions.txt new file mode 100644 index 0000000..d4a3d81 --- /dev/null +++ b/week5_TinsaeGhilay/solutions.txt @@ -0,0 +1,5 @@ +Exercise 1: not mandatory +Exercise 2: done 100% +Exercise 3: done 100% +Exercise 4: done 100% +Exercise 5: not mandatory \ No newline at end of file