You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by jb...@apache.org on 2006/02/23 15:02:35 UTC
svn commit: r380119 - in /cocoon/branches/BRANCH_2_1_X:
src/blocks/naming/java/org/apache/cocoon/transformation/LDAPTransformer.java
status.xml
Author: jbq
Date: Thu Feb 23 06:02:34 2006
New Revision: 380119
URL: http://svn.apache.org/viewcvs?rev=380119&view=rev
Log:
Fix COCOON-1066 and COCOON-1705
Modified:
cocoon/branches/BRANCH_2_1_X/src/blocks/naming/java/org/apache/cocoon/transformation/LDAPTransformer.java
cocoon/branches/BRANCH_2_1_X/status.xml
Modified: cocoon/branches/BRANCH_2_1_X/src/blocks/naming/java/org/apache/cocoon/transformation/LDAPTransformer.java
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/src/blocks/naming/java/org/apache/cocoon/transformation/LDAPTransformer.java?rev=380119&r1=380118&r2=380119&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/src/blocks/naming/java/org/apache/cocoon/transformation/LDAPTransformer.java (original)
+++ cocoon/branches/BRANCH_2_1_X/src/blocks/naming/java/org/apache/cocoon/transformation/LDAPTransformer.java Thu Feb 23 06:02:34 2006
@@ -84,6 +84,7 @@
* <!ELEMENT searchbase (#PCDATA)>+<br>
* <!ELEMENT doc-element (#PCDATA)>+ (default: "doc-element")<br>
* <!ELEMENT row-element (#PCDATA)>+ (default: "row-element")<br>
+ * <!ELEMENT dn-attribute (#PCDATA)>+ (default: "" meaning no DN attribute)<br>
* <!ELEMENT error-element (#PCDATA)>+ (default: "ldap-error") (in case of error returned error tag)<br>
* <!ELEMENT sax_error (TRUE | FALSE)>+; (default: FALSE) (throws SAX-Exception instead of error tag)<br>
* <!ELEMENT attribute (#PCDATA)><br>
@@ -134,6 +135,7 @@
public static final String MAGIC_PORT_ELEMENT = "port";
public static final String MAGIC_ROOT_DN_ELEMENT = "rootdn";
public static final String MAGIC_ROW_ELEMENT = "row-element";
+ public static final String MAGIC_DN_ATTRIBUTE = "dn-attribute";
public static final String MAGIC_SAX_ERROR = "sax-error";
public static final String MAGIC_SCOPE_ELEMENT = "scope";
public static final String MAGIC_SEARCHBASE_ELEMENT = "searchbase";
@@ -169,6 +171,7 @@
public static final int STATE_INSIDE_SAX_ERROR_ELEMENT = 23;
public static final int STATE_INSIDE_EXECUTE_REPLACE = 24;
public static final int STATE_INSIDE_EXECUTE_ADD = 25;
+ public static final int STATE_INSIDE_DN_ATTRIBUTE = 26;
/** Default parameters that might apply to all queries */
protected HashMap default_properties = new HashMap();
@@ -209,6 +212,7 @@
setDefaultProperty(parameters, MAGIC_SEARCHBASE_ELEMENT); // Check the searchbase
setDefaultProperty(parameters, MAGIC_DOC_ELEMENT); // Check the doc-element
setDefaultProperty(parameters, MAGIC_ROW_ELEMENT); // Check the row-element
+ setDefaultProperty(parameters, MAGIC_DN_ATTRIBUTE); // Check the dn-attribute
setDefaultProperty(parameters, MAGIC_ERROR_ELEMENT); // Check the error-element
setDefaultProperty(parameters, MAGIC_SAX_ERROR); // Check the sax-error
setDefaultProperty(parameters, MAGIC_DEREF_LINK_ELEMENT); // Check the deref-link-element
@@ -442,6 +446,17 @@
}
}
+ protected void endDnAttribute() {
+ switch (current_state) {
+ case LDAPTransformer.STATE_INSIDE_DN_ATTRIBUTE :
+ getCurrentQuery().dn_attribute = current_value.toString();
+ current_state = getCurrentQuery().toDo;
+ break;
+ default :
+ throwIllegalStateException("Not expecting a end dn-attribute element");
+ }
+ }
+
protected void endErrorElement() {
switch (current_state) {
case LDAPTransformer.STATE_INSIDE_ERROR_ELEMENT :
@@ -693,6 +708,8 @@
startParameterElement(LDAPTransformer.STATE_INSIDE_DOC_ELEMENT, name);
} else if (name.equals(LDAPTransformer.MAGIC_ROW_ELEMENT)) {
startParameterElement(LDAPTransformer.STATE_INSIDE_ROW_ELEMENT, name);
+ } else if (name.equals(LDAPTransformer.MAGIC_DN_ATTRIBUTE)) {
+ startParameterElement(LDAPTransformer.STATE_INSIDE_DN_ATTRIBUTE, name);
} else if (name.equals(LDAPTransformer.MAGIC_ERROR_ELEMENT)) {
startParameterElement(LDAPTransformer.STATE_INSIDE_ERROR_ELEMENT, name);
} else if (name.equals(LDAPTransformer.MAGIC_SAX_ERROR)) {
@@ -753,6 +770,8 @@
endDocElement();
} else if (name.equals(LDAPTransformer.MAGIC_ROW_ELEMENT)) {
endRowElement();
+ } else if (name.equals(LDAPTransformer.MAGIC_DN_ATTRIBUTE)) {
+ endDnAttribute();
} else if (name.equals(LDAPTransformer.MAGIC_ERROR_ELEMENT)) {
endErrorElement();
} else if (name.equals(LDAPTransformer.MAGIC_SAX_ERROR)) {
@@ -793,6 +812,7 @@
&& current_state != LDAPTransformer.STATE_INSIDE_PORT_ELEMENT
&& current_state != LDAPTransformer.STATE_INSIDE_DOC_ELEMENT
&& current_state != LDAPTransformer.STATE_INSIDE_ROW_ELEMENT
+ && current_state != LDAPTransformer.STATE_INSIDE_DN_ATTRIBUTE
&& current_state != LDAPTransformer.STATE_INSIDE_ERROR_ELEMENT
&& current_state != LDAPTransformer.STATE_INSIDE_SAX_ERROR_ELEMENT
&& current_state != LDAPTransformer.STATE_INSIDE_ROOT_DN_ELEMENT
@@ -874,8 +894,9 @@
protected boolean showAttribute;
protected String filter;
protected String doc_element;
- protected String exec_element;
+ protected String exec_element = "exec-element";
protected String row_element;
+ protected String dn_attribute;
protected String error_element;
protected boolean sax_error;
protected boolean deref_link; // Dereference: true -> dereference the link during search
@@ -897,6 +918,7 @@
showAttribute = MapUtils.getBooleanValue(transformer.default_properties, LDAPTransformer.MAGIC_SHOW_ATTRIBUTE_ELEMENT, true);
doc_element = MapUtils.getString(transformer.default_properties, LDAPTransformer.MAGIC_DOC_ELEMENT, "doc-element");
row_element = MapUtils.getString(transformer.default_properties, LDAPTransformer.MAGIC_ROW_ELEMENT, "row-element");
+ dn_attribute = MapUtils.getString(transformer.default_properties, LDAPTransformer.MAGIC_DN_ATTRIBUTE, "");
error_element = MapUtils.getString(transformer.default_properties, LDAPTransformer.MAGIC_ERROR_ELEMENT, "ldap-error");
sax_error = MapUtils.getBooleanValue(transformer.default_properties, LDAPTransformer.MAGIC_SAX_ERROR);
deref_link = MapUtils.getBooleanValue(transformer.default_properties, LDAPTransformer.MAGIC_DEREF_LINK_ELEMENT);
@@ -949,10 +971,18 @@
NamingEnumeration ldapresults = ctx.search(searchbase, filter, constraints);
while (ldapresults != null && ldapresults.hasMore()) {
+ SearchResult si = (SearchResult) ldapresults.next();
if (!row_element.equals("")) {
+ if(!"".equals(dn_attribute)) {
+ String dn;
+ if(!"".equals(searchbase))
+ dn = si.getName() + ',' + searchbase;
+ else
+ dn = si.getName();
+ attr.addAttribute(null, dn_attribute, dn_attribute, "CDATA", dn);
+ }
transformer.start(row_element, attr);
}
- SearchResult si = (SearchResult) ldapresults.next();
javax.naming.directory.Attributes attrs = si.getAttributes();
if (attrs != null) {
NamingEnumeration ae = attrs.getAll();
@@ -1001,6 +1031,9 @@
transformer.start(doc_element, attr);
}
if (!row_element.equals("")) {
+ if(!"".equals(dn_attribute)) {
+ attr.addAttribute(null, dn_attribute, dn_attribute, "CDATA", searchbase);
+ }
transformer.start(row_element, attr);
}
if (attrs != null) {
Modified: cocoon/branches/BRANCH_2_1_X/status.xml
URL: http://svn.apache.org/viewcvs/cocoon/branches/BRANCH_2_1_X/status.xml?rev=380119&r1=380118&r2=380119&view=diff
==============================================================================
--- cocoon/branches/BRANCH_2_1_X/status.xml (original)
+++ cocoon/branches/BRANCH_2_1_X/status.xml Thu Feb 23 06:02:34 2006
@@ -180,6 +180,13 @@
<release version="@version@" date="@date@">
-->
<release version="2.1.9" date="TBD">
+ <action dev="JBQ" type="fix" fixes-bug="COCOON-1066" due-to="Antonio Fiol" due-to-email="antonio.fiol@gmail.com">
+ LDAPTransformer can optionally output the DN of every returned entry as an
+ attribute. To enable, use <ldap:dn-attribute>dn</ldap:dn-attribute>
+ </action>
+ <action dev="JBQ" type="fix" fixes-bug="COCOON-1705" due-to="Warrell Harries" due-to-email="toulouse@vodafone.net">
+ Fix handling of <ldap:execute-replace> causing NPE in LDAPTransformer
+ </action>
<action dev="CZ" type="update">
JCR block: To build the JCR block, the jcr-api-1.0.jar has to be downloaded by the user
prior to building the block. Have a look at the readme in the jcr block for