Discussion:
[picocontainer-scm] [scm-git][1/12] Threadsafe Webwork 1 and Webwork 2 CheeseDAO as well.
Michael Rimov
2013-08-09 04:09:25 UTC
Permalink
commit 2a8343c56f873bccf51c575b41df17995e993652
Author: Michael Rimov <mike.rimov-***@public.gmane.org>
AuthorDate: Fri, 19 Jul 2013 15:33:55 -0700
Commit: Michael Rimov <mike.rimov-***@public.gmane.org>
CommitDate: Fri, 19 Jul 2013 15:33:55 -0700

Threadsafe Webwork 1 and Webwork 2 CheeseDAO as well.
(Also typesafe collections)

diff --git a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/Brand.java b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/Brand.java
index aad31a2..d116a8a 100644
--- a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/Brand.java
+++ b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/Brand.java
@@ -3,9 +3,9 @@ package com.picocontainer.web.sample.webwork1;
import javax.servlet.http.HttpServletRequest;

public class Brand {
- private String name;
+ private final String name;

- public Brand(String name) {
+ public Brand(final String name) {
this.name = name;
}

@@ -15,11 +15,11 @@ public class Brand {

public static class FromRequest extends Brand {

- public FromRequest(HttpServletRequest req) {
+ public FromRequest(final HttpServletRequest req) {
super(fromRequest(req));
}

- private static String fromRequest(HttpServletRequest req) {
+ private static String fromRequest(final HttpServletRequest req) {
String name = req.getRemoteHost().toUpperCase();
if (name == null) {
name = "";
diff --git a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/Cheese.java b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/Cheese.java
index 5702752..302f2b9 100644
--- a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/Cheese.java
+++ b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/Cheese.java
@@ -14,6 +14,7 @@ import java.io.Serializable;
* @author Stephen Molitor
* @author Mauro Talevi
*/
+@SuppressWarnings("serial")
public class Cheese implements Serializable {

private String name;
@@ -23,7 +24,7 @@ public class Cheese implements Serializable {
// default constructor used by some frameworks
}

- public Cheese(String name, String country) {
+ public Cheese(final String name, final String country) {
this.name = name;
this.country = country;
if (name == null) {
@@ -38,7 +39,7 @@ public class Cheese implements Serializable {
return name;
}

- public void setName(String name) {
+ public void setName(final String name) {
this.name = name;
}

@@ -46,10 +47,11 @@ public class Cheese implements Serializable {
return country;
}

- public void setCountry(String country) {
+ public void setCountry(final String country) {
this.country = country;
}

+ @Override
public String toString() {
return "[Cheese name=" + name + ", country=" + country + "]";
}
diff --git a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseAction.java b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseAction.java
index 6c25d7c..8604ec1 100644
--- a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseAction.java
+++ b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseAction.java
@@ -18,12 +18,13 @@ import webwork.action.CommandDriven;
*
* @author Aslak Helles&oslash;y
*/
+@SuppressWarnings("serial")
public final class CheeseAction extends ActionSupport implements CommandDriven {

private final CheeseService cheeseService;
private final Cheese cheese = new Cheese();

- public CheeseAction(CheeseService cheeseService) {
+ public CheeseAction(final CheeseService cheeseService) {
this.cheeseService = cheeseService;
}

@@ -31,7 +32,7 @@ public final class CheeseAction extends ActionSupport implements CommandDriven {
return cheese;
}

- public Collection getCheeses() {
+ public Collection<Cheese> getCheeses() {
return cheeseService.getCheeses();
}

diff --git a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseDao.java b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseDao.java
index b49ad22..c3affa1 100644
--- a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseDao.java
+++ b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseDao.java
@@ -23,6 +23,6 @@ public interface CheeseDao {

Cheese get(String name);

- Collection all();
+ Collection<Cheese> all();

}
\ No newline at end of file
diff --git a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseService.java b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseService.java
index cd6d686..63a9195 100644
--- a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseService.java
+++ b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/CheeseService.java
@@ -17,7 +17,7 @@ import java.util.Collection;
*/
public interface CheeseService {

- public Collection getCheeses();
+ public Collection<Cheese> getCheeses();

public Cheese find(Cheese example);

diff --git a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/DefaultCheeseService.java b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/DefaultCheeseService.java
index ee53ffa..9fca344 100644
--- a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/DefaultCheeseService.java
+++ b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/DefaultCheeseService.java
@@ -18,27 +18,28 @@ import java.util.Collection;
* @author Stephen Molitor
* @author Mauro Talevi
*/
+@SuppressWarnings("serial")
public class DefaultCheeseService implements CheeseService, Serializable {

private final CheeseDao dao;

- public DefaultCheeseService(CheeseDao dao) {
+ public DefaultCheeseService(final CheeseDao dao) {
this.dao = dao;
}

- public Collection getCheeses() {
+ public Collection<Cheese> getCheeses() {
return dao.all();
}

- public Cheese find(Cheese example) {
+ public Cheese find(final Cheese example) {
return dao.get(example.getName());
}

- public void save(Cheese cheese) {
+ public void save(final Cheese cheese) {
dao.save(cheese);
}

- public void remove(Cheese cheese) {
+ public void remove(final Cheese cheese) {
dao.remove(cheese);
}
}
\ No newline at end of file
diff --git a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/InMemoryCheeseDao.java b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/InMemoryCheeseDao.java
index dd0c77f..db707de 100644
--- a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/InMemoryCheeseDao.java
+++ b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/InMemoryCheeseDao.java
@@ -9,38 +9,40 @@
package com.picocontainer.web.sample.webwork1;

import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;

/**
* @author Stephen Molitor
*/
+@SuppressWarnings("serial")
public class InMemoryCheeseDao implements CheeseDao, Serializable {

- private final Map cheeses;
+ private final Map<String,Cheese> cheeses;

public InMemoryCheeseDao() {
- cheeses = new HashMap();
+ cheeses = new ConcurrentHashMap<String,Cheese>();
cheeses.put("Cheddar", new Cheese("Cheddar","England"));
cheeses.put("Brie", new Cheese("Brie","France"));
cheeses.put("Dolcelatte", new Cheese("Dolcelatte","Italy"));
cheeses.put("Manchego", new Cheese("Manchego","Spain"));
}

- public void save(Cheese cheese) {
+ public void save(final Cheese cheese) {
cheeses.put(cheese.getName(), cheese);
}

- public void remove(Cheese cheese) {
+ public void remove(final Cheese cheese) {
cheeses.remove(cheese.getName());
}
- public Cheese get(String name) {
- return (Cheese) cheeses.get(name);
+ public Cheese get(final String name) {
+ return cheeses.get(name);
}

- public Collection all() {
- return cheeses.values();
+ public Collection<Cheese> all() {
+ return new ArrayList<Cheese>(cheeses.values());
}

}
\ No newline at end of file
diff --git a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/WebWork1DemoComposer.java b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/WebWork1DemoComposer.java
index 6fc1ac2..0f231d3 100644
--- a/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/WebWork1DemoComposer.java
+++ b/web/examples/webwork-webapp/src/java/com/picocontainer/web/sample/webwork1/WebWork1DemoComposer.java
@@ -7,26 +7,23 @@
******************************************************************************/
package com.picocontainer.web.sample.webwork1;

-import com.picocontainer.web.WebappComposer;
+import javax.servlet.ServletContext;

import com.picocontainer.Characteristics;
import com.picocontainer.MutablePicoContainer;
-import com.picocontainer.injectors.ProviderAdapter;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.ServletContext;
+import com.picocontainer.web.WebappComposer;

public class WebWork1DemoComposer implements WebappComposer {

- public void composeApplication(MutablePicoContainer container, ServletContext context) {
+ public void composeApplication(final MutablePicoContainer container, final ServletContext context) {
container.addComponent(CheeseDao.class, InMemoryCheeseDao.class);
}

- public void composeSession(MutablePicoContainer container) {
+ public void composeSession(final MutablePicoContainer container) {
container.addComponent(CheeseService.class, DefaultCheeseService.class);
}

- public void composeRequest(MutablePicoContainer container) {
+ public void composeRequest(final MutablePicoContainer container) {
container.as(Characteristics.NO_CACHE).addComponent(Brand.class, Brand.FromRequest.class);

}
diff --git a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/AddCheese.java b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/AddCheese.java
index 7ac8e4b..5728bc9 100644
--- a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/AddCheese.java
+++ b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/AddCheese.java
@@ -2,6 +2,7 @@ package com.picocontainer.web.sample.webwork2;

import com.opensymphony.xwork.ActionSupport;

+@SuppressWarnings("serial")
public class AddCheese extends ActionSupport {

private Cheese cheese = new Cheese();
diff --git a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/Cheese.java b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/Cheese.java
index 19326fb..f650f30 100644
--- a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/Cheese.java
+++ b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/Cheese.java
@@ -14,6 +14,7 @@ import java.io.Serializable;
* @author Stephen Molitor
* @author Mauro Talevi
*/
+@SuppressWarnings("serial")
public class Cheese implements Serializable {

private String name;
diff --git a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseDao.java b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseDao.java
index 7d34d97..f10d81c 100644
--- a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseDao.java
+++ b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseDao.java
@@ -23,6 +23,6 @@ public interface CheeseDao {

Cheese get(String name);

- Collection all();
+ Collection<Cheese> all();

}
\ No newline at end of file
diff --git a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseInventory.java b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseInventory.java
index 903038c..063a88e 100644
--- a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseInventory.java
+++ b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseInventory.java
@@ -21,18 +21,18 @@ import java.util.ArrayList;
public class CheeseInventory implements Action {

private final CheeseService cheeseService;
- private List cheeses;
+ private List<Cheese> cheeses;

public CheeseInventory(CheeseService cheeseService) {
this.cheeseService = cheeseService;
}

- public List getCheeses() {
+ public List<Cheese> getCheeses() {
return cheeses;
}

public String execute() throws Exception {
- cheeses = new ArrayList(cheeseService.getCheeses());
+ cheeses = new ArrayList<Cheese>(cheeseService.getCheeses());
return SUCCESS;
}

diff --git a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseService.java b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseService.java
index a6e39ad..7fdd3f9 100644
--- a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseService.java
+++ b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/CheeseService.java
@@ -17,7 +17,7 @@ import java.util.Collection;
*/
public interface CheeseService {

- public Collection getCheeses();
+ public Collection<Cheese> getCheeses();

public Cheese find(Cheese example);

diff --git a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/DefaultCheeseService.java b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/DefaultCheeseService.java
index 3c06b32..0fe9a77 100644
--- a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/DefaultCheeseService.java
+++ b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/DefaultCheeseService.java
@@ -18,6 +18,7 @@ import java.util.Collection;
* @author Stephen Molitor
* @author Mauro Talevi
*/
+@SuppressWarnings("serial")
public class DefaultCheeseService implements CheeseService, Serializable {

private final CheeseDao dao;
@@ -26,7 +27,7 @@ public class DefaultCheeseService implements CheeseService, Serializable {
this.dao = dao;
}

- public Collection getCheeses() {
+ public Collection<Cheese> getCheeses() {
return dao.all();
}

diff --git a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/InMemoryCheeseDao.java b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/InMemoryCheeseDao.java
index 79d339b..b25839f 100644
--- a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/InMemoryCheeseDao.java
+++ b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/InMemoryCheeseDao.java
@@ -9,19 +9,21 @@
package com.picocontainer.web.sample.webwork2;

import java.io.Serializable;
+import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;

/**
* @author Stephen Molitor
*/
+@SuppressWarnings("serial")
public class InMemoryCheeseDao implements CheeseDao, Serializable {

- private final Map cheeses;
+ private final Map<String,Cheese> cheeses;

public InMemoryCheeseDao() {
- cheeses = new HashMap();
+ cheeses = new ConcurrentHashMap<String,Cheese>();
cheeses.put("Cheddar", new Cheese("Cheddar","England"));
cheeses.put("Brie", new Cheese("Brie","France"));
cheeses.put("Dolcelatte", new Cheese("Dolcelatte","Italy"));
@@ -39,8 +41,8 @@ public class InMemoryCheeseDao implements CheeseDao, Serializable {
return (Cheese) cheeses.get(name);
}

- public Collection all() {
- return cheeses.values();
+ public Collection<Cheese> all() {
+ return new ArrayList<Cheese>(cheeses.values());
}

}
\ No newline at end of file
diff --git a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/RemoveCheese.java b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/RemoveCheese.java
index c9a175d..b329102 100644
--- a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/RemoveCheese.java
+++ b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/RemoveCheese.java
@@ -2,6 +2,7 @@ package com.picocontainer.web.sample.webwork2;

import com.opensymphony.xwork.ActionSupport;

+@SuppressWarnings("serial")
public class RemoveCheese extends ActionSupport {

private Cheese cheese = new Cheese();
diff --git a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/WebWork2DemoComposer.java b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/WebWork2DemoComposer.java
index ff46603..9e44274 100644
--- a/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/WebWork2DemoComposer.java
+++ b/web/examples/webwork2-webapp/src/java/com/picocontainer/web/sample/webwork2/WebWork2DemoComposer.java
@@ -7,14 +7,11 @@
******************************************************************************/
package com.picocontainer.web.sample.webwork2;

-import com.picocontainer.web.WebappComposer;
+import javax.servlet.ServletContext;

import com.picocontainer.Characteristics;
import com.picocontainer.MutablePicoContainer;
-import com.picocontainer.injectors.ProviderAdapter;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.ServletContext;
+import com.picocontainer.web.WebappComposer;

public class WebWork2DemoComposer implements WebappComposer {

Loading...