fork download
  1. import java.util.HashMap;
  2. import java.util.Map;
  3.  
  4. public class Main {
  5. public static final class ApplicationContext {
  6. private final String app;
  7. private final String ctx;
  8.  
  9. public ApplicationContext(final String app, final String ctx) {
  10. this.app = app;
  11. this.ctx = ctx;
  12. }
  13.  
  14. @Override
  15. public String toString() {
  16. return "ApplicationContext[" + app + "/" + ctx + "]";
  17. }
  18. }
  19.  
  20. private static ApplicationContext ac(final String app, final String ctx) {
  21. return new ApplicationContext(app, ctx);
  22. }
  23.  
  24. private static ApplicationContext getApplicationContext(final String url,
  25. final Map<String, ApplicationContext> urlMap) {
  26. String specificUrl = url;
  27. ApplicationContext result = null;
  28. while (specificUrl != null && result == null) {
  29. result = urlMap.get(specificUrl);
  30. specificUrl = shortenUrl(specificUrl);
  31. }
  32.  
  33. return result;
  34. }
  35.  
  36. public static void main(final String[] args) throws Exception {
  37. final Map<String, ApplicationContext> urlMap = new HashMap<String, ApplicationContext>();
  38. urlMap.put("/application1", ac("Application1", "Root"));
  39. urlMap.put("/application1/subcontext1", ac("Application1", "SubContext1"));
  40. urlMap.put("/application1/subcontext2", ac("Application1", "SubContext2"));
  41. urlMap.put("/application1/subcontext2/subcontext3", ac("Application1", "SubContext3"));
  42. urlMap.put("/application2", ac("Application2", null));
  43.  
  44. System.out.println(getApplicationContext("/application1/", urlMap));
  45. System.out.println(getApplicationContext("/application1/abc", urlMap));
  46. System.out.println(getApplicationContext("/application1/subcontext2/abc", urlMap));
  47. }
  48.  
  49. private static String shortenUrl(final String url) {
  50. final int index = url.lastIndexOf('/');
  51. if (index > 0) {
  52. return url.substring(0, index);
  53. }
  54. else {
  55. return null;
  56. }
  57. }
  58. }
  59.  
Success #stdin #stdout 0.07s 215488KB
stdin
Standard input is empty
stdout
ApplicationContext[Application1/Root]
ApplicationContext[Application1/Root]
ApplicationContext[Application1/SubContext2]