Paul Mcdaid wrote:
I'm investigating XCF-2698, but I've run into a more basic problem when
trying to add an LDAP server, I get an internal error.

However whenever I try to login to an LDAP Server (System->LDAP/AD->Add
LDAP Server), I get the following internal error that is pointing to admin/ldap/LdapServer/ldapObjectClassPanel]: source is null for
getProperty(null, "objectClasses")
[context:/WEB-INF/admin/ldap/LdapServer.page, line 41, column 79]
It looks like it is not advisable to pass as parameters in tapestry componets arrays like: String[] "ognl" language doesn't work when you use values like this. It requires "Object" data type I made a fix when I send StringProperySelection object as parameter instead of creating it using ognl and String[]

I made a properrty in LdapServerPage: getPropertyModel() and I persisted it (the LDAP workflow requires this set of data in multiple requests) I know that is not OK to persist Java objects (Damian won't like this :) ) but I didn't find other way.
However I attach the patch (may not be final but at least it is  a start).

Mircea

>From 8355a4b2aed50b8d64f5ad932d98665a72394b0a Mon Sep 17 00:00:00 2001
From: root <[EMAIL PROTECTED]>
Date: Tue, 14 Oct 2008 17:51:47 +0300
Subject: [PATCH] LDAP

---
 .../WEB-INF/admin/ldap/LdapObjectClassPanel.jwc    |    6 ++++--
 .../web/context/WEB-INF/admin/ldap/LdapServer.page |    3 ++-
 .../sipxconfig/site/admin/ldap/LdapServer.java     |   17 +++++++++++++++--
 3 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/sipXconfig/web/context/WEB-INF/admin/ldap/LdapObjectClassPanel.jwc b/sipXconfig/web/context/WEB-INF/admin/ldap/LdapObjectClassPanel.jwc
index b0519b7..ee1876a 100644
--- a/sipXconfig/web/context/WEB-INF/admin/ldap/LdapObjectClassPanel.jwc
+++ b/sipXconfig/web/context/WEB-INF/admin/ldap/LdapObjectClassPanel.jwc
@@ -5,14 +5,16 @@
   <!--
     - P A R A M E T E R S
   -->
-  <parameter name="objectClasses" />
+  <!--<parameter name="objectClasses" />-->
+  <parameter name="propertySelectionModel" />
   <parameter name="selectedObjectClasses" />
+  
 
   <!--
     - C O M P O N E N T S
   -->
   <component id="objectClassSelection" type="contrib:MultiplePropertySelection">
-    <binding name="model" value="new org.apache.tapestry.form.StringPropertySelectionModel(objectClasses)" />
+    <binding name="model" value="propertySelectionModel" />
     <binding name="selectedList" value="selectedObjectClasses" />
   </component>
 
diff --git a/sipXconfig/web/context/WEB-INF/admin/ldap/LdapServer.page b/sipXconfig/web/context/WEB-INF/admin/ldap/LdapServer.page
index c2d8dbe..7cab9f0 100644
--- a/sipXconfig/web/context/WEB-INF/admin/ldap/LdapServer.page
+++ b/sipXconfig/web/context/WEB-INF/admin/ldap/LdapServer.page
@@ -39,7 +39,8 @@
 
   <!-- object class selection stage -->
   <component id="ldapObjectClassPanel" type="admin/ldap/LdapObjectClassPanel">
-    <binding name="objectClasses" value="schema.objectClassesNames" />
+<!--    <binding name="objectClasses" value="schema.objectClassesNames" />-->
+    <binding name="propertySelectionModel" value="propertyModel" />
     <binding name="selectedObjectClasses" value="attrMap.selectedObjectClasses" />
   </component>
   <component id="applyObjectClassesSelection" type="Submit">
diff --git a/sipXconfig/web/src/org/sipfoundry/sipxconfig/site/admin/ldap/LdapServer.java b/sipXconfig/web/src/org/sipfoundry/sipxconfig/site/admin/ldap/LdapServer.java
index 4ce585a..815438d 100644
--- a/sipXconfig/web/src/org/sipfoundry/sipxconfig/site/admin/ldap/LdapServer.java
+++ b/sipXconfig/web/src/org/sipfoundry/sipxconfig/site/admin/ldap/LdapServer.java
@@ -11,13 +11,17 @@ package org.sipfoundry.sipxconfig.site.admin.ldap;
 
 import java.util.Collection;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.apache.tapestry.IPage;
 import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.annotations.Persist;
 import org.apache.tapestry.event.PageBeginRenderListener;
 import org.apache.tapestry.event.PageEvent;
 import org.apache.tapestry.form.IPropertySelectionModel;
 import org.apache.tapestry.form.StringPropertySelectionModel;
 import org.apache.tapestry.html.BasePage;
+import org.sipfoundry.sipxconfig.admin.mail.MailSenderContextImpl;
 import org.sipfoundry.sipxconfig.bulk.ldap.AttrMap;
 import org.sipfoundry.sipxconfig.bulk.ldap.LdapConnectionParams;
 import org.sipfoundry.sipxconfig.bulk.ldap.LdapImportManager;
@@ -50,7 +54,14 @@ public abstract class LdapServer extends BasePage implements PageBeginRenderList
     public abstract String[] getSelectedAttributes();
 
     public abstract void setSelectedAttributes(String[] selectedAttributes);
-
+    
+    @Persist
+    public abstract StringPropertySelectionModel getPropertyModel();
+    
+    public abstract void setPropertyModel(StringPropertySelectionModel model);
+
+    private static final Log LOG = LogFactory.getLog(MailSenderContextImpl.class);
+    
     public void pageBeginRender(PageEvent event_) {
         LdapManager ldapManager = getLdapManager();
         if (getConnectionParams() == null) {
@@ -64,6 +75,8 @@ public abstract class LdapServer extends BasePage implements PageBeginRenderList
         if (getStage() == null) {
             setStage("connection");
         }
+
+        
     }
 
     public void applyConnectionParams() {
@@ -82,7 +95,7 @@ public abstract class LdapServer extends BasePage implements PageBeginRenderList
 
         Schema schema = ldapManager.getSchema(attrMap.getSubschemaSubentry());
         setSchema(schema);
-
+        setPropertyModel(new StringPropertySelectionModel( schema.getObjectClassesNames()));
         setStage("objectClasses");
     }
 
-- 
1.5.2.2

_______________________________________________
sipx-dev mailing list
[email protected]
List Archive: http://list.sipfoundry.org/archive/sipx-dev
Unsubscribe: http://list.sipfoundry.org/mailman/listinfo/sipx-dev

Reply via email to