diff --git a/.gitignore b/.gitignore index 63f9c20..46c31e8 100755 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,90 @@ target *.orig test-output *.log + +# Created by https://www.gitignore.io/api/maven,eclipse +# Edit at https://www.gitignore.io/?templates=maven,eclipse + +### Eclipse ### +.metadata +bin/ +tmp/ +*.tmp +*.bak +*.swp +*~.nib +local.properties +.settings/ +.loadpath +.recommenders + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# PyDev specific (Python IDE for Eclipse) +*.pydevproject + +# CDT-specific (C/C++ Development Tooling) +.cproject + +# CDT- autotools +.autotools + +# Java annotation processor (APT) +.factorypath + +# PDT-specific (PHP Development Tools) +.buildpath + +# sbteclipse plugin +.target + +# Tern plugin +.tern-project + +# TeXlipse plugin +.texlipse + +# STS (Spring Tool Suite) +.springBeans + +# Code Recommenders +.recommenders/ + +# Annotation Processing +.apt_generated/ + +# Scala IDE specific (Scala & Java development for Eclipse) +.cache-main +.scala_dependencies +.worksheet + +### Eclipse Patch ### +# Eclipse Core +.project + +# JDT-specific (Eclipse Java Development Tools) +.classpath + +# Annotation Processing +.apt_generated + +.sts4-cache/ + +### Maven ### +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar +.flattened-pom.xml + +# End of https://www.gitignore.io/api/maven,eclipse diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0..0000000 --- a/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100755 index 42e7c83..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -#Mon Apr 11 10:57:02 PDT 2011 -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.6 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.6 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs deleted file mode 100644 index f897a7f..0000000 --- a/.settings/org.eclipse.m2e.core.prefs +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/pom.xml b/pom.xml index 36615c2..0593318 100644 --- a/pom.xml +++ b/pom.xml @@ -1,4 +1,6 @@ - + 4.0.0 org.sonatype.oss @@ -29,13 +31,12 @@ wicket-fullcalendar-examples - 8.0.0 - 2.9.9 - 1.9.13 - 4.8.1 + 9.0.0-M4 + 2.10.3 + 5.6.0 9.2.19.v20160908 - 1.6.4 - 1.2.16 + 2.0.0-alpha1 + 2.13.1 @@ -44,39 +45,35 @@ wicket-core ${wicket.version} - - joda-time - joda-time - ${joda.version} + com.fasterxml.jackson.core + jackson-core + ${jackson.version} - - org.codehaus.jackson - jackson-core-asl + com.fasterxml.jackson.core + jackson-databind ${jackson.version} - org.codehaus.jackson - jackson-mapper-asl + com.fasterxml.jackson.core + jackson-annotations ${jackson.version} - - junit - junit + org.junit.jupiter + junit-jupiter-api ${junit.version} test - org.slf4j slf4j-log4j12 ${slf4j.version} - log4j - log4j + org.apache.logging.log4j + log4j-core ${log4j.version} @@ -143,10 +140,10 @@ true org.apache.maven.plugins maven-compiler-plugin - 3.1 + 3.8.1 - 1.6 - 1.6 + 1.8 + 1.8 true true diff --git a/wicket-fullcalendar-core/pom.xml b/wicket-fullcalendar-core/pom.xml index 618b8ad..ee2bb2c 100755 --- a/wicket-fullcalendar-core/pom.xml +++ b/wicket-fullcalendar-core/pom.xml @@ -1,4 +1,6 @@ - + 4.0.0 net.ftlines.wicket-fullcalendar @@ -17,29 +19,26 @@ - - joda-time - joda-time + com.fasterxml.jackson.core + jackson-core - - org.codehaus.jackson - jackson-core-asl + com.fasterxml.jackson.core + jackson-annotations - org.codehaus.jackson - jackson-mapper-asl + com.fasterxml.jackson.core + jackson-databind - org.apache.wicket wicket-core - junit - junit + org.junit.jupiter + junit-jupiter-api test diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/CalendarResponse.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/CalendarResponse.java index 1818794..612e7f2 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/CalendarResponse.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/CalendarResponse.java @@ -12,12 +12,13 @@ package net.ftlines.wicket.fullcalendar; +import java.io.Serializable; import java.util.Date; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.util.string.Strings; -public class CalendarResponse { +public class CalendarResponse implements Serializable { private final FullCalendar calendar; private final AjaxRequestTarget target; diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Config.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Config.java index 105f1b0..a29e47f 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Config.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Config.java @@ -13,6 +13,7 @@ package net.ftlines.wicket.fullcalendar; import java.io.Serializable; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -20,10 +21,9 @@ import java.util.List; import java.util.Map; -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonProperty; -import org.codehaus.jackson.annotate.JsonRawValue; -import org.joda.time.LocalTime; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonRawValue; public class Config implements Serializable { /** Use these to specify calendar column formats */ @@ -49,8 +49,8 @@ public static enum ColumnFormat { @JsonProperty private Map columnFormat = new HashMap(); - private LocalTime minTime; - private LocalTime maxTime; + private LocalDateTime minTime; + private LocalDateTime maxTime; private Integer firstHour; private Boolean allDaySlot; @@ -231,19 +231,19 @@ public ButtonText getButtonText() { return buttonText; } - public LocalTime getMinTime() { + public LocalDateTime getMinTime() { return minTime; } - public void setMinTime(LocalTime minTime) { + public void setMinTime(LocalDateTime minTime) { this.minTime = minTime; } - public LocalTime getMaxTime() { + public LocalDateTime getMaxTime() { return maxTime; } - public void setMaxTime(LocalTime maxTime) { + public void setMaxTime(LocalDateTime maxTime) { this.maxTime = maxTime; } diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Event.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Event.java index bf16a49..c594825 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Event.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Event.java @@ -13,20 +13,32 @@ package net.ftlines.wicket.fullcalendar; import java.io.Serializable; - -import org.joda.time.DateTime; +import java.time.LocalDateTime; public class Event implements Serializable { + @Override + public String toString() { + return "Event [id=" + id + ", title=" + title + ", allDay=" + allDay + ", start=" + start + ", end=" + end + + ", url=" + url + ", className=" + className + ", editable=" + editable + ", color=" + color + + ", backgroundColor=" + backgroundColor + ", borderColor=" + borderColor + ", textColor=" + textColor + + ", payload=" + payload + ", getId()=" + getId() + ", getTitle()=" + getTitle() + ", isAllDay()=" + + isAllDay() + ", getStart()=" + getStart() + ", getEnd()=" + getEnd() + ", getUrl()=" + getUrl() + + ", getClassName()=" + getClassName() + ", isEditable()=" + isEditable() + ", getColor()=" + getColor() + + ", getBackgroundColor()=" + getBackgroundColor() + ", getBorderColor()=" + getBorderColor() + + ", getTextColor()=" + getTextColor() + ", getPayload()=" + getPayload() + ", getClass()=" + getClass() + + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() + "]"; + } + private String id; private String title; private boolean allDay = false; - private DateTime start; + private LocalDateTime start; - private DateTime end; + private LocalDateTime end; private String url; @@ -70,20 +82,20 @@ public Event setAllDay(boolean allDay) { return this; } - public DateTime getStart() { + public LocalDateTime getStart() { return start; } - public Event setStart(DateTime start) { + public Event setStart(LocalDateTime start) { this.start = start; return this; } - public DateTime getEnd() { + public LocalDateTime getEnd() { return end; } - public Event setEnd(DateTime end) { + public Event setEnd(LocalDateTime end) { this.end = end; return this; } diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/EventProvider.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/EventProvider.java index f4d071a..0cfbb20 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/EventProvider.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/EventProvider.java @@ -13,12 +13,11 @@ package net.ftlines.wicket.fullcalendar; import java.io.Serializable; +import java.time.LocalDateTime; import java.util.Collection; -import org.joda.time.DateTime; - public interface EventProvider extends Serializable { - Collection getEvents(DateTime start, DateTime end); + Collection getEvents(LocalDateTime start, LocalDateTime end); Event getEventForId(String id) throws EventNotFoundException; } diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/EventSource.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/EventSource.java index 8d43393..597b274 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/EventSource.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/EventSource.java @@ -16,8 +16,8 @@ import java.util.HashMap; import java.util.Map; -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonRawValue; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonRawValue; import net.ftlines.wicket.fullcalendar.selector.EventSourceSelector; diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Json.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Json.java index a8de781..479a97d 100644 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Json.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/Json.java @@ -12,55 +12,36 @@ package net.ftlines.wicket.fullcalendar; -import java.io.File; import java.io.IOException; -import java.io.OutputStream; import java.io.Serializable; -import java.io.Writer; - -import org.codehaus.jackson.JsonEncoding; -import org.codehaus.jackson.JsonGenerator; -import org.codehaus.jackson.JsonProcessingException; -import org.codehaus.jackson.Version; -import org.codehaus.jackson.map.JsonSerializer; -import org.codehaus.jackson.map.MappingJsonFactory; -import org.codehaus.jackson.map.ObjectMapper; -import org.codehaus.jackson.map.SerializerProvider; -import org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion; -import org.codehaus.jackson.map.module.SimpleModule; -import org.joda.time.DateTime; -import org.joda.time.LocalTime; -import org.joda.time.format.ISODateTimeFormat; - +import java.time.LocalDateTime; +import java.time.LocalTime; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.Version; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.MappingJsonFactory; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.module.SimpleModule; + +@JsonSerialize +@JsonInclude(value = Include.NON_NULL) class Json { private Json() { } - private static class MyJsonFactory extends MappingJsonFactory { - @Override - public JsonGenerator createJsonGenerator(Writer out) throws IOException { - return super.createJsonGenerator(out).useDefaultPrettyPrinter(); - } - - @Override - public JsonGenerator createJsonGenerator(File f, JsonEncoding enc) throws IOException { - return super.createJsonGenerator(f, enc).useDefaultPrettyPrinter(); - } - - @Override - public JsonGenerator createJsonGenerator(OutputStream out, JsonEncoding enc) throws IOException { - return super.createJsonGenerator(out, enc).useDefaultPrettyPrinter(); - } - } - public static String toJson(Object object) { - ObjectMapper mapper = new ObjectMapper(new MyJsonFactory()); - SimpleModule module = new SimpleModule("fullcalendar", new Version(1, 0, 0, null)); + ObjectMapper mapper = new ObjectMapper(new MappingJsonFactory()); + SimpleModule module = new SimpleModule("fullcalendar", new Version(1, 0, 0, null, null, null)); module.addSerializer(new DateTimeSerializer()); module.addSerializer(new LocalTimeSerializer()); mapper.registerModule(module); - mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_NULL); String json = null; try { @@ -71,25 +52,25 @@ public static String toJson(Object object) { return json; } - public static class DateTimeSerializer extends JsonSerializer { + public static class DateTimeSerializer extends JsonSerializer { @Override - public void serialize(DateTime value, JsonGenerator jgen, SerializerProvider provider) throws IOException, - JsonProcessingException { - jgen.writeString(ISODateTimeFormat.dateTime().print(value)); + public void serialize(LocalDateTime value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeString(value.toString()); } @Override - public Class handledType() { - return DateTime.class; + public Class handledType() { + return LocalDateTime.class; } } public static class LocalTimeSerializer extends JsonSerializer { @Override - public void serialize(LocalTime value, JsonGenerator jgen, SerializerProvider provider) throws IOException, - JsonProcessingException { - jgen.writeString(value.toString("h:mmaa")); + public void serialize(LocalTime value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeString(value.toString()); } @Override diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/AbstractShiftedEventParam.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/AbstractShiftedEventParam.java index 8cdeb46..5f559ce 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/AbstractShiftedEventParam.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/AbstractShiftedEventParam.java @@ -12,12 +12,13 @@ package net.ftlines.wicket.fullcalendar.callback; +import java.time.Duration; +import java.time.LocalDateTime; +import java.time.Period; + import net.ftlines.wicket.fullcalendar.Event; import net.ftlines.wicket.fullcalendar.EventSource; -import org.joda.time.DateTime; -import org.joda.time.Period; - class AbstractShiftedEventParam extends AbstractEventParam { private final int daysDelta; private final int minutesDelta; @@ -36,19 +37,19 @@ public int getMinutesDelta() { return minutesDelta; } - public DateTime getNewStartTime() { + public LocalDateTime getNewStartTime() { return shift(getEvent().getStart()); } - public DateTime getNewEndTime() { + public LocalDateTime getNewEndTime() { return shift(getEvent().getEnd()); } public Period getDelta() { - return Period.days(daysDelta).plusMinutes(minutesDelta); + return Period.ofDays(daysDelta).plus(Duration.ofMinutes(minutesDelta)); } - private DateTime shift(DateTime start) { + private LocalDateTime shift(LocalDateTime start) { return start.plusDays(daysDelta).plusMinutes(minutesDelta); } diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/DateRangeSelectedCallback.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/DateRangeSelectedCallback.java index 75938aa..7210705 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/DateRangeSelectedCallback.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/DateRangeSelectedCallback.java @@ -12,12 +12,13 @@ package net.ftlines.wicket.fullcalendar.callback; -import net.ftlines.wicket.fullcalendar.CalendarResponse; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.request.Request; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; + +import net.ftlines.wicket.fullcalendar.CalendarResponse; public abstract class DateRangeSelectedCallback extends AbstractAjaxCallback implements CallbackWithHandler { private final boolean ignoreTimezone; @@ -36,10 +37,8 @@ public DateRangeSelectedCallback(final boolean ignoreTimezone) { @Override protected String configureCallbackScript(String script, String urlTail) { - return script - .replace( - urlTail, - "&timezoneOffset=\"+startDate.getTimezoneOffset()+\"&startDate=\"+startDate.getTime()+\"&endDate=\"+endDate.getTime()+\"&allDay=\"+allDay+\""); + return script.replace(urlTail, + "&timezoneOffset=\"+startDate.getTimezoneOffset()+\"&startDate=\"+startDate.getTime()+\"&endDate=\"+endDate.getTime()+\"&allDay=\"+allDay+\""); } @Override @@ -51,13 +50,15 @@ public String getHandlerScript() { protected void respond(AjaxRequestTarget target) { Request r = getCalendar().getRequest(); - DateTime start = new DateTime(r.getRequestParameters().getParameterValue("startDate").toLong()); - DateTime end = new DateTime(r.getRequestParameters().getParameterValue("endDate").toLong()); + LocalDateTime start = LocalDateTime + .parse(r.getRequestParameters().getParameterValue("startDate").toOptionalString()); + LocalDateTime end = LocalDateTime + .parse(r.getRequestParameters().getParameterValue("endDate").toOptionalString()); if (ignoreTimezone) { // Convert to same DateTime in local time zone. int remoteOffset = -r.getRequestParameters().getParameterValue("timezoneOffset").toInt(); - int localOffset = DateTimeZone.getDefault().getOffset(null) / 60000; + int localOffset = OffsetDateTime.now().getOffset().getTotalSeconds() / 60000; int minutesAdjustment = remoteOffset - localOffset; start = start.plusMinutes(minutesAdjustment); end = end.plusMinutes(minutesAdjustment); diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/GetEventsCallback.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/GetEventsCallback.java index 72357c1..9063985 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/GetEventsCallback.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/GetEventsCallback.java @@ -12,14 +12,15 @@ package net.ftlines.wicket.fullcalendar.callback; -import net.ftlines.wicket.fullcalendar.EventProvider; -import net.ftlines.wicket.fullcalendar.EventSource; +import java.time.LocalDateTime; +import java.time.OffsetDateTime; import org.apache.wicket.request.Request; import org.apache.wicket.request.handler.TextRequestHandler; import org.apache.wicket.util.collections.MicroMap; -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; + +import net.ftlines.wicket.fullcalendar.EventProvider; +import net.ftlines.wicket.fullcalendar.EventSource; public class GetEventsCallback extends AbstractCallback { private static final String SOURCE_ID = "sid"; @@ -31,15 +32,16 @@ public String getUrl(EventSource source) { @Override protected void respond() { Request r = getCalendar().getRequest(); - String sid = r.getRequestParameters().getParameterValue(SOURCE_ID).toString(); - DateTime start = new DateTime(r.getRequestParameters().getParameterValue("start").toLong()); - DateTime end = new DateTime(r.getRequestParameters().getParameterValue("end").toLong()); + LocalDateTime start = LocalDateTime + .parse(r.getRequestParameters().getParameterValue("startDate").toOptionalString()); + LocalDateTime end = LocalDateTime + .parse(r.getRequestParameters().getParameterValue("endDate").toOptionalString()); if (getCalendar().getConfig().isIgnoreTimezone()) { // Convert to same DateTime in local time zone. int remoteOffset = -r.getRequestParameters().getParameterValue("timezoneOffset").toInt(); - int localOffset = DateTimeZone.getDefault().getOffset(null) / 60000; + int localOffset = OffsetDateTime.now().getOffset().getTotalSeconds() / 60000; int minutesAdjustment = remoteOffset - localOffset; start = start.plusMinutes(minutesAdjustment); end = end.plusMinutes(minutesAdjustment); @@ -48,8 +50,8 @@ protected void respond() { EventProvider provider = source.getEventProvider(); String response = getCalendar().toJson(provider.getEvents(start, end)); - getCalendar().getRequestCycle().scheduleRequestHandlerAfterCurrent( - new TextRequestHandler("application/json", "UTF-8", response)); + getCalendar().getRequestCycle() + .scheduleRequestHandlerAfterCurrent(new TextRequestHandler("application/json", "UTF-8", response)); } } diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/SelectedRange.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/SelectedRange.java index bbae16a..c418491 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/SelectedRange.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/SelectedRange.java @@ -12,32 +12,32 @@ package net.ftlines.wicket.fullcalendar.callback; -import org.joda.time.DateTime; +import java.time.LocalDateTime; public class SelectedRange { - private DateTime start; - private DateTime end; + private LocalDateTime start; + private LocalDateTime end; private boolean allDay; - public SelectedRange(DateTime start, DateTime end, boolean allDay) { + public SelectedRange(LocalDateTime start, LocalDateTime end, boolean allDay) { this.start = start; this.end = end; this.allDay = allDay; } - public DateTime getStart() { + public LocalDateTime getStart() { return start; } - public void setStart(DateTime start) { + public void setStart(LocalDateTime start) { this.start = start; } - public DateTime getEnd() { + public LocalDateTime getEnd() { return end; } - public void setEnd(DateTime end) { + public void setEnd(LocalDateTime end) { this.end = end; } diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/View.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/View.java index 516b1c3..765da8d 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/View.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/View.java @@ -12,18 +12,19 @@ package net.ftlines.wicket.fullcalendar.callback; -import net.ftlines.wicket.fullcalendar.ViewType; +import java.time.LocalDateTime; -import org.joda.time.DateMidnight; +import net.ftlines.wicket.fullcalendar.ViewType; public class View { private ViewType type; - private DateMidnight start; - private DateMidnight end; - private DateMidnight visibleStart; - private DateMidnight visibleEnd; + private LocalDateTime start; + private LocalDateTime end; + private LocalDateTime visibleStart; + private LocalDateTime visibleEnd; - public View(ViewType type, DateMidnight start, DateMidnight end, DateMidnight visibleStart, DateMidnight visibleEnd) { + public View(ViewType type, LocalDateTime start, LocalDateTime end, LocalDateTime visibleStart, + LocalDateTime visibleEnd) { this.type = type; this.start = start; this.end = end; @@ -35,19 +36,19 @@ public ViewType getType() { return type; } - public DateMidnight getStart() { + public LocalDateTime getStart() { return start; } - public DateMidnight getEnd() { + public LocalDateTime getEnd() { return end; } - public DateMidnight getVisibleStart() { + public LocalDateTime getVisibleStart() { return visibleStart; } - public DateMidnight getVisibleEnd() { + public LocalDateTime getVisibleEnd() { return visibleEnd; } diff --git a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/ViewDisplayCallback.java b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/ViewDisplayCallback.java index 213e86c..c1d035b 100755 --- a/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/ViewDisplayCallback.java +++ b/wicket-fullcalendar-core/src/main/java/net/ftlines/wicket/fullcalendar/callback/ViewDisplayCallback.java @@ -12,15 +12,15 @@ package net.ftlines.wicket.fullcalendar.callback; -import net.ftlines.wicket.fullcalendar.CalendarResponse; -import net.ftlines.wicket.fullcalendar.ViewType; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.request.Request; -import org.joda.time.DateMidnight; -import org.joda.time.DateTimeZone; -import org.joda.time.format.DateTimeFormatter; -import org.joda.time.format.ISODateTimeFormat; + +import net.ftlines.wicket.fullcalendar.CalendarResponse; +import net.ftlines.wicket.fullcalendar.ViewType; /** * A base callback that passes back calendar's starting date @@ -31,10 +31,8 @@ public abstract class ViewDisplayCallback extends AbstractAjaxCallback implements CallbackWithHandler { @Override protected String configureCallbackScript(String script, String urlTail) { - return script - .replace( - urlTail, - "&view=\"+v.name+\"&start=\"+fullCalendarExtIsoDate(v.start)+\"&end=\"+fullCalendarExtIsoDate(v.end)+\"&visibleStart=\"+fullCalendarExtIsoDate(v.visStart)+\"&visibleEnd=\"+fullCalendarExtIsoDate(v.visEnd)+\""); + return script.replace(urlTail, + "&view=\"+v.name+\"&start=\"+fullCalendarExtIsoDate(v.start)+\"&end=\"+fullCalendarExtIsoDate(v.end)+\"&visibleStart=\"+fullCalendarExtIsoDate(v.visStart)+\"&visibleEnd=\"+fullCalendarExtIsoDate(v.visEnd)+\""); } @Override @@ -46,15 +44,13 @@ public String getHandlerScript() { protected void respond(AjaxRequestTarget target) { Request r = target.getPage().getRequest(); ViewType type = ViewType.forCode(r.getRequestParameters().getParameterValue("view").toString()); - DateTimeFormatter fmt = ISODateTimeFormat.dateTimeParser().withZone(DateTimeZone.UTC); - DateMidnight start = fmt.parseDateTime(r.getRequestParameters().getParameterValue("start").toString()) - .toDateMidnight(); - DateMidnight end = fmt.parseDateTime(r.getRequestParameters().getParameterValue("end").toString()) - .toDateMidnight(); - DateMidnight visibleStart = fmt.parseDateTime( - r.getRequestParameters().getParameterValue("visibleStart").toString()).toDateMidnight(); - DateMidnight visibleEnd = fmt - .parseDateTime(r.getRequestParameters().getParameterValue("visibleEnd").toString()).toDateMidnight(); + DateTimeFormatter fmt = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL); + LocalDateTime start = LocalDateTime.parse(r.getRequestParameters().getParameterValue("start").toString(), fmt); + LocalDateTime end = LocalDateTime.parse(r.getRequestParameters().getParameterValue("end").toString(), fmt); + LocalDateTime visibleStart = LocalDateTime + .parse(r.getRequestParameters().getParameterValue("visibleStart").toString(), fmt); + LocalDateTime visibleEnd = LocalDateTime + .parse(r.getRequestParameters().getParameterValue("visibleEnd").toString(), fmt); View view = new View(type, start, end, visibleStart, visibleEnd); CalendarResponse response = new CalendarResponse(getCalendar(), target); onViewDisplayed(view, response); diff --git a/wicket-fullcalendar-core/src/test/java/net/ftlines/wicket/fullcalendar/DummyTest.java b/wicket-fullcalendar-core/src/test/java/net/ftlines/wicket/fullcalendar/DummyTest.java index d7978ca..8212a7f 100755 --- a/wicket-fullcalendar-core/src/test/java/net/ftlines/wicket/fullcalendar/DummyTest.java +++ b/wicket-fullcalendar-core/src/test/java/net/ftlines/wicket/fullcalendar/DummyTest.java @@ -12,11 +12,10 @@ package net.ftlines.wicket.fullcalendar; -import org.junit.Test; +import org.junit.jupiter.api.Test; /** - * Dummy test to make bamboo happy because its fails if it doesnt find any test - * artifacts + * Dummy test to make bamboo happy because its fails if it doesnt find any test artifacts * * @author igor * diff --git a/wicket-fullcalendar-examples/.settings/org.eclipse.wst.common.component b/wicket-fullcalendar-examples/.settings/org.eclipse.wst.common.component index fef09d4..300e2f2 100644 --- a/wicket-fullcalendar-examples/.settings/org.eclipse.wst.common.component +++ b/wicket-fullcalendar-examples/.settings/org.eclipse.wst.common.component @@ -1,13 +1,22 @@ - + + + + + + - + uses + + + + diff --git a/wicket-fullcalendar-examples/pom.xml b/wicket-fullcalendar-examples/pom.xml index d72f69b..49a1f93 100755 --- a/wicket-fullcalendar-examples/pom.xml +++ b/wicket-fullcalendar-examples/pom.xml @@ -1,4 +1,6 @@ - + 4.0.0 net.ftlines.wicket-fullcalendar @@ -8,7 +10,7 @@ wicket-fullcalendar-examples war Wicket-FullCalendar Examples - Provides examples and usages + Provides examples and usages The Apache Software License, Version 2.0 @@ -34,17 +36,15 @@ slf4j-log4j12 - log4j - log4j + org.apache.logging.log4j + log4j-core - - junit - junit + org.junit.jupiter + junit-jupiter-api test - - + org.eclipse.jetty.aggregate jetty-all test diff --git a/wicket-fullcalendar-examples/src/main/java/net/ftlines/wicket/fullcalendar/HomePage.java b/wicket-fullcalendar-examples/src/main/java/net/ftlines/wicket/fullcalendar/HomePage.java index 1ebfc23..ce0e375 100644 --- a/wicket-fullcalendar-examples/src/main/java/net/ftlines/wicket/fullcalendar/HomePage.java +++ b/wicket-fullcalendar-examples/src/main/java/net/ftlines/wicket/fullcalendar/HomePage.java @@ -13,10 +13,16 @@ package net.ftlines.wicket.fullcalendar; import java.security.SecureRandom; +import java.time.Duration; +import java.time.LocalDateTime; +import java.time.ZoneId; import java.util.Collection; import java.util.HashMap; import java.util.Map; +import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.markup.html.panel.FeedbackPanel; + import net.ftlines.wicket.fullcalendar.callback.ClickedEvent; import net.ftlines.wicket.fullcalendar.callback.DroppedEvent; import net.ftlines.wicket.fullcalendar.callback.ResizedEvent; @@ -24,12 +30,6 @@ import net.ftlines.wicket.fullcalendar.callback.View; import net.ftlines.wicket.fullcalendar.selector.EventSourceSelector; -import org.apache.wicket.markup.html.WebPage; -import org.apache.wicket.markup.html.panel.FeedbackPanel; -import org.apache.wicket.util.time.Duration; -import org.joda.time.DateTime; -import org.joda.time.LocalTime; - public class HomePage extends WebPage { public HomePage() { @@ -44,8 +44,7 @@ public HomePage() { EventSource reservations = new EventSource(); reservations.setTitle("Reservations"); - reservations - .setEventsProvider(new RandomEventsProvider("Reservation ")); + reservations.setEventsProvider(new RandomEventsProvider("Reservation ")); reservations.setEditable(true); reservations.setBackgroundColor("#63BA68"); reservations.setBorderColor("#63BA68"); @@ -73,66 +72,56 @@ public HomePage() { config.setLoading("function(bool) { if (bool) $(\"#loading\").show(); else $(\"#loading\").hide(); }"); - config.setMinTime(new LocalTime(6, 30)); - config.setMaxTime(new LocalTime(17, 30)); + config.setMinTime(LocalDateTime.now().withHour(6).withMinute(30)); + config.setMaxTime(LocalDateTime.now().withHour(17).withMinute(30)); config.setAllDaySlot(false); FullCalendar calendar = new FullCalendar("cal", config) { @Override - - protected void onDateRangeSelected(SelectedRange range, - CalendarResponse response) { - info("Selected region: " + range.getStart() + " - " - + range.getEnd() + " / allDay: " + range.isAllDay()); - + + protected void onDateRangeSelected(SelectedRange range, CalendarResponse response) { + info( + "Selected region: " + range.getStart() + " - " + range.getEnd() + " / allDay: " + range.isAllDay()); + response.getTarget().add(feedback); } @Override - - protected boolean onEventDropped(DroppedEvent event, - CalendarResponse response) { - info("Event drop. eventId: " + event.getEvent().getId() - + " sourceId: " + event.getSource().getUuid() - + " dayDelta: " + event.getDaysDelta() - + " minuteDelta: " + event.getMinutesDelta() - + " allDay: " + event.isAllDay()); - info("Original start time: " + event.getEvent().getStart() - + ", original end time: " + event.getEvent().getEnd()); - info("New start time: " + event.getNewStartTime() - + ", new end time: " + event.getNewEndTime()); - + + protected boolean onEventDropped(DroppedEvent event, CalendarResponse response) { + info("Event drop. eventId: " + event.getEvent().getId() + " sourceId: " + event.getSource().getUuid() + + " dayDelta: " + event.getDaysDelta() + " minuteDelta: " + event.getMinutesDelta() + " allDay: " + + event.isAllDay()); + info("Original start time: " + event.getEvent().getStart() + ", original end time: " + + event.getEvent().getEnd()); + info("New start time: " + event.getNewStartTime() + ", new end time: " + event.getNewEndTime()); + response.getTarget().add(feedback); return false; } @Override - - protected boolean onEventResized(ResizedEvent event, - CalendarResponse response) { - info("Event resized. eventId: " + event.getEvent().getId() - + " sourceId: " + event.getSource().getUuid() - + " dayDelta: " + event.getDaysDelta() - + " minuteDelta: " + event.getMinutesDelta()); + + protected boolean onEventResized(ResizedEvent event, CalendarResponse response) { + info("Event resized. eventId: " + event.getEvent().getId() + " sourceId: " + event.getSource().getUuid() + + " dayDelta: " + event.getDaysDelta() + " minuteDelta: " + event.getMinutesDelta()); response.getTarget().add(feedback); return false; } @Override - - protected void onEventClicked(ClickedEvent event, - CalendarResponse response) { - info("Event clicked. eventId: " + event.getEvent().getId() - + ", sourceId: " + event.getSource().getUuid()); + + protected void onEventClicked(ClickedEvent event, CalendarResponse response) { + info("Event clicked. eventId: " + event.getEvent().getId() + ", sourceId: " + + event.getSource().getUuid()); response.refetchEvents(); response.getTarget().add(feedback); } @Override protected void onViewDisplayed(View view, CalendarResponse response) { - - info("View displayed. viewType: " + view.getType().name() - + ", start: " + view.getStart() + ", end: " - + view.getEnd()); + + info("View displayed. viewType: " + view.getType().name() + ", start: " + view.getStart() + ", end: " + + view.getEnd()); response.getTarget().add(feedback); } }; @@ -151,21 +140,20 @@ public RandomEventsProvider(String title) { } @Override - public Collection getEvents(DateTime start, DateTime end) { + public Collection getEvents(LocalDateTime start, LocalDateTime end) { events.clear(); SecureRandom random = new SecureRandom(); - Duration duration = Duration.valueOf(end.getMillis() - - start.getMillis()); + Duration duration = Duration.ofMillis(end.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli() + - start.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()); for (int j = 0; j < 1; j++) { - for (int i = 0; i < duration.days() + 1; i++) { - DateTime calendar = start; - calendar = calendar.plusDays(i).withHourOfDay( - 6 + random.nextInt(10)); + for (int i = 0; i < duration.toDays() + 1; i++) { + LocalDateTime calendar = start; + calendar = calendar.plusDays(i).withHour(6 + random.nextInt(10)); Event event = new Event(); - int id = (int) (j * duration.days() + i); + int id = (int) (j * duration.toDays() + i); event.setId("" + id); event.setTitle(title + (1 + i)); event.setStart(calendar); @@ -185,8 +173,7 @@ public Event getEventForId(String id) throws EventNotFoundException { if (event != null) { return event; } - throw new EventNotFoundException("Event with id: " + id - + " not found"); + throw new EventNotFoundException("Event with id: " + id + " not found"); } }