3131import java .net .URI ;
3232import java .util .LinkedHashMap ;
3333import java .util .Map ;
34- import java .util .Arrays ;
35- import java .net .URI ;
36- import java .net .URISyntaxException ;
37- import java .nio .charset .StandardCharsets ;
38- import java .util .Objects ;
3934
4035/**
4136 * Utility class for working with {@link URI} objects.
4439 */
4540public final class FijiURILink {
4641
42+ public static final String FIJI_SCHEME = "fiji" ;
4743
48- private final String plugin ; // e.g., "BDV"
49- private final String subPlugin ; // e.g., "open" (nullable)
50- private final String query ; // e.g., "a=1&b=2" (nullable)
51- private final String rawQuery ; // e.g., "a=1&b=2" (nullable)
44+ private final String plugin ; // e.g., "BDV"
45+ private final String subPlugin ; // e.g., "open" (nullable)
46+ private final String query ; // e.g., "a=1&b=2" (nullable)
47+ private final String rawQuery ; // e.g., "a=1&b=2" (nullable)
5248
5349 private FijiURILink (String plugin , String subPlugin , String query , String rawQuery ) {
5450 this .plugin = plugin ;
@@ -58,13 +54,15 @@ private FijiURILink(String plugin, String subPlugin, String query, String rawQue
5854 }
5955
6056 public static FijiURILink parse (String uriString ) {
61- Objects .requireNonNull (uriString , "uriString" );
62- final URI uri ;
6357 try {
64- uri = new URI (uriString );
65- } catch (URISyntaxException e ) {
58+ URI uri = URI .create (uriString );
59+ return parse (uri );
60+ } catch (IllegalArgumentException e ) {
6661 throw new IllegalArgumentException ("Invalid URI: " + uriString , e );
6762 }
63+ }
64+
65+ public static FijiURILink parse (URI uri ) {
6866
6967 if (!"fiji" .equalsIgnoreCase (uri .getScheme ())) {
7068 throw new IllegalArgumentException ("Scheme must be fiji://" );
@@ -87,15 +85,27 @@ public static FijiURILink parse(String uriString) {
8785 // Raw query (no '?'), leave as-is; users can parse if they want.
8886 String q = uri .getQuery ();
8987 // Optional: decode percent-escapes (uncomment if desired)
90- // q = (q == null) ? null : java.net.URLDecoder.decode(q, StandardCharsets.UTF_8);
88+ // q = (q == null) ? null : java.net.URLDecoder.decode(q,
89+ // StandardCharsets.UTF_8);
9190 String raw = uri .getRawQuery ();
9291 return new FijiURILink (plugin , sub , q , raw );
9392 }
9493
95- public String getPlugin () { return plugin ; }
96- public String getSubPlugin () { return subPlugin ; } // may be null
97- public String getQuery () { return query ; } // may be null
98- public String getRawQuery () { return rawQuery ; } // may be null
94+ public String getPlugin () {
95+ return plugin ;
96+ }
97+
98+ public String getSubPlugin () {
99+ return subPlugin ;
100+ } // may be null
101+
102+ public String getQuery () {
103+ return query ;
104+ } // may be null
105+
106+ public String getRawQuery () {
107+ return rawQuery ;
108+ } // may be null
99109
100110 public Map <String , String > getParsedQuery () {
101111 final LinkedHashMap <String , String > map = new LinkedHashMap <>();
@@ -109,16 +119,13 @@ public Map<String, String> getParsedQuery() {
109119 return map ;
110120 }
111121
112- @ Override public String toString () {
122+ @ Override
123+ public String toString () {
113124 StringBuilder sb = new StringBuilder ("fiji://" ).append (plugin );
114- if (subPlugin != null ) sb .append ('/' ).append (subPlugin );
115- if (query != null ) sb .append ('?' ).append (query );
125+ if (subPlugin != null )
126+ sb .append ('/' ).append (subPlugin );
127+ if (query != null )
128+ sb .append ('?' ).append (query );
116129 return sb .toString ();
117130 }
118-
119- // Convenience helper: returns null instead of throwing
120- public static FijiURILink tryParse (String uriString ) {
121- try { return parse (uriString ); } catch (RuntimeException e ) { return null ; }
122- }
123131}
124-
0 commit comments