-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathCache.java
More file actions
80 lines (49 loc) · 2.62 KB
/
Cache.java
File metadata and controls
80 lines (49 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
//But the fearful, and unbelieving, and the abominable, and murderers, and whoremongers, and sorcerers,
//and idolaters, and all liars, shall have their part in the lake which burneth with fire and brimstone: which is the second death. (Revelation 21:8)
package com.javarush.task.task32.task3212;
import com.javarush.task.task32.task3212.service.Service;
import java.util.ArrayList;
import java.util.List;
public class Cache {
private List<Service> services;
public Cache() {
services = new ArrayList<>();
}
public Service getService(String serviceName) {
for (Service service : services) {
if (service.getName().equalsIgnoreCase(serviceName)) {
System.out.println("Return cached " + serviceName + " object");
return service;
}
}
return null;
}
public void addService(Service newService) {
boolean exists = false;
for (Service service : services) {
if (service.getName().equalsIgnoreCase(newService.getName())) {
exists = true;
}
}
if (!exists) {
services.add(newService);
}
}
}
/*
Service Locator
Прочитать о паттерне Service locator.
Реализуй логику метода getService(String jndiName) в ServiceLocator.
В нем будет реализована работа с контекстом и кэшем.
1) Верни из кэша нужный сервис.
2) Если в кэше нет нужного сервиса то:
2.1) Создай контекст.
2.2) Возьми у контекста нужный сервис.
2.3) Добавь сервис в кеш и верни его.
Требования:
1. Класс ServiceLocator должен содержать метод Service getService(String jndiName).
2. Если нужный сервис находится в кэше, метод getService(String jndiName) должен возвращать сервис из кэша.
3. Если нужный сервис НЕ находится в кэше, метод getService(String jndiName) должен создавать контекст.
4. Если нужный сервис НЕ находится в кэше, метод getService(String jndiName) должен искать нужный сервис в контексте.
5. Если нужный сервис НЕ находится в кэше, метод getService(String jndiName) должен добавлять в кэш сервис, найденный в контексте и возвращать его.
*/