Merge branch 'removeExampleCode' into 'main'

Removed all left over example code

Closes #27

See merge request cse1105/2025-2026/teams/csep-team-76!28
This commit is contained in:
Mei Chang van der Werff 2025-12-19 00:48:19 +01:00
commit b0272fd276
11 changed files with 0 additions and 829 deletions

View file

@ -1,72 +0,0 @@
/*
* Copyright 2021 Delft University of Technology
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package client.utils;
import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON;
import java.net.ConnectException;
import java.util.List;
import jakarta.ws.rs.core.GenericType;
import org.glassfish.jersey.client.ClientConfig;
import commons.Quote;
import jakarta.ws.rs.ProcessingException;
import jakarta.ws.rs.client.ClientBuilder;
import jakarta.ws.rs.client.Entity;
public class ServerUtilsExample {
private static final String SERVER = "http://localhost:8080/";
// public void getQuotesTheHardWay() throws IOException, URISyntaxException {
// var url = new URI("http://localhost:8080/api/quotes").toURL();
// var is = url.openConnection().getInputStream();
// var br = new BufferedReader(new InputStreamReader(is));
// String line;
// while ((line = br.readLine()) != null) {
// System.out.println(line);
// }
// }
public List<Quote> getQuotes() {
return ClientBuilder.newClient(new ClientConfig()) //
.target(SERVER).path("api/quotes") //
.request(APPLICATION_JSON) //
.get(new GenericType<List<Quote>>() {});
}
public Quote addQuote(Quote quote) {
return ClientBuilder.newClient(new ClientConfig()) //
.target(SERVER).path("api/quotes") //
.request(APPLICATION_JSON) //
.post(Entity.entity(quote, APPLICATION_JSON), Quote.class);
}
public boolean isServerAvailable() {
try {
ClientBuilder.newClient(new ClientConfig()) //
.target(SERVER) //
.request(APPLICATION_JSON) //
.get();
} catch (ProcessingException e) {
if (e.getCause() instanceof ConnectException) {
return false;
}
}
return true;
}
}

View file

@ -1,63 +0,0 @@
/*
* Copyright 2021 Delft University of Technology
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package commons;
import static org.apache.commons.lang3.builder.ToStringStyle.MULTI_LINE_STYLE;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long id;
public String firstName;
public String lastName;
@SuppressWarnings("unused")
private Person() {
// for object mapper
}
public Person(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, MULTI_LINE_STYLE);
}
}

View file

@ -1,66 +0,0 @@
/*
* Copyright 2021 Delft University of Technology
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package commons;
import static org.apache.commons.lang3.builder.ToStringStyle.MULTI_LINE_STYLE;
import org.apache.commons.lang3.builder.EqualsBuilder;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToOne;
@Entity
public class Quote {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public long id;
@OneToOne(cascade = CascadeType.PERSIST)
public Person person;
public String quote;
@SuppressWarnings("unused")
private Quote() {
// for object mappers
}
public Quote(Person person, String quote) {
this.person = person;
this.quote = quote;
}
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj);
}
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this);
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, MULTI_LINE_STYLE);
}
}

View file

@ -1,56 +0,0 @@
/*
* Copyright 2021 Delft University of Technology
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package commons;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
public class PersonTest {
@Test
public void checkConstructor() {
var p = new Person("f", "l");
assertEquals("f", p.firstName);
assertEquals("l", p.lastName);
}
@Test
public void equalsHashCode() {
var a = new Person("a", "b");
var b = new Person("a", "b");
assertEquals(a, b);
assertEquals(a.hashCode(), b.hashCode());
}
@Test
public void notEqualsHashCode() {
var a = new Person("a", "b");
var b = new Person("a", "c");
assertNotEquals(a, b);
assertNotEquals(a.hashCode(), b.hashCode());
}
@Test
public void hasToString() {
var actual = new Person("a", "b").toString();
assertTrue(actual.contains(Person.class.getSimpleName()));
assertTrue(actual.contains("\n"));
assertTrue(actual.contains("firstName"));
}
}

View file

@ -1,58 +0,0 @@
/*
* Copyright 2021 Delft University of Technology
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package commons;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;
public class QuoteTest {
private static final Person SOME_PERSON = new Person("a", "b");
@Test
public void checkConstructor() {
var q = new Quote(SOME_PERSON, "q");
assertEquals(SOME_PERSON, q.person);
assertEquals("q", q.quote);
}
@Test
public void equalsHashCode() {
var a = new Quote(new Person("a", "b"), "c");
var b = new Quote(new Person("a", "b"), "c");
assertEquals(a, b);
assertEquals(a.hashCode(), b.hashCode());
}
@Test
public void notEqualsHashCode() {
var a = new Quote(new Person("a", "b"), "c");
var b = new Quote(new Person("a", "b"), "d");
assertNotEquals(a, b);
assertNotEquals(a.hashCode(), b.hashCode());
}
@Test
public void hasToString() {
var actual = new Quote(new Person("a", "b"), "c").toString();
assertTrue(actual.contains(Quote.class.getSimpleName()));
assertTrue(actual.contains("\n"));
assertTrue(actual.contains("person"));
}
}

View file

@ -1,52 +0,0 @@
/**
* Copyright 2024 Sebastian Proksch
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package server.api;
import java.util.LinkedList;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import commons.Person;
@RestController
@RequestMapping("/api/people")
public class PersonListingController {
private List<Person> people = new LinkedList<>();
public PersonListingController() {
people.add(new Person("Mickey", "Mouse"));
people.add(new Person("Donald", "Duck"));
}
@GetMapping("/")
public List<Person> list() {
return people;
}
@PostMapping("/")
public List<Person> add(@RequestBody Person p) {
if (!people.contains(p)) {
people.add(p);
}
return people;
}
}

View file

@ -1,79 +0,0 @@
/*
* Copyright 2021 Delft University of Technology
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package server.api;
import java.util.List;
import java.util.Random;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import commons.Quote;
import server.database.QuoteRepository;
@RestController
@RequestMapping("/api/quotes")
public class QuoteController {
private final Random random;
private final QuoteRepository repo;
public QuoteController(Random random, QuoteRepository repo) {
this.random = random;
this.repo = repo;
}
@GetMapping(path = { "", "/" })
public List<Quote> getAll() {
return repo.findAll();
}
@GetMapping("/{id}")
public ResponseEntity<Quote> getById(@PathVariable("id") long id) {
if (id < 0 || !repo.existsById(id)) {
return ResponseEntity.badRequest().build();
}
return ResponseEntity.ok(repo.findById(id).get());
}
@PostMapping(path = { "", "/" })
public ResponseEntity<Quote> add(@RequestBody Quote quote) {
if (quote.person == null || isNullOrEmpty(quote.person.firstName) || isNullOrEmpty(quote.person.lastName)
|| isNullOrEmpty(quote.quote)) {
return ResponseEntity.badRequest().build();
}
Quote saved = repo.save(quote);
return ResponseEntity.ok(saved);
}
private static boolean isNullOrEmpty(String s) {
return s == null || s.isEmpty();
}
@GetMapping("rnd")
public ResponseEntity<Quote> getRandom() {
var quotes = repo.findAll();
var idx = random.nextInt((int) repo.count());
return ResponseEntity.ok(quotes.get(idx));
}
}

View file

@ -1,22 +0,0 @@
/*
* Copyright 2021 Delft University of Technology
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package server.database;
import org.springframework.data.jpa.repository.JpaRepository;
import commons.Quote;
public interface QuoteRepository extends JpaRepository<Quote, Long> {}

View file

@ -1,53 +0,0 @@
/**
* Copyright 2024 Sebastian Proksch
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package server.api;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import commons.Person;
public class PersonListingControllerTest {
private static final Person MICKEY = new Person("Mickey", "Mouse");
private static final Person DONALD = new Person("Donald", "Duck");
private static final Person SCROOGE = new Person("Scrooge", "McDuck");
private PersonListingController sut;
@BeforeEach
public void setup() {
sut = new PersonListingController();
}
@Test
public void containsTwoDefaultNames() {
var actual = sut.list();
var expected = List.of(MICKEY, DONALD);
assertEquals(expected, actual);
}
@Test
public void canAddPeople() {
var actual = sut.add(SCROOGE);
var expected = List.of(MICKEY, DONALD, SCROOGE);
assertEquals(expected, actual);
}
}

View file

@ -1,83 +0,0 @@
/*
* Copyright 2021 Delft University of Technology
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package server.api;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.springframework.http.HttpStatus.BAD_REQUEST;
import java.util.Random;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import commons.Person;
import commons.Quote;
public class QuoteControllerTest {
public int nextInt;
private MyRandom random;
private TestQuoteRepository repo;
private QuoteController sut;
@BeforeEach
public void setup() {
random = new MyRandom();
repo = new TestQuoteRepository();
sut = new QuoteController(random, repo);
}
@Test
public void cannotAddNullPerson() {
var actual = sut.add(getQuote(null));
assertEquals(BAD_REQUEST, actual.getStatusCode());
}
@Test
public void randomSelection() {
sut.add(getQuote("q1"));
sut.add(getQuote("q2"));
nextInt = 1;
var actual = sut.getRandom();
assertTrue(random.wasCalled);
assertEquals("q2", actual.getBody().quote);
}
@Test
public void databaseIsUsed() {
sut.add(getQuote("q1"));
repo.calledMethods.contains("save");
}
private static Quote getQuote(String q) {
return new Quote(new Person(q, q), q);
}
@SuppressWarnings("serial")
public class MyRandom extends Random {
public boolean wasCalled = false;
@Override
public int nextInt(int bound) {
wasCalled = true;
return nextInt;
}
}
}

View file

@ -1,225 +0,0 @@
/*
* Copyright 2021 Delft University of Technology
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package server.api;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.repository.query.FluentQuery.FetchableFluentQuery;
import commons.Quote;
import server.database.QuoteRepository;
public class TestQuoteRepository implements QuoteRepository {
public final List<Quote> quotes = new ArrayList<>();
public final List<String> calledMethods = new ArrayList<>();
private void call(String name) {
calledMethods.add(name);
}
@Override
public List<Quote> findAll() {
calledMethods.add("findAll");
return quotes;
}
@Override
public List<Quote> findAll(Sort sort) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Quote> findAllById(Iterable<Long> ids) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Quote> List<S> saveAll(Iterable<S> entities) {
// TODO Auto-generated method stub
return null;
}
@Override
public void flush() {
// TODO Auto-generated method stub
}
@Override
public <S extends Quote> S saveAndFlush(S entity) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Quote> List<S> saveAllAndFlush(Iterable<S> entities) {
// TODO Auto-generated method stub
return null;
}
@Override
public void deleteAllInBatch(Iterable<Quote> entities) {
// TODO Auto-generated method stub
}
@Override
public void deleteAllByIdInBatch(Iterable<Long> ids) {
// TODO Auto-generated method stub
}
@Override
public void deleteAllInBatch() {
// TODO Auto-generated method stub
}
@Override
public Quote getOne(Long id) {
// TODO Auto-generated method stub
return null;
}
@Override
public Quote getById(Long id) {
call("getById");
return find(id).get();
}
@Override
public Quote getReferenceById(Long id) {
call("getReferenceById");
return find(id).get();
}
private Optional<Quote> find(Long id) {
return quotes.stream().filter(q -> q.id == id).findFirst();
}
@Override
public <S extends Quote> List<S> findAll(Example<S> example) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Quote> List<S> findAll(Example<S> example, Sort sort) {
// TODO Auto-generated method stub
return null;
}
@Override
public Page<Quote> findAll(Pageable pageable) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Quote> S save(S entity) {
call("save");
entity.id = (long) quotes.size();
quotes.add(entity);
return entity;
}
@Override
public Optional<Quote> findById(Long id) {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean existsById(Long id) {
call("existsById");
return find(id).isPresent();
}
@Override
public long count() {
return quotes.size();
}
@Override
public void deleteById(Long id) {
// TODO Auto-generated method stub
}
@Override
public void delete(Quote entity) {
// TODO Auto-generated method stub
}
@Override
public void deleteAllById(Iterable<? extends Long> ids) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll(Iterable<? extends Quote> entities) {
// TODO Auto-generated method stub
}
@Override
public void deleteAll() {
// TODO Auto-generated method stub
}
@Override
public <S extends Quote> Optional<S> findOne(Example<S> example) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Quote> Page<S> findAll(Example<S> example, Pageable pageable) {
// TODO Auto-generated method stub
return null;
}
@Override
public <S extends Quote> long count(Example<S> example) {
// TODO Auto-generated method stub
return 0;
}
@Override
public <S extends Quote> boolean exists(Example<S> example) {
// TODO Auto-generated method stub
return false;
}
@Override
public <S extends Quote, R> R findBy(Example<S> example, Function<FetchableFluentQuery<S>, R> queryFunction) {
// TODO Auto-generated method stub
return null;
}
}