Eric, For the ChannelRegistryStore, I am assuming you are referring to the ChannelRegistryManager? I see in that class it sets up 3 caches:
channelRegistryCache, channelTypesCache, and cpdCache There is no ChannelRegistryStore in the code base that I can find. With the solutions listed below as I understand it both would have to be implemented correct? Thomas On Tue, 2008-04-08 at 17:09 -0500, Eric Dalquist wrote: > So I didn't think to look, the ChannelDefinition that is being used in > that block of code I emailed earlier is apparently a ChannelDefinition > that is an internal class of the CChannelManager class. > > A quick and dirty idea would be to add a .clearCaches() static method > on ChannelRegistryStore which calls the .clear() method on each of the > three caches that ChannelRegisryStore uses internally. This would not > play well in a multi-server environment. > > A better fix would be to replace the SmartCaches being used with Maps > from the CacheFactory service. I might actually be able to take a look > at doing this some time in the next week or two or if you (or someone > else) is interested in giving it a shot I'm thinking the changes would > involve: > 1. Replace the static declaration of the three SmartCache instances > with an static initialization block > 2. The static initialization block would get the portal's > ApplicationContext from the > PortalApplicationContextLocator.getApplicationContext() method > 3. Using the ApplicationContext get the "cacheFactory" bean which is > of type CacheFactory. > 4. Get three named caches from the CacheFactory for each of the three > caches in ChannelRegistryManager. > 5. Declare cache configurations in > uportal-impl/src/main/resources/properties/ehcache.xml referring to > the org.jasig.portal.ChannelRegistryManager properties in > portal.properties to determine the appropriate settings. > > Once this is done the ChannelRegistryManager would be using a standard > caching framework and implementing the clearCaches() method mentioned > in option one would be safe in a multi-server environment as long as > EhCache is configured to be distributed. > > If someone else is going to tackle this I would be more than happy to > lend a hand where I can. > > Eric > > Thomas S. Pangborn wrote: > > > In trying this I have started to create a ChannelDefinition. Here > > are some questions on that: > > > > 1. How do you obtain the next valid ID for a channel from uPortal? > > Is there an object that contains that information? > > 2. the ChannelDefinition Class has no toXML() method as described > > below. Is there another way to generate an Element from > > ChannelDefinition? > > > > Thanks again, > > > > Thomas > > > > On Tue, 2008-04-08 at 12:29 -0500, Eric Dalquist wrote: > > > > > There is a ##uportal channel on the FreeNode IRC network. > > > > > > The RDBMChannelRegistryStore uses plain JDBC and custom caching > > > code. I'm am nearly positive that it isn't a caching issue in > > > RDBMChannelRegistryStore. The problem is very likely that the > > > ChannelRegistryManager needs to be explicitly updated with the new > > > channel. That class does not use a cache. As far as I can tell it > > > just has a reference to a Document in which it holds a structure > > > of all available channels for that uPortal instance. I'm pretty > > > sure the only way that this Document will get updated with your > > > new channel is by calling the following APIs from the code that is > > > creating the new ChannelDefinition. > > > > > > > > > Element channelE = channelDef.toXML(); > > > ChannelRegistryManager.publishChannel(channelE, > > > catIDs, groupMembers, person); > > > > > > > > > > > > As far as I can tell uPortal 2.6 and earlier all behave in the > > > same way here, unless ChannelRegistryManager.publishChannel is > > > called its internal Document is not updated. > > > > > > -Eric > > > > > > > > > Thomas S. Pangborn wrote: > > > > > > > Eric, > > > > > > > > Does the system use hibernate for this caching? We have seen > > > > this problem where the Java hibernated objects are not updated, > > > > but the underlying database is and the system has no knowledge > > > > of the database update until the server is restarted. Is there > > > > an IRC channel that I can ping people that are doing development > > > > for uPortal to find out more? I see where the uPortal IRC is > > > > archived on the JA-SIG wiki page. > > > > > > > > Also, was this feature working in 2.6? I tried creating an XML > > > > file pushed that into properties/chanpub and expected the system > > > > to pull this in. I did not see the new channel populate. How did > > > > this work in 2.6 or did it? If this was working in 2.6 we might > > > > use that for this go around. > > > > > > > > So from what I can tell now, this feature as it's stated in the > > > > documentation does not work. > > > > > > > > Any suggestions here would be great. I'll also take into > > > > consideration your comments below. > > > > > > > > Thanks again, > > > > > > > > Thomas > > > > > > > > On Tue, 2008-04-08 at 09:44 -0500, Eric Dalquist wrote: > > > > > > > > > Sounds like an interesting portlet if you'd be willing to > > > > > share the code eventually. > > > > > > > > > > So publishing the channel as you describe would update the > > > > > database and the cache that the RDBMChannelRegistryStore uses. > > > > > CChannelManager and the content subsciber channel both use the > > > > > ChannelRegistryManager to get the list of available channels > > > > > and this appears to be a static Document that tracks all > > > > > available channels so it will need to be updated using that > > > > > API. > > > > > > > > > > I will say that I'm not a big fan of the > > > > > ChannelRegistryManager, it seems like an extra layer of > > > > > caching (RDBMChannelRegistryStore uses a cache for > > > > > ChannelDefinitions already) and a difficult API to work with > > > > > as manipulating DOMs is never fun. I, and I know a few others, > > > > > are very interested in re-writing CChannelManager as a portlet > > > > > and also re-writing the RDBMChannelRegistryStore to use JPA. I > > > > > would imagine the ChannelRegistryManager would be deprecated > > > > > with that work. Unfortunately that wouldn't be happening until > > > > > 3.1 at the earliest so for now you end up having to update the > > > > > ChannelRegistryManager with any updates to make sure they show > > > > > up to users. > > > > > > > > > > -Eric > > > > > > > > > > Thomas S. Pangborn wrote: > > > > > > > > > > > Eric, > > > > > > > > > > > > I see where this method call should do the update. Is there > > > > > > a caching issue or something that needs to be flushed or > > > > > > call/activated once a new channel has been added? I know > > > > > > that the new information is there. I can see the entry in > > > > > > the database; however, the uPortal UI does not show this > > > > > > update. Any suggestions? Is there something in the code base > > > > > > that needs to be fixed or is there some type of property or > > > > > > preference that can be set in such a way to allow the new > > > > > > channel to show itself? > > > > > > > > > > > > -- > > > > > > > > > > > > Here is a little background on what I am trying to > > > > > > accomplish. We need a simplified way to publish content > > > > > > based on existing portlets. We simply need to create a > > > > > > portlet that would let the user identify the base portlet, > > > > > > setup portlet arguments, then create the channel and have it > > > > > > available to the user immediately for use. Our customer base > > > > > > will not have the expertise to enter information for a given > > > > > > channel via the Admin interface for channel addition. > > > > > > > > > > > > With uPortal 2.6 this was quite simply done by creating an > > > > > > XML file and placing this in the properties/chanpub > > > > > > directory. Not having used 2.6 I would assume that the > > > > > > system then automatically created the new 'Channel' on the > > > > > > fly or was there another step involved here as well? > > > > > > > > > > > > Thomas > > > > > > > > > > > > On Tue, 2008-04-08 at 08:52 -0500, Eric Dalquist wrote: > > > > > > > > > > > > > Thomas, > > > > > > > > > > > > > > The information is likely cached in the ChannelRegistryStore. > > > > > > > Looking at > > > > > > > CChannelManager there is a bit of code that does the following > > > > > > > after > > > > > > > publishing a channel: > > > > > > > > > > > > > > Element channelE = channelDef.toXML(); > > > > > > > > > > > > > > ChannelRegistryManager.publishChannel(channelE, > > > > > > > catIDs, groupMembers, person); > > > > > > > > > > > > > > catIDs is a String[] of category IDs the channel is a member of > > > > > > > groupMembers is a IGroupMember[] of groups that can render the > > > > > > > channel > > > > > > > persopn is the IPerson that published the channel > > > > > > > > > > > > > > I hope that helps and I would also be very interested to see the > > > > > > > end > > > > > > > result portlet that you're working on, it could be a great > > > > > > > example for > > > > > > > future framework portlet development. > > > > > > > > > > > > > > -Eric > > > > > > > > > > > > > > Thomas S. Pangborn wrote: > > > > > > > > This does seem to work; however, once the new channel has been > > > > > > > > added I must shutdown tomcat and restart in order to see this > > > > > > > > as part of the channel list. > > > > > > > > > > > > > > > > Is there a way to import a channel programmatically and then > > > > > > > > have the system update so that the channel is available without > > > > > > > > having to restart? > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > > > > > > > > > > > Join your friends and colleagues at JA-SIG 2008 - "Higher Education > > > > > > Solutions: The Community Source Way!" > > > > > > April 27th - 30th, 2008 in St. Paul, Minnesota USA > > > > > > > > > > > > > > > > > > Featuring CAS, DSpace, Fedora, Fluid, Internet2, Kuali, Sakai, > > > > > > uPortal, and more! > > > > > > Information/Registration at: > > > > > > http://www.ja-sig.org/conferences/08spring/index.html > > > > > > > > > > > > > > > > > > Subscribe to the conference blog, The Community Source Way > > > > > > http://jasig2008.blogspot.com, for news and updates about the event. > > > > > > > > > > > > > > > > > > Join the Conference networking site at > > > > > > http://ja-sigspring08.crowdvine.com/ > > > > > > > > > > > > > > > > > > You are currently subscribed to [email protected] as: > > > > > > [EMAIL PROTECTED] > > > > > > To unsubscribe, change settings or access archives, see > > > > > > http://www.ja-sig.org/wiki/display/JSG/uportal-dev > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > > > Join your friends and colleagues at JA-SIG 2008 - "Higher Education > > > > Solutions: The Community Source Way!" > > > > April 27th - 30th, 2008 in St. Paul, Minnesota USA > > > > > > > > > > > > Featuring CAS, DSpace, Fedora, Fluid, Internet2, Kuali, Sakai, uPortal, > > > > and more! > > > > Information/Registration at: > > > > http://www.ja-sig.org/conferences/08spring/index.html > > > > > > > > > > > > Subscribe to the conference blog, The Community Source Way > > > > http://jasig2008.blogspot.com, for news and updates about the event. > > > > > > > > > > > > Join the Conference networking site at > > > > http://ja-sigspring08.crowdvine.com/ > > > > > > > > > > > > You are currently subscribed to [email protected] as: [EMAIL > > > > PROTECTED] > > > > To unsubscribe, change settings or access archives, see > > > > http://www.ja-sig.org/wiki/display/JSG/uportal-dev > > > > > > > > > > > > -- > > > > > > > > Join your friends and colleagues at JA-SIG 2008 - "Higher Education > > Solutions: The Community Source Way!" > > April 27th - 30th, 2008 in St. Paul, Minnesota USA > > > > > > Featuring CAS, DSpace, Fedora, Fluid, Internet2, Kuali, Sakai, uPortal, and > > more! > > Information/Registration at: > > http://www.ja-sig.org/conferences/08spring/index.html > > > > > > Subscribe to the conference blog, The Community Source Way > > http://jasig2008.blogspot.com, for news and updates about the event. > > > > > > Join the Conference networking site at http://ja-sigspring08.crowdvine.com/ > > > > > > You are currently subscribed to [email protected] as: [EMAIL > > PROTECTED] > > To unsubscribe, change settings or access archives, see > > http://www.ja-sig.org/wiki/display/JSG/uportal-dev -- Join your friends and colleagues at JA-SIG 2008 - "Higher Education Solutions: The Community Source Way!" April 27th - 30th, 2008 in St. Paul, Minnesota USA Featuring CAS, DSpace, Fedora, Fluid, Internet2, Kuali, Sakai, uPortal, and more! Information/Registration at: http://www.ja-sig.org/conferences/08spring/index.html Subscribe to the conference blog, The Community Source Way http://jasig2008.blogspot.com, for news and updates about the event. Join the Conference networking site at http://ja-sigspring08.crowdvine.com/ You are currently subscribed to [email protected] as: [EMAIL PROTECTED] To unsubscribe, change settings or access archives, see http://www.ja-sig.org/wiki/display/JSG/uportal-dev
