List of usage examples for javax.naming Name getClass
@HotSpotIntrinsicCandidate public final native Class<?> getClass();
From source file:org.springframework.ldap.core.support.DefaultDirObjectFactory.java
/** * Construct a DirContextAdapter given the supplied paramters. The * <code>name</code> is normally a JNDI <code>CompositeName</code>, which * needs to be handled with particuclar care. Specifically the escaping of a * <code>CompositeName</code> destroys proper escaping of Distinguished * Names. Also, the name might contain referral information, in which case * we need to separate the server information from the actual Distinguished * Name so that we can create a representing DirContextAdapter. * //from w w w.j a v a 2 s . c o m * @param attrs the attributes * @param name the Name, typically a <code>CompositeName</code>, possibly * including referral information. * @param nameInNamespace the Name in namespace. * @return a {@link DirContextAdapter} representing the specified * information. */ DirContextAdapter constructAdapterFromName(Attributes attrs, Name name, String nameInNamespace) { String nameString = ""; String referralUrl = ""; if (name instanceof CompositeName) { // Which it most certainly will be, and therein lies the // problem. CompositeName.toString() completely screws up the // formatting // in some cases, particularly when backslashes are involved. nameString = LdapUtils.convertCompositeNameToString((CompositeName) name); } else { log.warn("Expecting a CompositeName as input to getObjectInstance but received a '" + name.getClass().toString() + "' - using toString and proceeding with undefined results"); nameString = name.toString(); } if (nameString.startsWith(LDAP_PROTOCOL_PREFIX) || nameString.startsWith(LDAPS_PROTOCOL_PREFIX)) { if (log.isDebugEnabled()) { log.debug("Received name '" + nameString + "' contains protocol delimiter; indicating a referral." + "Stripping protocol and address info to enable construction of a proper DistinguishedName"); } try { URI url = new URI(nameString); String pathString = url.getPath(); referralUrl = nameString.substring(0, nameString.length() - pathString.length()); if (StringUtils.hasLength(pathString) && pathString.startsWith("/")) { // We don't want any slash in the beginning of the // Distinguished Name. pathString = pathString.substring(1); } nameString = pathString; } catch (URISyntaxException e) { if (JdkVersion.isAtLeastJava15()) { throw new IllegalArgumentException( "Supplied name starts with protocol prefix indicating a referral," + " but is not possible to parse to an URI", e); } else { throw new IllegalArgumentException( "Supplied name starts with protocol prefix indicating a referral," + " but is not possible to parse to an URI: " + e.getMessage()); } } if (log.isDebugEnabled()) { log.debug("Resulting name after removal of referral information: '" + nameString + "'"); } } DirContextAdapter dirContextAdapter = new DirContextAdapter(attrs, new DistinguishedName(nameString), new DistinguishedName(nameInNamespace), referralUrl); dirContextAdapter.setUpdateMode(true); return dirContextAdapter; }