0b40cc3e2cbe81680527139de3c5d84aafb2219b
[pnews.git] / war / src / main / java / pnews / servlet / ArticleStore.java
1 package pnews.servlet;
2
3 import java.lang.ref.WeakReference;
4 import java.util.HashMap;
5
6 import pnews.Article;
7
8 public class ArticleStore {
9         public final static ArticleStore singleton = new ArticleStore();
10         private final HashMap<String, WeakReference<Article>> articles = new HashMap<>();
11         
12         public Article get(String link) {
13                 WeakReference<Article> ref;
14                 
15                 synchronized (articles) {
16                         ref = articles.get(link);
17                         if (ref == null)
18                                 return null;
19                         return ref.get();
20                 }
21         }
22         
23         public Article getArticle(String link, ArticleFactory factory) {
24                 Article result;
25                 
26                 synchronized (articles) {
27                         result = get(link);
28                         if (result == null) {
29                                 result = factory.create();
30                                 articles.put(link, new WeakReference<>(result));
31                         }
32                         
33                         return result;
34                 }
35         }
36 }