Skip to content

Commit 552b2b2

Browse files
committed
sample code for article "Java Optional As Return Type"
1 parent 2ef9b4e commit 552b2b2

File tree

11 files changed

+315
-1
lines changed

11 files changed

+315
-1
lines changed

core-java-modules/core-java-8-2/pom.xml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,21 @@
3030
<artifactId>icu4j</artifactId>
3131
<version>${icu.version}</version>
3232
</dependency>
33-
33+
<dependency>
34+
<groupId>org.hibernate</groupId>
35+
<artifactId>hibernate-core</artifactId>
36+
<version>5.4.0.Final</version>
37+
</dependency>
38+
<dependency>
39+
<groupId>com.h2database</groupId>
40+
<artifactId>h2</artifactId>
41+
<version>1.4.197</version>
42+
</dependency>
43+
<dependency>
44+
<groupId>com.fasterxml.jackson.core</groupId>
45+
<artifactId>jackson-databind</artifactId>
46+
<version>2.9.8</version>
47+
</dependency>
3448
</dependencies>
3549

3650
<build>
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.baeldung.optionalReturnType;
2+
3+
import java.util.HashMap;
4+
import java.util.Map;
5+
import java.util.Optional;
6+
7+
public class HandleOptionalTypeExample {
8+
static Map<String, User> usersByName = new HashMap();
9+
static {
10+
User user1 = new User();
11+
user1.setUserId(1l);
12+
user1.setFirstName("baeldung");
13+
usersByName.put("baeldung", user1);
14+
}
15+
16+
public static void main(String[] args) {
17+
changeUserName("baeldung", "baeldung-new");
18+
changeUserName("user", "user-new");
19+
}
20+
21+
public static void changeUserName(String oldFirstName, String newFirstName) {
22+
Optional<User> userOpt = findUserByName(oldFirstName);
23+
if(userOpt.isPresent()){
24+
User user = userOpt.get();
25+
user.setFirstName(newFirstName);
26+
27+
System.out.println("user with name "+oldFirstName+" is changed to "+ user.getFirstName());
28+
} else {
29+
//user is missing
30+
System.out.println("user with name "+oldFirstName+" is not found.");
31+
}
32+
}
33+
34+
public static Optional<User> findUserByName(String name){
35+
//look up the user in the database, the user object below could be null
36+
User user=usersByName.get(name);
37+
Optional<User> opt = Optional.ofNullable(user);
38+
39+
return opt;
40+
}
41+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.baeldung.optionalReturnType;
2+
3+
import com.fasterxml.jackson.core.JsonProcessingException;
4+
import com.fasterxml.jackson.databind.ObjectMapper;
5+
6+
public class OptionalToJsonExample {
7+
public static void main(String[] args) {
8+
UserOptional user = new UserOptional();
9+
user.setUserId(1l);
10+
user.setFirstName("Bael Dung");
11+
12+
ObjectMapper om = new ObjectMapper();
13+
try {
14+
System.out.print("user in json is:"+om.writeValueAsString(user));
15+
} catch (JsonProcessingException e) {
16+
// TODO Auto-generated catch block
17+
e.printStackTrace();
18+
}
19+
}
20+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.baeldung.optionalReturnType;
2+
3+
import java.util.Optional;
4+
5+
import javax.persistence.EntityManager;
6+
import javax.persistence.EntityManagerFactory;
7+
import javax.persistence.Persistence;
8+
9+
public class PersistOptionalTypeExample {
10+
static String persistenceUnit = "com.baeldung.optionalReturnType";
11+
static EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit);
12+
13+
static EntityManager entityManager = emf.createEntityManager();
14+
15+
public static void main(String[] args) {
16+
UserOptionalField user1 = new UserOptionalField();
17+
user1.setUserId(1l);
18+
user1.setFirstName(Optional.of("Bael Dung"));
19+
entityManager.persist(user1);
20+
21+
UserOptional user2 = entityManager.find(UserOptional.class, 1l);
22+
System.out.print("User2.firstName:"+user2.getFirstName());
23+
}
24+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.baeldung.optionalReturnType;
2+
3+
import javax.persistence.EntityManager;
4+
import javax.persistence.EntityManagerFactory;
5+
import javax.persistence.Persistence;
6+
7+
public class PersistOptionalTypeExample2 {
8+
static String persistenceUnit = "com.baeldung.optionalReturnType";
9+
static EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit);
10+
11+
static EntityManager em = emf.createEntityManager();
12+
13+
public static void main(String[] args) {
14+
UserOptional user1 = new UserOptional();
15+
user1.setUserId(1l);
16+
user1.setFirstName("Bael Dung");
17+
em.persist(user1);
18+
19+
UserOptional user2 = em.find(UserOptional.class, 1l);
20+
System.out.print("User2.firstName:"+user2.getFirstName());
21+
}
22+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.baeldung.optionalReturnType;
2+
3+
import javax.persistence.EntityManager;
4+
import javax.persistence.EntityManagerFactory;
5+
import javax.persistence.Persistence;
6+
7+
public class PersistUserNoOptionalExample {
8+
static String persistenceUnit = "com.baeldung.optionalReturnType";
9+
static EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit);
10+
11+
static EntityManager em = emf.createEntityManager();
12+
13+
public static void main(String[] args) {
14+
User user1 = new User();
15+
user1.setUserId(1l);
16+
user1.setFirstName("Bael Dung");
17+
em.persist(user1);
18+
19+
User user2 = em.find(User.class, 1l);
20+
System.out.print("User2.firstName:"+user2.getFirstName());
21+
}
22+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.baeldung.optionalReturnType;
2+
3+
import java.io.FileOutputStream;
4+
import java.io.IOException;
5+
import java.io.ObjectOutputStream;
6+
import java.util.Optional;
7+
8+
public class SerializeOptionalTypeExample {
9+
public static void main(String[] args) {
10+
User user1 = new User();
11+
user1.setUserId(1l);
12+
user1.setFirstName("baeldung");
13+
14+
serializeObject(user1, "user1.ser");
15+
16+
17+
UserOptionalField user2 = new UserOptionalField();
18+
user2.setUserId(1l);
19+
user2.setFirstName(Optional.of("baeldung"));
20+
21+
serializeObject(user2, "user2.ser");
22+
23+
}
24+
25+
public static void serializeObject(Object object, String fileName) {
26+
// Serialization
27+
try {
28+
FileOutputStream file = new FileOutputStream(fileName);
29+
ObjectOutputStream out = new ObjectOutputStream(file);
30+
31+
out.writeObject(object);
32+
33+
out.close();
34+
file.close();
35+
36+
System.out.println("Object "+object.toString()+ " has been serialized to file "+fileName);
37+
38+
} catch(IOException e) {
39+
e.printStackTrace();
40+
}
41+
}
42+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.baeldung.optionalReturnType;
2+
3+
import java.io.Serializable;
4+
5+
import javax.persistence.Entity;
6+
import javax.persistence.Id;
7+
8+
@Entity
9+
public class User implements Serializable {
10+
@Id
11+
private long userId;
12+
13+
private String firstName;
14+
15+
public long getUserId() {
16+
return userId;
17+
}
18+
19+
public void setUserId(long userId) {
20+
this.userId = userId;
21+
}
22+
23+
public String getFirstName() {
24+
return firstName;
25+
}
26+
27+
public void setFirstName(String firstName) {
28+
this.firstName = firstName;
29+
}
30+
31+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.baeldung.optionalReturnType;
2+
3+
import java.io.Serializable;
4+
import java.util.Optional;
5+
6+
import javax.persistence.Column;
7+
import javax.persistence.Entity;
8+
import javax.persistence.Id;
9+
10+
@Entity
11+
public class UserOptional implements Serializable {
12+
@Id
13+
private long userId;
14+
15+
@Column(nullable = true)
16+
private String firstName;
17+
18+
public long getUserId() {
19+
return userId;
20+
}
21+
22+
public void setUserId(long userId) {
23+
this.userId = userId;
24+
}
25+
26+
public Optional<String> getFirstName() {
27+
return Optional.ofNullable(firstName);
28+
}
29+
30+
public void setFirstName(String firstName) {
31+
this.firstName = firstName;
32+
Optional.ofNullable(firstName);
33+
}
34+
35+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.baeldung.optionalReturnType;
2+
3+
import java.io.Serializable;
4+
import java.util.Optional;
5+
6+
import javax.persistence.Entity;
7+
import javax.persistence.Id;
8+
9+
@Entity
10+
public class UserOptionalField implements Serializable {
11+
@Id
12+
private long userId;
13+
14+
private Optional<String> firstName;
15+
16+
public long getUserId() {
17+
return userId;
18+
}
19+
20+
public void setUserId(long userId) {
21+
this.userId = userId;
22+
}
23+
24+
public Optional<String> getFirstName() {
25+
return firstName;
26+
}
27+
28+
public void setFirstName(Optional<String> firstName) {
29+
this.firstName = firstName;
30+
}
31+
}

0 commit comments

Comments
 (0)