You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by rw...@apache.org on 2009/06/26 09:33:22 UTC

svn commit: r788614 - in /portals/jetspeed-2/portal/trunk: components/jetspeed-profiler/src/test/java/JETSPEED-INF/spring/ components/jetspeed-profiler/src/test/java/org/apache/jetspeed/profiler/ components/jetspeed-serializer/src/main/java/org/apache/...

Author: rwatler
Date: Fri Jun 26 07:33:22 2009
New Revision: 788614

URL: http://svn.apache.org/viewvc?rev=788614&view=rev
Log:
JS2-1034: implement SSO import/export serialization

Added:
    portals/jetspeed-2/portal/trunk/components/jetspeed-profiler/src/test/java/JETSPEED-INF/spring/JetspeedSerializerOverride.xml
    portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSite.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSiteRemoteUser.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSiteRemoteUsers.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSites.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/serializer/
    portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/serializer/JetspeedSSOSerializer.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/sso/impl/SSOUtils.java
Modified:
    portals/jetspeed-2/portal/trunk/components/jetspeed-profiler/src/test/java/org/apache/jetspeed/profiler/TestProfiler.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/JetspeedSerializerImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSnapshot.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/sso/impl/SSOClientImpl.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/serializer/JetspeedSerializer.java
    portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/serializer.xml
    portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/sso.xml

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-profiler/src/test/java/JETSPEED-INF/spring/JetspeedSerializerOverride.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-profiler/src/test/java/JETSPEED-INF/spring/JetspeedSerializerOverride.xml?rev=788614&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-profiler/src/test/java/JETSPEED-INF/spring/JetspeedSerializerOverride.xml (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-profiler/src/test/java/JETSPEED-INF/spring/JetspeedSerializerOverride.xml Fri Jun 26 07:33:22 2009
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+  <bean id="org.apache.jetspeed.serializer.JetspeedSerializer" name="JetspeedSerializer"
+    class="org.apache.jetspeed.serializer.JetspeedSerializerImpl">
+    <meta key="j2:cat" value="default or serializer" />
+    <constructor-arg index="0">
+      <list>
+        <bean class="org.apache.jetspeed.serializer.JetspeedCapabilitiesSerializer">
+          <constructor-arg ref="org.apache.jetspeed.capabilities.Capabilities" />
+        </bean>
+        <bean class="org.apache.jetspeed.serializer.JetspeedSecuritySerializer">
+          <constructor-arg index="0" ref="org.apache.jetspeed.security.spi.JetspeedPrincipalManagerProvider" />
+          <constructor-arg index="1" ref="org.apache.jetspeed.security.GroupManager" />
+          <constructor-arg index="2" ref="org.apache.jetspeed.security.RoleManager" />
+          <constructor-arg index="3" ref="org.apache.jetspeed.security.UserManager" />
+          <constructor-arg index="4" ref="org.apache.jetspeed.security.spi.CredentialPasswordEncoder" />
+          <constructor-arg index="5" ref="org.apache.jetspeed.security.PermissionManager" />
+          <constructor-arg index="6" ref="org.apache.jetspeed.security.spi.JetspeedSecurityPersistenceManager" />
+          <constructor-arg index="7" ref="org.apache.jetspeed.security.spi.JetspeedSecurityPersistenceManager" />
+        </bean>
+        <bean class="org.apache.jetspeed.serializer.JetspeedProfilerSerializer">
+          <constructor-arg index="0" ref="org.apache.jetspeed.profiler.Profiler" />
+          <constructor-arg index="1" ref="org.apache.jetspeed.security.UserManager" />
+        </bean>
+        <bean class="org.apache.jetspeed.serializer.JetspeedRegistrySerializer">
+          <constructor-arg index="0" ref="org.apache.jetspeed.components.portletregistry.PortletRegistry" />
+          <constructor-arg index="1" ref="org.apache.jetspeed.components.portletpreferences.PortletPreferencesProvider" />
+          <constructor-arg index="2" ref="org.apache.jetspeed.search.SearchEngine" />
+        </bean>
+      </list>
+    </constructor-arg>
+    <constructor-arg index="1">
+      <map>
+        <entry key="process_capabilities">
+          <value type="java.lang.Boolean">true</value>
+        </entry>
+        <entry key="process_users">
+          <value type="java.lang.Boolean">true</value>
+        </entry>
+        <entry key="process_permissions">
+          <value type="java.lang.Boolean">true</value>
+        </entry>
+        <entry key="process_profiler">
+          <value type="java.lang.Boolean">true</value>
+        </entry>
+      </map>
+    </constructor-arg>
+  </bean>
+
+</beans>

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-profiler/src/test/java/org/apache/jetspeed/profiler/TestProfiler.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-profiler/src/test/java/org/apache/jetspeed/profiler/TestProfiler.java?rev=788614&r1=788613&r2=788614&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-profiler/src/test/java/org/apache/jetspeed/profiler/TestProfiler.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-profiler/src/test/java/org/apache/jetspeed/profiler/TestProfiler.java Fri Jun 26 07:33:22 2009
@@ -584,9 +584,13 @@
 
     protected String[] getConfigurations()
     {
-        return new String[] { "profiler.xml", "transaction.xml", "serializer.xml", "security-providers.xml", "cache-test.xml", "capabilities.xml", "registry.xml", "search.xml", "jetspeed-spring.xml",
-                "security-managers.xml", "security-spi.xml", "security-spi-atn.xml", "security-atz.xml", "static-bean-references.xml", "pluto-services.xml", "JETSPEED-INF/spring/JetspeedPrincipalManagerProviderOverride.xml",
-                "JETSPEED-INF/spring/JetspeedPreferencesOverride.xml"};
+        return new String[] { "profiler.xml", "transaction.xml", "serializer.xml", "security-providers.xml", "cache-test.xml",
+                              "capabilities.xml", "registry.xml", "search.xml", "jetspeed-spring.xml", "security-managers.xml",
+                              "security-spi.xml", "security-spi-atn.xml", "security-atz.xml", "static-bean-references.xml",
+                              "pluto-services.xml",
+                              "JETSPEED-INF/spring/JetspeedPrincipalManagerProviderOverride.xml",
+                              "JETSPEED-INF/spring/JetspeedPreferencesOverride.xml",
+                              "JETSPEED-INF/spring/JetspeedSerializerOverride.xml"};
     }
 
     protected String getBeanDefinitionFilterCategories()

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/JetspeedSerializerImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/JetspeedSerializerImpl.java?rev=788614&r1=788613&r2=788614&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/JetspeedSerializerImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/JetspeedSerializerImpl.java Fri Jun 26 07:33:22 2009
@@ -69,6 +69,10 @@
 import org.apache.jetspeed.serializer.objects.JSSecurityDomain;
 import org.apache.jetspeed.serializer.objects.JSSecurityDomains;
 import org.apache.jetspeed.serializer.objects.JSSnapshot;
+import org.apache.jetspeed.serializer.objects.JSSSOSite;
+import org.apache.jetspeed.serializer.objects.JSSSOSiteRemoteUser;
+import org.apache.jetspeed.serializer.objects.JSSSOSiteRemoteUsers;
+import org.apache.jetspeed.serializer.objects.JSSSOSites;
 import org.apache.jetspeed.serializer.objects.JSUser;
 import org.apache.jetspeed.serializer.objects.JSUserAttributes;
 import org.apache.jetspeed.serializer.objects.JSUserGroups;
@@ -234,6 +238,11 @@
         binding.setAlias(JSSecurityDomains.class, "SecurityDomains");
         binding.setAlias(JSSecurityDomain.class, "SecurityDomain");
 
+        binding.setAlias(JSSSOSite.class, "Site");
+        binding.setAlias(JSSSOSiteRemoteUser.class, "RemoteUser");
+        binding.setAlias(JSSSOSiteRemoteUsers.class, "RemoteUsers");
+        binding.setAlias(JSSSOSites.class, "SSOSites");
+
         binding.setAlias(String.class, "String");
         binding.setAlias(Integer.class, "int");
 

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSite.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSite.java?rev=788614&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSite.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSite.java Fri Jun 26 07:33:22 2009
@@ -0,0 +1,227 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.serializer.objects;
+
+import javolution.xml.XMLFormat;
+import javolution.xml.stream.XMLStreamException;
+
+import org.apache.commons.lang.StringEscapeUtils;
+
+/**
+ * Jetspeed Serialized (JS) SSOSite
+ * 
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id: $
+ */
+public class JSSSOSite
+{
+    private String name;
+
+    private String siteURL;
+
+    private boolean allowUserSet;
+
+    private boolean certificateRequired;
+    
+    private boolean challengeResponseAuthentication;
+    
+    private String realm;
+    
+    private boolean formAuthentication;
+    
+    private String formUserField;
+    
+    private String formPwdField;
+    
+    private JSSSOSiteRemoteUsers remoteUsers;
+
+    public JSSSOSite()
+    {
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public String getSiteURL()
+    {
+        return siteURL;
+    }
+
+    public void setSiteURL(String siteURL)
+    {
+        this.siteURL = siteURL;
+    }
+
+    public boolean isAllowUserSet()
+    {
+        return allowUserSet;
+    }
+
+    public void setAllowUserSet(boolean allowUserSet)
+    {
+        this.allowUserSet = allowUserSet;
+    }
+
+    public boolean isCertificateRequired()
+    {
+        return certificateRequired;
+    }
+
+    public void setCertificateRequired(boolean certificateRequired)
+    {
+        this.certificateRequired = certificateRequired;
+    }
+
+    public boolean isChallengeResponseAuthentication()
+    {
+        return challengeResponseAuthentication;
+    }
+
+    public void setChallengeResponseAuthentication(boolean challengeResponseAuthentication)
+    {
+        this.challengeResponseAuthentication = challengeResponseAuthentication;
+    }
+
+    public String getRealm()
+    {
+        return realm;
+    }
+
+    public void setRealm(String realm)
+    {
+        this.realm = realm;
+    }
+
+    public boolean isFormAuthentication()
+    {
+        return formAuthentication;
+    }
+
+    public void setFormAuthentication(boolean formAuthentication)
+    {
+        this.formAuthentication = formAuthentication;
+    }
+
+    public String getFormUserField()
+    {
+        return formUserField;
+    }
+
+    public void setFormUserField(String formUserField)
+    {
+        this.formUserField = formUserField;
+    }
+
+    public String getFormPwdField()
+    {
+        return formPwdField;
+    }
+
+    public void setFormPwdField(String formPwdField)
+    {
+        this.formPwdField = formPwdField;
+    }
+
+    public JSSSOSiteRemoteUsers getRemoteUsers()
+    {
+        return remoteUsers;
+    }
+
+    public void setRemoteUsers(JSSSOSiteRemoteUsers remoteUsers)
+    {
+        this.remoteUsers = remoteUsers;
+    }
+
+    public void addRemoteUser(JSSSOSiteRemoteUser remoteUser)
+    {
+        if (remoteUsers == null)
+        {
+            remoteUsers = new JSSSOSiteRemoteUsers();
+        }
+        remoteUsers.add(remoteUser);
+    }
+
+    /***************************************************************************
+     * SERIALIZER
+     */
+    @SuppressWarnings("unused")
+    private static final XMLFormat XML = new XMLFormat(JSSSOSite.class)
+    {
+        public void write(Object o, OutputElement xml) throws XMLStreamException
+        {
+            try
+            {
+                JSSSOSite g = (JSSSOSite) o;
+
+                xml.setAttribute("name", g.getName());
+                xml.setAttribute("siteURL", g.getSiteURL());
+                xml.setAttribute("allowUserSet", g.isAllowUserSet());
+                xml.setAttribute("certificateRequired", g.isCertificateRequired());
+                xml.setAttribute("challengeResponseAuthentication", g.isChallengeResponseAuthentication());
+                xml.setAttribute("realm", g.getRealm());
+                xml.setAttribute("formAuthentication", g.isFormAuthentication());
+                xml.setAttribute("formUserField", g.getFormUserField());
+                xml.setAttribute("formPwdField", g.getFormPwdField());
+
+                xml.add(g.getRemoteUsers());
+            }
+            catch (Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+
+        public void read(InputElement xml, Object o)
+        {
+            try
+            {
+                JSSSOSite g = (JSSSOSite) o;
+
+                g.setName(StringEscapeUtils.unescapeHtml(xml.getAttribute("name", (String)null)));
+                g.setSiteURL(StringEscapeUtils.unescapeHtml(xml.getAttribute("siteURL", (String)null)));
+                g.setAllowUserSet(Boolean.parseBoolean(StringEscapeUtils.unescapeHtml(xml.getAttribute("allowUserSet", "false"))));
+                g.setCertificateRequired(Boolean.parseBoolean(StringEscapeUtils.unescapeHtml(xml.getAttribute("certificateRequired", "false"))));
+                g.setChallengeResponseAuthentication(Boolean.parseBoolean(StringEscapeUtils.unescapeHtml(xml.getAttribute("challengeResponseAuthentication", "false"))));
+                g.setRealm(StringEscapeUtils.unescapeHtml(xml.getAttribute("realm", (String)null)));
+                g.setFormAuthentication(Boolean.parseBoolean(StringEscapeUtils.unescapeHtml(xml.getAttribute("formAuthentication", "false"))));
+                g.setFormUserField(StringEscapeUtils.unescapeHtml(xml.getAttribute("formUserField", (String)null)));
+                g.setFormPwdField(StringEscapeUtils.unescapeHtml(xml.getAttribute("formPwdField", (String)null)));
+                
+                Object o1 = null;
+                while (xml.hasNext())
+                {
+                    o1 = xml.getNext();
+                    if (o1 instanceof JSSSOSiteRemoteUsers)
+                    {
+                        g.setRemoteUsers((JSSSOSiteRemoteUsers)o1);
+                    }
+                }
+            }
+            catch (Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+    };
+}

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSiteRemoteUser.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSiteRemoteUser.java?rev=788614&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSiteRemoteUser.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSiteRemoteUser.java Fri Jun 26 07:33:22 2009
@@ -0,0 +1,134 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.serializer.objects;
+
+import javolution.xml.XMLFormat;
+import javolution.xml.stream.XMLStreamException;
+
+import org.apache.commons.lang.StringEscapeUtils;
+
+/**
+ * Jetspeed Serialized (JS) SSORemoteUser
+ * 
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id: $
+ */
+public class JSSSOSiteRemoteUser
+{
+    private String principalName;
+
+    private String principalType;
+    
+    private String name;
+    
+    private char[] password;
+
+    public JSSSOSiteRemoteUser()
+    {
+    }
+
+    public String getPrincipalName()
+    {
+        return principalName;
+    }
+
+    public void setPrincipalName(String principalName)
+    {
+        this.principalName = principalName;
+    }
+
+    public String getPrincipalType()
+    {
+        return principalType;
+    }
+
+    public void setPrincipalType(String principalType)
+    {
+        this.principalType = principalType;
+    }
+
+    public String getName()
+    {
+        return name;
+    }
+
+    public void setName(String name)
+    {
+        this.name = name;
+    }
+
+    public char[] getPassword()
+    {
+        return password;
+    }
+
+    public void setPassword(char[] password)
+    {
+        this.password = password;
+    }
+
+    public void setUserCredential(String name, char[] password)
+    {
+        setName(name);
+        setPassword(password);
+    }
+
+    /***************************************************************************
+     * SERIALIZER
+     */
+    @SuppressWarnings("unused")
+    private static final XMLFormat XML = new XMLFormat(JSSSOSiteRemoteUser.class)
+    {
+        public void write(Object o, OutputElement xml) throws XMLStreamException
+        {
+            try
+            {
+                JSSSOSiteRemoteUser g = (JSSSOSiteRemoteUser) o;
+
+                xml.setAttribute("principalName", g.getPrincipalName());
+                xml.setAttribute("principalType", g.getPrincipalType());
+                xml.setAttribute("name", g.getName());
+                if (g.getPassword() != null)
+                {
+                    xml.setAttribute("password", new String(g.getPassword()));
+                }
+            }
+            catch (Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+
+        public void read(InputElement xml, Object o)
+        {
+            try
+            {
+                JSSSOSiteRemoteUser g = (JSSSOSiteRemoteUser) o;
+
+                g.setPrincipalName(StringEscapeUtils.unescapeHtml(xml.getAttribute("principalName", (String)null)));
+                g.setPrincipalType(StringEscapeUtils.unescapeHtml(xml.getAttribute("principalType", (String)null)));
+                g.setName(StringEscapeUtils.unescapeHtml(xml.getAttribute("name", (String)null)));
+                String passwordString = StringEscapeUtils.unescapeHtml(xml.getAttribute("password", (String)null));
+                g.setPassword((passwordString != null) ? passwordString.toCharArray() : null);
+            }
+            catch (Exception e)
+            {
+                e.printStackTrace();
+            }
+        }
+    };
+}

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSiteRemoteUsers.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSiteRemoteUsers.java?rev=788614&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSiteRemoteUsers.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSiteRemoteUsers.java Fri Jun 26 07:33:22 2009
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.serializer.objects;
+
+import java.util.ArrayList;
+
+/**
+ * Simple wrapper class for XML serialization
+ * 
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id: $
+ *
+ */
+public class JSSSOSiteRemoteUsers extends ArrayList<JSSSOSiteRemoteUser>
+{
+    private static final long serialVersionUID = 1L;
+}

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSites.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSites.java?rev=788614&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSites.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSSOSites.java Fri Jun 26 07:33:22 2009
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.serializer.objects;
+
+import java.util.ArrayList;
+
+/**
+ * Simple wrapper class for XML serialization
+ * 
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id: $
+ *
+ */
+public class JSSSOSites extends ArrayList<JSSSOSite>
+{
+    private static final long serialVersionUID = 1L;
+}

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSnapshot.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSnapshot.java?rev=788614&r1=788613&r2=788614&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSnapshot.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-serializer/src/main/java/org/apache/jetspeed/serializer/objects/JSSnapshot.java Fri Jun 26 07:33:22 2009
@@ -68,8 +68,10 @@
     private JSApplications applications;
     
     private JSSecurityDomains securityDomains;
-    
 
+    private JSSSOSites ssoSites;
+
+    
     /**
      * check the software version and subvversion against the saved
      * version...and verify whether it is compatible...
@@ -96,6 +98,7 @@
         rules = new JSProfilingRules();
         applications = new JSApplications();
         securityDomains=new JSSecurityDomains();
+        ssoSites = new JSSSOSites();
     }
 
     public JSSnapshot(String name)
@@ -434,6 +437,23 @@
         this.securityDomains = securityDomains;
     }
 
+    /**
+     * @return Returns the SSOSites.
+     */
+    public JSSSOSites getSSOSites()
+    {
+        return ssoSites;
+    }
+
+    /**
+     * @param sites
+     *            The SSO sites to set.
+     */
+    public void setSSOSites(JSSSOSites sites)
+    {
+        this.ssoSites = sites;
+    }
+
 
     /***************************************************************************
      * SERIALIZER
@@ -519,6 +539,10 @@
                 {
                     xml.add(g.getSecurityDomains());
                 }
+                if ( !g.getSSOSites().isEmpty() )
+                {
+                    xml.add(g.getSSOSites());
+                }
             }
             catch (Exception e)
             {
@@ -589,6 +613,8 @@
                         g.applications = (JSApplications) o1;
                     else if (o1 instanceof JSSecurityDomains)
                         g.securityDomains = (JSSecurityDomains) o1;
+                    else if (o1 instanceof JSSSOSites)
+                        g.ssoSites = (JSSSOSites) o1;
                 }
             }
             catch (Exception e)

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/serializer/JetspeedSSOSerializer.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/serializer/JetspeedSSOSerializer.java?rev=788614&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/serializer/JetspeedSSOSerializer.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/serializer/JetspeedSSOSerializer.java Fri Jun 26 07:33:22 2009
@@ -0,0 +1,329 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.serializer;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.jetspeed.security.JetspeedPrincipal;
+import org.apache.jetspeed.security.PasswordCredential;
+import org.apache.jetspeed.security.GroupManager;
+import org.apache.jetspeed.security.SecurityException;
+import org.apache.jetspeed.security.UserManager;
+import org.apache.jetspeed.serializer.objects.JSSnapshot;
+import org.apache.jetspeed.serializer.objects.JSSSOSite;
+import org.apache.jetspeed.serializer.objects.JSSSOSiteRemoteUser;
+import org.apache.jetspeed.serializer.objects.JSSSOSites;
+import org.apache.jetspeed.sso.SSOException;
+import org.apache.jetspeed.sso.SSOManager;
+import org.apache.jetspeed.sso.SSOSite;
+import org.apache.jetspeed.sso.SSOUser;
+import org.apache.jetspeed.sso.impl.SSOUtils;
+import org.slf4j.Logger;
+
+/**
+ * JetspeedSSOSerializer - Profiler component serializer
+ *
+ * @author <a href="mailto:rwatler@apache.org">Randy Watler</a>
+ * @version $Id$
+ */
+public class JetspeedSSOSerializer extends AbstractJetspeedComponentSerializer
+{
+    private SSOManager ssoManager;
+    private GroupManager groupManager;
+    private UserManager userManager;
+    
+    public JetspeedSSOSerializer(SSOManager ssoManager, GroupManager groupManager, UserManager userManager)
+    {
+        this.ssoManager = ssoManager;
+        this.groupManager = groupManager;
+        this.userManager = userManager;
+    }
+    
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.serializer.AbstractJetspeedComponentSerializer#deleteData(java.util.Map, org.slf4j.Logger)
+     */
+    protected void deleteData(Map settings, Logger log) throws SerializerException
+    {
+        if (isSettingSet(settings, JetspeedSerializer.KEY_PROCESS_SSO))
+        {
+            log.info("deleting SSO sites, principals, and security domains");
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.serializer.AbstractJetspeedComponentSerializer#processExport(org.apache.jetspeed.serializer.objects.JSSnapshot, java.util.Map, org.slf4j.Logger)
+     */
+    protected void processExport(JSSnapshot data, Map settings, Logger log) throws SerializerException
+    {
+        if (isSettingSet(settings, JetspeedSerializer.KEY_PROCESS_SSO))
+        {
+            log.info("collecting SSO sites, principals, and security domains");
+            exportSSOSites(data, settings, log);
+        }
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.jetspeed.serializer.AbstractJetspeedComponentSerializer#processImport(org.apache.jetspeed.serializer.objects.JSSnapshot, java.util.Map, org.slf4j.Logger)
+     */
+    protected void processImport(JSSnapshot data, Map settings, Logger log) throws SerializerException
+    {
+        if (isSettingSet(settings, JetspeedSerializer.KEY_PROCESS_SSO))
+        {
+            log.info("creating SSO sites, principals, and security domains");
+            recreateSSOSites(data, settings, log);
+        }
+    }
+    
+    /**
+     * delete SSO site data
+     * 
+     * @param settings export settings
+     * @param log export logger
+     * @throws SerializerException
+     */
+    private void deleteSSOSites(Map settings, Logger log) throws SerializerException
+    {
+        Iterator<SSOSite> list = null;
+        try
+        {
+            list = (new ArrayList<SSOSite>(ssoManager.getSites(""))).iterator();
+        }
+        catch (Exception e)
+        {
+            throw new SerializerException(SerializerException.GET_EXISTING_OBJECTS.create(new String[]{"SSOSites", e.getMessage()}));
+        }
+        while (list.hasNext())
+        {
+            try
+            {
+                SSOSite s = list.next();
+                ssoManager.removeSite(s);
+            }
+            catch (Exception e)
+            {
+                throw new SerializerException(e);
+            }
+        }
+    }
+
+    /**
+     * Create the SSO Site Wrapper
+     * 
+     * @param s sso site
+     * @return sso site wrapper
+     * @throws SSOException
+     */
+    private JSSSOSite createSSOSite(SSOSite s) throws SSOException
+    {
+        JSSSOSite site = new JSSSOSite();
+        site.setName(s.getName());
+        site.setSiteURL(s.getURL());
+        site.setAllowUserSet(s.isAllowUserSet());
+        site.setCertificateRequired(s.isCertificateRequired());
+        site.setChallengeResponseAuthentication(s.isChallengeResponseAuthentication());
+        site.setRealm(s.getRealm());
+        site.setFormAuthentication(s.isFormAuthentication());
+        site.setFormUserField(s.getFormUserField());
+        site.setFormPwdField(s.getFormPwdField());
+
+        Iterator<SSOUser> ruIter = ssoManager.getUsersForSite(s).iterator();
+        while (ruIter.hasNext())
+        {
+            SSOUser ru = ruIter.next();
+            PasswordCredential ruCredential = ssoManager.getCredentials(ru);
+            if (ruCredential != null)
+            {
+                String ruName = ru.getName();
+                String rupType = null;
+                String rupName = null;
+                Collection<JetspeedPrincipal> ruPrincipals = ssoManager.getPortalPrincipals(ru);
+                if ((ruPrincipals != null) && !ruPrincipals.isEmpty())
+                {
+                    JetspeedPrincipal rup = ruPrincipals.iterator().next();
+                    rupName = rup.getName();
+                    if (rup.getType().getName().equals("user"))
+                    {
+                        rupType = "user";
+                    }
+                    else if (rup.getType().getName().equals("group"))
+                    {
+                        rupType = "group";
+                    }
+                }
+                if ((rupName != null) && (rupType != null))
+                {
+                    String ruPassword = SSOUtils.scramble(ruCredential.getPassword());
+                    JSSSOSiteRemoteUser siteRemoteUser = new JSSSOSiteRemoteUser();
+                    siteRemoteUser.setPrincipalName(rupName);
+                    siteRemoteUser.setPrincipalType(rupType);
+                    siteRemoteUser.setUserCredential(ruName, ruPassword.toCharArray());
+                    site.addRemoteUser(siteRemoteUser);
+                }
+            }
+        }
+
+        return site;
+    }
+
+    /**
+     * extract SSO sites and save in snapshot file
+     * 
+     * @param data sso data snapshot
+     * @param settings export settings
+     * @param log export logger
+     * @throws SerializerException
+     */
+    private void exportSSOSites(JSSnapshot data, Map settings, Logger log) throws SerializerException
+    {
+        Map<String,JSSSOSite> ssoSitesMap = new HashMap<String,JSSSOSite>();
+        Iterator<SSOSite> list = null;
+        try
+        {
+            list = ssoManager.getSites("").iterator();
+        }
+        catch (Exception e)
+        {
+            throw new SerializerException(SerializerException.GET_EXISTING_OBJECTS.create(new String[]{"SSOSites", e.getMessage()}));
+        }
+        while (list.hasNext())
+        {
+            try
+            {
+                SSOSite s = list.next();                
+                if (!(ssoSitesMap.containsKey(s.getURL())))
+                {
+                    JSSSOSite site = createSSOSite(s);
+                    ssoSitesMap.put(site.getSiteURL(), site);
+                    data.getSSOSites().add(site);
+                }
+            }
+            catch (Exception e)
+            {
+                throw new SerializerException(SerializerException.CREATE_SERIALIZED_OBJECT_FAILED.create(new String[]{"SSOSites", e.getMessage()}));
+            }
+        }
+    }
+    
+    /**
+     * Construct SSO site from (JS) SSOSite.
+     * 
+     * @param site SSO site
+     * @param s existing SSO site
+     * @return created SSO site
+     * @throws SerializerException
+     * @throws SSOException
+     * @throws SecurityException
+     */
+    private SSOSite recreateSSOSite(JSSSOSite site, SSOSite s) throws SerializerException, SSOException, SecurityException
+    {
+        if (s != null)
+        {
+            ssoManager.removeSite(s);
+        }
+        
+        s = ssoManager.newSite(site.getName(), site.getSiteURL());
+        s = ssoManager.addSite(s);
+        s.setAllowUserSet(site.isAllowUserSet());
+        s.setCertificateRequired(site.isCertificateRequired());
+        s.setChallengeResponseAuthentication(site.isChallengeResponseAuthentication());
+        s.setRealm(site.getRealm());
+        s.setFormAuthentication(site.isFormAuthentication());
+        s.setFormUserField(site.getFormUserField());
+        s.setFormPwdField(site.getFormPwdField());
+
+        if (site.getRemoteUsers() != null)
+        {
+            Iterator<JSSSOSiteRemoteUser> ruIter = site.getRemoteUsers().iterator();
+            while (ruIter.hasNext())
+            {
+                JSSSOSiteRemoteUser rUser = ruIter.next();
+                if (rUser.getPassword() != null)
+                {
+                    String pName = rUser.getPrincipalName();
+                    String pType = rUser.getPrincipalType();
+                    JetspeedPrincipal principal = null;
+                    if (pType.equals("user"))
+                    {
+                        principal = userManager.getUser(pName);
+                    }
+                    else if (pType.equals("group"))
+                    {
+                        principal = groupManager.getGroup(pName);
+                    }
+                    if (principal != null)
+                    {
+                        String rName = rUser.getName();
+                        String rPassword = new String(rUser.getPassword());
+                        ssoManager.addUser(s, principal, rName, SSOUtils.unscramble(rPassword));
+                    }
+                    else
+                    {
+                        throw new IllegalArgumentException("Cannot lookup or create SSO remote user for principal "+pType+":"+pName);
+                    }
+                }
+            }
+        }
+        
+        return s;
+    }
+    
+    /**
+     * Create imported SSO sites.
+     * 
+     * @param data sso data snapshot
+     * @param settings import settings
+     * @param log import logger
+     * @throws SerializerException
+     */
+    private void recreateSSOSites(JSSnapshot data, Map settings, Logger log) throws SerializerException
+    {
+        log.debug("recreateSSOSites - processing");
+
+        JSSSOSites sites = data.getSSOSites();
+        if ((sites != null) && (sites.size() > 0))
+        {
+            Iterator<JSSSOSite> sitesIter = sites.iterator();
+            while (sitesIter.hasNext())
+            {
+                JSSSOSite site = sitesIter.next();
+                try
+                {
+                    SSOSite s = ssoManager.getSiteByUrl(site.getSiteURL());
+                    if ((s == null) || isSettingSet(settings, JetspeedSerializer.KEY_OVERWRITE_EXISTING))
+                    {
+                        s = recreateSSOSite(site, s);
+                        ssoManager.updateSite(s);
+                    }
+                }
+                catch (Exception e)
+                {
+                    throw new SerializerException(SerializerException.CREATE_OBJECT_FAILED.create("SSOSite",e.getLocalizedMessage()));
+                }
+            }
+        }
+        else
+        {
+            log.debug("NO SSO SITES?????");
+        }
+        
+        log.debug("recreateSSOSites - done");        
+    }
+}

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/sso/impl/SSOClientImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/sso/impl/SSOClientImpl.java?rev=788614&r1=788613&r2=788614&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/sso/impl/SSOClientImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/sso/impl/SSOClientImpl.java Fri Jun 26 07:33:22 2009
@@ -148,7 +148,7 @@
         httpClient.getState().setCredentials(
                 site.getRealm(),
                 url.getHost(),
-                new UsernamePasswordCredentials(credential.getUserName(),  this.unscramble(credential.getPassword()))
+                new UsernamePasswordCredentials(credential.getUserName(), SSOUtils.unscramble(credential.getPassword()))
             );
      // Build URL if it's Form authentication
         StringBuffer siteURL = new StringBuffer(site.getURL());
@@ -156,7 +156,7 @@
         // Check if it's form based or ChallengeResponse
         if (site.isFormAuthentication())
         {
-            siteURL.append("?").append(site.getFormUserField()).append("=").append(credential.getUserName()).append("&").append(site.getFormPwdField()).append("=").append(this.unscramble(credential.getPassword()));
+            siteURL.append("?").append(site.getFormUserField()).append("=").append(credential.getUserName()).append("&").append(site.getFormPwdField()).append("=").append(SSOUtils.unscramble(credential.getPassword()));
         }
         
         get.setDoAuthentication( true );
@@ -171,27 +171,4 @@
         }
         return status;      
     }
-        
-    static char[] scrambler ="Jestspeed-2 is getting ready for release".toCharArray();
-    
-    private char[] xor(char[] a, char[]b)
-    {
-        int len = Math.min(a.length, b.length);
-        char[] result = new char[len];
-        for(int i=0; i<len;i++)
-        {
-            result[i] = (char) (a[i] ^ b[i]);
-        }
-        return result;
-    }
-    
-    private String unscramble(String pwd)
-    {
-        byte[] bytes = pwd.getBytes();
-        bytes = Base64.decodeBase64(bytes);
-        String chars = new String(bytes);
-        String unscrambled = new String(xor(chars.toCharArray(), scrambler));
-        return unscrambled;
-    }
-    
 }

Added: portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/sso/impl/SSOUtils.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/sso/impl/SSOUtils.java?rev=788614&view=auto
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/sso/impl/SSOUtils.java (added)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-sso/src/main/java/org/apache/jetspeed/sso/impl/SSOUtils.java Fri Jun 26 07:33:22 2009
@@ -0,0 +1,62 @@
+/* 
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.sso.impl;
+
+import org.apache.commons.codec.binary.Base64;
+
+public class SSOUtils
+{
+    /*
+     * Simple encryption decryption routines since the API creates credentials 
+     * together with an user.
+     * TODO: re-implement when Security API is more flexible
+     */
+    private static char[] scrambler = "Jestspeed-2 is getting ready for release".toCharArray();
+    
+    public static String scramble(String pwd)
+    {
+        // xor-ing persistent String values is dangerous because of the (uncommon) way Java encodes UTF-8 0x00 (and some other characters).
+        // See: http://en.wikipedia.org/wiki/UTF-8#Java
+        // On some database platforms, like PostgreSQL this can lead to something like:
+        //   org.postgresql.util.PSQLException: ERROR: invalid byte sequence for encoding "UTF8": 0x00
+        // To prevent this, the resulting xored password is encoded in Base64
+        String xored = new String(xor(pwd.toCharArray(), scrambler));
+        byte[] bytes = Base64.encodeBase64(xored.getBytes());
+        String scrambled = new String(bytes);
+        return scrambled;
+    }
+    
+    public static String unscramble(String pwd)
+    {
+        byte[] bytes = pwd.getBytes();
+        bytes = Base64.decodeBase64(bytes);
+        String chars = new String(bytes);
+        String unscrambled = new String(xor(chars.toCharArray(), scrambler));
+        return unscrambled;
+    }
+    
+    private static char[] xor(char[] a, char[]b)
+    {
+        int len = Math.min(a.length, b.length);
+        char[] result = new char[len];
+        for (int i=0; (i < len); i++)
+        {
+            result[i] = (char) (a[i] ^ b[i]);
+        }
+        return result;
+    }
+}

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/serializer/JetspeedSerializer.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/serializer/JetspeedSerializer.java?rev=788614&r1=788613&r2=788614&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/serializer/JetspeedSerializer.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/serializer/JetspeedSerializer.java Fri Jun 26 07:33:22 2009
@@ -71,6 +71,7 @@
     String KEY_PROCESS_USER_PREFERENCES = "process_user_preferences";
     String KEY_PROCESS_PORTAL_PREFERENCES = "process_portal_preferences";
     String KEY_PROCESS_USER_TEMPLATES = "process_user_templates";
+    String KEY_PROCESS_SSO = "process_sso";
     String KEY_LOGGER = "logger";
     String KEY_OVERWRITE_EXISTING = "overwrite_existing";
     String KEY_BACKUP_BEFORE_PROCESS = "backup_before_process";

Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/serializer.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/serializer.xml?rev=788614&r1=788613&r2=788614&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/serializer.xml (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/serializer.xml Fri Jun 26 07:33:22 2009
@@ -45,6 +45,11 @@
           <constructor-arg index="1" ref="org.apache.jetspeed.components.portletpreferences.PortletPreferencesProvider" />
           <constructor-arg index="2" ref="org.apache.jetspeed.search.SearchEngine" />
         </bean>
+        <bean class="org.apache.jetspeed.serializer.JetspeedSSOSerializer">
+          <constructor-arg index="0" ref="org.apache.jetspeed.sso.SSOManager" />
+          <constructor-arg index="1" ref="org.apache.jetspeed.security.GroupManager" />
+          <constructor-arg index="2" ref="org.apache.jetspeed.security.UserManager" />
+        </bean>
         <!-- 
           <bean class="org.apache.jetspeed.serializer.JetspeedUserTemplateSerializer">
           <constructor-arg index="0" ref="org.apache.jetspeed.page.PageManager" />
@@ -81,6 +86,9 @@
         <entry key="process_user_templates">
           <value type="java.lang.Boolean">true</value>
         </entry>
+        <entry key="process_sso">
+          <value type="java.lang.Boolean">true</value>
+        </entry>
         <!--  following serializers are not yet implemented/available -->
         <entry key="process_portal_preferences">
           <value type="java.lang.Boolean">false</value>

Modified: portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/sso.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/sso.xml?rev=788614&r1=788613&r2=788614&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/sso.xml (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/sso.xml Fri Jun 26 07:33:22 2009
@@ -154,13 +154,9 @@
     </property>
     <property name="transactionAttributes">
       <props>
-        <prop key="addSite*">PROPAGATION_REQUIRED</prop>
-        <prop key="updateSite*">PROPAGATION_REQUIRED</prop>
-        <prop key="removeSite">PROPAGATION_REQUIRED</prop>
-        <prop key="addCredentialsForSite">PROPAGATION_REQUIRED</prop>
-        <prop key="updateCredentialsForSite">PROPAGATION_REQUIRED</prop>
-        <prop key="removeCredentialsForSite">PROPAGATION_REQUIRED</prop>
-        <prop key="setRealmForSite">PROPAGATION_REQUIRED</prop>
+        <prop key="add">PROPAGATION_REQUIRED</prop>
+        <prop key="update">PROPAGATION_REQUIRED</prop>
+        <prop key="remove">PROPAGATION_REQUIRED</prop>
         <prop key="*">PROPAGATION_SUPPORTS</prop>
       </props>
     </property>



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org