Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse code

This commit was manufactured by cvs2svn to create tag 'rel-2-4-1'.

git-svn-id: https://source.jasig.org/uPortal/tags/rel-2-4-1@9546 f5dbab47-78f9-eb45-b975-e544023573eb
  • Loading branch information...
commit 590a23afccacd1191d3ac2a46f8a43c099fdb287 1 parent 880bb63
authored November 05, 2004

Showing 124 changed files with 2,045 additions and 1,898 deletions. Show diff stats Hide diff stats

  1. 6  build.properties
  2. 37  build.xml
  3. 19  docs/website/implementors/services/compositeGroupService.html
  4. 35  docs/website/implementors/services/compositeGroupService_prt.html
  5. BIN  lib/{pluto-1.0.1.jar → pluto-1.0.1-rc1.jar}
  6. BIN  lib/portlets/proxyportlet.war
  7. BIN  lib/portlets/testsuite.war
  8. 2  properties/PersonDirs.xml
  9. 2  properties/db/data.xml
  10. 6  properties/db/tables.xml
  11. 18  properties/security.properties
  12. 119  scripts/createTables-hypersonic.script
  13. 15  scripts/dropTables.script
  14. 269  scripts/populateTables.script
  15. 2  source/org/jasig/portal/ChannelDefinition.java
  16. 6  source/org/jasig/portal/ChannelManager.java
  17. 8  source/org/jasig/portal/EntityTypes.java
  18. 91  source/org/jasig/portal/ExceptionHelper.java
  19. 6  source/org/jasig/portal/LoginServlet.java
  20. 12  source/org/jasig/portal/LogoutServlet.java
  21. 11  source/org/jasig/portal/PortalSessionManager.java
  22. 12  source/org/jasig/portal/RDBMChannelRegistryStore.java
  23. 18  source/org/jasig/portal/RDBMServices.java
  24. 417  source/org/jasig/portal/RDBMUserLayoutStore.java
  25. 3  source/org/jasig/portal/ReferenceSequenceGenerator.java
  26. 10  source/org/jasig/portal/RequestParamWrapper.java
  27. 2  source/org/jasig/portal/StylesheetSet.java
  28. 2  source/org/jasig/portal/UserInstance.java
  29. 9  source/org/jasig/portal/UserPreferencesManager.java
  30. 2  source/org/jasig/portal/Version.java
  31. 2  source/org/jasig/portal/channels/CApplet.java
  32. 33  source/org/jasig/portal/channels/CChannelManager.java
  33. 25  source/org/jasig/portal/channels/CError.java
  34. 4  source/org/jasig/portal/channels/CHeader.java
  35. 2  source/org/jasig/portal/channels/CImage.java
  36. 2  source/org/jasig/portal/channels/CInlineFrame.java
  37. 2  source/org/jasig/portal/channels/CSecureInfo.java
  38. 4  source/org/jasig/portal/channels/UserPreferences/CUserPreferences.java
  39. 4  source/org/jasig/portal/channels/UserPreferences/GPreferencesState.java
  40. 4  source/org/jasig/portal/channels/UserPreferences/ManageProfilesState.java
  41. 12  source/org/jasig/portal/channels/iccdemo/CHistory.java
  42. 8  source/org/jasig/portal/channels/iccdemo/CURLSelector.java
  43. 12  source/org/jasig/portal/channels/iccdemo/CViewer.java
  44. 23  source/org/jasig/portal/channels/permissionsmanager/CPermissionsManager.java
  45. 2  source/org/jasig/portal/channels/permissionsmanager/CPermissionsManagerServant.java
  46. 4  source/org/jasig/portal/channels/permissionsmanager/CPermissionsManagerServantFactory.java
  47. 2  source/org/jasig/portal/channels/permissionsmanager/CommandFactory.java
  48. 2  source/org/jasig/portal/channels/permissionsmanager/PermissiblePublishChannels.java
  49. 2  source/org/jasig/portal/channels/permissionsmanager/PermissibleSubscribeChannels.java
  50. 6  source/org/jasig/portal/channels/permissionsmanager/PermissionsXML.java
  51. 6  source/org/jasig/portal/channels/permissionsmanager/RDBMPermissibleRegistry.java
  52. 2  source/org/jasig/portal/channels/permissionsmanager/commands/AssignPermissions.java
  53. 35  source/org/jasig/portal/channels/portlet/CPortletAdapter.java
  54. 2  source/org/jasig/portal/channels/webproxy/CWebProxy.java
  55. 3  source/org/jasig/portal/concurrency/caching/LRUCache.java
  56. 8  source/org/jasig/portal/concurrency/caching/RDBMCachedEntityInvalidationStore.java
  57. 8  source/org/jasig/portal/concurrency/locking/RDBMEntityLockStore.java
  58. 30  source/org/jasig/portal/container/binding/PortletApplicationUnmarshaller.java
  59. 7  source/org/jasig/portal/container/om/common/LanguageImpl.java
  60. 68  source/org/jasig/portal/container/om/common/LanguageSetImpl.java
  61. 6  source/org/jasig/portal/container/om/entity/PortletEntityImpl.java
  62. 6  source/org/jasig/portal/container/om/portlet/PortletDefinitionImpl.java
  63. 2  source/org/jasig/portal/groups/EntityGroupNameFinder.java
  64. 11  source/org/jasig/portal/groups/RDBMEntityGroupStore.java
  65. 2  source/org/jasig/portal/groups/ReferenceChannelNameFinder.java
  66. 4  source/org/jasig/portal/groups/ReferencePersonNameFinder.java
  67. 9  source/org/jasig/portal/groups/ldap/LDAPGroupStore.java
  68. 5  source/org/jasig/portal/groups/local/searchers/RDBMChannelDefSearcher.java
  69. 5  source/org/jasig/portal/groups/local/searchers/RDBMPersonSearcher.java
  70. 2  source/org/jasig/portal/groups/pags/PersonAttributesGroupStore.java
  71. 2  source/org/jasig/portal/i18n/LocaleManager.java
  72. 3  source/org/jasig/portal/jndi/JNDIManager.java
  73. 14  source/org/jasig/portal/layout/AggregatedUserLayoutStore.java
  74. 8  source/org/jasig/portal/layout/channels/CContentSubscriber.java
  75. 2  source/org/jasig/portal/layout/channels/CFragmentManager.java
  76. 7  source/org/jasig/portal/ldap/LdapServices.java
  77. 334  source/org/jasig/portal/security/InitialSecurityContextFactory.java
  78. 2  source/org/jasig/portal/security/provider/CacheSecurityContext.java
  79. 6  source/org/jasig/portal/security/provider/ChainingSecurityContext.java
  80. 23  source/org/jasig/portal/security/provider/RDBMPermissionImpl.java
  81. 2  source/org/jasig/portal/security/provider/RemoteUserPersonManager.java
  82. 117  source/org/jasig/portal/security/provider/SimpleLdapSecurityContext.java
  83. 2  source/org/jasig/portal/security/provider/SimplePersonManager.java
  84. 2  source/org/jasig/portal/security/provider/SimpleSecurityContext.java
  85. 2  source/org/jasig/portal/security/provider/TrustSecurityContext.java
  86. 2  source/org/jasig/portal/serialize/HTMLSerializer.java
  87. 58  source/org/jasig/portal/services/Authentication.java
  88. 9  source/org/jasig/portal/services/AuthorizationService.java
  89. 15  source/org/jasig/portal/services/EntityPropertyRegistry.java
  90. 34  source/org/jasig/portal/services/ExternalServices.java
  91. 2  source/org/jasig/portal/services/GroupService.java
  92. 21  source/org/jasig/portal/services/LogService.java
  93. 230  source/org/jasig/portal/services/PersonDirectory.java
  94. 5  source/org/jasig/portal/services/SequenceGenerator.java
  95. 2  source/org/jasig/portal/services/StatsRecorder.java
  96. 6  source/org/jasig/portal/services/entityproperties/ChannelRegistryPropertyFinder.java
  97. 3  source/org/jasig/portal/services/entityproperties/ContainingGroupsFinder.java
  98. 2  source/org/jasig/portal/services/entityproperties/PersonDirPropertyFinder.java
  99. 12  source/org/jasig/portal/services/entityproperties/RDBMPropertyStore.java
  100. 2  source/org/jasig/portal/services/stats/StatsRecorderSettings.java
  101. 86  source/org/jasig/portal/tools/dbloader/Configuration.java
  102. 103  source/org/jasig/portal/tools/dbloader/DbLoader.java
  103. 69  source/org/jasig/portal/tools/dbloader/DbUtils.java
  104. 8  source/org/jasig/portal/utils/DocumentFactory.java
  105. 38  source/org/jasig/portal/utils/RDBMCounterStore.java
  106. 8  source/org/jasig/portal/utils/SqlTransaction.java
  107. 2  source/org/jasig/portal/utils/URLUtil.java
  108. 4  source/org/jasig/portal/wsrp/bind/WSRP_v1_ServiceDescription_Binding_SOAPImpl.java
  109. 217  tests/org/jasig/portal/ExceptionHelperTest.java
  110. 52  tests/org/jasig/portal/lang/ChainedThrowable_Test.java
  111. 66  tests/org/jasig/portal/lang/Resources_Test.java
  112. 52  tests/org/jasig/portal/lang/StackTrace_Test.java
  113. 52  tests/org/jasig/portal/lang/ThrowableHelper_Test.java
  114. 52  tests/org/jasig/portal/lang/TypeConverter_Test.java
  115. 10  webpages/media/org/jasig/portal/channels/portlet/wsrp-consumer.cpd
  116. 6  webpages/media/org/jasig/portal/layout/AL_TabColumn/integratedModes/cartoon/CVS/Entries
  117. 1  webpages/media/org/jasig/portal/layout/AL_TabColumn/integratedModes/cartoon/CVS/Repository
  118. 1  webpages/media/org/jasig/portal/layout/AL_TabColumn/integratedModes/cartoon/CVS/Root
  119. 12  webpages/stylesheets/org/jasig/portal/channels/CChannelManager/html.xsl
  120. 12  webpages/stylesheets/org/jasig/portal/channels/CChannelManager/html_en_US.xsl
  121. 12  webpages/stylesheets/org/jasig/portal/channels/CChannelManager/html_it_IT.xsl
  122. 612  webpages/stylesheets/org/jasig/portal/channels/CChannelManager/html_ja_JP.xsl
  123. 12  webpages/stylesheets/org/jasig/portal/channels/CChannelManager/html_lv_LV.xsl
  124. 12  webpages/stylesheets/org/jasig/portal/channels/CChannelManager/html_sv_SE.xsl
6  build.properties
@@ -15,10 +15,10 @@
15 15
 #==================== File and Directory Names ========================
16 16
 
17 17
 app.name=uPortal
18  
-app.version=2.4
  18
+app.version=2.4.1
19 19
 
20 20
 lib.path=lib
21  
-server.home=/JavaClasses/jakarta-tomcat-5.0.25
  21
+server.home=/JavaClasses/jakarta-tomcat-5.0.28
22 22
 
23 23
 deploy.home=${server.home}/webapps/uPortal
24 24
 
@@ -49,7 +49,7 @@ wsdl4j.jar=${lib.path}/wsdl4j.jar
49 49
 commons-discovery.jar=${lib.path}/commons-discovery.jar
50 50
 commons-logging.jar=${lib.path}/commons-logging.jar
51 51
 portlet-api.jar=${lib.path}/portlet-api-1.0.jar
52  
-pluto.jar=${lib.path}/pluto-1.0.1.jar
  52
+pluto.jar=${lib.path}/pluto-1.0.1-rc1.jar
53 53
 wsrp4j-shared.jar=${lib.path}/wsrp4j-shared-0.3.jar
54 54
 wsrp4j-consumer.jar=${lib.path}/wsrp4j-consumer-0.3.jar
55 55
 proxyportlet.jar=${lib.path}/proxyportlet.jar
37  build.xml
@@ -237,20 +237,20 @@
237 237
                        URL: http://jakarta.apache.org/commons/logging.html
238 238
                        
239 239
   portlet-api.jar      Portlet API based on JSR-168.
240  
-                       Version: (from jakarta-pluto CVS on September 22, 2004)
  240
+                       Version: (from jakarta-pluto CVS on November 2, 2004)
241 241
                        URL: http://www.jcp.org/en/jsr/detail?id=168
242 242
   
243 243
   pluto.jar            Reference Implementation of the Java Portlet Specfication.
244 244
                        This Portlet container provides a runtime environment for 
245 245
                        portlets implemented according to the Portlet API.
246 246
                        The project is still in the Apache Incubator.
247  
-                       Version: (from jakarta-pluto CVS on September 22, 2004)
  247
+                       Version: (from jakarta-pluto CVS on November 2, 2004)
248 248
                        URL: http://portals.apache.org/pluto/
249 249
 
250 250
   wsrp4j-shared.jar    WSRP4J shared classes mostly derived from OASIS WSRP WSDL.
251 251
                        Comes with WSRP4J.
252 252
                        Use the version that comes with WSRP4J.
253  
-                       Version: (from ws-wsrp4j CVS on July 9, 2004)
  253
+                       Version: (from ws-wsrp4j CVS on November 2, 2004)
254 254
                        URL: http://ws.apache.org/wsrp4j/
255 255
 
256 256
   wsrp4j-consumer.jar  WSRP4J consumer classes.
@@ -264,20 +264,6 @@
264 264
                        
265 265
                        The following modifications were made to the
266 266
                        WSRP4J proxy portlet source:
267  
-                       
268  
-                       - org.apache.wsrp4j.consumer.portlet.impl.ProxyPortlet:
269  
-                       
270  
-                          IS: protected PortletKey getPortletKey(Map preferences)
271  
-                         WAS: private PortletKey getPortletKey(Map preferences)
272  
-                           
273  
-                          IS: protected Producer getProducer(String producerID) throws WSRPException
274  
-                         WAS: private Producer getProducer(String producerID) throws WSRPException
275  
-                       
276  
-                         Added new method
277  
-                             protected ConsumerEnvironment getConsumerEnvironment() 
278  
-                             {
279  
-                                 return consumerEnv;
280  
-                             }
281 267
                              
282 268
                        - portlet.xml
283 269
                        
@@ -286,7 +272,7 @@
286 272
 
287 273
                           IS: <value>org.jasig.portal.wsrp.consumer.portlet.ConsumerEnvironmentImpl</value>
288 274
                          WAS: <value>org.apache.wsrp4j.consumer.portlet.impl.ConsumerEnvironmentImpl</value>
289  
-                                                       
  275
+        
290 276
                        - wsrp4j-logger.properties
291 277
                        
292 278
                           IS: log4j.appender.A1.File=wsrp4j-consumer.log
@@ -908,7 +894,7 @@
908 894
      
909 895
      The variable fragmentFile points to the XML file of the fragments definition
910 896
 
911  
-     ant fragment -DfragmentFile=/properties/al/fragments.xml
  897
+     ant pubfragments -DfragmentFile=/properties/al/fragments.xml
912 898
 
913 899
 -->
914 900
 
@@ -1280,24 +1266,23 @@
1280 1266
 
1281 1267
 -->
1282 1268
 
1283  
-  
  1269
+
1284 1270
   <target name="pubchan" description="Publishes channels" depends="compile">
1285 1271
     <echo message="Invoking Channel Publisher Tool"/>
1286  
-        
  1272
+
1287 1273
     <property name="channel" value=" "/>
1288 1274
     <java fork="true" dir="${basedir}" classname="org.jasig.portal.tools.chanpub.ChannelPublisher">
1289  
-      <classpath refid="compile.classpath"/>
1290 1275
       <classpath>
1291  
-        <pathelement path="${build.home}/WEB-INF/classes"/>
  1276
+          <pathelement path="${build.home}/WEB-INF/classes"/>
  1277
+          <path refid="compile.classpath"/>
1292 1278
       </classpath>
1293 1279
       <arg value="-n"/>
1294 1280
       <arg value="${channel}"/>
1295 1281
     </java>
1296 1282
   </target>
1297  
-  
1298 1283
 
1299 1284
 
1300  
-<!-- ===================== deployPortlet Target ========================= -->
  1285
+<!-- ===================== deployPortletApp Target ========================= -->
1301 1286
 
1302 1287
 <!--
1303 1288
 
@@ -1318,9 +1303,9 @@
1318 1303
         
1319 1304
     <property name="portletApp" value=" "/>
1320 1305
     <java fork="true" dir="${basedir}" classname="org.jasig.portal.container.deploy.Deployer">
1321  
-      <classpath refid="compile.classpath"/>
1322 1306
       <classpath>
1323 1307
         <pathelement path="${build.home}/WEB-INF/classes"/>
  1308
+        <path refid="compile.classpath"/>
1324 1309
       </classpath>
1325 1310
       <arg value="${deploy.home}/.."/>
1326 1311
       <arg value="${portletApp}"/>
19  docs/website/implementors/services/compositeGroupService.html
@@ -298,21 +298,24 @@
298 298
 is fully assembled.&nbsp; In the reference implementation, the service
299 299
 name is built up node by node as the composite is composed.&nbsp; <br>
300 300
       </p>
301  
-      <p><span style="font-style: italic;">Group Keys.</span>&nbsp; A
  301
+     <p><span style="font-style: italic;">Group Keys.</span>&nbsp; A
302 302
 group's composite service key is the concatenation of its
303 303
 fully-qualified service name and its key in the local service.&nbsp; The
304 304
 nodes of the service name, and the final node of the name and the local
305 305
 key, are separated by a <span style="font-style: italic;">node separator</span>.&nbsp;
306 306
 For example, a group with a local key of "English_Department" in a
307  
-service named "ldap" with a node separator of "%" would have a key of
308  
-"ldap%English_Department".&nbsp; <br>
  307
+service named "ldap" with a node separator of "!" would have a key of
  308
+"ldap!English_Department".&nbsp; <br>
309 309
       </p>
310 310
       <p><span style="font-style: italic;">Node Separators.</span>&nbsp;
311  
-The default node separator is the period, or ".", but it can be any <code>String</code>
312  
-not found within the nodes of a group key.&nbsp; For example, if local
313  
-group keys include "Latin.101.Section01" and "chefs@columbia.edu", valid
314  
-separators would include "$", "%", and "@@", but not "." or "@".&nbsp;
315  
-For instructions on changing the node separator see <a
  311
+The default node separator is a String containing a period, or ".", but 
  312
+it can be any String not found within the nodes of a group key.&nbsp; 
  313
+However, group keys can find their way into portal content and urls
  314
+and are subject to xsl transformations.  Therefore, the separator should not 
  315
+contain a character like '%' that has a special meaning and must be escaped
  316
+to preserve its literal value.  If local group keys include "Latin.101.Section01" 
  317
+and "chefs@columbia.edu", valid separators would include "$", and "_x", but not 
  318
+"." or "@".&nbsp; For instructions on changing the node separator see <a
316 319
  href="#Configuring_the_Composite">Configuring the Composite</a>.&nbsp; <br>
317 320
       </p>
318 321
       <p><span style="font-style: italic;">Groups and their Service
35  docs/website/implementors/services/compositeGroupService_prt.html
... ...
@@ -1,4 +1,4 @@
1  
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
  1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
2 2
 <html>
3 3
 <head>
4 4
   <meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
@@ -259,23 +259,26 @@
259 259
 reference implementation, the service name is built up node by node as
260 260
 the composite is composed.&nbsp; <br>
261 261
 </p>
262  
-<p><span style="font-style: italic;">Group Keys.</span>&nbsp; A group's
263  
-composite service key is the concatenation of its fully-qualified
264  
-service name and its key in the local service.&nbsp; The nodes of the
265  
-service name, and the final node of the name and the local key, are
266  
-separated by a <span style="font-style: italic;">node separator</span>.&nbsp;
  262
+     <p><span style="font-style: italic;">Group Keys.</span>&nbsp; A
  263
+group's composite service key is the concatenation of its
  264
+fully-qualified service name and its key in the local service.&nbsp; The
  265
+nodes of the service name, and the final node of the name and the local
  266
+key, are separated by a <span style="font-style: italic;">node separator</span>.&nbsp;
267 267
 For example, a group with a local key of "English_Department" in a
268  
-service named "ldap" with a node separator of "%" would have a key of
269  
-"ldap%English_Department".&nbsp; <br>
270  
-</p>
271  
-<p><span style="font-style: italic;">Node Separators.</span>&nbsp; The
272  
-default node separator is the period, or ".", but it can be any <code>String</code>
273  
-not found within the nodes of a group key.&nbsp; For example, if local
274  
-group keys include "Latin.101.Section01" and "chefs@columbia.edu", valid
275  
-separators would include "$", "%", and "@@", but not "." or "@".&nbsp;
276  
-For instructions on changing the node separator see <a
  268
+service named "ldap" with a node separator of "!" would have a key of
  269
+"ldap!English_Department".&nbsp; <br>
  270
+      </p>
  271
+      <p><span style="font-style: italic;">Node Separators.</span>&nbsp;
  272
+The default node separator is a String containing a period, or ".", but 
  273
+it can be any String not found within the nodes of a group key.&nbsp; 
  274
+However, group keys can find their way into portal content and urls
  275
+and are subject to xsl transformations.  Therefore, the separator should not 
  276
+contain a character like '%' that has a special meaning and must be escaped
  277
+to preserve its literal value.  If local group keys include "Latin.101.Section01" 
  278
+and "chefs@columbia.edu", valid separators would include "$", and "_x", but not 
  279
+"." or "@".&nbsp; For instructions on changing the node separator see <a
277 280
  href="#Configuring_the_Composite">Configuring the Composite</a>.&nbsp; <br>
278  
-</p>
  281
+      </p>
279 282
 <p><span style="font-style: italic;">Groups and their Service Names.</span>&nbsp;
280 283
 The significance of the service name in a group key is that    it
281 284
 directs us to the specific service that can answer the request for the
BIN  lib/pluto-1.0.1.jar → lib/pluto-1.0.1-rc1.jar
Binary file not shown
BIN  lib/portlets/proxyportlet.war
Binary file not shown
BIN  lib/portlets/testsuite.war
Binary file not shown
2  properties/PersonDirs.xml
@@ -211,6 +211,7 @@
211 211
         <url>ldap://yu.yale.edu:389/dc=itstp, dc=yale, dc=edu</url>
212 212
         <logonid>cn=bogus,cn=Users,dc=itstp,dc=yale,dc=edu</logonid>
213 213
         <logonpassword>foobar</logonpassword>
  214
+        <usercontext>cn=Users</usercontext>
214 215
 
215 216
         2) Specify the name of an LDAP server as set up in uPortal's ldap.xml.  For example,
216 217
         
@@ -223,7 +224,6 @@
223 224
         <ldap-ref-name>Main</ldap-ref-name>
224 225
 
225 226
         <uidquery>(cn={0})</uidquery>
226  
-        <usercontext>cn=Users</usercontext>
227 227
 
228 228
         <attributes>
229 229
 
2  properties/db/data.xml
@@ -10,7 +10,7 @@
10 10
         <column><name>FNAME</name><value>UP_FRAMEWORK</value></column>
11 11
         <column><name>MAJOR</name><value>2</value></column>
12 12
         <column><name>MINOR</name><value>4</value></column>
13  
-        <column><name>MICRO</name><value>0</value></column>
  13
+        <column><name>MICRO</name><value>1</value></column>
14 14
         <column><name>DESCRIPTION</name><value>The uPortal Framework.</value></column>
15 15
       </row>
16 16
     </rows>
6  properties/db/tables.xml
@@ -60,12 +60,12 @@
60 60
       <column>
61 61
         <name>PREF_ID</name>
62 62
         <type>INTEGER</type>
63  
-        <desc>Preference key forieg key for UP_PORTLET_PREF_VALUES</desc>
  63
+        <desc>Preference key foreign key for UP_PORTLET_PREF_VALUES</desc>
64 64
       </column>      
65 65
     </columns>
66 66
     <primary-key>CHAN_ID</primary-key>
67 67
     <primary-key>PREF_ID</primary-key>
68  
-    <not-null>PORTLET_PREFERENCES_NAME</not-null>
  68
+    <not-null>PORTLET_PREF_NAME</not-null>
69 69
   </table>
70 70
   
71 71
   <table sinceMajor="2" sinceMinor="4">
@@ -103,7 +103,7 @@
103 103
     <primary-key>LAYOUT_ID</primary-key>
104 104
     <primary-key>CHAN_DESC_ID</primary-key>
105 105
     <primary-key>PREF_ID</primary-key>
106  
-    <not-null>PORTLET_PREFERENCES_NAME</not-null>
  106
+    <not-null>PORTLET_PREF_NAME</not-null>
107 107
   </table>  
108 108
   
109 109
   <table sinceMajor="2" sinceMinor="4">
18  properties/security.properties
@@ -40,6 +40,15 @@
40 40
 
41 41
 # This is the factory that supplies the concrete authentication class
42 42
 root=org.jasig.portal.security.provider.SimpleSecurityContextFactory
  43
+
  44
+# Sample security context chain that caches the authenticated user's password
  45
+#root=org.jasig.portal.security.provider.UnionSecurityContextFactory
  46
+#root.db=org.jasig.portal.security.provider.SimpleSecurityContextFactory
  47
+#root.db.cache=org.jasig.portal.security.provider.CacheSecurityContextFactory
  48
+#root.ldap=org.jasig.portal.security.provider.SimpleLdapSecurityContextFactory
  49
+#root.ldap.cache=org.jasig.portal.security.provider.CacheSecurityContextFactory
  50
+
  51
+#root.ldap=org.jasig.portal.security.provider.CacheLdapSecurityContextFactory
43 52
 #root.cas=edu.columbia.ais.portal.security.provider.CasSecurityContextFactory
44 53
 
45 54
 #Configurable security context example
@@ -49,9 +58,12 @@ root=org.jasig.portal.security.provider.SimpleSecurityContextFactory
49 58
 #root.ldap_stu=org.jasig.portal.security.provider.SimpleLdapSecurityContextFactory
50 59
 #root.ldap_fac=org.jasig.portal.security.provider.SimpleLdapSecurityContextFactory
51 60
 
52  
-#securityContextProperty.propName=this would be a root context property
53  
-#securityContextProperty.ldap_stu.connection=Students
54  
-#securityContextProperty.ldap_fac.connection=Faculty
  61
+#!!!!! PLEASE NOTE, THE NAMING CONVENTION HAS CHANGED AS OF 2.4.1 !!!!!
  62
+# A context property for the 'root' context
  63
+#securityContextProperty.root.propName=this would be a context property for the 'root' context
  64
+# A context property for the 'root.ldap_stu' context
  65
+#securityContextProperty.root.ldap_stu.connection=Students
  66
+#securityContextProperty.root.ldap_fac.connection=Faculty
55 67
 
56 68
 
57 69
 # Answers what tokens are examined in the request for each context during authentication.
119  scripts/createTables-hypersonic.script
... ...
@@ -1,119 +0,0 @@
1  
-CREATE TABLE UP_USERS
2  
-(
3  
-  ID                INTEGER,
4  
-  USER_NAME         VARCHAR(15) NOT NULL,
5  
-  FIRST_NAME        VARCHAR(15),
6  
-  LAST_NAME         VARCHAR(15),
7  
-  USER_LAYOUT_XML   LONGVARCHAR,
8  
-  PRIMARY KEY (ID)
9  
-);
10  
-
11  
-CREATE TABLE UP_SHADOW 
12  
-( 
13  
-  USER_NAME         VARCHAR (64), 
14  
-  PASSWORD          VARCHAR (64) 
15  
-); 
16  
-
17  
-CREATE INDEX PORTAL_SHADOW_PK ON 
18  
-  UP_SHADOW(USER_NAME);
19  
-
20  
-CREATE TABLE UP_CHANNELS 
21  
-( 
22  
-        CHAN_ID         INTEGER         NOT NULL,
23  
-	TITLE           VARCHAR(256)    NULL,
24  
-	PUB_EMAIL       VARCHAR(100)    NULL,
25  
-	APPROVED        INTEGER         NULL,
26  
-	CHANNEL_XML     LONGVARCHAR     NOT NULL,
27  
-        PRIMARY KEY (CHAN_ID)
28  
-);
29  
-
30  
-CREATE TABLE UP_CHAN_TYPES (
31  
-	NAME               VARCHAR(70) NOT NULL,
32  
-        TYPE          VARCHAR(50) NOT NULL,
33  
-	DESCR              LONGVARCHAR NOT NULL,
34  
-        DEF_URI            LONGVARCHAR NOT NULL,
35  
-        PRIMARY KEY (NAME)
36  
-);
37  
-
38  
-CREATE TABLE UP_CLASS 
39  
-( 
40  
-  CLASS_ID            INTEGER       NOT NULL, 
41  
-  NAME                VARCHAR(100)   NOT NULL,
42  
-  PRIMARY KEY (CLASS_ID)
43  
-);
44  
-
45  
-CREATE TABLE UP_CHAN_CLASS 
46  
-( 
47  
-  CLASS_ID            INTEGER        NOT NULL, 
48  
-  CHAN_ID             INTEGER        NOT NULL 
49  
-);
50  
-
51  
-CREATE TABLE UP_USER_PREFS
52  
-(
53  
-  USER_NAME                 VARCHAR(15) NOT NULL,
54  
-  MEDIA                     VARCHAR(15) NOT NULL,
55  
-  STRUCTURE_STYLESHEET_NAME VARCHAR(30) NOT NULL,
56  
-  THEME_STYLESHEET_NAME     VARCHAR(30) NOT NULL,
57  
-  CSS_STYLESHEET_NAME       VARCHAR(30) NOT NULL
58  
-);
59  
-
60  
-CREATE TABLE UP_USER_SS_PREFS
61  
-(
62  
-  USER_NAME             VARCHAR(15) NOT NULL,
63  
-  STYLESHEET_NAME       VARCHAR(30) NOT NULL,
64  
-  USER_PREFERENCES_XML  LONGVARCHAR
65  
-);
66  
-
67  
-CREATE TABLE UP_STRUCT_SS
68  
-(
69  
-  STYLESHEET_NAME             VARCHAR(30) NOT NULL,
70  
-  STYLESHEET_URI              LONGVARCHAR NOT NULL,
71  
-  STYLESHEET_DESCRIPTION_URI  LONGVARCHAR NOT NULL,
72  
-  STYLESHEET_DESCRIPTION_TEXT LONGVARCHAR,
73  
-  PRIMARY KEY (STYLESHEET_NAME)
74  
-);
75  
-
76  
-CREATE TABLE UP_THEME_SS
77  
-(
78  
-  STYLESHEET_NAME             VARCHAR(30) NOT NULL,
79  
-  STYLESHEET_URI              LONGVARCHAR NOT NULL,
80  
-  STYLESHEET_DESCRIPTION_URI  LONGVARCHAR NOT NULL,
81  
-  STYLESHEET_DESCRIPTION_TEXT LONGVARCHAR,
82  
-  PRIMARY KEY (STYLESHEET_NAME)
83  
-);
84  
-
85  
-CREATE TABLE UP_CSS_SS
86  
-(
87  
-  STYLESHEET_NAME             VARCHAR(30) NOT NULL,
88  
-  STYLESHEET_URI              LONGVARCHAR NOT NULL,
89  
-  STYLESHEET_DESCRIPTION_URI  LONGVARCHAR NOT NULL,
90  
-  STYLESHEET_DESCRIPTION_TEXT LONGVARCHAR,
91  
-  PRIMARY KEY (STYLESHEET_NAME)
92  
-);
93  
-
94  
-CREATE TABLE UP_STRUCT_SS_MAP
95  
-(
96  
-  MEDIA                     VARCHAR(15) NOT NULL,
97  
-  STRUCTURE_STYLESHEET_NAME VARCHAR(30) NOT NULL
98  
-);
99  
-
100  
-CREATE TABLE UP_THEME_SS_MAP
101  
-(
102  
-  THEME_STYLESHEET_NAME     VARCHAR(30) NOT NULL,
103  
-  STRUCTURE_STYLESHEET_NAME VARCHAR(30) NOT NULL
104  
-);
105  
-
106  
-CREATE TABLE UP_CSS_SS_MAP
107  
-(
108  
-  CSS_STYLESHEET_NAME       VARCHAR(30) NOT NULL,
109  
-  THEME_STYLESHEET_NAME     VARCHAR(30) NOT NULL
110  
-);
111  
-
112  
-CREATE TABLE UPC_BOOKMARKS 
113  
-( 
114  
-  ID              INTEGER, 
115  
-  PORTAL_USER_ID  INTEGER, 
116  
-  BOOKMARK_XML    LONGVARCHAR,
117  
-  PRIMARY KEY (ID)
118  
-);
119  
-
15  scripts/dropTables.script
... ...
@@ -1,15 +0,0 @@
1  
-DROP TABLE UP_USERS;
2  
-DROP TABLE UP_SHADOW;
3  
-DROP TABLE UP_CHANNELS;
4  
-DROP TABLE UP_CHAN_TYPES;
5  
-DROP TABLE UP_CLASS;
6  
-DROP TABLE UP_CHAN_CLASS;
7  
-DROP TABLE UP_USER_PREFS;
8  
-DROP TABLE UP_USER_SS_PREFS;
9  
-DROP TABLE UP_STRUCT_SS;
10  
-DROP TABLE UP_THEME_SS;
11  
-DROP TABLE UP_CSS_SS;
12  
-DROP TABLE UP_STRUCT_SS_MAP;
13  
-DROP TABLE UP_THEME_SS_MAP;
14  
-DROP TABLE UP_CSS_SS_map;
15  
-DROP TABLE UPC_BOOKMARKS;
269  scripts/populateTables.script
... ...
@@ -1,269 +0,0 @@
1  
-INSERT INTO UP_USERS (ID, USER_NAME, FIRST_NAME, LAST_NAME) values (0, 'guest', 'Guest', 'Guest');
2  
-
3  
-INSERT INTO UP_USERS (ID, USER_NAME, FIRST_NAME, LAST_NAME) VALUES (1, 'demo', 'Demo', 'User');
4  
-INSERT INTO UP_SHADOW (USER_NAME, PASSWORD) VALUES ('demo', '{MD5}IAnYXaWGdqTkifNNwo0bfIIphj2NPvSG');
5  
-
6  
-UPDATE UP_USERS SET USER_LAYOUT_XML=
7  
-'<?xml version="1.0"?>
8  
-<!DOCTYPE layout SYSTEM "file:/userLayout.dtd">
9  
-<layout>
10  
-  <folder ID="t01" priority="1" name="Main">
11  
-    <folder ID="col01" priority="0" width="40%" name="Column 1">
12  
-      <channel ID="chan00" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="true" removable="true" detachable="false" class="org.jasig.portal.channels.CLogin" name="Login">
13  
-      </channel>
14  
-      <channel ID="chan01" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="MozillaZine">
15  
-        <parameter value="webpages/rss/netscape.rss" name="xml"/>
16  
-        <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
17  
-      </channel>      
18  
-      <channel ID="chan02" priority="1" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="StockCharts.com">
19  
-        <parameter value="webpages/rss/stockcharts.rss" name="xml"/>
20  
-        <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
21  
-      </channel> 
22  
-    </folder>
23  
-    <folder ID="col02" priority="0" width="60%" name="Column 2">
24  
-      <channel ID="chan03" priority="0" timeout="5000" minimized="false" editable="true"  hasHelp="true" removable="true" detachable="true" class="org.jasig.portal.channels.CBookmarks" name="Bookmarks">
25  
-      </channel>
26  
-      <channel ID="chan04" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="XML.com">
27  
-        <parameter value="webpages/rss/news.rss" name="xml"/>
28  
-        <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
29  
-      </channel>      
30  
-    </folder>
31  
-  </folder>
32  
-  <folder ID="t02" priority="0" name="uPortal Tools">
33  
-    <channel ID="chan90" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="false" detachable="false" class="org.jasig.portal.channels.CSubscriber" name="Subscribe">
34  
-      </channel>
35  
-    <channel ID="chan92" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="false" detachable="false" class="org.jasig.portal.channels.CPublisher" name="Publish">
36  
-      </channel>
37  
-    <channel ID="chan91" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="false" detachable="false" class="org.jasig.portal.channels.CUserPreferences" name="User Preferences">
38  
-      </channel>
39  
-  </folder>
40  
-  <folder ID="t03" priority="0" name="More">
41  
-    <folder ID="col03" priority="0" width="50%" name="Column 1">
42  
-      <channel ID="chan06" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="uPortal-Powered Sites">
43  
-        <parameter value="http://interactivebusiness.com/publish/jasigPortalDemos.rss" name="xml"/>
44  
-        <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
45  
-      </channel>
46  
-      <channel ID="chan07" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="IBS News">
47  
-        <parameter value="http://interactivebusiness.com/publish/ibs.rss" name="xml"/>
48  
-        <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
49  
-      </channel>
50  
-    </folder>
51  
-    <folder ID="col04" priority="0" width="50%" name="Column 2">
52  
-      <channel ID="chan08" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="uPortal Developers Reference">
53  
-        <parameter value="http://asigdev.princeton.edu:82/portal/rss/jasigdev.rss" name="xml"/>
54  
-        <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
55  
-      </channel>
56  
-      <channel ID="chan09" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="Salon.com">
57  
-        <parameter value="http://www.salon.com/feed/RDF/salon_use.rdf" name="xml"/>
58  
-        <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
59  
-      </channel>
60  
-    </folder>
61  
-  </folder>
62  
-</layout>' WHERE USER_NAME='guest';
63  
-
64  
-UPDATE UP_USERS SET USER_LAYOUT_XML=
65  
-'<?xml version="1.0"?>
66  
-<!DOCTYPE layout SYSTEM "file:/userLayout.dtd">
67  
-<layout>
68  
-  <folder ID="t01" priority="1" name="Main">
69  
-    <folder ID="col01" priority="0" width="40%" name="Column 1">
70  
-      <channel ID="chan00" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CNumberGuess" name="Number Guessing Game">
71  
-        <parameter value="1" name="minNum"/>  
72  
-        <parameter value="100" name="maxNum"/> 
73  
-      </channel>      
74  
-      <channel ID="chan01" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="MozillaZine">
75  
-        <parameter value="webpages/rss/netscape.rss" name="xml"/>
76  
-        <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
77  
-      </channel>      
78  
-      <channel ID="chan02" priority="1" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="StockCharts.com">
79  
-        <parameter value="webpages/rss/stockcharts.rss" name="xml"/>
80  
-        <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
81  
-      </channel> 
82  
-    </folder>
83  
-  </folder>
84  
-  <folder ID="t02" priority="0" name="uPortal Tools">
85  
-    <channel ID="chan90" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="false" detachable="false" class="org.jasig.portal.channels.CSubscriber" name="Subscribe">
86  
-      </channel>
87  
-    <channel ID="chan91" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="false" detachable="false" class="org.jasig.portal.channels.CUserPreferences" name="User Preferences">
88  
-      </channel>
89  
-  </folder>
90  
-</layout>' WHERE USER_NAME='demo';
91  
-
92  
-INSERT INTO UP_CHANNELS (CHAN_ID, TITLE, PUB_EMAIL, APPROVED, CHANNEL_XML) VALUES (1, 'Mozillazine', NULL, 0,
93  
-'<channel ID="chan01" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="MozillaZine">
94  
-     <parameter value="webpages/rss/netscape.rss" name="xml"/>
95  
-     <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
96  
-   </channel>')
97  
-
98  
-INSERT INTO UP_CHANNELS (CHAN_ID, TITLE, PUB_EMAIL, APPROVED, CHANNEL_XML) VALUES (2, 'Stockcharts', NULL, 0,
99  
-'<channel ID="chan02" priority="1" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="StockCharts.com">
100  
-     <parameter value="webpages/rss/stockcharts.rss" name="xml"/>
101  
-     <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
102  
-   </channel>')
103  
-
104  
-INSERT INTO UP_CHANNELS (CHAN_ID, TITLE, PUB_EMAIL, APPROVED, CHANNEL_XML) VALUES (3, 'Bookmarks', NULL, 0,
105  
-'<channel ID="chan03" priority="0" timeout="5000" minimized="false" editable="true"  hasHelp="true" removable="true" detachable="true" class="org.jasig.portal.channels.CBookmarks" name="Bookmarks">
106  
-   </channel>')
107  
-
108  
-INSERT INTO UP_CHANNELS (CHAN_ID, TITLE, PUB_EMAIL, APPROVED, CHANNEL_XML) VALUES (4, 'XML.com', NULL, 0,
109  
-'<channel ID="chan04" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="XML.com">
110  
-     <parameter value="webpages/rss/news.rss" name="xml"/>
111  
-     <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
112  
-   </channel>')
113  
-
114  
-INSERT INTO UP_CHANNELS (CHAN_ID, TITLE, PUB_EMAIL, APPROVED, CHANNEL_XML) VALUES (5, 'uPortal Demos', NULL, 0,
115  
-'<channel ID="chan05" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="uPortal-Powered Sites">
116  
-      <parameter value="http://interactivebusiness.com/publish/jasigPortalDemos.rss" name="xml"/>
117  
-      <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
118  
-    </channel>')
119  
-
120  
-INSERT INTO UP_CHANNELS (CHAN_ID, TITLE, PUB_EMAIL, APPROVED, CHANNEL_XML) VALUES (6, 'IBS News', NULL, 0,
121  
-'<channel ID="chan06" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="IBS News">
122  
-      <parameter value="http://interactivebusiness.com/publish/ibs.rss" name="xml"/>
123  
-      <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
124  
-    </channel>')
125  
-
126  
-INSERT INTO UP_CHANNELS (CHAN_ID, TITLE, PUB_EMAIL, APPROVED, CHANNEL_XML) VALUES (7, 'uPortal Developers Reference', NULL, 0,
127  
-'<channel ID="chan07" priority="0" timeout="5000" minimized="false" editable="false"  hasHelp="false" removable="true" detachable="true" class="org.jasig.portal.channels.CGenericXSLT" name="uPortal Developers Reference">
128  
-      <parameter value="http://asigdev.princeton.edu:82/portal/rss/jasigdev.rss" name="xml"/>
129  
-      <parameter value="webpages/stylesheets/org/jasig/portal/channels/CGenericXSLT/RSS.ssl" name="ssl"/>
130  
-    </channel>')
131  
-
132  
-INSERT INTO UP_CHAN_TYPES (NAME, TYPE, DESCR, DEF_URI)
133  
-VALUES ('RSS Channel', 'org.jasig.portal.channels.CGenericXSLT', 
134  
-'RSS or Rich Site Summary, the most common channel format, is a channel which has its content defined through an XML document. Anyone may publish an RSS channel as long as the specification is adhered to and the file is stored on a publicly accessible web server. You will need to provide a URL for the RSS file.',
135  
-'properties/channel_defs/RSS.xml');
136  
-
137  
-INSERT INTO UP_CHAN_TYPES (NAME, TYPE, DESCR, DEF_URI)
138  
-VALUES ('XSL Channel', 'org.jasig.portal.channels.CGenericXSLT', 
139  
-'XSL renders XML to a particular style, is a channel which has its content defined through an XML document. Anyone may publish an XSL channel as long as the specification is adhered to and the file is stored on a publicly accessible web server. You will need to provide a URL or Path for the XML and XSL file.',
140  
-'properties/channel_defs/XSL.xml');
141  
-
142  
-INSERT INTO UP_CLASS ( CLASS_ID, NAME ) VALUES (0, 'News');  
143  
-INSERT INTO UP_CLASS ( CLASS_ID, NAME ) VALUES (1, 'Development'); 
144  
-INSERT INTO UP_CLASS ( CLASS_ID, NAME ) VALUES (2, 'Applications'); 
145  
-
146  
-INSERT INTO UP_CHAN_CLASS ( CLASS_ID, CHAN_ID ) VALUES(0, 1);
147  
-INSERT INTO UP_CHAN_CLASS  ( CLASS_ID, CHAN_ID ) VALUES(0, 2);
148  
-INSERT INTO UP_CHAN_CLASS  ( CLASS_ID, CHAN_ID ) VALUES(0, 6);
149  
-INSERT INTO UP_CHAN_CLASS  ( CLASS_ID, CHAN_ID ) VALUES(1, 4);
150  
-INSERT INTO UP_CHAN_CLASS  ( CLASS_ID, CHAN_ID ) VALUES(1, 5);
151  
-INSERT INTO UP_CHAN_CLASS  ( CLASS_ID, CHAN_ID ) VALUES(1, 7);
152  
-INSERT INTO UP_CHAN_CLASS  ( CLASS_ID, CHAN_ID ) VALUES(2, 3);
153  
-
154  
-INSERT INTO UP_USER_PREFS (USER_NAME, MEDIA, STRUCTURE_STYLESHEET_NAME, THEME_STYLESHEET_NAME, CSS_STYLESHEET_NAME)
155  
-VALUES ('guest', 'netscape', 'Tab and Column layout', 'Nested tables', 'general CSS');
156  
-
157  
-INSERT INTO UP_USER_PREFS (USER_NAME, MEDIA, STRUCTURE_STYLESHEET_NAME, THEME_STYLESHEET_NAME, CSS_STYLESHEET_NAME)
158  
-VALUES ('guest', 'explorer', 'Tab and Column layout', 'Nested tables', 'general CSS');
159  
-
160  
-INSERT INTO UP_USER_PREFS (USER_NAME, MEDIA, STRUCTURE_STYLESHEET_NAME, THEME_STYLESHEET_NAME, CSS_STYLESHEET_NAME)
161  
-VALUES ('demo', 'netscape', 'Tab and Column layout', 'Nested tables', 'general CSS');
162  
-
163  
-INSERT INTO UP_USER_PREFS (USER_NAME, MEDIA, STRUCTURE_STYLESHEET_NAME, THEME_STYLESHEET_NAME, CSS_STYLESHEET_NAME)
164  
-VALUES ('demo', 'explorer', 'Tab and Column layout', 'Nested tables', 'general CSS');
165  
-
166  
-INSERT INTO UP_USER_SS_PREFS (USER_NAME, STYLESHEET_NAME, USER_PREFERENCES_XML) VALUES ('guest', 'Tab and Column layout', '
167  
-<structurestylesheetuserpreferences>
168  
-  <parameters>
169  
-  </parameters>
170  
-  <folderattributes>
171  
-    <attribute name="width">
172  
-      <folder folderid="col01" value="70%"/>
173  
-      <folder folderid="col02" value="30%"/>
174  
-      <folder folderid="col03" value="30%"/>
175  
-      <folder folderid="col04" value="70%"/>
176  
-    </attribute>
177  
-  </folderattributes>
178  
-  <channelattributes>
179  
-  </channelattributes>
180  
-</structurestylesheetuserpreferences>
181  
-');
182  
-
183  
-INSERT INTO UP_USER_SS_PREFS (USER_NAME, STYLESHEET_NAME, USER_PREFERENCES_XML) VALUES ('guest', 'Nested tables', '
184  
-<themestylesheetuserpreferences>
185  
-  <parameters>
186  
-    <parameter name="activeTab">2</parameter>
187  
-    <parameter name="borderWidth">2</parameter>
188  
-  </parameters>
189  
-  <folderattributes>
190  
-  </folderattributes>
191  
-  <channelattributes>
192  
-    <attribute name="minimizable">
193  
-      <channel channelid="chan01" value="false"/>
194  
-      <channel channelid="chan02" value="false"/>
195  
-    </attribute>
196  
-  </channelattributes>
197  
-</themestylesheetuserpreferences>
198  
-');
199  
-
200  
-INSERT INTO UP_USER_SS_PREFS (USER_NAME, STYLESHEET_NAME, USER_PREFERENCES_XML) VALUES ('demo', 'Tab and Column layout', '
201  
-<structurestylesheetuserpreferences>
202  
-  <parameters>
203  
-  </parameters>
204  
-  <folderattributes>
205  
-    <attribute name="width">
206  
-      <folder folderid="col01" value="70%"/>
207  
-      <folder folderid="col02" value="30%"/>
208  
-      <folder folderid="col03" value="30%"/>
209  
-      <folder folderid="col04" value="70%"/>
210  
-    </attribute>
211  
-  </folderattributes>
212  
-  <channelattributes>
213  
-  </channelattributes>
214  
-</structurestylesheetuserpreferences>
215  
-');
216  
-
217  
-INSERT INTO UP_USER_SS_PREFS (USER_NAME, STYLESHEET_NAME, USER_PREFERENCES_XML) VALUES ('demo', 'Nested tables', '
218  
-<themestylesheetuserpreferences>
219  
-  <parameters>
220  
-    <parameter name="activeTab">1</parameter>
221  
-    <parameter name="borderWidth">1</parameter>
222  
-  </parameters>
223  
-  <folderattributes>
224  
-  </folderattributes>
225  
-  <channelattributes>
226  
-    <attribute name="minimizable">
227  
-      <channel channelid="chan01" value="false"/>
228  
-      <channel channelid="chan02" value="false"/>
229  
-    </attribute>
230  
-  </channelattributes>
231  
-</themestylesheetuserpreferences>
232  
-');
233  
-
234  
-INSERT INTO UP_STRUCT_SS (STYLESHEET_NAME, STYLESHEET_URI, STYLESHEET_DESCRIPTION_URI, STYLESHEET_DESCRIPTION_TEXT) 
235  
-VALUES ('Tab and Column layout', 'webpages/stylesheets/org/jasig/portal/LayoutBean/uLayout2sLayout.xsl', 'webpages/stylesheets/org/jasig/portal/LayoutBean/uLayout2sLayout.sdf', 'Presents the layout in terms of tabs and columns.');
236  
-
237  
-INSERT INTO UP_THEME_SS (STYLESHEET_NAME, STYLESHEET_URI, STYLESHEET_DESCRIPTION_URI, STYLESHEET_DESCRIPTION_TEXT) 
238  
-VALUES ('Nested tables', 'webpages/stylesheets/org/jasig/portal/LayoutBean/sLayout2html_full.xsl', 'webpages/stylesheets/org/jasig/portal/LayoutBean/sLayout2html_full.sdf', 'Renders tabs and columns as nested tables');
239  
-
240  
-INSERT INTO UP_CSS_SS (STYLESHEET_NAME, STYLESHEET_URI, STYLESHEET_DESCRIPTION_URI, STYLESHEET_DESCRIPTION_TEXT) 
241  
-VALUES ('general CSS', 'webpages/media/org/jasig/portal/layout/tabColumn/general.css', 'webpages/media/org/jasig/portal/layout/tabColumn/general.sdf', 'Body, channel tabs and link coloring and fonts');
242  
-
243  
-INSERT INTO UP_CSS_SS_MAP (CSS_STYLESHEET_NAME, THEME_STYLESHEET_NAME) VALUES ('general CSS', 'Nested tables');
244  
-
245  
-INSERT INTO UP_THEME_SS_MAP (THEME_STYLESHEET_NAME, STRUCTURE_STYLESHEET_NAME) VALUES ('Nested tables', 'Tab and Column layout');
246  
-
247  
-INSERT INTO UP_STRUCT_SS_MAP (MEDIA, STRUCTURE_STYLESHEET_NAME) VALUES ('netscape', 'Tab and Column layout');
248  
-
249  
-INSERT INTO UP_STRUCT_SS_MAP (MEDIA, STRUCTURE_STYLESHEET_NAME) VALUES ('explorer', 'Tab and Column layout');
250  
-
251  
-INSERT INTO UPC_BOOKMARKS (ID, PORTAL_USER_ID, BOOKMARK_XML) VALUES (0, 0, 
252  
-'<?xml version="1.0"?>
253  
-<bookmarks>
254  
-  <bookmark url="http://www.jasig.org" name="JA-SIG" comments="Java in Administration Special Interest Group"/>
255  
-  <bookmark url="http://www.interactivebusiness.com" name="IBS" comments="provides uPortal Services"/>
256  
-  <bookmark url="http://www.paypal.com" name="PayPal" comments="Send and receive money online!"/>
257  
-  <bookmark url="http://google.com" name="Google" comments="great search engine"/>
258  
-</bookmarks>
259  
-');
260  
-
261  
-INSERT INTO UPC_BOOKMARKS (ID, PORTAL_USER_ID, BOOKMARK_XML) VALUES (1, 1, 
262  
-'<?xml version="1.0"?>
263  
-<bookmarks>
264  
-  <bookmark url="http://www.jasig.org" name="JA-SIG" comments="Java in Administration Special Interest Group"/>
265  
-  <bookmark url="http://www.interactivebusiness.com" name="IBS" comments="provides uPortal Services"/>
266  
-  <bookmark url="http://www.paypal.com" name="PayPal" comments="Send and receive money online!"/>
267  
-  <bookmark url="http://google.com" name="Google" comments="great search engine"/>
268  
-</bookmarks>
269  
-');
2  source/org/jasig/portal/ChannelDefinition.java
@@ -199,7 +199,7 @@ public EntityIdentifier getEntityIdentifier() {
199 199
    * @param parameter the channel parameter to add
200 200
    */      
201 201
   public void addParameter(ChannelParameter parameter) {
202  
-    addParameter(parameter.getName(), parameter.getValue(), String.valueOf(parameter.getOverride()));
  202
+    parameters.put(parameter.getName(), parameter);
203 203
   }
204 204
   
205 205
   /**
6  source/org/jasig/portal/ChannelManager.java
@@ -268,7 +268,7 @@ public void finishedSession() {
268 268
                 try {
269 269
                     ch.receiveEvent(ev);
270 270
                 } catch (Exception e) {
271  
-                    log.error(e);
  271
+                    log.error("Error sending session done event to channel " + ch, e);
272 272
                 }
273 273
             }
274 274
         }
@@ -718,7 +718,7 @@ public void passPortalEvent(String channelSubscribeId, PortalEvent le) {
718 718
             try {
719 719
                 ch.receiveEvent(le);
720 720
             } catch (Exception e) {
721  
-                log.error(e);
  721
+                log.error("Error sending layout event " + le + " to channel " + ch, e);
722 722
             }
723 723
         } else {
724 724
             log.error("ChannelManager::passPortalEvent() : trying to pass an event to a channel that is not in cache. (cahnel=\"" + channelSubscribeId + "\")");
@@ -862,7 +862,7 @@ private void processRequestChannelParameters(HttpServletRequest req)
862 862
                     chObj.setRuntimeData(rd);
863 863
                 }
864 864
                 catch (Exception e) {
865  
-                    chObj=replaceWithErrorChannel(channelTarget,CError.SET_RUNTIME_DATA_EXCEPTION,e,null,false);
  865
+                    chObj=replaceWithErrorChannel(channelTarget,CError.SET_RUNTIME_DATA_EXCEPTION,e,null,true);
866 866
                 }
867 867
             }
868 868
         }
8  source/org/jasig/portal/EntityTypes.java
@@ -232,7 +232,7 @@ private void deleteEntityType(EntityType et) throws SQLException
232 232
     }
233 233
     catch (java.sql.SQLException sqle)
234 234
     {
235  
-        log.error( sqle);
  235
+        log.error("Exception deleting entity type [" + et + "]", sqle);
236 236
         throw sqle;
237 237
     }
238 238
 }
@@ -425,7 +425,7 @@ private void initialize()
425 425
             { stmnt.close(); }
426 426
     }
427 427
     catch (Exception ex)
428  
-        { log.error( ex); }
  428
+        { log.error("Exception initializing cache of entity types.", ex); }
429 429
     finally
430 430
         { RDBMServices.releaseConnection(conn); }
431 431
 }
@@ -483,7 +483,7 @@ private void insertEntityType(EntityType et) throws SQLException
483 483
     }
484 484
     catch (java.sql.SQLException sqle)
485 485
     {
486  
-        log.error( sqle);
  486
+        log.error("Error inserting entity type " + et, sqle);
487 487
         throw sqle;
488 488
     }
489 489
 }
@@ -605,7 +605,7 @@ private void updateEntityType(EntityType et) throws SQLException
605 605
     }
606 606
     catch (java.sql.SQLException sqle)
607 607
     {
608  
-        log.error( sqle);
  608
+        log.error("Exception updating entity type [" + et + "]", sqle);
609 609
         throw sqle;
610 610
     }
611 611
 }
91  source/org/jasig/portal/ExceptionHelper.java
@@ -36,6 +36,9 @@
36 36
 package org.jasig.portal;
37 37
 
38 38
 import java.io.PrintWriter;
  39
+import java.util.ArrayList;
  40
+import java.util.Iterator;
  41
+import java.util.List;
39 42
 import javax.servlet.http.HttpServletResponse;
40 43
 
41 44
 import org.apache.commons.logging.Log;
@@ -66,13 +69,91 @@ public static String shortStackTrace(Throwable ex) {
66 69
         ex.printStackTrace(new java.io.PrintWriter(sw));
67 70
         sw.flush();
68 71
         String stktr = sw.toString();
69  
-        for (int i=0;i<boundaries.length;i++) {
70  
-        	int cut = stktr.indexOf(boundaries[i]);
71  
-        	if (cut > 0)
72  
-        		return stktr.substring(0, cut).trim();
  72
+        return trimStackTrace(stktr);
  73
+    }
  74
+    
  75
+    /**
  76
+     * Trims a String representation of a Stack Trace to remove
  77
+     * the portion of the trace that is in the servlet container layer.
  78
+     * @param stackTrace - String result of printStackTrace
  79
+     * @return the stack trace with portions of the trace that dive into the container
  80
+     * layer removed.
  81
+     */
  82
+    static String trimStackTrace(String stackTrace) {
  83
+        
  84
+        StringBuffer trimmedTrace = new StringBuffer();
  85
+        
  86
+        // a List of Strings to be trimmed and appended to the buffer
  87
+        // these represent elements in the causal chain
  88
+        List fragments = new ArrayList();
  89
+        
  90
+        int causeCut = (stackTrace.indexOf("Caused by"));
  91
+        
  92
+        if (causeCut > 0) {
  93
+            // there are one or more Caused by fragments to consider
  94
+            // we traverse stackTrace, parsing out fragments for later processing
  95
+            // and updating stackTrace to contain the remaining unparsed portion
  96
+            // as we go
  97
+            
  98
+            while (stackTrace.length() > 0) {
  99
+                
  100
+                if (stackTrace.startsWith("Caused by")){
  101
+                    // don't count the "Caused by" leading the stackTrace
  102
+                    causeCut = stackTrace.substring(9).indexOf("Caused by");
  103
+                    if (causeCut > 0)
  104
+                        causeCut += 9;
  105
+                } else {
  106
+                    causeCut = stackTrace.indexOf("Caused by");
  107
+                }
  108
+                
  109
+                if (causeCut > -1) {
  110
+                    // stackTrace currently includes multiple fragments
  111
+                    // parse out the first and leave the rest for next iteration
  112
+                    
  113
+                    fragments.add(stackTrace.substring(0, causeCut));
  114
+                    stackTrace = stackTrace.substring(causeCut);
  115
+                } else {
  116
+                    // stackTrace currently is a bare fragment
  117
+                    // grab it
  118
+                    fragments.add(stackTrace);
  119
+                    stackTrace = "";
  120
+                }
  121
+            }
  122
+        } else {
  123
+            // there's ony a single Throwable in the chain
  124
+            fragments.add(stackTrace);
  125
+        }
  126
+        
  127
+        // now that we have fragments to consider
  128
+        
  129
+        for (Iterator iter = fragments.iterator(); iter.hasNext();){
  130
+            String consideredFragment = (String) iter.next();
  131
+            
  132
+            // flag to indicate that a trimmed form of this fragment has been appended
  133
+            // to the trimmed stack trace buffer
  134
+            boolean appended = false;
  135
+            for (int i=0; i < boundaries.length; i++) {
  136
+                int cut = consideredFragment.indexOf(boundaries[i]);
  137
+                if (cut > 0) {
  138
+                    // stack trace includes a trace through our container
  139
+                    // in which we are not interested: trim it.           
  140
+                    // grab the desired portion up to the boundary
  141
+                    trimmedTrace.append(consideredFragment.substring(0, cut).trim());
  142
+                    trimmedTrace.append("\n");
  143
+                    appended = true;
  144
+                    break;
  145
+                }
  146
+            }
  147
+            
  148
+            if (! appended) {
  149
+                // a trimmed version of this fragment was not appended
  150
+                // because it doesn't need to be trimmed -- append the whole thing.
  151
+                trimmedTrace.append(consideredFragment.trim());
  152
+                trimmedTrace.append("\n");
  153
+            }
73 154
         }
74 155
         
75  
-        return stktr;
  156
+        return trimmedTrace.toString();
76 157
     }
77 158
 
78 159
     /**
6  source/org/jasig/portal/LoginServlet.java
@@ -97,9 +97,9 @@
97 97
             }
98 98
          }
99 99
       } catch(PortalException pe) {
100  
-          log.error("LoginServlet::static "+pe);
  100
+          log.error("LoginServlet::static ", pe);
101 101
       } catch(IOException ioe) {
102  
-          log.error("LoginServlet::static "+ioe);
  102
+          log.error("LoginServlet::static ", ioe);
103 103
       }
104 104
       redirectString=upFile;
105 105
       credentialTokens=cHash;
@@ -156,7 +156,7 @@ public void service (HttpServletRequest request, HttpServletResponse response) t
156 156
       m_authenticationService.authenticate(principals, credentials, person);
157 157
     } catch (Exception e) {
158 158
       // Log the exception
159  
-      log.error( e);
  159
+      log.error("Exception authenticating the request", e);
160 160
       // Reset everything
161 161
       request.getSession(false).invalidate();
162 162
       // Add the authentication failure
12  source/org/jasig/portal/LogoutServlet.java
@@ -103,11 +103,9 @@ public void init () throws ServletException {
103 103
                }
104 104
             }
105 105
          } catch (PortalException pe) {
106  
-            log.error( "LogoutServlet::static " + pe);
107  
-            log.error( pe);
  106
+            log.error( "LogoutServlet::static ", pe);
108 107
          } catch (IOException ioe) {
109  
-            log.error( "LogoutServlet::static " + ioe);
110  
-            log.error( ioe);
  108
+            log.error( "LogoutServlet::static", ioe);
111 109
          }
112 110
          REDIRECT_MAP = rdHash;
113 111
          DEFAULT_REDIRECT = upFile;
@@ -136,7 +134,8 @@ public void doGet (HttpServletRequest request, HttpServletResponse response)
136 134
                 StatsRecorder.recordLogout(person);
137 135
             }
138 136
         } catch (Exception e) {
139  
-            log.error( e);
  137
+            log.error("Exception recording logout " +
  138
+                    "associated with request " + request, e);
140 139
         }
141 140
         
142 141
         // Clear out the existing session for the user
@@ -211,8 +210,7 @@ private String getRedirectionUrl (HttpServletRequest request) {
211 210
          }
212 211
       } catch (Exception e) {
213 212
          // Log the exception
214  
-         log.error( "LogoutServlet::getRedirectionUrl() Error: " + e);
215  
-         log.error( e);
  213
+         log.error( "LogoutServlet::getRedirectionUrl() Error:", e);
216 214
       }
217 215
       if (redirect == null) {
218 216
          redirect = defaultRedirect;
11  source/org/jasig/portal/PortalSessionManager.java
@@ -42,6 +42,7 @@
42 42
 import java.net.URLConnection;
43 43
 import java.util.Collections;
44 44
 import java.util.HashSet;
  45
+import java.util.Hashtable;
45 46
 import java.util.Random;
46 47
 import java.util.Set;
47 48
 
@@ -248,7 +249,7 @@ public void doGet(HttpServletRequest req, HttpServletResponse res) {
248 249
 
249 250
                 // fire away
250 251
                 if(ALLOW_REPEATED_REQUESTS) {
251  
-                    userInstance.writeContent(new RequestParamWrapper(req,true),res);
  252
+                    userInstance.writeContent(new RequestParamWrapper(req,true,false),res);
252 253
                 } else {
253 254
                     // generate and register a new tag
254 255
                     String newTag=Long.toHexString(randomGenerator.nextLong());
@@ -258,8 +259,12 @@ public void doGet(HttpServletRequest req, HttpServletResponse res) {
258 259
                         log.error("PortalSessionManager::doGet() : a duplicate tag has been generated ! Time's up !");
259 260
                     }
260 261
                     
261  
-                    RequestParamWrapper wrappedRequest = new RequestParamWrapper(req,request_verified);
262  
-					wrappedRequest.getParameterMap().putAll(PortletStateManager.getURLDecodedParameters(wrappedRequest));
  262
+                    // need to decode before calling RequestParamWrapper due to potential portlet upload
  263
+                    Hashtable params = PortletStateManager.getURLDecodedParameters(req);
  264
+                    // do we have the uP_portlet_action parameter?
  265
+                    boolean isPortletAction = params.containsKey(PortletStateManager.ACTION);
  266
+                    RequestParamWrapper wrappedRequest = new RequestParamWrapper(req, request_verified, isPortletAction);
  267
+ 			        wrappedRequest.getParameterMap().putAll(params);
263 268
 
264 269
                     userInstance.writeContent(wrappedRequest, new ResponseSubstitutionWrapper(res,INTERNAL_TAG_VALUE,newTag));
265 270
                 }
12  source/org/jasig/portal/RDBMChannelRegistryStore.java
@@ -361,7 +361,8 @@ public ChannelDefinition getChannelDefinition(int channelPublishId) throws SQLEx
361 361
     try {
362 362
       channelDef = (ChannelDefinition)EntityCachingService.instance().get(ChannelDefinition.class, String.valueOf(channelPublishId));
363 363
     } catch (Exception e) {
364  
-      log.error( e);
  364
+      log.error("Error checking cache for definition of channel with publish id " 
  365
+              + channelPublishId, e);
365 366
     }
366 367
     
367 368
     // If not found in cache, get it from the store and cache it, otherwise return it
@@ -508,7 +509,7 @@ public ChannelDefinition getChannelDefinition(int channelPublishId) throws SQLEx
508 509
         try {
509 510
           EntityCachingService.instance().add(channelDef);
510 511
         } catch (Exception e) {
511  
-          log.error( e);
  512
+          log.error("Error caching channel definition " + channelDef, e);
512 513
         }
513 514
 
514 515
       } finally {
@@ -707,11 +708,11 @@ public void saveChannelDefinition (ChannelDefinition channelDef) throws Exceptio
707 708
         try {
708 709
           EntityCachingService.instance().update(channelDef);
709 710
         } catch (Exception e) {
710  
-          log.error( e);
  711
+          log.error("Error updating cache for channel definition " + channelDef, e);
711 712
         }
712 713
 
713 714
       } catch (SQLException sqle) {
714  
-        log.error( sqle);
  715
+        log.error("Exception saving channel definition " + channelDef, sqle);
715 716
         RDBMServices.rollback(con);
716 717
         throw sqle;
717 718
       } finally {
@@ -770,7 +771,8 @@ public void deleteChannelDefinition(ChannelDefinition channelDef) throws SQLExce
770 771
         try {
771 772
           EntityCachingService.instance().remove(channelDef);
772 773
         } catch (Exception e) {
773  
-          log.error( e);
  774
+          log.error("Error removing channel definition " 
  775
+                  + channelDef + " from cache.", e);
774 776
         }
775 777
 
776 778
       } finally {