1 /*
2 * JBoss, Home of Professional Open Source
3 * Copyright 2014, Red Hat, Inc. and/or its affiliates, and individual
4 * contributors by the @authors tag. See the copyright.txt in the
5 * distribution for a full listing of individual contributors.
6 *
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.jboss.as.quickstarts.tasksJsf;
18
19 import java.util.List;
20
21 import javax.enterprise.context.RequestScoped;
22 import javax.inject.Inject;
23 import javax.inject.Named;
24
25
26 /**
27 * <p>
28 * Operations with cached list of tasks for current user.
29 * </p>
30 *
31 * <p>
32 * Delegates to {@link TaskDao} for persistence operations.
33 * </p>
34 *
35 * <p>
36 * This bean ensures that task list will be obtained at most once per request or additionally after each invalidation (
37 * {@link #invalidate()}).
38 * </p>
39 *
40 * <p>
41 * This behavior prevents unnecessary delegations to the persistence layer, since {{@link #getAll()} can be called several times
42 * per request when used in view layer.
43 * </p>
44 *
45 * @author Lukas Fryc
46 */
47 @Named("taskList")
48 @RequestScoped
49 public class TaskListBean implements TaskList {
50
51 private List<Task> tasks;
52
53 @Inject
54 private TaskDao taskDao;
55
56 @Inject
57 @CurrentUser
58 private User currentUser;
59
60 @Override
61 public List<Task> getAll() {
62 if (tasks == null) {
63 tasks = taskDao.getAll(currentUser);
64 }
65 return tasks;
66 }
67
68 @Override
69 public void invalidate() {
70 tasks = null;
71 }
72 }