Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
352af1c6c5
|
@ -28,8 +28,14 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>3.8.1</version>
|
<version>4.12</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
|
<exclusions>
|
||||||
|
<exclusion>
|
||||||
|
<artifactId>hamcrest-core</artifactId>
|
||||||
|
<groupId>org.hamcrest</groupId>
|
||||||
|
</exclusion>
|
||||||
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package com.baeldung.datetime;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class which shows different ways of converting java.util.Date into java.time.LocalDate.
|
|
||||||
*
|
|
||||||
* @author abialas
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class DateToLocalDateConverter {
|
|
||||||
|
|
||||||
public static LocalDate convertToLocalDateViaInstant(Date dateToConvert) {
|
|
||||||
return dateToConvert.toInstant()
|
|
||||||
.atZone(ZoneId.systemDefault())
|
|
||||||
.toLocalDate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static LocalDate convertToLocalDateViaSqlDate(Date dateToConvert) {
|
|
||||||
return new java.sql.Date(dateToConvert.getTime()).toLocalDate();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static LocalDate convertToLocalDateViaMilisecond(Date dateToConvert) {
|
|
||||||
return Instant.ofEpochMilli(dateToConvert.getTime())
|
|
||||||
.atZone(ZoneId.systemDefault())
|
|
||||||
.toLocalDate();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,35 +0,0 @@
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package com.baeldung.datetime;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class which shows different ways of converting java.util.Date into java.time.LocalDateTime.
|
|
||||||
*
|
|
||||||
* @author abialas
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class DateToLocalDateTimeConverter {
|
|
||||||
|
|
||||||
public static LocalDateTime convertToLocalDateTimeViaInstant(Date dateToConvert) {
|
|
||||||
return dateToConvert.toInstant()
|
|
||||||
.atZone(ZoneId.systemDefault())
|
|
||||||
.toLocalDateTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static LocalDateTime convertToLocalDateTimeViaSqlTimestamp(Date dateToConvert) {
|
|
||||||
return new java.sql.Timestamp(dateToConvert.getTime()).toLocalDateTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static LocalDateTime convertToLocalDateTimeViaMilisecond(Date dateToConvert) {
|
|
||||||
return Instant.ofEpochMilli(dateToConvert.getTime())
|
|
||||||
.atZone(ZoneId.systemDefault())
|
|
||||||
.toLocalDateTime();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,72 +0,0 @@
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package com.baeldung.datetime;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
|
|
||||||
import java.time.LocalDate;
|
|
||||||
import java.time.temporal.ChronoField;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* JUnits for {@link DateToLocalDateConverter} class.
|
|
||||||
*
|
|
||||||
* @author abialas
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class DateToLocalDateConverterTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldReturn10thNovember2010WhenConvertViaInstant() {
|
|
||||||
// given
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
|
||||||
calendar.set(2010, 10, 10);
|
|
||||||
Date dateToConvert = calendar.getTime();
|
|
||||||
|
|
||||||
// when
|
|
||||||
LocalDate localDate = DateToLocalDateConverter.convertToLocalDateViaInstant(dateToConvert);
|
|
||||||
|
|
||||||
// then
|
|
||||||
assertEquals(2010, localDate.get(ChronoField.YEAR));
|
|
||||||
assertEquals(11, localDate.get(ChronoField.MONTH_OF_YEAR));
|
|
||||||
assertEquals(10, localDate.get(ChronoField.DAY_OF_MONTH));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldReturn10thNovember2010WhenConvertViaMiliseconds() {
|
|
||||||
// given
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
|
||||||
calendar.set(2010, 10, 10);
|
|
||||||
Date dateToConvert = calendar.getTime();
|
|
||||||
|
|
||||||
// when
|
|
||||||
LocalDate localDate = DateToLocalDateConverter.convertToLocalDateViaMilisecond(dateToConvert);
|
|
||||||
|
|
||||||
// then
|
|
||||||
assertEquals(2010, localDate.get(ChronoField.YEAR));
|
|
||||||
assertEquals(11, localDate.get(ChronoField.MONTH_OF_YEAR));
|
|
||||||
assertEquals(10, localDate.get(ChronoField.DAY_OF_MONTH));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldReturn10thNovember2010WhenConvertViaSqlDate() {
|
|
||||||
// given
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
|
||||||
calendar.set(2010, 10, 10);
|
|
||||||
Date dateToConvert = calendar.getTime();
|
|
||||||
|
|
||||||
// when
|
|
||||||
LocalDate localDate = DateToLocalDateConverter.convertToLocalDateViaSqlDate(dateToConvert);
|
|
||||||
|
|
||||||
// then
|
|
||||||
assertEquals(2010, localDate.get(ChronoField.YEAR));
|
|
||||||
assertEquals(11, localDate.get(ChronoField.MONTH_OF_YEAR));
|
|
||||||
assertEquals(10, localDate.get(ChronoField.DAY_OF_MONTH));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,78 +0,0 @@
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package com.baeldung.datetime;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
import java.time.temporal.ChronoField;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* JUnits for {@link DateToLocalDateTimeConverter} class.
|
|
||||||
*
|
|
||||||
* @author abialas
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class DateToLocalDateTimeConverterTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldReturn10thNovember2010time8hour20minWhenConvertViaInstant() {
|
|
||||||
// given
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
|
||||||
calendar.set(2010, 10, 10, 8, 20);
|
|
||||||
Date dateToConvert = calendar.getTime();
|
|
||||||
|
|
||||||
// when
|
|
||||||
LocalDateTime localDateTime = DateToLocalDateTimeConverter.convertToLocalDateTimeViaInstant(dateToConvert);
|
|
||||||
|
|
||||||
// then
|
|
||||||
assertEquals(2010, localDateTime.get(ChronoField.YEAR));
|
|
||||||
assertEquals(11, localDateTime.get(ChronoField.MONTH_OF_YEAR));
|
|
||||||
assertEquals(10, localDateTime.get(ChronoField.DAY_OF_MONTH));
|
|
||||||
assertEquals(8, localDateTime.get(ChronoField.HOUR_OF_DAY));
|
|
||||||
assertEquals(20, localDateTime.get(ChronoField.MINUTE_OF_HOUR));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldReturn10thNovember2010time8hour20minWhenConvertViaMiliseconds() {
|
|
||||||
// given
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
|
||||||
calendar.set(2010, 10, 10, 8, 20);
|
|
||||||
Date dateToConvert = calendar.getTime();
|
|
||||||
|
|
||||||
// when
|
|
||||||
LocalDateTime localDateTime = DateToLocalDateTimeConverter.convertToLocalDateTimeViaMilisecond(dateToConvert);
|
|
||||||
|
|
||||||
// then
|
|
||||||
assertEquals(2010, localDateTime.get(ChronoField.YEAR));
|
|
||||||
assertEquals(11, localDateTime.get(ChronoField.MONTH_OF_YEAR));
|
|
||||||
assertEquals(10, localDateTime.get(ChronoField.DAY_OF_MONTH));
|
|
||||||
assertEquals(8, localDateTime.get(ChronoField.HOUR_OF_DAY));
|
|
||||||
assertEquals(20, localDateTime.get(ChronoField.MINUTE_OF_HOUR));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void shouldReturn10thNovember2010time8hour20minWhenConvertViaSqlTimestamp() {
|
|
||||||
// given
|
|
||||||
Calendar calendar = Calendar.getInstance();
|
|
||||||
calendar.set(2010, 10, 10, 8, 20);
|
|
||||||
Date dateToConvert = calendar.getTime();
|
|
||||||
|
|
||||||
// when
|
|
||||||
LocalDateTime localDateTime = DateToLocalDateTimeConverter.convertToLocalDateTimeViaSqlTimestamp(dateToConvert);
|
|
||||||
|
|
||||||
// then
|
|
||||||
assertEquals(2010, localDateTime.get(ChronoField.YEAR));
|
|
||||||
assertEquals(11, localDateTime.get(ChronoField.MONTH_OF_YEAR));
|
|
||||||
assertEquals(10, localDateTime.get(ChronoField.DAY_OF_MONTH));
|
|
||||||
assertEquals(8, localDateTime.get(ChronoField.HOUR_OF_DAY));
|
|
||||||
assertEquals(20, localDateTime.get(ChronoField.MINUTE_OF_HOUR));
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -3,18 +3,35 @@
|
||||||
*/
|
*/
|
||||||
package com.baeldung.java9.datetime;
|
package com.baeldung.java9.datetime;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class which shows a way to convert java.util.Date into java.time.LocalDate with new Java 1.9.
|
* Class which shows a way to convert java.util.Date into java.time.LocalDate.
|
||||||
*
|
*
|
||||||
* @author abialas
|
* @author abialas
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class DateToLocalDateConverter {
|
public class DateToLocalDateConverter {
|
||||||
|
|
||||||
|
public static LocalDate convertToLocalDateViaInstant(Date dateToConvert) {
|
||||||
|
return dateToConvert.toInstant()
|
||||||
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LocalDate convertToLocalDateViaSqlDate(Date dateToConvert) {
|
||||||
|
return new java.sql.Date(dateToConvert.getTime()).toLocalDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LocalDate convertToLocalDateViaMilisecond(Date dateToConvert) {
|
||||||
|
return Instant.ofEpochMilli(dateToConvert.getTime())
|
||||||
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDate();
|
||||||
|
}
|
||||||
|
|
||||||
public static LocalDate convertToLocalDate(Date dateToConvert) {
|
public static LocalDate convertToLocalDate(Date dateToConvert) {
|
||||||
return LocalDate.ofInstant(dateToConvert.toInstant(), ZoneId.systemDefault());
|
return LocalDate.ofInstant(dateToConvert.toInstant(), ZoneId.systemDefault());
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,18 +3,35 @@
|
||||||
*/
|
*/
|
||||||
package com.baeldung.java9.datetime;
|
package com.baeldung.java9.datetime;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class which shows a way to convert java.util.Date into java.time.LocalDateTime with new Java 1.9.
|
* Class which shows a way to convert java.util.Date into java.time.LocalDateTime.
|
||||||
*
|
*
|
||||||
* @author abialas
|
* @author abialas
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class DateToLocalDateTimeConverter {
|
public class DateToLocalDateTimeConverter {
|
||||||
|
|
||||||
|
public static LocalDateTime convertToLocalDateTimeViaInstant(Date dateToConvert) {
|
||||||
|
return dateToConvert.toInstant()
|
||||||
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDateTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LocalDateTime convertToLocalDateTimeViaSqlTimestamp(Date dateToConvert) {
|
||||||
|
return new java.sql.Timestamp(dateToConvert.getTime()).toLocalDateTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static LocalDateTime convertToLocalDateTimeViaMilisecond(Date dateToConvert) {
|
||||||
|
return Instant.ofEpochMilli(dateToConvert.getTime())
|
||||||
|
.atZone(ZoneId.systemDefault())
|
||||||
|
.toLocalDateTime();
|
||||||
|
}
|
||||||
|
|
||||||
public static LocalDateTime convertToLocalDateTime(Date dateToConvert) {
|
public static LocalDateTime convertToLocalDateTime(Date dateToConvert) {
|
||||||
return LocalDateTime.ofInstant(dateToConvert.toInstant(), ZoneId.systemDefault());
|
return LocalDateTime.ofInstant(dateToConvert.toInstant(), ZoneId.systemDefault());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package com.baeldung.datetime;
|
package com.baeldung.java9.datetime;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package com.baeldung.datetime;
|
package com.baeldung.java9.datetime;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
|
@ -22,6 +22,54 @@ import com.baeldung.java9.datetime.DateToLocalDateConverter;
|
||||||
*/
|
*/
|
||||||
public class DateToLocalDateConverterTest {
|
public class DateToLocalDateConverterTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldReturn10thNovember2010WhenConvertViaInstant() {
|
||||||
|
// given
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.set(2010, 10, 10);
|
||||||
|
Date dateToConvert = calendar.getTime();
|
||||||
|
|
||||||
|
// when
|
||||||
|
LocalDate localDate = DateToLocalDateConverter.convertToLocalDateViaInstant(dateToConvert);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals(2010, localDate.get(ChronoField.YEAR));
|
||||||
|
assertEquals(11, localDate.get(ChronoField.MONTH_OF_YEAR));
|
||||||
|
assertEquals(10, localDate.get(ChronoField.DAY_OF_MONTH));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldReturn10thNovember2010WhenConvertViaMiliseconds() {
|
||||||
|
// given
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.set(2010, 10, 10);
|
||||||
|
Date dateToConvert = calendar.getTime();
|
||||||
|
|
||||||
|
// when
|
||||||
|
LocalDate localDate = DateToLocalDateConverter.convertToLocalDateViaMilisecond(dateToConvert);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals(2010, localDate.get(ChronoField.YEAR));
|
||||||
|
assertEquals(11, localDate.get(ChronoField.MONTH_OF_YEAR));
|
||||||
|
assertEquals(10, localDate.get(ChronoField.DAY_OF_MONTH));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldReturn10thNovember2010WhenConvertViaSqlDate() {
|
||||||
|
// given
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.set(2010, 10, 10);
|
||||||
|
Date dateToConvert = calendar.getTime();
|
||||||
|
|
||||||
|
// when
|
||||||
|
LocalDate localDate = DateToLocalDateConverter.convertToLocalDateViaSqlDate(dateToConvert);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals(2010, localDate.get(ChronoField.YEAR));
|
||||||
|
assertEquals(11, localDate.get(ChronoField.MONTH_OF_YEAR));
|
||||||
|
assertEquals(10, localDate.get(ChronoField.DAY_OF_MONTH));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shouldReturn10thNovember2010WhenConvertToLocalDate() {
|
public void shouldReturn10thNovember2010WhenConvertToLocalDate() {
|
||||||
// given
|
// given
|
||||||
|
|
|
@ -29,6 +29,60 @@ public class DateToLocalDateTimeConverterTest {
|
||||||
calendar.set(2010, 10, 10, 8, 20);
|
calendar.set(2010, 10, 10, 8, 20);
|
||||||
Date dateToConvert = calendar.getTime();
|
Date dateToConvert = calendar.getTime();
|
||||||
|
|
||||||
|
// when
|
||||||
|
LocalDateTime localDateTime = DateToLocalDateTimeConverter.convertToLocalDateTimeViaInstant(dateToConvert);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals(2010, localDateTime.get(ChronoField.YEAR));
|
||||||
|
assertEquals(11, localDateTime.get(ChronoField.MONTH_OF_YEAR));
|
||||||
|
assertEquals(10, localDateTime.get(ChronoField.DAY_OF_MONTH));
|
||||||
|
assertEquals(8, localDateTime.get(ChronoField.HOUR_OF_DAY));
|
||||||
|
assertEquals(20, localDateTime.get(ChronoField.MINUTE_OF_HOUR));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldReturn10thNovember2010time8hour20minWhenConvertViaMiliseconds() {
|
||||||
|
// given
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.set(2010, 10, 10, 8, 20);
|
||||||
|
Date dateToConvert = calendar.getTime();
|
||||||
|
|
||||||
|
// when
|
||||||
|
LocalDateTime localDateTime = DateToLocalDateTimeConverter.convertToLocalDateTimeViaMilisecond(dateToConvert);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals(2010, localDateTime.get(ChronoField.YEAR));
|
||||||
|
assertEquals(11, localDateTime.get(ChronoField.MONTH_OF_YEAR));
|
||||||
|
assertEquals(10, localDateTime.get(ChronoField.DAY_OF_MONTH));
|
||||||
|
assertEquals(8, localDateTime.get(ChronoField.HOUR_OF_DAY));
|
||||||
|
assertEquals(20, localDateTime.get(ChronoField.MINUTE_OF_HOUR));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldReturn10thNovember2010time8hour20minWhenConvertViaSqlTimestamp() {
|
||||||
|
// given
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.set(2010, 10, 10, 8, 20);
|
||||||
|
Date dateToConvert = calendar.getTime();
|
||||||
|
|
||||||
|
// when
|
||||||
|
LocalDateTime localDateTime = DateToLocalDateTimeConverter.convertToLocalDateTimeViaSqlTimestamp(dateToConvert);
|
||||||
|
|
||||||
|
// then
|
||||||
|
assertEquals(2010, localDateTime.get(ChronoField.YEAR));
|
||||||
|
assertEquals(11, localDateTime.get(ChronoField.MONTH_OF_YEAR));
|
||||||
|
assertEquals(10, localDateTime.get(ChronoField.DAY_OF_MONTH));
|
||||||
|
assertEquals(8, localDateTime.get(ChronoField.HOUR_OF_DAY));
|
||||||
|
assertEquals(20, localDateTime.get(ChronoField.MINUTE_OF_HOUR));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldReturn10thNovember2010time8hour20minWhenConvertToLocalDateTime() {
|
||||||
|
// given
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.set(2010, 10, 10, 8, 20);
|
||||||
|
Date dateToConvert = calendar.getTime();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
LocalDateTime localDateTime = DateToLocalDateTimeConverter.convertToLocalDateTime(dateToConvert);
|
LocalDateTime localDateTime = DateToLocalDateTimeConverter.convertToLocalDateTime(dateToConvert);
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package com.baeldung.datetime;
|
package com.baeldung.java9.datetime;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package com.baeldung.datetime;
|
package com.baeldung.java9.datetime;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
|
@ -3,7 +3,6 @@ package com.baeldung.concurrent.daemon;
|
||||||
public class NewThread extends Thread {
|
public class NewThread extends Thread {
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
while (true) {
|
while (true) {
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < 10; i++) {
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
package com.baeldung.concurrent.stopping;
|
package com.baeldung.concurrent.stopping;
|
||||||
|
|
||||||
|
import com.jayway.awaitility.Awaitility;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import static com.jayway.awaitility.Awaitility.await;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
@ -22,11 +26,10 @@ public class StopThreadTest {
|
||||||
|
|
||||||
// Stop it and make sure the flags have been reversed
|
// Stop it and make sure the flags have been reversed
|
||||||
controlSubThread.stop();
|
controlSubThread.stop();
|
||||||
Thread.sleep(interval);
|
await()
|
||||||
assertTrue(controlSubThread.isStopped());
|
.until(() -> assertTrue(controlSubThread.isStopped()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void whenInterruptedThreadIsStopped() throws InterruptedException {
|
public void whenInterruptedThreadIsStopped() throws InterruptedException {
|
||||||
|
|
||||||
|
@ -44,7 +47,8 @@ public class StopThreadTest {
|
||||||
controlSubThread.interrupt();
|
controlSubThread.interrupt();
|
||||||
|
|
||||||
// Wait less than the time we would normally sleep, and make sure we exited.
|
// Wait less than the time we would normally sleep, and make sure we exited.
|
||||||
Thread.sleep(interval/10);
|
Awaitility.await()
|
||||||
assertTrue(controlSubThread.isStopped());
|
.atMost(interval/ 10, TimeUnit.MILLISECONDS)
|
||||||
|
.until(controlSubThread::isStopped);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
*.class
|
||||||
|
|
||||||
|
0.*
|
||||||
|
|
||||||
|
#folders#
|
||||||
|
/target
|
||||||
|
/neoDb*
|
||||||
|
/data
|
||||||
|
/src/main/webapp/WEB-INF/classes
|
||||||
|
*/META-INF/*
|
||||||
|
.resourceCache
|
||||||
|
|
||||||
|
# Packaged files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.ear
|
||||||
|
|
||||||
|
# Files generated by integration tests
|
||||||
|
*.txt
|
||||||
|
backup-pom.xml
|
||||||
|
/bin/
|
||||||
|
/temp
|
||||||
|
|
||||||
|
#IntelliJ specific
|
||||||
|
.idea/
|
||||||
|
*.iml
|
|
@ -0,0 +1,6 @@
|
||||||
|
=========
|
||||||
|
|
||||||
|
## Core Java Cookbooks and Examples
|
||||||
|
|
||||||
|
### Relevant Articles:
|
||||||
|
- [Creating a Java Compiler Plugin](http://www.baeldung.com/java-build-compiler-plugin)
|
|
@ -0,0 +1,489 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<artifactId>core-java-sun</artifactId>
|
||||||
|
<version>0.1.0-SNAPSHOT</version>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<name>core-java-sun</name>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
|
||||||
|
<!-- utils -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>net.sourceforge.collections</groupId>
|
||||||
|
<artifactId>collections-generic</artifactId>
|
||||||
|
<version>${collections-generic.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.guava</groupId>
|
||||||
|
<artifactId>guava</artifactId>
|
||||||
|
<version>${guava.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-collections4</artifactId>
|
||||||
|
<version>${commons-collections4.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-io</groupId>
|
||||||
|
<artifactId>commons-io</artifactId>
|
||||||
|
<version>${commons-io.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-lang3</artifactId>
|
||||||
|
<version>${commons-lang3.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.commons</groupId>
|
||||||
|
<artifactId>commons-math3</artifactId>
|
||||||
|
<version>${commons-math3.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.decimal4j</groupId>
|
||||||
|
<artifactId>decimal4j</artifactId>
|
||||||
|
<version>${decimal4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.bouncycastle</groupId>
|
||||||
|
<artifactId>bcprov-jdk15on</artifactId>
|
||||||
|
<version>${bouncycastle.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.unix4j</groupId>
|
||||||
|
<artifactId>unix4j-command</artifactId>
|
||||||
|
<version>${unix4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.googlecode.grep4j</groupId>
|
||||||
|
<artifactId>grep4j</artifactId>
|
||||||
|
<version>${grep4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- web -->
|
||||||
|
|
||||||
|
<!-- marshalling -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
|
<artifactId>jackson-databind</artifactId>
|
||||||
|
<version>${jackson.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- logging -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>log4j</groupId>
|
||||||
|
<artifactId>log4j</artifactId>
|
||||||
|
<version>1.2.17</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-api</artifactId>
|
||||||
|
<version>${org.slf4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
<version>${logback.version}</version>
|
||||||
|
<!-- <scope>runtime</scope> -->
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>jcl-over-slf4j</artifactId>
|
||||||
|
<version>${org.slf4j.version}</version>
|
||||||
|
<!-- <scope>runtime</scope> --> <!-- some spring dependencies need to compile against jcl -->
|
||||||
|
</dependency>
|
||||||
|
<dependency> <!-- needed to bridge to slf4j for projects that use the log4j APIs directly -->
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>log4j-over-slf4j</artifactId>
|
||||||
|
<version>${org.slf4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.projectlombok</groupId>
|
||||||
|
<artifactId>lombok</artifactId>
|
||||||
|
<version>${lombok.version}</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- test scoped -->
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hamcrest</groupId>
|
||||||
|
<artifactId>hamcrest-all</artifactId>
|
||||||
|
<version>1.3</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<version>${junit.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hamcrest</groupId>
|
||||||
|
<artifactId>hamcrest-core</artifactId>
|
||||||
|
<version>${org.hamcrest.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hamcrest</groupId>
|
||||||
|
<artifactId>hamcrest-library</artifactId>
|
||||||
|
<version>${org.hamcrest.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.assertj</groupId>
|
||||||
|
<artifactId>assertj-core</artifactId>
|
||||||
|
<version>${assertj.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.mockito</groupId>
|
||||||
|
<artifactId>mockito-core</artifactId>
|
||||||
|
<version>${mockito.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.jayway.awaitility</groupId>
|
||||||
|
<artifactId>awaitility</artifactId>
|
||||||
|
<version>${avaitility.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>commons-codec</groupId>
|
||||||
|
<artifactId>commons-codec</artifactId>
|
||||||
|
<version>${commons-codec.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.javamoney</groupId>
|
||||||
|
<artifactId>moneta</artifactId>
|
||||||
|
<version>1.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.owasp.esapi</groupId>
|
||||||
|
<artifactId>esapi</artifactId>
|
||||||
|
<version>2.1.0.1</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.messaging.mq</groupId>
|
||||||
|
<artifactId>fscontext</artifactId>
|
||||||
|
<version>${fscontext.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.codepoetics</groupId>
|
||||||
|
<artifactId>protonpack</artifactId>
|
||||||
|
<version>${protonpack.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>one.util</groupId>
|
||||||
|
<artifactId>streamex</artifactId>
|
||||||
|
<version>${streamex.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.vavr</groupId>
|
||||||
|
<artifactId>vavr</artifactId>
|
||||||
|
<version>${vavr.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.openjdk.jmh</groupId>
|
||||||
|
<artifactId>jmh-core</artifactId>
|
||||||
|
<version>1.19</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.openjdk.jmh</groupId>
|
||||||
|
<artifactId>jmh-generator-annprocess</artifactId>
|
||||||
|
<version>1.19</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-web</artifactId>
|
||||||
|
<version>4.3.4.RELEASE</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun</groupId>
|
||||||
|
<artifactId>tools</artifactId>
|
||||||
|
<version>1.8.0</version>
|
||||||
|
<scope>system</scope>
|
||||||
|
<systemPath>${java.home}/../lib/tools.jar</systemPath>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<build>
|
||||||
|
<finalName>core-java</finalName>
|
||||||
|
<resources>
|
||||||
|
<resource>
|
||||||
|
<directory>src/main/resources</directory>
|
||||||
|
<filtering>true</filtering>
|
||||||
|
</resource>
|
||||||
|
</resources>
|
||||||
|
|
||||||
|
<plugins>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>${maven-compiler-plugin.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<source>1.8</source>
|
||||||
|
<target>1.8</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<excludes>
|
||||||
|
<exclude>**/*LiveTest.java</exclude>
|
||||||
|
<exclude>**/*IntegrationTest.java</exclude>
|
||||||
|
<exclude>**/*LongRunningUnitTest.java</exclude>
|
||||||
|
<exclude>**/*ManualTest.java</exclude>
|
||||||
|
</excludes>
|
||||||
|
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-dependency-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>copy-dependencies</id>
|
||||||
|
<phase>prepare-package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>copy-dependencies</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<outputDirectory>${project.build.directory}/libs</outputDirectory>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-jar-plugin</artifactId>
|
||||||
|
<configuration>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<addClasspath>true</addClasspath>
|
||||||
|
<classpathPrefix>libs/</classpathPrefix>
|
||||||
|
<mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-assembly-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>single</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<archiveBaseDirectory>${project.basedir}</archiveBaseDirectory>
|
||||||
|
<archive>
|
||||||
|
<manifest>
|
||||||
|
<mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass>
|
||||||
|
</manifest>
|
||||||
|
</archive>
|
||||||
|
<descriptorRefs>
|
||||||
|
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||||
|
</descriptorRefs>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-shade-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<shadedArtifactAttached>true</shadedArtifactAttached>
|
||||||
|
<transformers>
|
||||||
|
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
|
||||||
|
<mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass>
|
||||||
|
</transformer>
|
||||||
|
</transformers>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>com.jolira</groupId>
|
||||||
|
<artifactId>onejar-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<configuration>
|
||||||
|
<mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass>
|
||||||
|
<attachToBuild>true</attachToBuild>
|
||||||
|
<filename>${project.build.finalName}-onejar.${project.packaging}</filename>
|
||||||
|
</configuration>
|
||||||
|
<goals>
|
||||||
|
<goal>one-jar</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<goals>
|
||||||
|
<goal>repackage</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<classifier>spring-boot</classifier>
|
||||||
|
<mainClass>org.baeldung.executable.ExecutableMavenJar</mainClass>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>exec-maven-plugin</artifactId>
|
||||||
|
<version>1.6.0</version>
|
||||||
|
<configuration>
|
||||||
|
<executable>java</executable>
|
||||||
|
<mainClass>com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed</mainClass>
|
||||||
|
<arguments>
|
||||||
|
<argument>-Xmx300m</argument>
|
||||||
|
<argument>-XX:+UseParallelGC</argument>
|
||||||
|
<argument>-classpath</argument>
|
||||||
|
<classpath />
|
||||||
|
<argument>com.baeldung.outofmemoryerror.OutOfMemoryGCLimitExceed</argument>
|
||||||
|
</arguments>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
|
||||||
|
|
||||||
|
</plugins>
|
||||||
|
|
||||||
|
</build>
|
||||||
|
|
||||||
|
<profiles>
|
||||||
|
<profile>
|
||||||
|
<id>integration</id>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<phase>integration-test</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>test</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<excludes>
|
||||||
|
<exclude>**/*ManualTest.java</exclude>
|
||||||
|
</excludes>
|
||||||
|
<includes>
|
||||||
|
<include>**/*IntegrationTest.java</include>
|
||||||
|
</includes>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
<configuration>
|
||||||
|
<systemPropertyVariables>
|
||||||
|
<test.mime>json</test.mime>
|
||||||
|
</systemPropertyVariables>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>exec-maven-plugin</artifactId>
|
||||||
|
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>run-benchmarks</id>
|
||||||
|
<!-- <phase>integration-test</phase> -->
|
||||||
|
<phase>none</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>exec</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<classpathScope>test</classpathScope>
|
||||||
|
<executable>java</executable>
|
||||||
|
<arguments>
|
||||||
|
<argument>-classpath</argument>
|
||||||
|
<classpath />
|
||||||
|
<argument>org.openjdk.jmh.Main</argument>
|
||||||
|
<argument>.*</argument>
|
||||||
|
</arguments>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</profile>
|
||||||
|
</profiles>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<!-- marshalling -->
|
||||||
|
<jackson.version>2.8.5</jackson.version>
|
||||||
|
|
||||||
|
<!-- logging -->
|
||||||
|
<org.slf4j.version>1.7.21</org.slf4j.version>
|
||||||
|
<logback.version>1.1.7</logback.version>
|
||||||
|
|
||||||
|
<!-- util -->
|
||||||
|
<guava.version>23.0</guava.version>
|
||||||
|
<commons-lang3.version>3.5</commons-lang3.version>
|
||||||
|
<bouncycastle.version>1.55</bouncycastle.version>
|
||||||
|
<commons-codec.version>1.10</commons-codec.version>
|
||||||
|
<commons-math3.version>3.6.1</commons-math3.version>
|
||||||
|
<decimal4j.version>1.0.3</decimal4j.version>
|
||||||
|
<commons-io.version>2.5</commons-io.version>
|
||||||
|
<commons-collections4.version>4.1</commons-collections4.version>
|
||||||
|
<collections-generic.version>4.01</collections-generic.version>
|
||||||
|
<unix4j.version>0.4</unix4j.version>
|
||||||
|
<grep4j.version>1.8.7</grep4j.version>
|
||||||
|
<lombok.version>1.16.12</lombok.version>
|
||||||
|
<fscontext.version>4.6-b01</fscontext.version>
|
||||||
|
<protonpack.version>1.13</protonpack.version>
|
||||||
|
<streamex.version>0.6.5</streamex.version>
|
||||||
|
<vavr.version>0.9.0</vavr.version>
|
||||||
|
|
||||||
|
<!-- testing -->
|
||||||
|
<org.hamcrest.version>1.3</org.hamcrest.version>
|
||||||
|
<junit.version>4.12</junit.version>
|
||||||
|
<mockito.version>2.8.9</mockito.version>
|
||||||
|
<assertj.version>3.6.1</assertj.version>
|
||||||
|
<avaitility.version>1.7.0</avaitility.version>
|
||||||
|
|
||||||
|
<!-- maven plugins -->
|
||||||
|
<maven-compiler-plugin.version>3.6.0</maven-compiler-plugin.version>
|
||||||
|
<maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version>
|
||||||
|
</properties>
|
||||||
|
</project>
|
|
@ -0,0 +1,2 @@
|
||||||
|
### Relevant Articles:
|
||||||
|
- [SHA-256 Hashing in Java](http://www.baeldung.com/sha-256-hashing-java)
|
|
@ -0,0 +1,6 @@
|
||||||
|
log4j.rootLogger=DEBUG, A1
|
||||||
|
|
||||||
|
log4j.appender.A1=org.apache.log4j.ConsoleAppender
|
||||||
|
|
||||||
|
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
|
||||||
|
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
|
|
@ -119,4 +119,5 @@
|
||||||
- [Initializing Arrays in Java](http://www.baeldung.com/java-initialize-array)
|
- [Initializing Arrays in Java](http://www.baeldung.com/java-initialize-array)
|
||||||
- [Guide to Java String Pool](http://www.baeldung.com/java-string-pool)
|
- [Guide to Java String Pool](http://www.baeldung.com/java-string-pool)
|
||||||
- [Copy a File with Java](http://www.baeldung.com/java-copy-file)
|
- [Copy a File with Java](http://www.baeldung.com/java-copy-file)
|
||||||
|
- [Introduction to Creational Design Patterns](http://www.baeldung.com/creational-design-patterns)
|
||||||
|
|
||||||
|
|
|
@ -181,11 +181,6 @@
|
||||||
<version>2.1.0.1</version>
|
<version>2.1.0.1</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.sun.messaging.mq</groupId>
|
|
||||||
<artifactId>fscontext</artifactId>
|
|
||||||
<version>${fscontext.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.codepoetics</groupId>
|
<groupId>com.codepoetics</groupId>
|
||||||
<artifactId>protonpack</artifactId>
|
<artifactId>protonpack</artifactId>
|
||||||
|
@ -216,13 +211,6 @@
|
||||||
<artifactId>spring-web</artifactId>
|
<artifactId>spring-web</artifactId>
|
||||||
<version>4.3.4.RELEASE</version>
|
<version>4.3.4.RELEASE</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.sun</groupId>
|
|
||||||
<artifactId>tools</artifactId>
|
|
||||||
<version>1.8.0</version>
|
|
||||||
<scope>system</scope>
|
|
||||||
<systemPath>${java.home}/../lib/tools.jar</systemPath>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
package com.baeldung.loops;
|
||||||
|
|
||||||
|
public class LoopsInJava {
|
||||||
|
|
||||||
|
public int[] simple_for_loop() {
|
||||||
|
int[] arr = new int[5];
|
||||||
|
for (int i = 0; i < 5; i++) {
|
||||||
|
arr[i] = i;
|
||||||
|
System.out.println("Simple for loop: i - " + i);
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] enhanced_for_each_loop() {
|
||||||
|
int[] intArr = { 0, 1, 2, 3, 4 };
|
||||||
|
int[] arr = new int[5];
|
||||||
|
for (int num : intArr) {
|
||||||
|
arr[num] = num;
|
||||||
|
System.out.println("Enhanced for-each loop: i - " + num);
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] while_loop() {
|
||||||
|
int i = 0;
|
||||||
|
int[] arr = new int[5];
|
||||||
|
while (i < 5) {
|
||||||
|
arr[i] = i;
|
||||||
|
System.out.println("While loop: i - " + i++);
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int[] do_while_loop() {
|
||||||
|
int i = 0;
|
||||||
|
int[] arr = new int[5];
|
||||||
|
do {
|
||||||
|
arr[i] = i;
|
||||||
|
System.out.println("Do-While loop: i - " + i++);
|
||||||
|
} while (i < 5);
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.baeldung.nestedclass;
|
||||||
|
|
||||||
|
public class Enclosing {
|
||||||
|
|
||||||
|
public static class Nested {
|
||||||
|
|
||||||
|
public void test() {
|
||||||
|
System.out.println("Calling test...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package com.baeldung.nestedclass;
|
||||||
|
|
||||||
|
public class NewEnclosing {
|
||||||
|
|
||||||
|
void run() {
|
||||||
|
class Local {
|
||||||
|
|
||||||
|
void run() {
|
||||||
|
System.out.println("Welcome to Baeldung!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Local local = new Local();
|
||||||
|
local.run();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package com.baeldung.nestedclass;
|
||||||
|
|
||||||
|
public class Outer {
|
||||||
|
|
||||||
|
public class Inner {
|
||||||
|
|
||||||
|
public void test() {
|
||||||
|
System.out.println("Calling test...");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
package com.baeldung.nestedclass;
|
||||||
|
|
||||||
|
abstract class SimpleAbstractClass {
|
||||||
|
abstract void run();
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.baeldung.util;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.StringWriter;
|
||||||
|
|
||||||
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
|
public class StreamUtils {
|
||||||
|
|
||||||
|
public static String getStringFromInputStream(InputStream input) throws IOException {
|
||||||
|
StringWriter writer = new StringWriter();
|
||||||
|
IOUtils.copy(input, writer, "UTF-8");
|
||||||
|
return writer.toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
UK
|
||||||
|
US
|
||||||
|
Germany
|
|
@ -0,0 +1,50 @@
|
||||||
|
package com.baeldung.arraydeque;
|
||||||
|
|
||||||
|
import java.util.ArrayDeque;
|
||||||
|
import java.util.Deque;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class ArrayDequeTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenOffer_addsAtLast() {
|
||||||
|
final Deque<String> deque = new ArrayDeque<>();
|
||||||
|
|
||||||
|
deque.offer("first");
|
||||||
|
deque.offer("second");
|
||||||
|
|
||||||
|
assertEquals("second", deque.getLast());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenPoll_removesFirst() {
|
||||||
|
final Deque<String> deque = new ArrayDeque<>();
|
||||||
|
|
||||||
|
deque.offer("first");
|
||||||
|
deque.offer("second");
|
||||||
|
|
||||||
|
assertEquals("first", deque.poll());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenPush_addsAtFirst() {
|
||||||
|
final Deque<String> deque = new ArrayDeque<>();
|
||||||
|
|
||||||
|
deque.push("first");
|
||||||
|
deque.push("second");
|
||||||
|
|
||||||
|
assertEquals("second", deque.getFirst());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenPop_removesLast() {
|
||||||
|
final Deque<String> deque = new ArrayDeque<>();
|
||||||
|
|
||||||
|
deque.push("first");
|
||||||
|
deque.push("second");
|
||||||
|
|
||||||
|
assertEquals("second", deque.pop());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,94 @@
|
||||||
|
package com.baeldung.file;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import java.io.BufferedWriter;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.nio.file.StandardOpenOption;
|
||||||
|
|
||||||
|
import com.google.common.base.Charsets;
|
||||||
|
import com.google.common.io.CharSink;
|
||||||
|
import com.google.common.io.FileWriteMode;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import com.baeldung.util.StreamUtils;
|
||||||
|
|
||||||
|
public class FilesTest {
|
||||||
|
|
||||||
|
public static final String fileName = "src/main/resources/countries.properties";
|
||||||
|
|
||||||
|
@Before
|
||||||
|
@After
|
||||||
|
public void setup() throws Exception {
|
||||||
|
PrintWriter writer = new PrintWriter(fileName);
|
||||||
|
writer.print("UK\r\n" + "US\r\n" + "Germany\r\n");
|
||||||
|
writer.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenAppendToFileUsingGuava_thenCorrect() throws IOException {
|
||||||
|
File file = new File(fileName);
|
||||||
|
CharSink chs = com.google.common.io.Files.asCharSink(file, Charsets.UTF_8, FileWriteMode.APPEND);
|
||||||
|
chs.write("Spain\r\n");
|
||||||
|
|
||||||
|
assertThat(StreamUtils.getStringFromInputStream(
|
||||||
|
new FileInputStream(fileName)))
|
||||||
|
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenAppendToFileUsingFiles_thenCorrect() throws IOException {
|
||||||
|
Files.write(Paths.get(fileName), "Spain\r\n".getBytes(), StandardOpenOption.APPEND);
|
||||||
|
|
||||||
|
assertThat(StreamUtils.getStringFromInputStream(
|
||||||
|
new FileInputStream(fileName)))
|
||||||
|
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenAppendToFileUsingFileUtils_thenCorrect() throws IOException {
|
||||||
|
File file = new File(fileName);
|
||||||
|
FileUtils.writeStringToFile(file, "Spain\r\n", StandardCharsets.UTF_8, true);
|
||||||
|
|
||||||
|
assertThat(StreamUtils.getStringFromInputStream(
|
||||||
|
new FileInputStream(fileName)))
|
||||||
|
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenAppendToFileUsingFileOutputStream_thenCorrect() throws Exception {
|
||||||
|
FileOutputStream fos = new FileOutputStream(fileName, true);
|
||||||
|
fos.write("Spain\r\n".getBytes());
|
||||||
|
fos.close();
|
||||||
|
|
||||||
|
assertThat(StreamUtils.getStringFromInputStream(
|
||||||
|
new FileInputStream(fileName)))
|
||||||
|
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenAppendToFileUsingFileWriter_thenCorrect() throws IOException {
|
||||||
|
FileWriter fw = new FileWriter(fileName, true);
|
||||||
|
BufferedWriter bw = new BufferedWriter(fw);
|
||||||
|
bw.write("Spain");
|
||||||
|
bw.newLine();
|
||||||
|
bw.close();
|
||||||
|
|
||||||
|
assertThat(
|
||||||
|
StreamUtils.getStringFromInputStream(
|
||||||
|
new FileInputStream(fileName)))
|
||||||
|
.isEqualTo("UK\r\n" + "US\r\n" + "Germany\r\n" + "Spain\n");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
package com.baeldung.loops;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class WhenUsingLoops {
|
||||||
|
|
||||||
|
private LoopsInJava loops = new LoopsInJava();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldRunForLoop() {
|
||||||
|
int[] expected = { 0, 1, 2, 3, 4 };
|
||||||
|
int[] actual = loops.simple_for_loop();
|
||||||
|
Assert.assertArrayEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldRunEnhancedForeachLoop() {
|
||||||
|
int[] expected = { 0, 1, 2, 3, 4 };
|
||||||
|
int[] actual = loops.enhanced_for_each_loop();
|
||||||
|
Assert.assertArrayEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldRunWhileLoop() {
|
||||||
|
int[] expected = { 0, 1, 2, 3, 4 };
|
||||||
|
int[] actual = loops.while_loop();
|
||||||
|
Assert.assertArrayEquals(expected, actual);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shouldRunDoWhileLoop() {
|
||||||
|
int[] expected = { 0, 1, 2, 3, 4 };
|
||||||
|
int[] actual = loops.do_while_loop();
|
||||||
|
Assert.assertArrayEquals(expected, actual);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package com.baeldung.nestedclass;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class AnonymousInnerTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRunAnonymousClass_thenCorrect() {
|
||||||
|
SimpleAbstractClass simpleAbstractClass = new SimpleAbstractClass() {
|
||||||
|
void run() {
|
||||||
|
System.out.println("Running Anonymous Class...");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
simpleAbstractClass.run();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.baeldung.nestedclass;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class InnerClassTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void givenInnerClassWhenInstantiating_thenCorrect() {
|
||||||
|
Outer outer = new Outer();
|
||||||
|
Outer.Inner inner = outer.new Inner();
|
||||||
|
inner.test();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.baeldung.nestedclass;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class LocalClassTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenTestingLocalClass_thenCorrect() {
|
||||||
|
NewEnclosing newEnclosing = new NewEnclosing();
|
||||||
|
newEnclosing.run();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.baeldung.nestedclass;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class NestedClassTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenInstantiatingStaticNestedClass_thenCorrect() {
|
||||||
|
Enclosing.Nested nested = new Enclosing.Nested();
|
||||||
|
nested.test();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
package com.baeldung.nestedclass;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class NewOuterTest {
|
||||||
|
|
||||||
|
int a = 1;
|
||||||
|
static int b = 2;
|
||||||
|
|
||||||
|
public class InnerClass {
|
||||||
|
int a = 3;
|
||||||
|
static final int b = 4;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenShadowing_thenCorrect() {
|
||||||
|
assertEquals(3, a);
|
||||||
|
assertEquals(4, b);
|
||||||
|
assertEquals(1, NewOuterTest.this.a);
|
||||||
|
assertEquals(2, NewOuterTest.b);
|
||||||
|
assertEquals(2, NewOuterTest.this.b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void shadowingTest() {
|
||||||
|
NewOuterTest outer = new NewOuterTest();
|
||||||
|
NewOuterTest.InnerClass inner = outer.new InnerClass();
|
||||||
|
inner.whenShadowing_thenCorrect();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -223,4 +223,4 @@ public class StringTest {
|
||||||
|
|
||||||
assertEquals("200", String.valueOf(l));
|
assertEquals("200", String.valueOf(l));
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,2 +1,2 @@
|
||||||
### Relevant Articles:
|
### Relevant Articles:
|
||||||
- [Introduction to NoException](http://www.baeldung.com/intrduction-to-noexception)
|
- [Introduction to NoException](http://www.baeldung.com/introduction-to-noexception)
|
||||||
|
|
|
@ -65,7 +65,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.osgi</groupId>
|
<groupId>org.osgi</groupId>
|
||||||
<artifactId>org.osgi.core</artifactId>
|
<artifactId>org.osgi.core</artifactId>
|
||||||
<version>5.0.0</version>
|
<version>6.0.0</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.felix</groupId>
|
<groupId>org.apache.felix</groupId>
|
||||||
<artifactId>maven-bundle-plugin</artifactId>
|
<artifactId>maven-bundle-plugin</artifactId>
|
||||||
<version>1.4.0</version>
|
<version>3.3.0</version>
|
||||||
<extensions>true</extensions>
|
<extensions>true</extensions>
|
||||||
</plugin>
|
</plugin>
|
||||||
</plugins>
|
</plugins>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>com.baeldung.templatemethod</groupId>
|
<groupId>com.baeldung.pattern.templatemethod</groupId>
|
||||||
<artifactId>template-method</artifactId>
|
<artifactId>pattern.templatemethod</artifactId>
|
||||||
<version>1.0</version>
|
<version>1.0</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
<parent>
|
<parent>
|
|
@ -1,11 +1,11 @@
|
||||||
package com.baeldung.templatemethodpattern.application;
|
package com.baeldung.pattern.templatemethod.application;
|
||||||
|
|
||||||
import com.baeldung.templatemethodpattern.model.Computer;
|
import com.baeldung.pattern.templatemethod.model.Computer;
|
||||||
import com.baeldung.templatemethodpattern.model.StandardComputer;
|
import com.baeldung.pattern.templatemethod.model.StandardComputer;
|
||||||
import com.baeldung.templatemethodpattern.model.HighEndComputer;
|
import com.baeldung.pattern.templatemethod.model.HighEndComputer;
|
||||||
import com.baeldung.templatemethodpattern.model.ComputerBuilder;
|
import com.baeldung.pattern.templatemethod.model.ComputerBuilder;
|
||||||
import com.baeldung.templatemethodpattern.model.HighEndComputerBuilder;
|
import com.baeldung.pattern.templatemethod.model.HighEndComputerBuilder;
|
||||||
import com.baeldung.templatemethodpattern.model.StandardComputerBuilder;
|
import com.baeldung.pattern.templatemethod.model.StandardComputerBuilder;
|
||||||
|
|
||||||
public class Application {
|
public class Application {
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
package com.baeldung.templatemethodpattern.model;
|
package com.baeldung.pattern.templatemethod.model;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class Computer {
|
public class Computer {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.baeldung.templatemethodpattern.model;
|
package com.baeldung.pattern.templatemethod.model;
|
||||||
|
|
||||||
|
import com.baeldung.pattern.templatemethod.model.Computer;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
|
@ -1,10 +1,11 @@
|
||||||
package com.baeldung.templatemethodpattern.model;
|
package com.baeldung.pattern.templatemethod.model;
|
||||||
|
|
||||||
|
import com.baeldung.pattern.templatemethod.model.Computer;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class HighEndComputer extends Computer {
|
public class HighEndComputer extends Computer {
|
||||||
|
|
||||||
public HighEndComputer(Map<String, String> computerParts) {
|
public HighEndComputer(Map<String, String> computerParts) {
|
||||||
super(computerParts);
|
super(computerParts);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package com.baeldung.templatemethodpattern.model;
|
package com.baeldung.pattern.templatemethod.model;
|
||||||
|
|
||||||
public class HighEndComputerBuilder extends ComputerBuilder {
|
public class HighEndComputerBuilder extends ComputerBuilder {
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
package com.baeldung.templatemethodpattern.model;
|
package com.baeldung.pattern.templatemethod.model;
|
||||||
|
|
||||||
|
import com.baeldung.pattern.templatemethod.model.Computer;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
public class StandardComputer extends Computer {
|
public class StandardComputer extends Computer {
|
||||||
|
|
||||||
public StandardComputer(Map<String, String> computerParts) {
|
public StandardComputer(Map<String, String> computerParts) {
|
||||||
super(computerParts);
|
super(computerParts);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
package com.baeldung.templatemethodpattern.model;
|
package com.baeldung.pattern.templatemethod.model;
|
||||||
|
|
||||||
public class StandardComputerBuilder extends ComputerBuilder {
|
public class StandardComputerBuilder extends ComputerBuilder {
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
package com.baeldung.templatemethodpatterntest;
|
package com.baeldung.pattern.templatemethod.test;
|
||||||
|
|
||||||
import com.baeldung.templatemethodpattern.model.Computer;
|
import com.baeldung.pattern.templatemethod.model.Computer;
|
||||||
import com.baeldung.templatemethodpattern.model.HighEndComputerBuilder;
|
import com.baeldung.pattern.templatemethod.model.HighEndComputerBuilder;
|
||||||
import com.baeldung.templatemethodpattern.model.StandardComputerBuilder;
|
import com.baeldung.pattern.templatemethod.model.StandardComputerBuilder;
|
||||||
import com.baeldung.templatemethodpattern.model.HighEndComputer;
|
|
||||||
import com.baeldung.templatemethodpattern.model.StandardComputer;
|
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
|
@ -82,7 +80,7 @@ public class TemplateMethodPatternTest {
|
||||||
assertEquals(2, highEndComputerBuilder.getComputerParts().size());
|
assertEquals(2, highEndComputerBuilder.getComputerParts().size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void givenAllHighEndParts_whenComputerisBuilt_thenComputerInstance() {
|
public void givenAllHighEndParts_whenComputerisBuilt_thenComputerInstance() {
|
||||||
assertThat(standardComputerBuilder.buildComputer(), instanceOf(Computer.class));
|
assertThat(standardComputerBuilder.buildComputer(), instanceOf(Computer.class));
|
||||||
}
|
}
|
|
@ -9,7 +9,7 @@
|
||||||
<modules>
|
<modules>
|
||||||
<module>front-controller</module>
|
<module>front-controller</module>
|
||||||
<module>intercepting-filter</module>
|
<module>intercepting-filter</module>
|
||||||
<module>template-method</module>
|
<module>behavioral-patterns</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<parent>
|
<parent>
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package com.baeldung.hibernate.manytomany;
|
package com.baeldung.hibernate.manytomany;
|
||||||
|
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
|
@ -17,10 +16,8 @@ import com.baeldung.hibernate.manytomany.model.Employee;
|
||||||
import com.baeldung.hibernate.manytomany.model.Project;
|
import com.baeldung.hibernate.manytomany.model.Project;
|
||||||
import com.baeldung.manytomany.spring.PersistenceConfig;
|
import com.baeldung.manytomany.spring.PersistenceConfig;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@RunWith(SpringJUnit4ClassRunner.class)
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
@ContextConfiguration(classes = {PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
|
@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
|
||||||
public class HibernateManyToManyAnnotationJavaConfigMainIntegrationTest {
|
public class HibernateManyToManyAnnotationJavaConfigMainIntegrationTest {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -28,7 +25,6 @@ public class HibernateManyToManyAnnotationJavaConfigMainIntegrationTest {
|
||||||
|
|
||||||
private Session session;
|
private Session session;
|
||||||
|
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public final void before() {
|
public final void before() {
|
||||||
session = sessionFactory.openSession();
|
session = sessionFactory.openSession();
|
||||||
|
@ -43,11 +39,11 @@ public class HibernateManyToManyAnnotationJavaConfigMainIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public final void whenEntitiesAreCreated_thenNoExceptions() {
|
public final void whenEntitiesAreCreated_thenNoExceptions() {
|
||||||
Set<Project> projects = new HashSet<Project>();
|
Set<Project> projects = new HashSet<Project>();
|
||||||
projects.add(new Project("IT Project"));
|
projects.add(new Project("IT Project"));
|
||||||
projects.add(new Project("Networking Project"));
|
projects.add(new Project("Networking Project"));
|
||||||
session.persist(new Employee("Peter", "Oven", projects));
|
session.persist(new Employee("Peter", "Oven", projects));
|
||||||
session.persist(new Employee("Allan", "Norman", projects));
|
session.persist(new Employee("Allan", "Norman", projects));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
*.class
|
||||||
|
|
||||||
|
#folders#
|
||||||
|
/target
|
||||||
|
/neoDb*
|
||||||
|
/data
|
||||||
|
/src/main/webapp/WEB-INF/classes
|
||||||
|
*/META-INF/*
|
||||||
|
|
||||||
|
# Packaged files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.ear
|
|
@ -13,6 +13,7 @@
|
||||||
<groupId>com.baeldung</groupId>
|
<groupId>com.baeldung</groupId>
|
||||||
<artifactId>parent-modules</artifactId>
|
<artifactId>parent-modules</artifactId>
|
||||||
<version>1.0.0-SNAPSHOT</version>
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
<relativePath>../</relativePath>
|
||||||
</parent>
|
</parent>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue