Skip to content

Commit 21aa371

Browse files
authored
Merge branch 'HTTP-RPC:master' into master
2 parents e0911b6 + a314fab commit 21aa371

5 files changed

Lines changed: 50 additions & 17 deletions

File tree

sierra-tools/dtd-encoder/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ dependencies {
2020
implementation project(':sierra')
2121

2222
testImplementation 'org.junit.jupiter:junit-jupiter:5.10.1'
23-
testImplementation 'org.jfree:jfreechart:1.5.6'
2423

2524
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
2625
}
@@ -30,5 +29,5 @@ tasks.named('test', Test) {
3029
}
3130

3231
application {
33-
mainClass = 'org.httprpc.sierra.tools.DTDEncoder'
32+
mainClass = 'org.httprpc.sierra.tools.dtd.DTDEncoder'
3433
}

sierra-tools/dtd-encoder/src/main/java/org/httprpc/sierra/tools/DTDEncoder.java renamed to sierra-tools/dtd-encoder/src/main/java/org/httprpc/sierra/tools/dtd/DTDEncoder.java

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* limitations under the License.
1313
*/
1414

15-
package org.httprpc.sierra.tools;
15+
package org.httprpc.sierra.tools.dtd;
1616

1717
import org.httprpc.kilo.beans.BeanAdapter;
1818
import org.httprpc.kilo.io.Encoder;
@@ -37,6 +37,8 @@
3737
import java.awt.Image;
3838
import java.io.IOException;
3939
import java.io.Writer;
40+
import java.net.URL;
41+
import java.net.URLClassLoader;
4042
import java.nio.file.Files;
4143
import java.nio.file.Path;
4244
import java.util.ArrayList;
@@ -47,8 +49,6 @@
4749
import java.util.Map;
4850
import java.util.Properties;
4951

50-
import static org.httprpc.sierra.UILoader.*;
51-
5252
public class DTDEncoder extends Encoder<Void> {
5353
private List<Class<?>> typeList;
5454
private Map<Class<?>, String> tags;
@@ -256,15 +256,30 @@ public static void main(String[] args) throws Exception {
256256
var workingPath = Path.of(System.getProperty("user.dir"));
257257

258258
if (args.length > 0) {
259-
applyBindings(workingPath.resolve(args[0]));
259+
ClassLoader classLoader;
260+
if (args.length > 1) {
261+
try (var paths = Files.walk(workingPath.resolve(args[1]))) {
262+
classLoader = new URLClassLoader(paths.map(path -> {
263+
try {
264+
return path.toUri().toURL();
265+
} catch (IOException exception) {
266+
throw new RuntimeException(exception);
267+
}
268+
}).toArray(URL[]::new));
269+
}
270+
} else {
271+
classLoader = ClassLoader.getSystemClassLoader();
272+
}
273+
274+
applyBindings(workingPath.resolve(args[0]), classLoader);
260275
}
261276

262277
var typeSet = new HashSet<Class<?>>();
263278

264279
var tags = new HashMap<Class<?>, String>();
265280

266-
for (var tag : getTags()) {
267-
var type = (Class<?>)getType(tag);
281+
for (var tag : UILoader.getTags()) {
282+
var type = (Class<?>)UILoader.getType(tag);
268283

269284
tags.put(type, tag);
270285

@@ -287,7 +302,7 @@ public static void main(String[] args) throws Exception {
287302
}
288303

289304
@SuppressWarnings("unchecked")
290-
private static void applyBindings(Path path) throws IOException, ClassNotFoundException {
305+
private static void applyBindings(Path path, ClassLoader classLoader) throws IOException, ClassNotFoundException {
291306
var bindings = new Properties();
292307

293308
try (var inputStream = Files.newInputStream(path)) {
@@ -296,9 +311,9 @@ private static void applyBindings(Path path) throws IOException, ClassNotFoundEx
296311

297312
for (var entry : bindings.entrySet()) {
298313
var tag = (String)entry.getKey();
299-
var type = (Class<? extends JComponent>)Class.forName((String)entry.getValue());
314+
var typeName = (String)entry.getValue();
300315

301-
UILoader.bind(tag, type, () -> null);
316+
UILoader.bind(tag, (Class<? extends JComponent>)classLoader.loadClass(typeName), () -> null);
302317
}
303318
}
304319

sierra-tools/dtd-encoder/src/test/java/org/httprpc/sierra/tools/DTDEncoderTest.java renamed to sierra-tools/dtd-encoder/src/test/java/org/httprpc/sierra/tools/dtd/DTDEncoderTest.java

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@
1212
* limitations under the License.
1313
*/
1414

15-
package org.httprpc.sierra.tools;
15+
package org.httprpc.sierra.tools.dtd;
1616

1717
import org.httprpc.kilo.io.TextDecoder;
18-
import org.jfree.chart.ChartPanel;
1918
import org.junit.jupiter.api.Test;
2019

2120
import java.nio.file.Files;
2221
import java.nio.file.Path;
22+
import java.nio.file.StandardCopyOption;
2323
import java.util.Properties;
2424

2525
import static org.junit.jupiter.api.Assertions.*;
@@ -30,18 +30,34 @@ public void testDTDEncoder() throws Exception {
3030
var workingPath = Path.of(System.getProperty("user.dir"));
3131

3232
var bindingsPath = workingPath.resolve("bindings.properties");
33-
var dtdPath = workingPath.resolve("sierra.dtd");
3433

3534
var properties = new Properties();
3635

37-
properties.put("chart-panel", ChartPanel.class.getName());
36+
properties.put("chart-panel", "org.jfree.chart.ChartPanel");
37+
38+
var libraryPath = workingPath.resolve("lib");
39+
40+
Files.createDirectories(libraryPath);
41+
42+
var dependencyName = "jfreechart-1.5.6.jar";
43+
44+
var dependencyPath = libraryPath.resolve(dependencyName);
45+
46+
try (var inputStream = DTDEncoderTest.class.getResourceAsStream(dependencyName)) {
47+
Files.copy(inputStream, dependencyPath, StandardCopyOption.REPLACE_EXISTING);
48+
}
49+
50+
var dtdPath = workingPath.resolve("sierra.dtd");
3851

3952
try {
4053
try (var outputStream = Files.newOutputStream(bindingsPath)) {
4154
properties.store(outputStream, "Test Bindings");
4255
}
4356

44-
DTDEncoder.main(new String[]{bindingsPath.getFileName().toString()});
57+
DTDEncoder.main(new String[]{
58+
bindingsPath.getFileName().toString(),
59+
libraryPath.getFileName().toString()
60+
});
4561

4662
String text;
4763
try (var inputStream = Files.newInputStream(dtdPath)) {
@@ -53,6 +69,9 @@ public void testDTDEncoder() throws Exception {
5369
assertTrue(text.contains("chart-panel"));
5470
} finally {
5571
Files.deleteIfExists(bindingsPath);
72+
Files.deleteIfExists(dependencyPath);
73+
Files.deleteIfExists(libraryPath);
74+
5675
Files.deleteIfExists(dtdPath);
5776
}
5877
}
Binary file not shown.

sierra/src/main/java/org/httprpc/sierra/TextPane.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ private void paint(Graphics2D graphics) {
155155

156156
var x = switch (horizontalAlignment) {
157157
case LEFT -> insets.left;
158-
case RIGHT -> insets.right;
158+
case RIGHT -> size.width - (lineWidth + insets.right);
159159
case LEADING, TRAILING -> {
160160
if (getComponentOrientation().isLeftToRight() ^ horizontalAlignment == HorizontalAlignment.TRAILING) {
161161
yield insets.left;

0 commit comments

Comments
 (0)