feat(jdk8): move files to new folder to avoid resources compiled.
This commit is contained in:
633
jdkSrc/jdk8/com/sun/jndi/url/ldap/ldapURLContext.java
Normal file
633
jdkSrc/jdk8/com/sun/jndi/url/ldap/ldapURLContext.java
Normal file
@@ -0,0 +1,633 @@
|
||||
/*
|
||||
* Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package com.sun.jndi.url.ldap;
|
||||
|
||||
import javax.naming.spi.ResolveResult;
|
||||
import javax.naming.*;
|
||||
import javax.naming.directory.*;
|
||||
import java.util.Hashtable;
|
||||
import java.util.StringTokenizer;
|
||||
import com.sun.jndi.ldap.LdapURL;
|
||||
|
||||
/**
|
||||
* An LDAP URL context.
|
||||
*
|
||||
* @author Rosanna Lee
|
||||
* @author Scott Seligman
|
||||
*/
|
||||
|
||||
final public class ldapURLContext
|
||||
extends com.sun.jndi.toolkit.url.GenericURLDirContext {
|
||||
|
||||
ldapURLContext(Hashtable<?,?> env) {
|
||||
super(env);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolves 'name' into a target context with remaining name.
|
||||
* It only resolves the hostname/port number. The remaining name
|
||||
* contains the root DN.
|
||||
*
|
||||
* For example, with a LDAP URL "ldap://localhost:389/o=widget,c=us",
|
||||
* this method resolves "ldap://localhost:389/" to the root LDAP
|
||||
* context on the server 'localhost' on port 389,
|
||||
* and returns as the remaining name "o=widget, c=us".
|
||||
*/
|
||||
protected ResolveResult getRootURLContext(String name, Hashtable<?,?> env)
|
||||
throws NamingException {
|
||||
return ldapURLContextFactory.getUsingURLIgnoreRootDN(name, env);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the suffix of an ldap url.
|
||||
* prefix parameter is ignored.
|
||||
*/
|
||||
protected Name getURLSuffix(String prefix, String url)
|
||||
throws NamingException {
|
||||
|
||||
LdapURL ldapUrl = new LdapURL(url);
|
||||
String dn = (ldapUrl.getDN() != null? ldapUrl.getDN() : "");
|
||||
|
||||
// Represent DN as empty or single-component composite name.
|
||||
CompositeName remaining = new CompositeName();
|
||||
if (!"".equals(dn)) {
|
||||
// if nonempty, add component
|
||||
remaining.add(dn);
|
||||
}
|
||||
return remaining;
|
||||
}
|
||||
|
||||
/*
|
||||
* Override context operations.
|
||||
* Test for presence of LDAP URL query components in the name argument.
|
||||
* Query components are permitted only for search operations and only
|
||||
* when the name has a single component.
|
||||
*/
|
||||
|
||||
public Object lookup(String name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.lookup(name);
|
||||
}
|
||||
}
|
||||
|
||||
public Object lookup(Name name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.lookup(name);
|
||||
}
|
||||
}
|
||||
|
||||
public void bind(String name, Object obj) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
super.bind(name, obj);
|
||||
}
|
||||
}
|
||||
|
||||
public void bind(Name name, Object obj) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
super.bind(name, obj);
|
||||
}
|
||||
}
|
||||
|
||||
public void rebind(String name, Object obj) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
super.rebind(name, obj);
|
||||
}
|
||||
}
|
||||
|
||||
public void rebind(Name name, Object obj) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
super.rebind(name, obj);
|
||||
}
|
||||
}
|
||||
|
||||
public void unbind(String name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
super.unbind(name);
|
||||
}
|
||||
}
|
||||
|
||||
public void unbind(Name name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
super.unbind(name);
|
||||
}
|
||||
}
|
||||
|
||||
public void rename(String oldName, String newName) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(oldName)) {
|
||||
throw new InvalidNameException(oldName);
|
||||
} else if (LdapURL.hasQueryComponents(newName)) {
|
||||
throw new InvalidNameException(newName);
|
||||
} else {
|
||||
super.rename(oldName, newName);
|
||||
}
|
||||
}
|
||||
|
||||
public void rename(Name oldName, Name newName) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(oldName.get(0))) {
|
||||
throw new InvalidNameException(oldName.toString());
|
||||
} else if (LdapURL.hasQueryComponents(newName.get(0))) {
|
||||
throw new InvalidNameException(newName.toString());
|
||||
} else {
|
||||
super.rename(oldName, newName);
|
||||
}
|
||||
}
|
||||
|
||||
public NamingEnumeration<NameClassPair> list(String name)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.list(name);
|
||||
}
|
||||
}
|
||||
|
||||
public NamingEnumeration<NameClassPair> list(Name name)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.list(name);
|
||||
}
|
||||
}
|
||||
|
||||
public NamingEnumeration<Binding> listBindings(String name)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.listBindings(name);
|
||||
}
|
||||
}
|
||||
|
||||
public NamingEnumeration<Binding> listBindings(Name name)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.listBindings(name);
|
||||
}
|
||||
}
|
||||
|
||||
public void destroySubcontext(String name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
super.destroySubcontext(name);
|
||||
}
|
||||
}
|
||||
|
||||
public void destroySubcontext(Name name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
super.destroySubcontext(name);
|
||||
}
|
||||
}
|
||||
|
||||
public Context createSubcontext(String name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.createSubcontext(name);
|
||||
}
|
||||
}
|
||||
|
||||
public Context createSubcontext(Name name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.createSubcontext(name);
|
||||
}
|
||||
}
|
||||
|
||||
public Object lookupLink(String name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.lookupLink(name);
|
||||
}
|
||||
}
|
||||
|
||||
public Object lookupLink(Name name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.lookupLink(name);
|
||||
}
|
||||
}
|
||||
|
||||
public NameParser getNameParser(String name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.getNameParser(name);
|
||||
}
|
||||
}
|
||||
|
||||
public NameParser getNameParser(Name name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.getNameParser(name);
|
||||
}
|
||||
}
|
||||
|
||||
public String composeName(String name, String prefix)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else if (LdapURL.hasQueryComponents(prefix)) {
|
||||
throw new InvalidNameException(prefix);
|
||||
} else {
|
||||
return super.composeName(name, prefix);
|
||||
}
|
||||
}
|
||||
|
||||
public Name composeName(Name name, Name prefix) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else if (LdapURL.hasQueryComponents(prefix.get(0))) {
|
||||
throw new InvalidNameException(prefix.toString());
|
||||
} else {
|
||||
return super.composeName(name, prefix);
|
||||
}
|
||||
}
|
||||
|
||||
public Attributes getAttributes(String name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.getAttributes(name);
|
||||
}
|
||||
}
|
||||
|
||||
public Attributes getAttributes(Name name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.getAttributes(name);
|
||||
}
|
||||
}
|
||||
|
||||
public Attributes getAttributes(String name, String[] attrIds)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.getAttributes(name, attrIds);
|
||||
}
|
||||
}
|
||||
|
||||
public Attributes getAttributes(Name name, String[] attrIds)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.getAttributes(name, attrIds);
|
||||
}
|
||||
}
|
||||
|
||||
public void modifyAttributes(String name, int mod_op, Attributes attrs)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
super.modifyAttributes(name, mod_op, attrs);
|
||||
}
|
||||
}
|
||||
|
||||
public void modifyAttributes(Name name, int mod_op, Attributes attrs)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
super.modifyAttributes(name, mod_op, attrs);
|
||||
}
|
||||
}
|
||||
|
||||
public void modifyAttributes(String name, ModificationItem[] mods)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
super.modifyAttributes(name, mods);
|
||||
}
|
||||
}
|
||||
|
||||
public void modifyAttributes(Name name, ModificationItem[] mods)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
super.modifyAttributes(name, mods);
|
||||
}
|
||||
}
|
||||
|
||||
public void bind(String name, Object obj, Attributes attrs)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
super.bind(name, obj, attrs);
|
||||
}
|
||||
}
|
||||
|
||||
public void bind(Name name, Object obj, Attributes attrs)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
super.bind(name, obj, attrs);
|
||||
}
|
||||
}
|
||||
|
||||
public void rebind(String name, Object obj, Attributes attrs)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
super.rebind(name, obj, attrs);
|
||||
}
|
||||
}
|
||||
|
||||
public void rebind(Name name, Object obj, Attributes attrs)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
super.rebind(name, obj, attrs);
|
||||
}
|
||||
}
|
||||
|
||||
public DirContext createSubcontext(String name, Attributes attrs)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.createSubcontext(name, attrs);
|
||||
}
|
||||
}
|
||||
|
||||
public DirContext createSubcontext(Name name, Attributes attrs)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.createSubcontext(name, attrs);
|
||||
}
|
||||
}
|
||||
|
||||
public DirContext getSchema(String name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.getSchema(name);
|
||||
}
|
||||
}
|
||||
|
||||
public DirContext getSchema(Name name) throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.getSchema(name);
|
||||
}
|
||||
}
|
||||
|
||||
public DirContext getSchemaClassDefinition(String name)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
throw new InvalidNameException(name);
|
||||
} else {
|
||||
return super.getSchemaClassDefinition(name);
|
||||
}
|
||||
}
|
||||
|
||||
public DirContext getSchemaClassDefinition(Name name)
|
||||
throws NamingException {
|
||||
if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.getSchemaClassDefinition(name);
|
||||
}
|
||||
}
|
||||
|
||||
// divert the search operation when the LDAP URL has query components
|
||||
public NamingEnumeration<SearchResult> search(String name,
|
||||
Attributes matchingAttributes)
|
||||
throws NamingException {
|
||||
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
return searchUsingURL(name);
|
||||
} else {
|
||||
return super.search(name, matchingAttributes);
|
||||
}
|
||||
}
|
||||
|
||||
// divert the search operation when name has a single component
|
||||
public NamingEnumeration<SearchResult> search(Name name,
|
||||
Attributes matchingAttributes)
|
||||
throws NamingException {
|
||||
if (name.size() == 1) {
|
||||
return search(name.get(0), matchingAttributes);
|
||||
} else if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.search(name, matchingAttributes);
|
||||
}
|
||||
}
|
||||
|
||||
// divert the search operation when the LDAP URL has query components
|
||||
public NamingEnumeration<SearchResult> search(String name,
|
||||
Attributes matchingAttributes,
|
||||
String[] attributesToReturn)
|
||||
throws NamingException {
|
||||
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
return searchUsingURL(name);
|
||||
} else {
|
||||
return super.search(name, matchingAttributes, attributesToReturn);
|
||||
}
|
||||
}
|
||||
|
||||
// divert the search operation when name has a single component
|
||||
public NamingEnumeration<SearchResult> search(Name name,
|
||||
Attributes matchingAttributes,
|
||||
String[] attributesToReturn)
|
||||
throws NamingException {
|
||||
|
||||
if (name.size() == 1) {
|
||||
return search(name.get(0), matchingAttributes, attributesToReturn);
|
||||
} else if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.search(name, matchingAttributes, attributesToReturn);
|
||||
}
|
||||
}
|
||||
|
||||
// divert the search operation when the LDAP URL has query components
|
||||
public NamingEnumeration<SearchResult> search(String name,
|
||||
String filter,
|
||||
SearchControls cons)
|
||||
throws NamingException {
|
||||
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
return searchUsingURL(name);
|
||||
} else {
|
||||
return super.search(name, filter, cons);
|
||||
}
|
||||
}
|
||||
|
||||
// divert the search operation when name has a single component
|
||||
public NamingEnumeration<SearchResult> search(Name name,
|
||||
String filter,
|
||||
SearchControls cons)
|
||||
throws NamingException {
|
||||
|
||||
if (name.size() == 1) {
|
||||
return search(name.get(0), filter, cons);
|
||||
} else if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.search(name, filter, cons);
|
||||
}
|
||||
}
|
||||
|
||||
// divert the search operation when the LDAP URL has query components
|
||||
public NamingEnumeration<SearchResult> search(String name,
|
||||
String filterExpr,
|
||||
Object[] filterArgs,
|
||||
SearchControls cons)
|
||||
throws NamingException {
|
||||
|
||||
if (LdapURL.hasQueryComponents(name)) {
|
||||
return searchUsingURL(name);
|
||||
} else {
|
||||
return super.search(name, filterExpr, filterArgs, cons);
|
||||
}
|
||||
}
|
||||
|
||||
// divert the search operation when name has a single component
|
||||
public NamingEnumeration<SearchResult> search(Name name,
|
||||
String filterExpr,
|
||||
Object[] filterArgs,
|
||||
SearchControls cons)
|
||||
throws NamingException {
|
||||
|
||||
if (name.size() == 1) {
|
||||
return search(name.get(0), filterExpr, filterArgs, cons);
|
||||
} else if (LdapURL.hasQueryComponents(name.get(0))) {
|
||||
throw new InvalidNameException(name.toString());
|
||||
} else {
|
||||
return super.search(name, filterExpr, filterArgs, cons);
|
||||
}
|
||||
}
|
||||
|
||||
// Search using the LDAP URL in name.
|
||||
// LDAP URL query components override the search argments.
|
||||
private NamingEnumeration<SearchResult> searchUsingURL(String name)
|
||||
throws NamingException {
|
||||
|
||||
LdapURL url = new LdapURL(name);
|
||||
|
||||
ResolveResult res = getRootURLContext(name, myEnv);
|
||||
DirContext ctx = (DirContext)res.getResolvedObj();
|
||||
try {
|
||||
return ctx.search(res.getRemainingName(),
|
||||
setFilterUsingURL(url),
|
||||
setSearchControlsUsingURL(url));
|
||||
} finally {
|
||||
ctx.close();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize a String filter using the LDAP URL filter component.
|
||||
* If filter is not present in the URL it is initialized to its default
|
||||
* value as specified in RFC-2255.
|
||||
*/
|
||||
private static String setFilterUsingURL(LdapURL url) {
|
||||
|
||||
String filter = url.getFilter();
|
||||
|
||||
if (filter == null) {
|
||||
filter = "(objectClass=*)"; //default value
|
||||
}
|
||||
return filter;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize a SearchControls object using LDAP URL query components.
|
||||
* Components not present in the URL are initialized to their default
|
||||
* values as specified in RFC-2255.
|
||||
*/
|
||||
private static SearchControls setSearchControlsUsingURL(LdapURL url) {
|
||||
|
||||
SearchControls cons = new SearchControls();
|
||||
String scope = url.getScope();
|
||||
String attributes = url.getAttributes();
|
||||
|
||||
if (scope == null) {
|
||||
cons.setSearchScope(SearchControls.OBJECT_SCOPE); //default value
|
||||
} else {
|
||||
if (scope.equals("sub")) {
|
||||
cons.setSearchScope(SearchControls.SUBTREE_SCOPE);
|
||||
} else if (scope.equals("one")) {
|
||||
cons.setSearchScope(SearchControls.ONELEVEL_SCOPE);
|
||||
} else if (scope.equals("base")) {
|
||||
cons.setSearchScope(SearchControls.OBJECT_SCOPE);
|
||||
}
|
||||
}
|
||||
|
||||
if (attributes == null) {
|
||||
cons.setReturningAttributes(null); //default value
|
||||
} else {
|
||||
StringTokenizer tokens = new StringTokenizer(attributes, ",");
|
||||
int count = tokens.countTokens();
|
||||
String[] attrs = new String[count];
|
||||
for (int i = 0; i < count; i ++) {
|
||||
attrs[i] = tokens.nextToken();
|
||||
}
|
||||
cons.setReturningAttributes(attrs);
|
||||
}
|
||||
return cons;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user