Skip to content

Commit dffcd28

Browse files
committed
Update README.md.
1 parent 9432167 commit dffcd28

File tree

14 files changed

+344
-220
lines changed

14 files changed

+344
-220
lines changed

README.md

Lines changed: 290 additions & 92 deletions
Large diffs are not rendered by default.

httprpc-client/src/main/java/org/httprpc/io/TemplateEncoder.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.util.Date;
3737
import java.util.HashMap;
3838
import java.util.Iterator;
39+
import java.util.LinkedList;
3940
import java.util.Locale;
4041
import java.util.Map;
4142
import java.util.Set;
@@ -398,6 +399,8 @@ public Set<Entry<Object, Object>> entrySet() {
398399
private HashMap<String, Modifier> modifiers;
399400
private Modifier defaultEscapeModifier;
400401

402+
private LinkedList<String> sectionNames = new LinkedList<>();
403+
401404
private static HashMap<String, Modifier> defaultModifiers = new HashMap<>();
402405

403406
private static final int EOF = -1;
@@ -652,6 +655,8 @@ private void writeRoot(Object root, Writer writer, Locale locale, TimeZone timeZ
652655

653656
switch (markerType) {
654657
case CONDITIONAL_SECTION_START: {
658+
sectionNames.push(marker);
659+
655660
Object value = getMarkerValue(dictionary, marker);
656661

657662
if (value != null) {
@@ -660,6 +665,8 @@ private void writeRoot(Object root, Writer writer, Locale locale, TimeZone timeZ
660665
writeRoot(null, new NullWriter(), locale, timeZone, reader);
661666
}
662667

668+
sectionNames.pop();
669+
663670
break;
664671
}
665672

@@ -678,6 +685,8 @@ private void writeRoot(Object root, Writer writer, Locale locale, TimeZone timeZ
678685
}
679686
}
680687

688+
sectionNames.push(marker);
689+
681690
Object value = getMarkerValue(dictionary, marker);
682691

683692
Iterator<?> iterator;
@@ -717,10 +726,14 @@ private void writeRoot(Object root, Writer writer, Locale locale, TimeZone timeZ
717726
writeRoot(null, new NullWriter(), locale, timeZone, reader);
718727
}
719728

729+
sectionNames.pop();
730+
720731
break;
721732
}
722733

723734
case INVERTED_SECTION_START: {
735+
sectionNames.push(marker);
736+
724737
Object value = getMarkerValue(dictionary, marker);
725738

726739
if (value == null
@@ -730,10 +743,17 @@ private void writeRoot(Object root, Writer writer, Locale locale, TimeZone timeZ
730743
} else {
731744
writeRoot(null, new NullWriter(), locale, timeZone, reader);
732745
}
746+
747+
sectionNames.pop();
748+
749+
break;
733750
}
734751

735752
case SECTION_END: {
736-
// No-op
753+
if (!sectionNames.peek().equals(marker)) {
754+
throw new IOException("Invalid closing section marker.");
755+
}
756+
737757
return;
738758
}
739759

httprpc-client/src/main/java/org/httprpc/util/ResourceBundleAdapter.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

httprpc-client/src/test/java/org/httprpc/io/TemplateEncoderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ public void testMapRepeatingSection1() throws IOException {
265265

266266
@Test
267267
public void testMapRepeatingSection2() throws IOException {
268-
TemplateEncoder encoder = new TemplateEncoder(getClass().getResource("repeating8.txt"));
268+
TemplateEncoder encoder = new TemplateEncoder(getClass().getResource("repeating7.txt"));
269269

270270
Map<String, ?> value = mapOf(
271271
entry("entries", mapOf(

httprpc-client/src/test/java/org/httprpc/util/ResourceBundleAdapterTest.java

Lines changed: 0 additions & 33 deletions
This file was deleted.

httprpc-client/src/test/java/org/httprpc/util/StreamAdapterTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@
1919

2020
import java.io.IOException;
2121
import java.io.StringWriter;
22-
import java.util.Arrays;
2322
import java.util.List;
2423

24+
import static org.httprpc.util.Collections.listOf;
2525
import static org.junit.jupiter.api.Assertions.assertEquals;
2626

2727
public class StreamAdapterTest {
2828
@Test
2929
public void testStreamAdapter() throws IOException {
3030
String expected = "[2,4,6]";
3131

32-
List<Integer> values = Arrays.asList(1, 2, 3);
32+
List<Integer> values = listOf(1, 2, 3);
3333

3434
StringWriter writer = new StringWriter();
3535

httprpc-client/src/test/resources/org/httprpc/io/repeating8.txt renamed to httprpc-client/src/test/resources/org/httprpc/io/repeating7.txt

File renamed without changes.

httprpc-client/src/test/resources/org/httprpc/util/test.properties

Lines changed: 0 additions & 3 deletions
This file was deleted.

httprpc-server/src/main/java/org/httprpc/WebService.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import java.util.concurrent.ConcurrentHashMap;
5858

5959
import static java.util.Collections.emptyList;
60+
import static org.httprpc.util.Collections.listOf;
6061

6162
/**
6263
* Abstract base class for web services.
@@ -65,32 +66,32 @@ public abstract class WebService extends HttpServlet {
6566
private static final long serialVersionUID = 0;
6667

6768
private static class Resource {
68-
private static List<String> order = Arrays.asList("get", "post", "put", "delete");
69+
static List<String> order = listOf("get", "post", "put", "delete");
6970

70-
public final TreeMap<String, LinkedList<Handler>> handlerMap = new TreeMap<>((verb1, verb2) -> {
71+
final TreeMap<String, LinkedList<Handler>> handlerMap = new TreeMap<>((verb1, verb2) -> {
7172
int i1 = order.indexOf(verb1);
7273
int i2 = order.indexOf(verb2);
7374

7475
return Integer.compare((i1 == -1) ? order.size() : i1, (i2 == -1) ? order.size() : i2);
7576
});
7677

77-
public final TreeMap<String, Resource> resources = new TreeMap<>();
78+
final TreeMap<String, Resource> resources = new TreeMap<>();
7879
}
7980

8081
private static class Handler {
81-
public final Method method;
82+
final Method method;
8283

83-
public final ArrayList<String> keys = new ArrayList<>();
84+
final ArrayList<String> keys = new ArrayList<>();
8485

85-
public Handler(Method method) {
86+
Handler(Method method) {
8687
this.method = method;
8788
}
8889
}
8990

9091
private static class PartURLConnection extends URLConnection {
91-
private Part part;
92+
Part part;
9293

93-
public PartURLConnection(URL url, Part part) {
94+
PartURLConnection(URL url, Part part) {
9495
super(url);
9596

9697
this.part = part;
@@ -108,9 +109,9 @@ public InputStream getInputStream() throws IOException {
108109
}
109110

110111
private static class PartURLStreamHandler extends URLStreamHandler {
111-
private Part part;
112+
Part part;
112113

113-
public PartURLStreamHandler(Part part) {
114+
PartURLStreamHandler(Part part) {
114115
this.part = part;
115116
}
116117

httprpc-test/src/main/java/org/httprpc/test/PetService.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import org.httprpc.io.TemplateEncoder;
2424
import org.httprpc.sql.Parameters;
2525
import org.httprpc.sql.ResultSetAdapter;
26-
import org.httprpc.util.ResourceBundleAdapter;
2726

2827
import javax.naming.Context;
2928
import javax.naming.InitialContext;
@@ -36,12 +35,11 @@
3635
import java.sql.PreparedStatement;
3736
import java.sql.SQLException;
3837
import java.sql.Statement;
39-
import java.util.Arrays;
4038
import java.util.Date;
41-
import java.util.ResourceBundle;
4239
import java.util.stream.Stream;
4340

4441
import static org.httprpc.util.Collections.entry;
42+
import static org.httprpc.util.Collections.listOf;
4543
import static org.httprpc.util.Collections.mapOf;
4644

4745
/**
@@ -73,7 +71,7 @@ public void init() throws ServletException {
7371

7472
@RequestMethod("GET")
7573
public void getPets(String owner, String format) throws SQLException, IOException {
76-
Parameters parameters = Parameters.parse("SELECT name, species, sex, birth FROM pet WHERE owner = :owner");
74+
Parameters parameters = Parameters.parse("select name, species, sex, birth from pet where owner = :owner");
7775

7876
try (Connection connection = dataSource.getConnection();
7977
PreparedStatement statement = connection.prepareStatement(parameters.getSQL())) {
@@ -91,18 +89,15 @@ public void getPets(String owner, String format) throws SQLException, IOExceptio
9189
} else if (format.equals("csv")) {
9290
getResponse().setContentType("text/csv");
9391

94-
CSVEncoder csvEncoder = new CSVEncoder(Arrays.asList("name", "species", "sex", "birth"));
92+
CSVEncoder csvEncoder = new CSVEncoder(listOf("name", "species", "sex", "birth"));
9593

9694
csvEncoder.write(resultSetAdapter, getResponse().getOutputStream());
9795
} else if (format.equals("html")) {
9896
getResponse().setContentType("text/html");
9997

10098
TemplateEncoder templateEncoder = new TemplateEncoder(getClass().getResource("pets.html"));
10199

102-
templateEncoder.write(mapOf(
103-
entry("labels", new ResourceBundleAdapter(ResourceBundle.getBundle(getClass().getPackage().getName() + ".pets"))),
104-
entry("pets", resultSetAdapter)
105-
), getResponse().getOutputStream());
100+
templateEncoder.write(resultSetAdapter, getResponse().getOutputStream());
106101
} else {
107102
throw new IllegalArgumentException();
108103
}

0 commit comments

Comments
 (0)