2020import java .io .InputStreamReader ;
2121import java .io .Reader ;
2222import java .io .Writer ;
23- import java .net .URI ;
24- import java .net .URISyntaxException ;
2523import java .text .NumberFormat ;
2624import java .time .Instant ;
2725import java .time .LocalDate ;
@@ -276,7 +274,8 @@ public Set<Entry<Object, Object>> entrySet() {
276274 }
277275 }
278276
279- private URI uri ;
277+ private Class <?> type ;
278+ private String name ;
280279
281280 private Locale locale = Locale .getDefault ();
282281 private TimeZone timeZone = TimeZone .getDefault ();
@@ -295,25 +294,9 @@ public Set<Entry<Object, Object>> entrySet() {
295294
296295 private static final int EOF = -1 ;
297296
298- private static final String JAR_SCHEME = "jar" ;
299-
300297 private static final String KEY_REFERENCE = "~" ;
301298 private static final String SELF_REFERENCE = "." ;
302299
303- /**
304- * Constructs a new template encoder.
305- *
306- * @param uri
307- * The URI of the template.
308- */
309- public TemplateEncoder (URI uri ) {
310- if (uri == null ) {
311- throw new IllegalArgumentException ();
312- }
313-
314- this .uri = uri ;
315- }
316-
317300 /**
318301 * Constructs a new template encoder.
319302 *
@@ -328,17 +311,8 @@ public TemplateEncoder(Class<?> type, String name) {
328311 throw new IllegalArgumentException ();
329312 }
330313
331- var url = type .getResource (name );
332-
333- if (url == null ) {
334- throw new IllegalArgumentException ("Invalid resource name." );
335- }
336-
337- try {
338- uri = url .toURI ();
339- } catch (URISyntaxException exception ) {
340- throw new IllegalArgumentException (exception );
341- }
314+ this .type = type ;
315+ this .name = name ;
342316 }
343317
344318 /**
@@ -458,7 +432,7 @@ public void write(Object value, Writer writer) throws IOException {
458432 }
459433
460434 if (value != null ) {
461- try (var inputStream = uri . toURL (). openStream ( )) {
435+ try (var inputStream = type . getResourceAsStream ( name )) {
462436 Reader reader = new PagedReader (new InputStreamReader (inputStream , getCharset ()));
463437
464438 writer = new BufferedWriter (writer );
@@ -720,29 +694,7 @@ private void encode(Object root, Writer writer, Reader reader) throws IOExceptio
720694 break ;
721695 }
722696
723- var uri = this .uri ;
724-
725- var jar = uri .getScheme ().equals (JAR_SCHEME );
726-
727- if (jar ) {
728- try {
729- uri = new URI (uri .toString ().substring (JAR_SCHEME .length () + 1 ));
730- } catch (URISyntaxException exception ) {
731- throw new IllegalStateException (exception );
732- }
733- }
734-
735- uri = uri .resolve (marker );
736-
737- if (jar ) {
738- try {
739- uri = new URI (String .format ("%s:%s" , JAR_SCHEME , uri ));
740- } catch (URISyntaxException exception ) {
741- throw new IllegalStateException (exception );
742- }
743- }
744-
745- try (var inputStream = uri .toURL ().openStream ()) {
697+ try (var inputStream = type .getResourceAsStream (marker )) {
746698 encode (dictionary , writer , new PagedReader (new InputStreamReader (inputStream )));
747699 }
748700 }
0 commit comments