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 wo...@apache.org on 2008/10/20 09:43:43 UTC

svn commit: r706141 - in /portals/jetspeed-2/portal/trunk: ./ components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletentity/ components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/ compone...

Author: woonsan
Date: Mon Oct 20 00:43:43 2008
New Revision: 706141

URL: http://svn.apache.org/viewvc?rev=706141&view=rev
Log:
Fixed a bug querying by getPortletDefinitionByIdentifier() with unique name.
Also, modified the getUserNames() method of PersistenceBrokerPortletPreferencesProvider interface to return Collection<String> instead of Iterator<String>. It was because the existing method throws exception from OJB layer, 'Resources no longer reachable, RsIterator will be automatic cleaned up on PB.close/.commitTransaction/.abortTransaction'.
So, I thought that the method should return a copied collection of user names, instead of the rs iterator.
And, updated the data migration guide document.

Modified:
    portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/PersistenceBrokerPortletPreferencesProvider.java
    portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/serializer/JetspeedRegistrySerializer.java
    portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/components/portletpreferences/PortletPreferencesProvider.java
    portals/jetspeed-2/portal/trunk/pom.xml
    portals/jetspeed-2/portal/trunk/xdocs/guides/guide-migration.xml

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java?rev=706141&r1=706140&r2=706141&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletentity/PortletEntityImpl.java Mon Oct 20 00:43:43 2008
@@ -218,7 +218,7 @@
         // (becuase the PortletApplication has yet to be registered).
         if(this.portletDefinition == null)
         {
-            PortletDefinition pd = registry.getPortletDefinitionByIdentifier(getPortletUniqueName());
+            PortletDefinition pd = registry.getPortletDefinitionByUniqueName(getPortletUniqueName());
             if ( pd != null )
             {
               // only store a really found PortletDefinition

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/PersistenceBrokerPortletPreferencesProvider.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/PersistenceBrokerPortletPreferencesProvider.java?rev=706141&r1=706140&r2=706141&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/PersistenceBrokerPortletPreferencesProvider.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/components/portletpreferences/PersistenceBrokerPortletPreferencesProvider.java Mon Oct 20 00:43:43 2008
@@ -17,8 +17,10 @@
 package org.apache.jetspeed.components.portletpreferences;
 
 import java.util.HashMap;
+import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+import java.util.LinkedList;
 import java.util.Map;
 
 import org.apache.jetspeed.cache.CacheElement;
@@ -186,30 +188,23 @@
         return new PreferenceSetImpl(prefs);
     }
     
-    public Iterator<String> getUserNames(MutablePortletEntity pe)
+    public Collection<String> getUserNames(MutablePortletEntity pe)
     {
+        Collection<String> userNames = new LinkedList<String>();
+        
         Criteria c = new Criteria();
         c.addEqualTo("entityId", pe.getId());
         final ReportQueryByCriteria q = QueryFactory.newReportQuery(PreferenceValueImpl.class, c, true);
-        q.setAttributes(new String[]{"userName"});        
-
-        return new Iterator<String>(){
-            private final Iterator<Object[]> iterator = getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(q);
-            public boolean hasNext()
-            {
-                return iterator.hasNext();
-            }
-
-            public String next()
-            {
-                return (String)iterator.next()[0];
-            }
+        q.setAttributes(new String[]{"userName"});
 
-            public void remove()
-            {
-                throw new UnsupportedOperationException();
-            }
-        };
+        Iterator<Object[]> iterator = getPersistenceBrokerTemplate().getReportQueryIteratorByQuery(q);
+        
+        while (iterator.hasNext())
+        {
+            userNames.add((String)iterator.next()[0]);
+        }
+        
+        return userNames;
     }
     
     public void savePreferenceSet(PortletDefinitionComposite pd, PreferenceSetComposite preferenceSet)

Modified: portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/serializer/JetspeedRegistrySerializer.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/serializer/JetspeedRegistrySerializer.java?rev=706141&r1=706140&r2=706141&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/serializer/JetspeedRegistrySerializer.java (original)
+++ portals/jetspeed-2/portal/trunk/components/jetspeed-registry/src/main/java/org/apache/jetspeed/serializer/JetspeedRegistrySerializer.java Mon Oct 20 00:43:43 2008
@@ -289,13 +289,14 @@
             catch (Exception e)
             {
                 throw new SerializerException(SerializerException.CREATE_SERIALIZED_OBJECT_FAILED.create(new String[] {
-                        "PortletApplicationDefinition", e.getMessage() }));
+                        "PortletApplicationDefinition", e.getMessage() }), e);
             }
         }
     }
 
     private JSApplication exportPA(MutablePortletApplication pa, Map settings, Log log) throws SerializerException
     {
+        JSApplication jsApplication = null;
         /**
          * while more PAs for each portletDef
          * list:entityMan:getPortletEntity(pd)
@@ -305,12 +306,14 @@
         PortletDefinition pd = null;
 
         JSPortlets portlets = new JSPortlets();
+        
         while (pi.hasNext())
         {
             try
             {
                 pd = (PortletDefinition) pi.next();
                 JSPortlet p = exportPD(pd, settings, log);
+                
                 if (p != null)
                 {
                     log.debug("--processed PA " + pa.getName() + " with pd=" + pd.getName());
@@ -318,68 +321,63 @@
                 }
                 else
                     log.debug("--processed PA " + pa.getName() + " with NULL pd=" + pd.getName());
-
             }
             catch (Exception e)
             {
                 throw new SerializerException(SerializerException.CREATE_SERIALIZED_OBJECT_FAILED.create(new String[] {
-                        "PortletDefinition", e.getMessage() }));
+                        "PortletDefinition", e.getMessage() }), e);
             }
         }
+        
         if (!portlets.isEmpty())
         {
-            JSApplication app = new JSApplication();
+            jsApplication = new JSApplication();
             log.debug("--exporting PA " + pa.getName() + " with id=" + pa.getId());
-            app.setID(pa.getId().toString());
-            app.setName(pa.getName());
-            app.setPortlets(portlets);
-            return app;
+            jsApplication.setID(pa.getId().toString());
+            jsApplication.setName(pa.getName());
+            jsApplication.setPortlets(portlets);
         }
-        return null;
+        
+        return jsApplication;
     }
 
     private JSPortlet exportPD(PortletDefinition pd, Map settings, Log log) throws SerializerException
     {
+        JSPortlet jsPortlet = null;
+        
         try
         {
             Collection col = entityAccess.getPortletEntities(pd);
+            
             if ((col == null) || (col.size() == 0))
                 return null;
-            Iterator list = null;
-            try
-            {
-                list = col.iterator();
-            }
-            catch (Exception e)
-            {
-                throw new SerializerException(SerializerException.GET_EXISTING_OBJECTS.create(new String[] {
-                        "entityAccess", e.getMessage() }));
-            }
+
             JSEntities entities = new JSEntities();
 
-            while (list.hasNext())
+            for (Object item : col)
             {
-                MutablePortletEntity entity = (MutablePortletEntity) list.next();
+                MutablePortletEntity entity = (MutablePortletEntity) item;
                 JSEntity jsEntity = exportEntityPref(entity, settings, log);
+                
                 if (jsEntity != null)
                     entities.add(jsEntity);
-
             }
+            
             if (!entities.isEmpty())
             {
-                JSPortlet portlet = new JSPortlet();
-                portlet.setName(pd.getName());
+                jsPortlet = new JSPortlet();
+                jsPortlet.setName(pd.getName());
                 log.debug("-----exporting for PD=" + pd.getName());
-                portlet.setEntities(entities);
-                return portlet;
+                jsPortlet.setEntities(entities);
             }
-            return null;
         }
         catch (Exception e)
         {
             throw new SerializerException(SerializerException.CREATE_SERIALIZED_OBJECT_FAILED.create(new String[] {
-                    "Entity", e.getMessage() }));
+                    "Entity", e.getMessage() }), e);
         }
+        
+        return jsPortlet;
     }
 
     JSEntity exportEntityPref(MutablePortletEntity entity, Map settings, Log log)
@@ -392,19 +390,22 @@
         if (isSettingSet(settings, JetspeedSerializer.KEY_PROCESS_USER_PREFERENCES))
         {
             JSEntityPreferences entityPreferences = new JSEntityPreferences();
-            Iterator<String> userNames = prefsProvider.getUserNames(entity);
-            while (userNames.hasNext())
+            Collection<String> userNames = prefsProvider.getUserNames(entity);
+            
+            for (String userName : userNames)
             {
-                String userName = userNames.next();
-                PreferenceSetComposite preferenceSet = prefsProvider.getPreferenceSet(entity, userNames.next());
+                PreferenceSetComposite preferenceSet = prefsProvider.getPreferenceSet(entity, userName);
+                
                 JSEntityPreference userPreference = new JSEntityPreference();
                 userPreference.setName(userName);
                 Iterator<Preference> preferences = preferenceSet.iterator();
                 JSNVPElements v = new JSNVPElements();
+                
                 while (preferences.hasNext())
                 {
                     Preference p = preferences.next();
                     Iterator<String> values = p.getValues();
+                    
                     while (values.hasNext())
                     {
                         JSNVPElement element = new JSNVPElement();
@@ -413,11 +414,13 @@
                         v.add(element);
                     }
                 }
+                
                 if (v.size() > 0)
                 {
                     userPreference.setPreferences(v);
                     entityPreferences.add(userPreference);
                 }
+                
                 if (!entityPreferences.isEmpty())
                 {
                     log.debug("processed preferences for entity=" + entity.getId());
@@ -425,6 +428,7 @@
                 }
             }
         }
+        
         return jsEntity;
     }
 }

Modified: portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/components/portletpreferences/PortletPreferencesProvider.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/components/portletpreferences/PortletPreferencesProvider.java?rev=706141&r1=706140&r2=706141&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/components/portletpreferences/PortletPreferencesProvider.java (original)
+++ portals/jetspeed-2/portal/trunk/jetspeed-api/src/main/java/org/apache/jetspeed/components/portletpreferences/PortletPreferencesProvider.java Mon Oct 20 00:43:43 2008
@@ -16,7 +16,7 @@
  */
 package org.apache.jetspeed.components.portletpreferences;
 
-import java.util.Iterator;
+import java.util.Collection;
 
 import org.apache.jetspeed.om.common.portlet.MutablePortletEntity;
 import org.apache.jetspeed.om.common.portlet.PortletDefinitionComposite;
@@ -28,7 +28,7 @@
     public PreferenceSetComposite getPreferenceSet(PortletDefinitionComposite pd);
     public PreferenceSetComposite getPreferenceSet(MutablePortletEntity pe);
     public PreferenceSetComposite getPreferenceSet(MutablePortletEntity pe, String userName);
-    public Iterator<String> getUserNames(MutablePortletEntity pe);
+    public Collection<String> getUserNames(MutablePortletEntity pe);
     public void savePreferenceSet(PortletDefinitionComposite pd, PreferenceSetComposite preferenceSet);
     public void savePreferenceSet(MutablePortletEntity pe, PreferenceSetComposite preferenceSet);
     public void savePreferenceSet(MutablePortletEntity pe, String userName, PreferenceSetComposite preferenceSet);        

Modified: portals/jetspeed-2/portal/trunk/pom.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/pom.xml?rev=706141&r1=706140&r2=706141&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/pom.xml (original)
+++ portals/jetspeed-2/portal/trunk/pom.xml Mon Oct 20 00:43:43 2008
@@ -279,7 +279,7 @@
     <commons-digester.version>1.8</commons-digester.version>
     <commons-fileupload.version>1.2</commons-fileupload.version>
     <commons-httpclient.version>3.0.1</commons-httpclient.version>
-    <commons-io.version>1.3.2</commons-io.version>
+    <commons-io.version>1.4</commons-io.version>
     <commons-lang.version>2.1</commons-lang.version>
     <commons-logging.version>1.1</commons-logging.version>
     <commons-pool.version>1.3</commons-pool.version>

Modified: portals/jetspeed-2/portal/trunk/xdocs/guides/guide-migration.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/xdocs/guides/guide-migration.xml?rev=706141&r1=706140&r2=706141&view=diff
==============================================================================
--- portals/jetspeed-2/portal/trunk/xdocs/guides/guide-migration.xml (original)
+++ portals/jetspeed-2/portal/trunk/xdocs/guides/guide-migration.xml Mon Oct 20 00:43:43 2008
@@ -25,8 +25,364 @@
 		</authors>
 	</properties>
 	<body>
+      <section name="Data Migrating from Jetspeed 2.1.3 to 2.2">
+        <p>The following tables describe database schema changes from version 2.1.3 to version 2.2.</p>
+        <subsection name="Removed Tables">
+          <table>
+            <tr>
+              <th>Table</th>
+            </tr>
+            <tr>
+              <td>SECURITY_USER_ROLE</td>
+            </tr>
+            <tr>
+              <td>SECURITY_USER_GROUP</td>
+            </tr>
+            <tr>
+              <td>SECURITY_GROUP_ROLE</td>
+            </tr>
+            <tr>
+              <td>PREFS_NODE</td>
+            </tr>
+            <tr>
+              <td>PREFS_PROPERTY_VALUE</td>
+            </tr>
+          </table>
+        </subsection>
+        <subsection name="Added Tables">
+          <table>
+            <tr>
+              <th>Table</th>
+            </tr>
+            <tr>
+              <td>PORTLET_PREFERENCE</td>
+            </tr>
+            <tr>
+              <td>PORTLET_PREFERENCE_VALUE</td>
+            </tr>
+            <tr>
+              <td>SECURITY_ATTRIBUTE</td>
+            </tr>
+            <tr>
+              <td>SECURITY_PRINCIPAL_ASSOC</td>
+            </tr>
+          </table>
+        </subsection>            
+        <subsection name="Columns Altering">
+          <table>
+            <tr>
+              <th rowspan="2">Altering Action</th>
+              <th rowspan="2">Table</th>
+              <th rowspan="2">Column</th>
+              <th colspan="3">2.1.3</th>
+              <th colspan="3">2.2</th>
+            </tr>
+            <tr>
+              <th>Type</th>
+              <th>Size</th>
+              <th>Required</th>
+              <th>Type</th>
+              <th>Size</th>
+              <th>Required</th>
+            </tr>
+            <tr>
+              <td>MODIFY</td>
+              <td>PARAMETER</td>
+              <td>PARAMETER_VALUE</td>
+              <td>LONGVARCHAR</td>
+              <td></td>
+              <td>Yes</td>
+              <td>LONGVARCHAR</td>
+              <td></td>
+              <td>No</td>
+            </tr>
+            <tr>
+              <td>MODIFY</td>
+              <td>PORTLET_ENTITY</td>
+              <td>ID</td>
+              <td>VARCHAR</td>
+              <td>255</td>
+              <td>Yes</td>
+              <td>VARCHAR</td>
+              <td>80</td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>MODIFY</td>
+              <td>PORTLET_ENTITY</td>
+              <td>APP_NAME</td>
+              <td>VARCHAR</td>
+              <td>255</td>
+              <td>Yes</td>
+              <td>VARCHAR</td>
+              <td>80</td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>MODIFY</td>
+              <td>PORTLET_ENTITY</td>
+              <td>PORTLET_NAME</td>
+              <td>VARCHAR</td>
+              <td>255</td>
+              <td>Yes</td>
+              <td>VARCHAR</td>
+              <td>80</td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>DROP</td>
+              <td>SECURITY_PRINCIPAL</td>
+              <td>CLASSNAME</td>
+              <td>VARCHAR</td>
+              <td>254</td>
+              <td>Yes</td>
+              <td></td>
+              <td></td>
+              <td></td>
+            </tr>
+            <tr>
+              <td>DROP</td>
+              <td>SECURITY_PRINCIPAL</td>
+              <td>IS_MAPPING_ONLY</td>
+              <td>BOOLEANINT</td>
+              <td></td>
+              <td>Yes</td>
+              <td></td>
+              <td></td>
+              <td></td>
+            </tr>
+            <tr>
+              <td>DROP</td>
+              <td>SECURITY_PRINCIPAL</td>
+              <td>IS_ENABLED</td>
+              <td>BOOLEANINT</td>
+              <td></td>
+              <td>Yes</td>
+              <td></td>
+              <td></td>
+              <td></td>
+            </tr>
+            <tr>
+              <td>DROP</td>
+              <td>SECURITY_PRINCIPAL</td>
+              <td>FULL_PATH</td>
+              <td>VARCHAR</td>
+              <td>254</td>
+              <td>Yes</td>
+              <td></td>
+              <td></td>
+              <td></td>
+            </tr>
+            <tr>
+              <td>ADD</td>
+              <td>SECURITY_PRINCIPAL</td>
+              <td>PRINCIPAL_TYPE</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td>VARCHAR</td>
+              <td>20</td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>ADD</td>
+              <td>SECURITY_PRINCIPAL</td>
+              <td>PRINCIPAL_NAME</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td>VARCHAR</td>
+              <td>200</td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>ADD</td>
+              <td>SECURITY_PRINCIPAL</td>
+              <td>IS_MAPPED</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td>BOOLEANINT</td>
+              <td></td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>ADD</td>
+              <td>SECURITY_PRINCIPAL</td>
+              <td>IS_ENABLED</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td>BOOLEANINT</td>
+              <td></td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>ADD</td>
+              <td>SECURITY_PRINCIPAL</td>
+              <td>IS_READONLY</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td>BOOLEANINT</td>
+              <td></td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>ADD</td>
+              <td>SECURITY_PRINCIPAL</td>
+              <td>IS_REMOVABLE</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td>BOOLEANINT</td>
+              <td></td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>DROP</td>
+              <td>SECURITY_PERMISSION</td>
+              <td>CLASSNAME</td>
+              <td>VARCHAR</td>
+              <td>254</td>
+              <td>Yes</td>
+              <td></td>
+              <td></td>
+              <td></td>
+            </tr>
+            <tr>
+              <td>ADD</td>
+              <td>SECURITY_PERMISSION</td>
+              <td>PERMISSION_TYPE</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td>VARCHAR</td>
+              <td>30</td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>DROP</td>
+              <td>SECURITY_PERMISSION</td>
+              <td>CREATION_DATE</td>
+              <td>TIMESTAMP</td>
+              <td></td>
+              <td>Yes</td>
+              <td></td>
+              <td></td>
+              <td></td>
+            </tr>
+            <tr>
+              <td>DROP</td>
+              <td>SECURITY_PERMISSION</td>
+              <td>MODIFIED_DATE</td>
+              <td>TIMESTAMP</td>
+              <td></td>
+              <td>Yes</td>
+              <td></td>
+              <td></td>
+              <td></td>
+            </tr>
+            <tr>
+              <td>DROP</td>
+              <td>SECURITY_CREDENTIAL</td>
+              <td>COLUMN_VALUE</td>
+              <td>VARCHAR</td>
+              <td>254</td>
+              <td>Yes</td>
+              <td></td>
+              <td></td>
+              <td></td>
+            </tr>
+            <tr>
+              <td>ADD</td>
+              <td>SECURITY_CREDENTIAL</td>
+              <td>CREDENTIAL_VALUE</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td>VARCHAR</td>
+              <td>254</td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>DROP</td>
+              <td>SECURITY_CREDENTIAL</td>
+              <td>CLASSNAME</td>
+              <td>VARCHAR</td>
+              <td>254</td>
+              <td>No</td>
+              <td></td>
+              <td></td>
+              <td></td>
+            </tr>
+            <tr>
+              <td>ADD</td>
+              <td>SECURITY_CREDENTIAL</td>
+              <td>UPDATE_ALLOWED</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td>BOOLEANINT</td>
+              <td></td>
+              <td>Yes</td>
+            </tr>
+            <tr>
+              <td>ADD</td>
+              <td>SECURITY_CREDENTIAL</td>
+              <td>IS_STATE_READONLY</td>
+              <td></td>
+              <td></td>
+              <td></td>
+              <td>BOOLEANINT</td>
+              <td></td>
+              <td>Yes</td>
+            </tr>
+          </table>
+        </subsection>
+        <subsection name="Added Indexes">
+          <table>
+            <tr>
+              <th>Table</th>
+              <th>Index</th>
+              <th>Type</th>
+              <th>Column(s)</th>
+            </tr>
+            <tr>
+              <td>SECURITY_PERMISSION</td> 
+              <td>UIX_SECURITY_PERMISSION</td> 
+              <td>unique</td> 
+              <td>PERMISSION_TYPE, NAME</td>                                                            
+            </tr>
+          </table>
+        </subsection>
+        <subsection name="Indexes Altering">
+          <table>
+            <tr>
+              <th rowspan="2">Table</th>
+              <th rowspan="2">Index</th>
+              <th colspan="2">2.1.3</th>
+              <th colspan="2">2.2</th>
+            </tr>
+            <tr>
+              <th>Type</th>
+              <th>Column(s)</th>
+              <th>Type</th>
+              <th>Column(s)</th>
+            </tr>
+            <tr>
+              <td>SECURITY_PRINCIPAL</td> 
+              <td>UIX_SECURITY_PRINCIPAL</td> 
+              <td>unique</td> 
+              <td>FULL_PATH</td>
+              <td>unique</td> 
+              <td>PRINCIPAL_TYPE, PRINCIPAL_NAME</td>
+            </tr>
+          </table>
+        </subsection>
+      </section>    
 	  <section name="Data Migrating from Jetspeed 2.1.2 to 2.1.3">
-	    <p>The following tables describe database schema changes from version 2.1.3 to version 2.1.2.                                  
+	    <p>The following tables describe database schema changes from version 2.1.2 to version 2.1.3.                                  
 	    </p>
          <subsection name="Added Indexes">
             <table>



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