460 * {"a", ""} + {"b", ""} => {"a", "", "b", ""} {"a", "b", ""}
461 * {"a", ""} + {"", "b"} => {"a", "", "", "b"} {"a", "", "b"}
462 * }</pre>
463 */
464 public Name composeName(Name name, Name prefix) throws NamingException {
465 Name res = (Name)prefix.clone();
466 if (name == null) {
467 return res;
468 }
469 res.addAll(name);
470
471 String elide = (String)
472 p_getEnvironment().get("java.naming.provider.compose.elideEmpty");
473 if (elide == null || !elide.equalsIgnoreCase("true")) {
474 return res;
475 }
476
477 int len = prefix.size();
478
479 if (!allEmpty(prefix) && !allEmpty(name)) {
480 if (res.get(len - 1).equals("")) {
481 res.remove(len - 1);
482 } else if (res.get(len).equals("")) {
483 res.remove(len);
484 }
485 }
486 return res;
487 }
488
489
490 // ------ internal methods used by PartialCompositeContext
491
492 /**
493 * Tests whether a name contains a nonempty component.
494 */
495 protected static boolean allEmpty(Name name) {
496 Enumeration<String> enum_ = name.getAll();
497 while (enum_.hasMoreElements()) {
498 if (!enum_.nextElement().isEmpty()) {
499 return false;
500 }
501 }
502 return true;
|
460 * {"a", ""} + {"b", ""} => {"a", "", "b", ""} {"a", "b", ""}
461 * {"a", ""} + {"", "b"} => {"a", "", "", "b"} {"a", "", "b"}
462 * }</pre>
463 */
464 public Name composeName(Name name, Name prefix) throws NamingException {
465 Name res = (Name)prefix.clone();
466 if (name == null) {
467 return res;
468 }
469 res.addAll(name);
470
471 String elide = (String)
472 p_getEnvironment().get("java.naming.provider.compose.elideEmpty");
473 if (elide == null || !elide.equalsIgnoreCase("true")) {
474 return res;
475 }
476
477 int len = prefix.size();
478
479 if (!allEmpty(prefix) && !allEmpty(name)) {
480 if (res.get(len - 1).isEmpty()) {
481 res.remove(len - 1);
482 } else if (res.get(len).isEmpty()) {
483 res.remove(len);
484 }
485 }
486 return res;
487 }
488
489
490 // ------ internal methods used by PartialCompositeContext
491
492 /**
493 * Tests whether a name contains a nonempty component.
494 */
495 protected static boolean allEmpty(Name name) {
496 Enumeration<String> enum_ = name.getAll();
497 while (enum_.hasMoreElements()) {
498 if (!enum_.nextElement().isEmpty()) {
499 return false;
500 }
501 }
502 return true;
|