Commit c57e7f94 by Patryk Czarnik

Odczyt czasu - jedna zmienna na poziomie klasy

parent e84b94c1
...@@ -2,53 +2,72 @@ package hello; ...@@ -2,53 +2,72 @@ package hello;
import jakarta.ws.rs.GET; import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path; import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime; import java.time.LocalTime;
@Path("/now") @Path("/now")
@Produces("text/plain;charset=UTF-8")
// @Singleton
public class DataCzas { public class DataCzas {
// W JAX-RS domyślne zachowanie jest takie, że dla każdego requestu tworzony jest nowy obiekt klasy obsługującej zapytania.
// (polityka "per request"; można ją zmienić za pomocą adnotacji @Singleton - wtedy jeden obiekt obsłuży wszystkie zapytania)
// Daje to możliwość zapisania pewnych ulotnych informacji w polach prywatnych tej klasy - nikt nam ich nie nadpisze.
private LocalDateTime now = LocalDateTime.now();
{
// ten blok wykona się podczas tworzenia każdego obiektu
System.out.println("Powstał obiekt DataCzas z czasem równym " + now);
}
// ta metoda obsługuje adres .../api/now // ta metoda obsługuje adres .../api/now
@GET @GET
public String odczytajDataICzas() { public LocalDateTime odczytajDataICzas() {
return LocalDateTime.now().toString(); return now;
} }
// ta metoda obsługuje adres .../api/now/date // ta metoda obsługuje adres .../api/now/date
@GET @GET
@Path("/date") @Path("/date")
public String odczytajDate() { public LocalDate odczytajDate() {
return LocalDate.now().toString(); return now.toLocalDate();
} }
// ta metoda obsługuje adres .../api/now/date/year // ta metoda obsługuje adres .../api/now/date/year
@GET @GET
@Path("/date/year") @Path("/date/year")
public int odczytajRok() { public int odczytajRok() {
return LocalDate.now().getYear(); return now.getYear();
} }
// ta metoda obsługuje adres .../api/now/date/month // ta metoda obsługuje adres .../api/now/date/month
@GET @GET
@Path("/date/month") @Path("/date/month")
public int odczytajMiesiac() { public int odczytajMiesiac() {
return LocalDate.now().getMonthValue(); return now.getMonthValue();
} }
// ta metoda obsługuje adres .../api/now/date/day // ta metoda obsługuje adres .../api/now/date/day
@GET @GET
@Path("/date/day") @Path("/date/day")
public int odczytajDzien() { public int odczytajDzien() {
return LocalDate.now().getDayOfMonth(); return now.getDayOfMonth();
} }
// ta metoda obsługuje adres .../api/now/time // ta metoda obsługuje adres .../api/now/time
@GET @GET
@Path("/time") @Path("/time")
public String odczytajCzas() { public LocalTime odczytajCzas() {
return LocalTime.now().toString(); return now.toLocalTime();
}
// ta metoda obsługuje adres .../api/now/time/second
@GET
@Path("/time/second")
public int odczytajSekunde() {
return now.getSecond();
} }
} }
...@@ -3,6 +3,8 @@ package hello; ...@@ -3,6 +3,8 @@ package hello;
import jakarta.ws.rs.ApplicationPath; import jakarta.ws.rs.ApplicationPath;
import jakarta.ws.rs.core.Application; import jakarta.ws.rs.core.Application;
import java.util.Set;
// Ta klasa stanowi ogólną konfigurację usługi REST // Ta klasa stanowi ogólną konfigurację usługi REST
// Musi dziedziczyć z klasy Application i posiadać adnotację @ApplicationPath // Musi dziedziczyć z klasy Application i posiadać adnotację @ApplicationPath
// W @ApplicationPath podajemy ogólny prefiks umieszczony przed wszystkimi adresami zasobów restowych. // W @ApplicationPath podajemy ogólny prefiks umieszczony przed wszystkimi adresami zasobów restowych.
...@@ -11,5 +13,4 @@ import jakarta.ws.rs.core.Application; ...@@ -11,5 +13,4 @@ import jakarta.ws.rs.core.Application;
// to zapytania mają być wysyłane pod /ADRES-APLIKCAJI-NA-SERWRERZE/api/products // to zapytania mają być wysyłane pod /ADRES-APLIKCAJI-NA-SERWRERZE/api/products
@ApplicationPath("/api") @ApplicationPath("/api")
public class HelloApplication extends Application { public class HelloApplication extends Application {
} }
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment