[picocontainer-scm] [5617] java/2.x/trunk/pico/distribution/src/site/content: Integration test of Converters with Pico-TCK (If target Pico implements Converting)
rimovm-yCVjj/[email protected]
| Newsgroups | gmane.comp.java.picocontainer.cvs |
|---|---|
| Message-ID | <[email protected]> |
Revision 5617
Author rimovm
Date 2010-02-17 03:52:22 -0600 (Wed, 17 Feb 2010)
Log Message
Integration test of Converters with Pico-TCK (If target Pico implements Converting)
Update docs to reflect latest refactory.
Modified Paths
- java/2.x/trunk/pico/container/src/test/org/picocontainer/DefaultPicoContainerTestCase.java
- java/2.x/trunk/pico/container/src/test/org/picocontainer/tck/AbstractPicoContainerTest.java
- java/2.x/trunk/pico/distribution/src/site/content/converters.html
Diff
Modified: java/2.x/trunk/pico/container/src/test/org/picocontainer/DefaultPicoContainerTestCase.java (5616 => 5617)
--- java/2.x/trunk/pico/container/src/test/org/picocontainer/DefaultPicoContainerTestCase.java 2010-02-17 09:29:13 UTC (rev 5616)
+++ java/2.x/trunk/pico/container/src/test/org/picocontainer/DefaultPicoContainerTestCase.java 2010-02-17 09:52:22 UTC (rev 5617)
@@ -869,6 +869,5 @@
return behavior;
}
}
-
}
\ No newline at end of file
Modified: java/2.x/trunk/pico/container/src/test/org/picocontainer/tck/AbstractPicoContainerTest.java (5616 => 5617)
--- java/2.x/trunk/pico/container/src/test/org/picocontainer/tck/AbstractPicoContainerTest.java 2010-02-17 09:29:13 UTC (rev 5616)
+++ java/2.x/trunk/pico/container/src/test/org/picocontainer/tck/AbstractPicoContainerTest.java 2010-02-17 09:52:22 UTC (rev 5617)
@@ -18,6 +18,10 @@
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import org.picocontainer.parameters.ComponentParameter;
+
+import org.picocontainer.Converting;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -972,4 +976,29 @@
}
}
+
+ public static class ConverterSample {
+ public final int value;
+
+ public ConverterSample(Integer value) {
+ this.value = value;
+ }
+ }
+
+ @Test
+ public void testIntegrationWithConverters() {
+ MutablePicoContainer mpc = new DefaultPicoContainer();
+ if ( !(mpc instanceof Converting)) {
+ System.out.println("Skipping 'testIntegrationWithConverters' " +
+ "because pico implementation is not Converting");
+ return;
+ }
+
+ mpc.addComponent("converterParameter", "42")
+ .addComponent(ConverterSample.class, ConverterSample.class,
+ new ComponentParameter("converterParameter"));
+ ConverterSample result = mpc.getComponent(ConverterSample.class);
+ assertEquals(42, result.value);
+ }
+
}
Modified: java/2.x/trunk/pico/distribution/src/site/content/converters.html (5616 => 5617)
--- java/2.x/trunk/pico/distribution/src/site/content/converters.html 2010-02-17 09:29:13 UTC (rev 5616)
+++ java/2.x/trunk/pico/distribution/src/site/content/converters.html 2010-02-17 09:52:22 UTC (rev 5617)
@@ -1,13 +1,11 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
-
-<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
+ <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Converters</title>
</head>
<body>
-<h2>Overview<br>
-</h2>
+<h2>Overview</h2>
<p><span style="font-weight: normal;">Converters
take string instances in PicoContainer and convert the type that a
particular component requires for injection.</span>
@@ -24,18 +22,45 @@
<li>Short</li>
<li>File</li>
</ul>
+<h2>Integration Example</h2>
+<p>Here's a test case demonstrating a simple usage of converters</p>
+<div class="source">
+<pre>
+ public static class ConverterSample {
+ public final int value;
+
+ public ConverterSample(Integer value) {
+ this.value = value;
+ }
+ }
+
+ @Test
+ public void testIntegrationWithConverters() {
+ MutablePicoContainer mpc = new DefaultPicoContainer();
+
+ mpc.addComponent("converterParameter", "42")
+ .addComponent(ConverterSample.class, ConverterSample.class,
+ new ComponentParameter("converterParameter"));
+
+ ConverterSample result = mpc.getComponent(ConverterSample.class);
+ assertEquals(42, result.value);
+ }
+</pre>
+</div>
+
<h2>Custom Converters</h2>
+<p>
You can extend BuiltInConverter, or implement the Converter interface
directly. BuiltInConverter has a method addConverter(..) which
-you may find convenient:<br>
-<br>
+you may find convenient:
+</p>
<div class="source"><pre>BuiltInConverter bic = new
BuiltInConverter();
bic.addConverter(SomeCustomThing.class, new SomeCustomThingConverter());
-</pre></div>s
-<br>
-Alternatively, you can subclass BuildInConverter:<br>
-<br>
+</pre></div>
+<p>
+Alternatively, you can subclass BuildInConverter:
+</p>
<div class="source"><pre>BuiltInConverter bic = new BuiltInConverter() {
@Override
protected void addBuiltInConverters() {
@@ -44,38 +69,37 @@
}
};
</pre></div>
-<br>
-or:<br>
-<br>
+<p>
+or:<br/>
+</p>
<div class="source"><pre>BuiltInConverter bic = new BuiltInConverter() {
public BuiltInConverter() {
super.addConverter(SomeCustomThing.class, new SomeCustomThingConverter());
}
};
</pre></div>
+<p>
Converters themselves are easy to write. Here's the built in one
-for boolean:<br>
-<br>
-<div class="source"><pre>class BooleanConverter implements Converting.Converter {
- public boolean canConvert(Type type) {
- return Boolean.class == type;
- }
- public Object convert(String paramValue, Type type) {
+for boolean:</p>
+<div class="source"><pre>class BooleanConverter implements Converter<Boolean>{
+ public Boolean convert(String paramValue) {
return Boolean.valueOf(paramValue);
}
}
</pre></div>
-<br>
-Setup a container to use your converter:<br>
-<br>
-<div class="source"><pre>MutableContainer pico = new DefaultPicoContainer() {
+<p>
+Setup a container to use your converter:</p>
+<div class="source"><pre>
+ MutableContainer pico = new DefaultPicoContainer() {
@Override
- public Converting.Converter getConverter() {
- return new YourCustomConverter();
+ public ConverterSet getConverter() {
+ return new BuildInConverter() {
+ public BuiltInConverter() {
+ super.addConverter(SomeCustomThing.class, new SomeCustomThingConverter());
+ }
+ }
}
};
</pre></div>
-<br>
-<br>
</body>
</html>
----------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email