You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(233) |
Sep
(199) |
Oct
(206) |
Nov
(185) |
Dec
(270) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(232) |
Feb
(426) |
Mar
(623) |
Apr
(592) |
May
(506) |
Jun
(389) |
Jul
(160) |
Aug
(3) |
Sep
(1) |
Oct
(1) |
Nov
(2) |
Dec
(5) |
2007 |
Jan
(1) |
Feb
(1) |
Mar
(2) |
Apr
(2) |
May
(4) |
Jun
(2) |
Jul
|
Aug
(3) |
Sep
(5) |
Oct
(9) |
Nov
(6) |
Dec
(6) |
2008 |
Jan
(3) |
Feb
|
Mar
(1) |
Apr
(3) |
May
(3) |
Jun
(5) |
Jul
(10) |
Aug
(2) |
Sep
(12) |
Oct
(10) |
Nov
(54) |
Dec
(49) |
2009 |
Jan
(19) |
Feb
(13) |
Mar
(20) |
Apr
(24) |
May
(44) |
Jun
(29) |
Jul
(32) |
Aug
(10) |
Sep
(7) |
Oct
(10) |
Nov
(4) |
Dec
(17) |
2010 |
Jan
(14) |
Feb
(5) |
Mar
(23) |
Apr
(50) |
May
(31) |
Jun
(9) |
Jul
(5) |
Aug
(4) |
Sep
(7) |
Oct
(5) |
Nov
(2) |
Dec
(3) |
2011 |
Jan
(12) |
Feb
(5) |
Mar
(5) |
Apr
(3) |
May
(4) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2012 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(1) |
Sep
|
Oct
(1) |
Nov
|
Dec
|
2013 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(1) |
2015 |
Jan
|
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <jbo...@li...> - 2006-05-26 13:06:36
|
Author: mla...@jb... Date: 2006-05-26 09:06:28 -0400 (Fri, 26 May 2006) New Revision: 4433 Modified: labs/jbossweb/trunk/src/windows/native/service/jbosssvc/jboss.c labs/jbossweb/trunk/src/windows/native/service/jbosssvc/jboss.rc Log: Update product names. Modified: labs/jbossweb/trunk/src/windows/native/service/jbosssvc/jboss.c =================================================================== --- labs/jbossweb/trunk/src/windows/native/service/jbosssvc/jboss.c 2006-05-26 12:49:50 UTC (rev 4432) +++ labs/jbossweb/trunk/src/windows/native/service/jbosssvc/jboss.c 2006-05-26 13:06:28 UTC (rev 4433) @@ -26,7 +26,7 @@ -#define MAX_CMDLINE 8192 +#define MAX_CMDLINE 8192 /* Extensions On, Old quote style */ static LPCSTR CMD_DEFAULT = "/E:ON /S /C \"SET SERVICE_PPID=%d && SET SERVICE_NAME=%s && CALL %s %s"; static LPCSTR REGSERVICE_ROOT = "SYSTEM\\CurrentControlSet\\Services\\"; @@ -157,8 +157,8 @@ if (_service_mode == mode_run) return; - fprintf(stderr, "srvbatch -- program for running batch files as services.\n\n"); - fprintf(stderr, "Usage: srvbatch -i service service.bat\n"); + fprintf(stderr, "jbosssvc -- program for running batch files as services.\n\n"); + fprintf(stderr, "Usage: jbosssvc -i service service.bat\n"); fprintf(stderr, " -i[wdcl] service workingpath description comment\n" " service.bat\n"); fprintf(stderr, " -u service\n"); @@ -834,6 +834,6 @@ cleanup: if (_service_run_event != NULL) CloseHandle(_service_run_event); - AddToMessageLog(FALSE, "SrvBatch finished"); + AddToMessageLog(FALSE, "JBosssvc finished"); ExitProcess(rv); } Modified: labs/jbossweb/trunk/src/windows/native/service/jbosssvc/jboss.rc =================================================================== --- labs/jbossweb/trunk/src/windows/native/service/jbosssvc/jboss.rc 2006-05-26 12:49:50 UTC (rev 4432) +++ labs/jbossweb/trunk/src/windows/native/service/jbosssvc/jboss.rc 2006-05-26 13:06:28 UTC (rev 4433) @@ -17,7 +17,7 @@ #define STR_COMPANY "JBoss, Inc." #define STR_TRADEMARK " JBoss Inc." -#define STR_PRODUCT "JBoss Service" +#define STR_PRODUCT "JBoss Service wrapper" #define STR_VERISON "1.0.1.0" #define CSV_VERISON 1,0,1,0 @@ -65,7 +65,7 @@ BEGIN VALUE "Comments", STR_LICENSE "\0" VALUE "CompanyName", STR_COMPANY "\0" - VALUE "FileDescription", "JBoss NT service runner\0" + VALUE "FileDescription", STR_PRODUCT "\0" VALUE "FileVersion", STR_VERISON "\0" VALUE "InternalName", "jbosssvc" VALUE "LegalCopyright", STR_COPYRIGHT "\0" |
From: <jbo...@li...> - 2006-05-26 12:49:58
|
Author: mla...@jb... Date: 2006-05-26 08:49:50 -0400 (Fri, 26 May 2006) New Revision: 4432 Modified: labs/jbossweb/trunk/src/share/resources/bin/service.bat Log: Add more verbosity to the service management script. Modified: labs/jbossweb/trunk/src/share/resources/bin/service.bat =================================================================== --- labs/jbossweb/trunk/src/share/resources/bin/service.bat 2006-05-26 12:15:04 UTC (rev 4431) +++ labs/jbossweb/trunk/src/share/resources/bin/service.bat 2006-05-26 12:49:50 UTC (rev 4432) @@ -10,6 +10,7 @@ set DIRNAME=%CD% if "%OS%" == "Windows_NT" set DIRNAME=%~dp0% +set SVCNAME=JBoss Web Server @VERSION_MAJOR@.@VERSION_MINOR@ set NOPAUSE=Y set JAVA_OPTS=-Xrs @@ -23,12 +24,31 @@ echo Usage: service install^|uninstall^|start^|stop^|restart goto cmdEnd +REM jbosssvc retun values +REM ERR_RET_USAGE 1 +REM ERR_RET_VERSION 2 +REM ERR_RET_INSTALL 3 +REM ERR_RET_REMOVE 4 +REM ERR_RET_PARAMS 5 +REM ERR_RET_MODE 6 + +:errExplain +@if errorlevel 1 echo Invalid command line parameters +@if errorlevel 2 echo Failed installing %SVCNAME% +@if errorlevel 4 echo Failed removing %SVCNAME% +@if errorlevel 6 echo Unknown service mode for %SVCNAME% +goto cmdEnd + :cmdInstall -jbosssvc.exe -iwdc JBossWebServer "%DIRNAME%" "JBoss Web Server @VERSION_MAJOR@.@VERSION_MINOR@" "JBoss Web Server @VERSION@/Built @VERSION_BUILT@" service.bat +jbosssvc.exe -iwdc JBossWebServer@VERSION_MAJOR@ "%DIRNAME%" "%SVCNAME%" "JBoss Web Server @VERSION@/Built: @VERSION_BUILT@" service.bat +@if not errorlevel 0 goto errExplain +echo Service %SVCNAME% installed goto cmdEnd :cmdUninstall -jbosssvc.exe -u JBossWebServer +jbosssvc.exe -u JBossWebServer@VERSION_MAJOR@ +@if not errorlevel 0 goto errExplain +echo Service %SVCNAME% removed goto cmdEnd :cmdStart |
From: <jbo...@li...> - 2006-05-26 12:15:23
|
Author: mla...@jb... Date: 2006-05-26 08:15:04 -0400 (Fri, 26 May 2006) New Revision: 4431 Modified: labs/jbossweb/trunk/build.xml labs/jbossweb/trunk/src/share/resources/bin/run.bat labs/jbossweb/trunk/src/share/resources/bin/run.sh labs/jbossweb/trunk/src/share/resources/bin/service.bat Log: Add @VERSION@ filters to ant build for startup resources. Modified: labs/jbossweb/trunk/build.xml =================================================================== --- labs/jbossweb/trunk/build.xml 2006-05-26 00:40:26 UTC (rev 4430) +++ labs/jbossweb/trunk/build.xml 2006-05-26 12:15:04 UTC (rev 4431) @@ -219,6 +219,8 @@ <!-- Copy static resource files --> <filter token="VERSION" value="${version}"/> + <filter token="VERSION_MAJOR" value="${version.major}"/> + <filter token="VERSION_MINOR" value="${version.minor}"/> <filter token="VERSION_NUMBER" value="${version.number}"/> <filter token="VERSION_BUILT" value="${TODAY} ${TSTAMP}"/> <copy todir="${jbossweb.build}/classes" filtering="yes"> Modified: labs/jbossweb/trunk/src/share/resources/bin/run.bat =================================================================== --- labs/jbossweb/trunk/src/share/resources/bin/run.bat 2006-05-26 00:40:26 UTC (rev 4430) +++ labs/jbossweb/trunk/src/share/resources/bin/run.bat 2006-05-26 12:15:04 UTC (rev 4431) @@ -85,7 +85,7 @@ echo =============================================================================== echo . -echo JBoss Bootstrap Environment +echo JBoss Web Server @VERSION@ Bootstrap Environment echo . echo JBOSS_HOME: %JBOSS_HOME% echo . Modified: labs/jbossweb/trunk/src/share/resources/bin/run.sh =================================================================== --- labs/jbossweb/trunk/src/share/resources/bin/run.sh 2006-05-26 00:40:26 UTC (rev 4430) +++ labs/jbossweb/trunk/src/share/resources/bin/run.sh 2006-05-26 12:15:04 UTC (rev 4431) @@ -1,7 +1,7 @@ #!/bin/sh ### ====================================================================== ### ## ## -## JBoss Bootstrap Script ## +## JBoss Web Server Bootstrap Script ## ## ## ### ====================================================================== ### @@ -165,7 +165,7 @@ # Display our environment echo "=========================================================================" echo "" -echo " JBoss Bootstrap Environment" +echo " JBoss Web Server Bootstrap Environment" echo "" echo " JBOSS_HOME: $JBOSS_HOME" echo "" Modified: labs/jbossweb/trunk/src/share/resources/bin/service.bat =================================================================== --- labs/jbossweb/trunk/src/share/resources/bin/service.bat 2006-05-26 00:40:26 UTC (rev 4430) +++ labs/jbossweb/trunk/src/share/resources/bin/service.bat 2006-05-26 12:15:04 UTC (rev 4431) @@ -5,8 +5,10 @@ REM See terms of license at gnu.org. REM -@if not "%ECHO%" == "" echo %ECHO% -@if "%OS%" == "Windows_NT" setlocal +@if not "%ECHO%" == "" echo %ECHO% +@if "%OS%" == "Windows_NT" setlocal +set DIRNAME=%CD% +if "%OS%" == "Windows_NT" set DIRNAME=%~dp0% set NOPAUSE=Y set JAVA_OPTS=-Xrs @@ -22,7 +24,7 @@ goto cmdEnd :cmdInstall -jbosssvc.exe -iwdc JBossWebServer "%CD%" "JBoss Web Server 4" "JBoss Web Server Version 1.0.0/CR1" service.bat +jbosssvc.exe -iwdc JBossWebServer "%DIRNAME%" "JBoss Web Server @VERSION_MAJOR@.@VERSION_MINOR@" "JBoss Web Server @VERSION@/Built @VERSION_BUILT@" service.bat goto cmdEnd :cmdUninstall |
Author: unibrew Date: 2006-05-25 20:40:26 -0400 (Thu, 25 May 2006) New Revision: 4430 Added: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/move_topic.xhtml Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/modcp_body.xhtml Log: [JBFORUMS-50] Working on delete action Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java 2006-05-25 21:11:23 UTC (rev 4429) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java 2006-05-26 00:40:26 UTC (rev 4430) @@ -58,6 +58,8 @@ private Map checkboxes; + private ResourceBundle bundle; + //----------------bean configuration supplied by the forums-config.xml--------------------------------------------------------------------------------------------- @@ -140,43 +142,88 @@ //ui actions supported by this bean---------------------------------------------------------------------------------------------------- - //TODO: STILL NOT FINISHED + //TODO: STILL NOT FINISHED public String deleteTopic () { Iterator it = checkboxes.keySet().iterator(); // This flag checks if there was at least one topic selected boolean isAnySet=false; + + String message=""; + + try { + while (it.hasNext()) + { + Integer topicId = (Integer)it.next(); + boolean value = ((Boolean)checkboxes.get(topicId)).booleanValue(); + if ( value ) isAnySet=true; + + try { + Topic topic = getForumsModule().findTopicById(topicId); + //this.getForumsModule().removeTopic(topic); + } catch(Exception e) + { + message = bundle.getString("ERR_CANNOT_REMOVE_TOPIC"); + FacesContext.getCurrentInstance().addMessage("message", + new FacesMessage(FacesMessage.SEVERITY_ERROR,message,"moderate")); + return ""; + } + } + if (!isAnySet) + { + //message = bundle.getString(""); + FacesContext.getCurrentInstance().addMessage("message", + new FacesMessage(FacesMessage.SEVERITY_WARN,"Hey","ehhh")); + return ""; + } + message = bundle.getString("SUCC_TOPIC_REMOVED"); + FacesContext.getCurrentInstance().addMessage("message", + new FacesMessage(FacesMessage.SEVERITY_INFO,message, "moderate")); + } catch (Exception e) + { + JSFUtil.handleException(e); + } + return ""; + } + + public String moveTopic () + { + return ""; + } + + //TODO: STILL NOT FINISHED + public String lockTopic () + { + Iterator it = checkboxes.keySet().iterator(); + + // This flag checks if there was at least one topic selected + boolean isAnySet=false; while (it.hasNext()) { Integer topicId = (Integer)it.next(); boolean value = ((Boolean)checkboxes.get(topicId)).booleanValue(); if ( value ) isAnySet=true; - Topic topic = (Topic)forum.getTopics().get(topicId.intValue()); + try { - this.getForumsModule().removeTopic(topic); + Topic topic = getForumsModule().findTopicById(topicId); + //this.getForumsModule().removeTopic(topic); } catch(Exception e) { - JSFUtil.handleException(e); + FacesContext.getCurrentInstance().addMessage("message", + new FacesMessage(FacesMessage.SEVERITY_ERROR,"moderate","ERR_CANNOT_REMOVE_TOPIC")); + return ""; } } - if (!isAnySet) + if (!isAnySet) + { FacesContext.getCurrentInstance().addMessage("message", new FacesMessage(FacesMessage.SEVERITY_WARN,"","ehhh")); + return ""; + } return ""; } - public String moveTopic () - { - return ""; - } - - public String lockTopic () - { - - return ""; - } - public String unlockTopic () { return ""; @@ -184,6 +231,13 @@ private void execute() throws Exception { + // Getting ResourceBundle with current Locale + FacesContext ctx = FacesContext.getCurrentInstance(); + UIViewRoot uiRoot = ctx.getViewRoot(); + Locale locale = uiRoot.getLocale(); + ClassLoader ldr = Thread.currentThread().getContextClassLoader(); + this.bundle = ResourceBundle.getBundle("ResourceJSF", locale, ldr); + int forumId = -1; String f = ForumUtil.getParameter(Constants.p_forumId); if(f!=null && f.trim().length()>0) Modified: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml =================================================================== --- labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml 2006-05-25 21:11:23 UTC (rev 4429) +++ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml 2006-05-26 00:40:26 UTC (rev 4430) @@ -339,8 +339,26 @@ <navigation-case> <from-outcome>deleteForum</from-outcome> <to-view-id>/views/admin/index.xhtml</to-view-id> - </navigation-case> + </navigation-case> </navigation-rule> + <navigation-rule> + <from-view-id>/views/moderator/modcp_body.xhtml</from-view-id> + <navigation-case> + <from-outcome>delete</from-outcome> + <to-view-id>/views/moderator/delete_topic.xhtml</to-view-id> + </navigation-case> + <navigation-case> + <from-outcome>move</from-outcome> + <to-view-id>/views/moderator/move_topic.xhtml</to-view-id> + </navigation-case> + </navigation-rule> + <navigation-rule> + <from-view-id>/views/moderator/delete_topic.xhtml</from-view-id> + <navigation-case> + <from-outcome>success</from-outcome> + <to-view-id>/views/moderator/modcp_body.xhtml</to-view-id> + </navigation-case> + </navigation-rule> <!-- managedBean for the user preference usecase --> <managed-bean> @@ -416,11 +434,5 @@ <managed-bean-class>org.jboss.portlet.forums.ui.action.DeleteTopic</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> - <navigation-rule> - <from-view-id>/views/moderator/delete_topic.xhtml</from-view-id> - <navigation-case> - <from-action>#{deleteTopic.confirmDelete}</from-action> - <to-view-id>/views/moderator/modcp_body.xhtml</to-view-id> - </navigation-case> - </navigation-rule> + </faces-config> \ No newline at end of file Modified: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/modcp_body.xhtml =================================================================== --- labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/modcp_body.xhtml 2006-05-25 21:11:23 UTC (rev 4429) +++ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/modcp_body.xhtml 2006-05-26 00:40:26 UTC (rev 4430) @@ -9,10 +9,6 @@ <ui:composition template="/views/common/common.xhtml"> <ui:define name="mainContent"> -<!-- TODO: -<n:errors/> -<n:success/>--> - <h:messages layout="table" infoStyle="color:green" warnStyle="color:red" /> <h:form> @@ -78,11 +74,11 @@ <tr align="right"> <td class="catBottom" colspan="5" height="29"> - <h:commandButton action="#{moderator.deleteTopic}" class="liteoption" value="${resource.Delete}"> + <h:commandButton action="delete" class="liteoption" value="${resource.Delete}"> <f:param name="f" value="#{forum.forum.id}"/> </h:commandButton> &nbsp; - <h:commandButton action="#{moderator.moveTopic}" class="liteoption" value="${resource.Move}"> + <h:commandButton action="move" class="liteoption" value="${resource.Move}"> <f:param name="f" value="#{forum.forum.id}"/> </h:commandButton> &nbsp; Added: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/move_topic.xhtml =================================================================== |
Author: szimano Date: 2006-05-25 17:11:23 -0400 (Thu, 25 May 2006) New Revision: 4429 Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java labs/jbosslabs/trunk/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp Log: tagme JBLAB-674 Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java 2006-05-25 19:04:01 UTC (rev 4428) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMe.java 2006-05-25 21:11:23 UTC (rev 4429) @@ -24,18 +24,9 @@ import java.util.Vector; import com.google.gwt.core.client.EntryPoint; -import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Window; -import com.google.gwt.user.client.rpc.AsyncCallback; -import com.google.gwt.user.client.rpc.ServiceDefTarget; import com.google.gwt.user.client.ui.Button; -import com.google.gwt.user.client.ui.ClickListener; -import com.google.gwt.user.client.ui.FlexTable; -import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.RootPanel; -import com.google.gwt.user.client.ui.TextBox; -import com.google.gwt.user.client.ui.VerticalPanel; -import com.google.gwt.user.client.ui.Widget; public class TagMe implements EntryPoint { @@ -61,13 +52,13 @@ * @return value of property */ public static native String getProperty(String name) /*-{ - return parent.__gwt_getMetaProperty(name); + return $wnd.__gwt_getMetaProperty(name); }-*/; public static native String getPropertiesUnsplited() /*-{ var __gwt_all = ''; - for (var tag in parent.__gwt_metaProps) { + for (var tag in $wnd.__gwt_metaProps) { __gwt_all += tag + ';'; } return __gwt_all; Modified: labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-05-25 19:04:01 UTC (rev 4428) +++ labs/jbosslabs/trunk/portal-extensions/forge-tagme/src/java/org/jboss/labs/tagme/gwt/client/TagMeShowPopupListener.java 2006-05-25 21:11:23 UTC (rev 4429) @@ -96,8 +96,8 @@ popUp.add(panel); - popUp.setPopupPosition(0,0); - + popUp.setPopupPosition(sender.getAbsoluteLeft(), sender.getAbsoluteTop()); + popUp.show(); } Modified: labs/jbosslabs/trunk/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp 2006-05-25 19:04:01 UTC (rev 4428) +++ labs/jbosslabs/trunk/portal-extensions/forge-theme/jbossForgeLayout.war/layouts/jbossForge.jsp 2006-05-25 21:11:23 UTC (rev 4429) @@ -1,4 +1,7 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<!DOCTYPE html +PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + <%@ taglib uri="/WEB-INF/theme/portal-layout.tld" prefix="p" %> <html xmlns="http://www.w3.org/1999/xhtml"> <!-- |
From: <jbo...@li...> - 2006-05-25 19:04:26
|
Author: adamw Date: 2006-05-25 15:04:01 -0400 (Thu, 25 May 2006) New Revision: 4428 Added: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/ProjectVariableResolver.java labs/jbosslabs/trunk/portal-extensions/mysql-connector/mysql-connector-java-3.1.12-bin.jar Removed: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AtomFeed.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedFactory.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsCache.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsPortlet.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsServlet.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RdfDateFormat.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RdfFeed.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/RomeBasedFeed.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Rss2Feed.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/TextEscaping.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/web/ labs/jbosslabs/trunk/portal-extensions/mysql-connector/mysql-connector-java-3.1.10-bin.jar Modified: labs/jbosslabs/trunk/portal-extensions/build.properties.sample labs/jbosslabs/trunk/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogConfigurationWatcher.java labs/jbosslabs/trunk/portal-extensions/forge-feeds/forge-feeds.iml labs/jbosslabs/trunk/portal-extensions/forge-feeds/maven.xml labs/jbosslabs/trunk/portal-extensions/forge-feeds/project.xml labs/jbosslabs/trunk/portal-extensions/forge-service/src/java/org/jboss/forge/service/ForgeService.java labs/jbosslabs/trunk/portal-extensions/forge-tagme/ labs/jbosslabs/trunk/portal-extensions/maven.xml labs/jbosslabs/trunk/portal-extensions/mysql-connector/maven.xml labs/jbosslabs/trunk/portal-extensions/project.properties Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-36 Modified: labs/jbosslabs/trunk/portal-extensions/build.properties.sample =================================================================== --- labs/jbosslabs/trunk/portal-extensions/build.properties.sample 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/build.properties.sample 2006-05-25 19:04:01 UTC (rev 4428) @@ -6,6 +6,7 @@ local.deploy.dir=${local.server.dir}/server/all/deploy # Directory on your filesystem where portal-extensions reside. +# The path must end with a /. ext.root.dir= # Path to your local maven repository - you can comment this out if you use Modified: labs/jbosslabs/trunk/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogConfigurationWatcher.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogConfigurationWatcher.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-blog/src/java/org/jboss/portlet/blog/BlogConfigurationWatcher.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -8,37 +8,14 @@ import org.jboss.shotoku.tools.Tools; import org.jboss.shotoku.cache.ShotokuResourceWatcher; import org.jboss.shotoku.cache.ChangeType; +import org.jboss.shotoku.cache.ShotokuPropertiesWatcher; import org.jboss.shotoku.exceptions.ResourceDoesNotExist; -public class BlogConfigurationWatcher extends ShotokuResourceWatcher<String, Properties> { - private final static String CONFIG_FILE_NAME = "blog.properties"; - - private Properties getProperties(String portalName) { - try { - Properties ret = new Properties(); - ret.load(getContentManager(portalName).getNode( - CONFIG_FILE_NAME).getContentInputStream()); - return ret; - } catch (IOException e) { - e.printStackTrace(); - } catch (ResourceDoesNotExist e) { - // Well ... - e.printStackTrace(); - } - - return null; +public class BlogConfigurationWatcher extends ShotokuPropertiesWatcher<String> { + protected String getConfigFileName() { + return "blog.properties"; } - - public Properties init(String portalName) { - addWatchedPath(portalName, CONFIG_FILE_NAME); - return getProperties(portalName); - } - protected void update(String portalName, Properties currentObject, - Map<String, ChangeType> changes) { - put(portalName, getProperties(portalName)); - } - protected ContentManager initContentManager(String portalName) { return ContentManager.getContentManager(Tools.concatenatePaths(portalName, "blog")); } Modified: labs/jbosslabs/trunk/portal-extensions/forge-feeds/forge-feeds.iml =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/forge-feeds.iml 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/forge-feeds.iml 2006-05-25 19:04:01 UTC (rev 4428) @@ -16,6 +16,7 @@ <orderEntry type="library" name="feeds" level="application" /> <orderEntry type="library" name="velocity" level="application" /> <orderEntry type="library" name="commons" level="application" /> + <orderEntry type="module" module-name="shotoku-feeds" /> <orderEntryProperties /> </component> </module> Modified: labs/jbosslabs/trunk/portal-extensions/forge-feeds/maven.xml =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/maven.xml 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/maven.xml 2006-05-25 19:04:01 UTC (rev 4428) @@ -1,4 +1,4 @@ -<!-- +<!-- JBoss, the OpenSource J2EE webOS Distributable under LGPL license. See terms of license at gnu.org. @@ -11,12 +11,17 @@ </goal> <goal name="build"> - <attainGoal name="prj-war-build" /> + <attainGoal name="jar" /> </goal> - <goal name="deploy"> - <attainGoal name="prj-war-deploy" /> - </goal> + <goal name="deploy"> + <j:set var="jar.to.dir" value="${local.deploy.dir}/shotoku-feeds.war" /> + <attainGoal name="jar-to-dir" /> + <ant:copy todir="${local.deploy.dir}/shotoku-feeds.war/WEB-INF/lib" + overwrite="true" + file="target/forge-feeds-1.0.jar" /> + <attainGoal name="dir-to-jar" /> + </goal> <goal name="clean"> <attainGoal name="prj-clean" /> Modified: labs/jbosslabs/trunk/portal-extensions/forge-feeds/project.xml =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/project.xml 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/project.xml 2006-05-25 19:04:01 UTC (rev 4428) @@ -7,7 +7,7 @@ <project> <pomVersion>3</pomVersion> <extend>../common.xml</extend> - <id>feeds</id> + <id>forge-feeds</id> <name>Forge feeds</name> <currentVersion>1.0</currentVersion> <organization> @@ -17,84 +17,17 @@ <description></description> <dependencies> - <dependency> - <groupId>jboss-forge</groupId> - <artifactId>forge-common</artifactId> - <version>1.0</version> - </dependency> - - <dependency> - <groupId>aslibs</groupId> - <artifactId>javax.servlet</artifactId> - <version>1.0</version> - <jar>javax.servlet.jar</jar> - </dependency> - - <dependency> - <id>jdom</id> - <version>1.0</version> - </dependency> - - <dependency> - <id>rome</id> - <version>0.7</version> - </dependency> - <dependency> - <groupId>informa</groupId> - <artifactId>informa</artifactId> - <version>0.6.5</version> - <jar>informa.jar</jar> - <properties> - <war.bundle>true</war.bundle> - </properties> - </dependency> - - <dependency> - <groupId>taglibs</groupId> - <artifactId>jstl</artifactId> + <groupId>jboss-forge</groupId> + <artifactId>forge-common</artifactId> <version>1.0</version> - <jar>jstl.jar</jar> - <properties> - <war.bundle>true</war.bundle> - </properties> </dependency> - - <dependency> - <groupId>taglibs</groupId> - <artifactId>standard</artifactId> - <version>1.0</version> - <jar>standard.jar</jar> - <properties> - <war.bundle>true</war.bundle> - </properties> - </dependency> - + <dependency> - <groupId>commons-collections</groupId> - <artifactId>commons-collections</artifactId> - <version>3.1</version> - <properties> - <war.bundle>true</war.bundle> - </properties> - </dependency> - - <dependency> - <groupId>xerces</groupId> - <artifactId>xercesImpl</artifactId> - <version>2.6.2</version> + <groupId>shotoku</groupId> + <artifactId>shotoku-feeds</artifactId> + <version>1.0</version> + <jar>shotoku-feeds.jar</jar> </dependency> - - <dependency> - <groupId>xerces</groupId> - <artifactId>xmlParserAPIs</artifactId> - <version>2.6.2</version> - </dependency> - - <dependency> - <groupId>xalan</groupId> - <artifactId>xalan</artifactId> - <version>2.6.0</version> - </dependency> </dependencies> </project> Deleted: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AtomFeed.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AtomFeed.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/AtomFeed.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -1,43 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.forge.feeds; - -import java.io.File; -import java.io.IOException; - -import com.sun.syndication.feed.synd.SyndFeed; - -public class AtomFeed extends RomeBasedFeed { - public AtomFeed(File file) throws IOException { - super(file); - } - - @Override - protected void setFeedType(SyndFeed feed) { - feed.setFeedType("atom_0.3"); - } - - @Override - protected String getContentType() { - return "application/atom+xml"; - } -} Deleted: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/Feed.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -1,79 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.forge.feeds; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Writer; -import java.net.URL; - -import javax.servlet.http.HttpServletResponse; - -/** - * An interface that should be implemented by classes representing data feeds. - * @author adamw - */ -public interface Feed { - /** - * Writes the feed data to the given output stream. - * @param os Output stream to write to. - * @throws IOException - */ - public void write(OutputStream os) throws IOException; - /** - * Writes the feed data to the given http servlet response, setting an - * appropriate content type. - * @param response Response to write to. - * @throws IOException - */ - public void write(HttpServletResponse response) throws IOException; - /** - * Generates a feed getting data from the given url. - * @param url Url from which to get the content. - */ - public void generate(URL url) throws IOException; - /** - * Generates a feed getting data from the given input stream. - * @param is Input stream from which to get the content. - * @throws IOException - */ - public void generate(InputStream is) throws IOException; - /** - * Gets a writer to which content of this feed can be written. - * @return A writer for writing content of this feed. - */ - public Writer getWriter() throws IOException; - /** - * Generates a feed using the given feeds. - * @param feeds Feeds which should be aggregated into a single - * feed. - */ - public void generate(Feed[] feeds, String title, - String description, String author, String link) - throws IllegalArgumentException, IOException; - /** - * Gets an input stream of this feed. - * @return Input stream of this feed. - */ - public InputStream getInputStream(); -} Deleted: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedFactory.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedFactory.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedFactory.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -1,79 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.forge.feeds; - -import java.io.File; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; - -/** - * A class which is an access point to specific feed implementations. - * @author adamw - */ -public class FeedFactory { - /** - * <code>feedClasses</code> - map feed type -> feed class. - */ - private static Map<String, Class> feedClasses; - private static Random random; - - static { - feedClasses = new HashMap<String, Class>(); - feedClasses.put("rss2", Rss2Feed.class); - feedClasses.put("atom", AtomFeed.class); - feedClasses.put("rdf", RdfFeed.class); - - random = new Random(); - } - - /** - * Creates a new instance of a feed implementation of the given type. - * @param type Type of feed to create. - * @return A new instance of a feed of the given type. - */ - public static Feed getNewFeed(String type) { - Class feedClass = feedClasses.get(type); - if (feedClass == null) return null; - - int nextInt; - synchronized(random) { - nextInt = random.nextInt(); - } - - try { - File file = File.createTempFile(FeedsDescriptor.FEEDS_FILE_PREFIX + nextInt, type); - return (Feed) feedClass.getConstructor(new Class[] { File.class }). - newInstance(new Object[] { file }); - } catch (Exception e) { - return null; - } - } - - /** - * Gets all feed types that have been defined. - * @return An array of defined feed types. - */ - public static String[] getAllFeedTypes() { - return feedClasses.keySet().toArray(new String[0]); - } -} Deleted: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsCache.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsCache.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsCache.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -1,39 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.forge.feeds; - -import org.jboss.shotoku.tools.Pair; -import org.jboss.shotoku.cache.ShotokuCacheItem; - -public class FeedsCache extends ShotokuCacheItem<Pair<String, String>, FeedsDescriptor> { - private FeedsDescriptor getDesc(String portalName, String baseServerAddress) { - return new FeedsDescriptor(portalName, baseServerAddress); - } - - public void update(Pair<String, String> key, FeedsDescriptor currentObject) { - put(key, getDesc(key.getFirst(), key.getSecond())); - } - - public FeedsDescriptor init(Pair<String, String> key) { - return getDesc(key.getFirst(), key.getSecond()); - } -} \ No newline at end of file Deleted: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsDescriptor.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -1,728 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.forge.feeds; - -import java.io.IOException; -import java.io.Writer; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.URL; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import java.util.Set; - -import org.apache.velocity.VelocityContext; -import org.apache.xerces.parsers.DOMParser; -import org.jboss.forge.common.ForgeHelper; -import org.jboss.forge.common.XmlTools; -import org.jboss.forge.common.projects.ProjectsHelper; -import org.jboss.forge.common.projects.permissions.NullPermissionsChecker; -import org.jboss.logging.Logger; -import org.jboss.portal.common.context.DelegateContext; -import org.jboss.shotoku.ContentManager; -import org.jboss.shotoku.tools.Pair; -import org.jboss.shotoku.aop.CacheItem; -import org.jboss.shotoku.search.Search; -import org.jboss.shotoku.search.SearchParameter; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; - -/** - * Class which handles parsing feed descriptions, generates the feeds and - * provides access to them. - * - * @author adamw - */ -public class FeedsDescriptor { - private static final Logger log = Logger.getLogger(FeedsDescriptor.class); - - /** - * <code>FEEDS_DIRECTORY</code> - shotoku directory in which feed - * definitions are stored. - */ - protected final static String FEEDS_DIRECTORY = "feeds"; - - /** - * <code>FEEDS_NODE_ENDING</code> - node with names ending with this - * string are parsed and feed definitons are read from them. - */ - private final static String FEEDS_NODE_ENDING = "-feeds.xml"; - - private final static String REM_FEED_TAG = "remote-feed"; - - private final static String AGG_FEED_TAG = "aggregated-feed"; - - private final static String SHO_FEED_TAG = "shotoku-feed"; - - private final static String SHOTOKU_CONFIG = "shotoku-config.properties"; - - private final static String ALL_TOKENS = "*"; - - private final static String TOKENS_DELIMITER = ","; - - private final static String TYPE_PARAM = "${type}"; - - private final static String PROJECT_PARAM = "${project}"; - - private final static String PROJECT_NAME_PARAM = "${project-name}"; - - protected final static String FEEDS_FILE_PREFIX = "forge-feeds"; - - @CacheItem - private static FeedsCache feedsCache; - - static synchronized FeedsDescriptor getInstance(final String portalName, - final String baseServerAddress) { - return feedsCache.get(new Pair<String, String>(portalName, baseServerAddress)); - } - - /** - * <code>feeds</code> - a map of ready feeds: feed name -> (feed type -> - * feed)). - */ - private Map<String, Map<String, Feed>> feeds; - - /** - * <code>feedGroups</code> - map: feed group display name -> set of feed - * names. - */ - private Map<String, Set<String>> feedGroups; - - /** - * <code>feedDisplayNames</code> - map: feed name -> feed display name. - */ - private Map<String, String> feedDisplayNames; - - private DelegateContext context; - - private String baseServerAddress; - - public FeedsDescriptor(String portalName, String baseServerAddress) { - this.baseServerAddress = baseServerAddress; - - ContentManager cm = ContentManager.getContentManager(portalName + "/" - + FEEDS_DIRECTORY); - - // Creating the maps that will hold the feeds. - feeds = new HashMap<String, Map<String, Feed>>(); - feedGroups = new LinkedHashMap<String, Set<String>>(); - feedDisplayNames = new HashMap<String, String>(); - - // Preparing maps which will hold feed definitions. - Map<String, Node> remoteFeedDefs = new HashMap<String, Node>(); - Map<String, Node> aggregatedFeedDefs = new HashMap<String, Node>(); - Map<String, Node> shotokuFeedDefs = new HashMap<String, Node>(); - - Map<String, Map<String, Node>> allFeedDefs = - new HashMap<String, Map<String, Node>>(); - - allFeedDefs.put(REM_FEED_TAG, remoteFeedDefs); - allFeedDefs.put(AGG_FEED_TAG, aggregatedFeedDefs); - allFeedDefs.put(SHO_FEED_TAG, shotokuFeedDefs); - - // Looking for file containing feed definitons and filling the maps. - for (org.jboss.shotoku.Node feedNode : cm.getRootDirectory().getNodes() - .toList()) { - if (feedNode.getName().endsWith(FEEDS_NODE_ENDING)) { - try { - addFeedDefinitions(portalName, allFeedDefs, feedNode); - } catch (Exception e) { - // We just don't add the feeds ... but log a warning. - log.warn("Can't add feed definitions.", e); - } - } - } - - // Firstly - the remote feeds. - generateRemoteFeeds(portalName, remoteFeedDefs); - - // Then, shotoku feeds - first loading the properties - directive classes. - Properties props = new Properties(); - try { - props.load(cm.getNode(SHOTOKU_CONFIG).getContentInputStream()); - } catch (Exception e) { - log.warn("Error loading shotoku feeds configuration.", e); - } - - generateShotokuFeeds(portalName, shotokuFeedDefs, props); - - // After that, we can create the aggregated feeds. - generateAggregatedFeeds(portalName, aggregatedFeedDefs); - - // Finally, filling the context. - fillContext(); - } - - /** - * Adds a feed of the given name and type. - * @param name - * @param type - * @param feed - */ - private void addFeed(String name, String type, Feed feed) { - Map<String, Feed> typesMap = feeds.get(name); - if (typesMap == null) { - typesMap = new HashMap<String, Feed>(); - feeds.put(name, typesMap); - } - - typesMap.put(type, feed); - } - - /** - * Gets an array of ids of projects basing on the given project level attribute - * (the level can be a *). - * @param portalName - * @param projectLevelAttr - * @return An array of project ids that are on the specified level. - */ - private String[] getProjectsIds(String portalName, String projectLevelAttr) { - if (projectLevelAttr != null) { - return ProjectsHelper.getProjects(portalName).getProjectIds( - new NullPermissionsChecker(), - ALL_TOKENS.equals(projectLevelAttr) ? null - : projectLevelAttr).toArray(new String[0]); - } else { - return new String[] { "" }; - } - } - - /** - * @param portalName - * @param projectId - * @return Name of a project with the given id. - */ - private String getProjectName(String portalName, String projectId) { - return ProjectsHelper.getProjects(portalName).getProjectName(projectId); - } - - /** - * Gets an array of types basing on the given type attribute (the attribute can be a *). - * @param typesAttr - * @return An array of types. - */ - private String[] getTypes(String typesAttr) { - if (ALL_TOKENS.equals(typesAttr)) { - return FeedFactory.getAllFeedTypes(); - } else { - return typesAttr.split("[" + TOKENS_DELIMITER + "]"); - } - } - - /** - * In the given <code>map</code>, in its values, replaces each occurence of - * <code>replaceWhat</code> with <code>replaceTo</code>. - * @param map - * @param replaceWhat - * @param replaceTo - * @return <code>map</code> - */ - private Map<String, String> replaceInMapValues(Map<String, String> map, - String replaceWhat, String replaceTo) { - for (String key : map.keySet()) { - map.put(key, map.get(key).replace(replaceWhat, replaceTo)); - } - - return map; - } - - /** - * Recursively generates a search parameter basing on its description that is - * contained in the given node. - * @param n Node from which to read the search parameters. - * @param props Properties with directives classes. - * @param parametrized Set of directive names that accept a parameter map - * in their constructor. - * @param portalName - * @param projectId - * @return A search parameter that is described in the given node. - * @throws IllegalArgumentException - * @throws SecurityException - * @throws InstantiationException - * @throws IllegalAccessException - * @throws InvocationTargetException - * @throws NoSuchMethodException - * @throws ClassNotFoundException - */ - private SearchParameter generateSearchParameter(Node n, Properties props, - Set<String> parametrized, String portalName, String projectId) - throws IllegalArgumentException, SecurityException, - InstantiationException, IllegalAccessException, - InvocationTargetException, NoSuchMethodException, - ClassNotFoundException { - String paramName = n.getNodeName(); - - // Looking for a corresponding class. - String paramClass = props.getProperty(paramName); - - if (paramClass == null) - throw new RuntimeException("Unknown parameter name: " + paramName - + "."); - - SearchParameter param; - if (parametrized.contains(paramName)) { - // Instatiating the class, it should have a constructor accepting a - // map. We take the map from node attributes, and replace - // ${project} and ${project-name} in them. - param = (SearchParameter) Class.forName(paramClass).getConstructor( - new Class[] { Map.class }).newInstance( - new Object[] { replaceInMapValues(replaceInMapValues( - XmlTools.getMapFromNodeAttributes(n), - PROJECT_PARAM, projectId), PROJECT_NAME_PARAM, - getProjectName(portalName, projectId)) }); - } else { - param = (SearchParameter) Class.forName(paramClass).newInstance(); - } - - NodeList nodeList = n.getChildNodes(); - for (int i = 0; i < nodeList.getLength(); i++) { - Node child = nodeList.item(i); - - if (child.getNodeType() == Node.ELEMENT_NODE) { - // If the search paramater has child nodes, then the - // corresponding class should have an "add" method. - // Invoking the function recursively and adding the - // resulting parameter. - SearchParameter childParam = generateSearchParameter(child, - props, parametrized, portalName, projectId); - - Method[] methods = param.getClass().getMethods(); - for (Method method : methods) { - if ("add".equals(method.getName())) { - method.invoke(param, new Object[] { childParam }); - break; - } - } - } - } - - return param; - } - - private final static String RFC_822_DATE = "EEE, d MMM yyyy HH:mm:ss Z"; - - private void generateShotokuFeeds(String portalName, - Map<String, Node> feedDefs, Properties props) { - Set<String> parametrized = new HashSet<String>(Arrays.asList(props.getProperty( - "parametrized").split("[,]"))); - - for (String feedName : feedDefs.keySet()) { - Node feedNode = feedDefs.get(feedName); - String templateAttr = XmlTools.getAttributeValue(feedNode, - "template"); - String prefixAttr = XmlTools.getAttributeValue(feedNode, "prefix"); - String idAttr = XmlTools.getAttributeValue(feedNode, "id"); - String typesAttr = XmlTools.getAttributeValue(feedNode, "type"); - String projectLevelAttr = XmlTools.getAttributeValue(feedNode, - "project-level"); - String displayNameAttr = XmlTools.getAttributeValue(feedNode, - "display-name"); - - ContentManager cm = ContentManager.getContentManager(idAttr, - prefixAttr); - - // Generating the type of feeds that have been requested. - String[] types = getTypes(typesAttr); - - // Generating the projects for which the feeds have been requested, - // if any. - String[] projects = getProjectsIds(portalName, projectLevelAttr); - - Map<String, String> attributes = XmlTools - .getMapFromNodeAttributes(feedNode); - - // Creating a velcoity context with parts that won't change in all - // generated feeds. - VelocityContext vc = new VelocityContext(attributes); - - String dateFormat = attributes.get("dateFormat"); - vc.put("dateFormat", new SimpleDateFormat( - dateFormat == null ? "MM/dd/yy" : dateFormat)); - vc.put("rssDateFormat", new SimpleDateFormat(RFC_822_DATE)); - vc.put("rdfDateFormat", new RdfDateFormat()); - vc.put("now", Calendar.getInstance().getTime()); - vc.put("baseServerAddress", baseServerAddress); - vc.put("escape", new TextEscaping()); - - for (String project : projects) { - String feedNameReplaced = feedName.replace(PROJECT_PARAM, - project); - - NodeList feedNodeChildren = feedNode.getChildNodes(); - for (int i = 0; i < feedNodeChildren.getLength(); i++) { - // For each search node, generating and performing the - // search, placing it under the demanded attribute in - // velocity's context. - Node searchNode = feedNodeChildren.item(i); - if ("search".equals(searchNode.getNodeName())) { - try { - Search search = (Search) generateSearchParameter( - searchNode, props, parametrized, - portalName, project); - - org.jboss.shotoku.NodeList list = cm.search(search); - - String searchNameAttr = XmlTools.getAttributeValue( - searchNode, "name"); - if (searchNameAttr == null) - searchNameAttr = "nodes"; - - vc.put(searchNameAttr, list); - } catch (Exception e) { - log.warn("Error generating shotoku feed " - + feedName + ".", e); - continue; - } - } - } - - for (String type : types) { - String template = templateAttr.replace(TYPE_PARAM, type); - - Feed newFeed = FeedFactory.getNewFeed(type); - try { - vc.put("link", generateFeedLink(true, feedNameReplaced, - type)); - - // Now that we have type and project, we can render the - // template. - Writer w = newFeed.getWriter(); - cm.getVelocityEngine().mergeTemplate(template, vc, w); - w.flush(); - w.close(); - - // And add the feed. - addFeed(feedNameReplaced, type, newFeed); - } catch (Exception e) { - log.warn("Cannot merge template " + template + " for " - + feedName + ".", e); - continue; - } - } - - // Finally, adding a feed name. We have to replace ${project} - // and ${project-name} in it. - feedDisplayNames.put(feedNameReplaced, displayNameAttr.replace( - PROJECT_PARAM, project).replace(PROJECT_NAME_PARAM, - getProjectName(portalName, project))); - } - } - } - - private void generateRemoteFeeds(String portalName, - Map<String, Node> feedDefs) { - for (String feedName : feedDefs.keySet()) { - Node feedNode = feedDefs.get(feedName); - String addressAttr = XmlTools - .getAttributeValue(feedNode, "address"); - String typesAttr = XmlTools.getAttributeValue(feedNode, "type"); - String displayNameAttr = XmlTools.getAttributeValue(feedNode, - "display-name"); - String projectLevelAttr = XmlTools.getAttributeValue(feedNode, - "project-level"); - - // Generating the type of feeds that have been requested. - String[] types = getTypes(typesAttr); - - // Generating the projects for which the feeds have been requested, - // if any. - String[] projects = getProjectsIds(portalName, projectLevelAttr); - - // For each type, project pair, generating a feed and storing it in - // the feeds map. - for (String project : projects) { - String feedNameReplaced = feedName.replace(PROJECT_PARAM, - project); - - for (String type : types) { - String address = addressAttr.replace(TYPE_PARAM, type) - .replace(PROJECT_PARAM, project); - - try { - Feed newFeed = FeedFactory.getNewFeed(type); - newFeed.generate(new URL(address)); - addFeed(feedNameReplaced, type, newFeed); - } catch (Exception e) { - log.debug("Can't add feeed " + address + " : " + type - + ".", e); - } - } - - // Adding a feed name. We have to replace ${project} - // and ${project-name} in it. - feedDisplayNames.put(feedNameReplaced, displayNameAttr.replace( - PROJECT_PARAM, project).replace(PROJECT_NAME_PARAM, - getProjectName(portalName, project))); - } - } - } - - private void generateAggregatedFeeds(String portalName, - Map<String, Node> feedDefs) { - // First building requirements of each feed - that is, whit which - // feeds each aggregated feed is built. - Map<String, Set<String>> requirements = - new HashMap<String, Set<String>>(); - Map<String, String[]> parameters = new HashMap<String, String[]>(); - - // Gathering information about defined feeds, their requirements - // (that is, from which other feeds they are composed) and their - // parameters. - for (String feedName : feedDefs.keySet()) { - Node n; - Node feedNode = feedDefs.get(feedName); - NodeList nodes = feedNode.getChildNodes(); - - Set<String> feedRequirements = new HashSet<String>(); - requirements.put(feedName, feedRequirements); - parameters.put(feedName, new String[] { - XmlTools.getAttributeValue(feedNode, "title"), - XmlTools.getAttributeValue(feedNode, "description"), - XmlTools.getAttributeValue(feedNode, "author") }); - feedDisplayNames.put(feedName, XmlTools.getAttributeValue(feedNode, - "display-name")); - - for (int i = 0; i < nodes.getLength(); i++) { - n = nodes.item(i); - if ("include".equals(n.getNodeName())) { - String nameAttr = XmlTools.getAttributeValue(n, "name"); - String projectLevelAttr = XmlTools.getAttributeValue(n, - "project-level"); - - String[] projects = getProjectsIds(portalName, - projectLevelAttr); - - for (String project : projects) { - feedRequirements.add(nameAttr.replace(PROJECT_PARAM, - project)); - } - } - } - } - - while (requirements.size() > 0) { - int sizeBefore = requirements.size(); - - for (Iterator<String> iter = requirements.keySet().iterator(); iter - .hasNext();) { - String feedName = iter.next(); - Set<String> feedRequirements = requirements.get(feedName); - String[] feedParameters = parameters.get(feedName); - Set<String> types = null; - - // Checking if the all of this feed's requirements are met - // and if so, of what types it can consist. - boolean allRequirementsMet = true; - for (String requirement : feedRequirements) { - Map<String, Feed> feedTypes = feeds.get(requirement); - - if (feedTypes == null) { - // Missing feed - cannot create the aggregated one. - allRequirementsMet = false; - break; - } - - // Intersecting the types set with the types of the current - // feed. - if (types == null) { - types = new HashSet<String>(); - types.addAll(feedTypes.keySet()); - } else - types.retainAll(feedTypes.keySet()); - } - - if (!allRequirementsMet) - continue; - - // Gathering the feed parts from which the new feed will be - // composed. - for (String type : types) { - List<Feed> requiredFeeds = new ArrayList<Feed>(); - for (String requirement : feedRequirements) { - requiredFeeds.add(feeds.get(requirement).get(type)); - } - - Feed newFeed = FeedFactory.getNewFeed(type); - try { - newFeed.generate(requiredFeeds.toArray(new Feed[0]), - feedParameters[0], feedParameters[1], - feedParameters[2], generateFeedLink(true, - feedName, type)); - } catch (Exception e) { - log.warn("Can't add aggregated feed " + feedName - + " : " + type + ".", e); - } - - addFeed(feedName, type, newFeed); - } - - iter.remove(); - } - - if (sizeBefore == requirements.size()) { - log.warn("Aggregation feed definitions cycle, or demanded " - + "feeds are not defined; unable to create feeds."); - return; - } - } - } - - /** - * Generates a link to a specified feed. If the link is to be full, an - * absolute address is returned. Otherwise, a relative one. - * @param full - * @param feedName - * @param feedType - * @return - */ - private String generateFeedLink(boolean full, String feedName, - String feedType) { - return (full ? baseServerAddress : "") + "/feeds/" + feedName + "/" - + feedType; - } - - /** - * Fills the <code>context</code> variable with feed information that is - * to be shown in the portlet. - */ - private void fillContext() { - String[] allFeedTypes = FeedFactory.getAllFeedTypes(); - - context = new DelegateContext(); - for (String feedGroup : feedGroups.keySet()) { - Set<String> feedsInGroup = feedGroups.get(feedGroup); - - if (feedsInGroup.size() > 0) { - DelegateContext groupContext = context.next("groups"); - groupContext.put("name", feedGroup); - - for (String feedName : feedsInGroup) { - Map<String, Feed> feedTypes = feeds.get(feedName); - - if (feedTypes != null) { - DelegateContext feedContext = groupContext - .next("feeds"); - feedContext.put("name", - feedDisplayNames.get(feedName)); - - Set availableTypes = feedTypes.keySet(); - for (String feedType : allFeedTypes) { - DelegateContext typeContext = feedContext - .next("types"); - - if (availableTypes.contains(feedType)) { - typeContext.next("feed"); - typeContext.put("name", feedType); - typeContext.put("link", generateFeedLink(false, - feedName, feedType)); - } - } - } - } - } - } - } - - /** - * To the given feed group, adds feeds names that are defined by the given - * node and feed name (this can be more then one, as we can have iteration - * over many projects). - * @param portalName - * @param feedGroup - * @param feedName - * @param node - */ - private void addFeedNamesToGroup(String portalName, Set<String> feedGroup, - String feedName, Node node) { - String projectLevelAttr = XmlTools.getAttributeValue(node, - "project-level"); - - String[] projects = getProjectsIds(portalName, projectLevelAttr); - - for (String project : projects) { - feedGroup.add(feedName.replace(PROJECT_PARAM, project)); - } - } - - /** - * Adds definitions of feeds to the given map, placing child nodes of - * the given node in the appropriate map. - * @param portalName - * @param feedDefinitions - * @param node - * @throws SAXException - * @throws IOException - */ - private void addFeedDefinitions(String portalName, - Map<String, Map<String, Node>> feedDefinitions, - org.jboss.shotoku.Node node) throws SAXException, IOException { - DOMParser parser = new DOMParser(); - parser.parse(new InputSource(node.getContentInputStream())); - Node root = parser.getDocument().getDocumentElement(); - - Node n; - NodeList nodes = root.getChildNodes(); - - Set<String> feedGroup = new LinkedHashSet<String>(); - feedGroups.put(XmlTools.getAttributeValue(root, "display-name"), - feedGroup); - - for (int i = 0; i < nodes.getLength(); i++) { - n = nodes.item(i); - if (feedDefinitions.get(n.getNodeName()) != null) { - String feedName = XmlTools.getAttributeValue(n, "name"); - addFeedNamesToGroup(portalName, feedGroup, feedName, n); - feedDefinitions.get(n.getNodeName()).put(feedName, n); - } - } - } - - /** - * Gets a feed of the given type and name. - * @param name - * @param type - * @return - */ - public Feed getFeed(String name, String type) { - Map<String, Feed> feedTypes = feeds.get(name); - if (feedTypes == null) - return null; - - return feedTypes.get(type); - } - - public DelegateContext getContext() { - return context; - } -} Deleted: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsPortlet.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsPortlet.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsPortlet.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -1,63 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.forge.feeds; - -import java.io.IOException; - -import javax.portlet.PortletException; -import javax.portlet.PortletRequestDispatcher; -import javax.portlet.PortletSecurityException; - -import org.jboss.forge.common.ForgeHelper; -import org.jboss.forge.common.projects.ProjectsHelper; -import org.jboss.portal.common.context.DelegateContext; -import org.jboss.portal.core.servlet.jsp.PortalJsp; -import org.jboss.portlet.JBossPortlet; -import org.jboss.portlet.JBossRenderRequest; -import org.jboss.portlet.JBossRenderResponse; - -public class FeedsPortlet extends JBossPortlet { - private final static String FEEDS_JSP = "feeds.jsp"; - - @Override - protected void doView(JBossRenderRequest request, JBossRenderResponse response) - throws PortletException, PortletSecurityException, IOException { - response.setContentType("text/html"); - - String portalName = ForgeHelper.getPortalName(request); - ProjectsHelper.prepareRequest(request); - - // Getting the feeds context. - DelegateContext feedsContext = FeedsDescriptor.getInstance(portalName, - ForgeHelper.getBaseServerAddress(request)) - .getContext(); - - // Displaying. - request.setAttribute(PortalJsp.CTX_REQUEST, feedsContext); - - PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher( - ForgeHelper.createRepoAccessPath(portalName, - FeedsDescriptor.FEEDS_DIRECTORY + '/' + FEEDS_JSP)); - rd.include(request, response); - } - -} Deleted: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsServlet.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsServlet.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FeedsServlet.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -1,73 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.forge.feeds; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.jboss.forge.common.ForgeHelper; - -public class FeedsServlet extends HttpServlet { - private void invalidRequest(HttpServletResponse response) throws IOException { - response.setContentType("text/html"); - response.getWriter().println("The feed you requested is not available."); - } - - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) - throws ServletException, IOException { - String requestURI = request.getRequestURI(); - - // Getting rid of the /war-name/. - requestURI = requestURI.split("[/]", 3)[2]; - - // Getting rid of the possible '/' at the end of the request. - if (requestURI.endsWith("/")) - requestURI = requestURI.substring(0, requestURI.length()-1); - - // Splitting the URI into name and type. - int lastSlash = requestURI.lastIndexOf('/'); - - if (lastSlash == -1) { - invalidRequest(response); - return; - } - - String type = requestURI.substring(lastSlash+1); - String name = requestURI.substring(0, lastSlash); - - Feed feed = FeedsDescriptor.getInstance(ForgeHelper.LABS_PORTAL, - ForgeHelper.getBaseServerAddress(request)).getFeed(name, type); - - if (feed == null) { - invalidRequest(response); - return; - } - - feed.write(response); - } - -} Deleted: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/FileBasedFeed.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -1,120 +0,0 @@ -/* - * JBoss, Home of Professional Open Source - * Copyright 2005, JBoss Inc., and individual contributors as indicated - * by the @authors tag. See the copyright.txt in the distribution for a - * full listing of individual contributors. - * - * This is free software; you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as - * published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this software; if not, write to the Free - * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA, or see the FSF site: http://www.fsf.org. - */ -package org.jboss.forge.feeds; - -import java.io.BufferedInputStream; -import java.io.BufferedOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Writer; -import java.net.URL; - -import javax.servlet.http.HttpServletResponse; - -public abstract class FileBasedFeed implements Feed { - private final static int BUF_SIZE = 32768; - - private File file; - - public FileBasedFeed(File file) { - this.file = file; - } - - private void transfer(InputStream is, OutputStream os) throws IOException { - byte[] buffer = new byte[BUF_SIZE]; - int read; - while ((read = is.read(buffer)) != -1) - os.write(buffer, 0, read); - } - - public void generate(URL url) throws IOException { - InputStream is = null; - - try { - is = url.openStream(); - generate(is); - } finally { - if (is != null) { - is.close(); - } - } - } - - public void generate(InputStream is) throws IOException { - OutputStream os = null; - - try { - file.createNewFile(); - os = new BufferedOutputStream(new FileOutputStream(file)); - transfer(is, os); - } finally { - if (os != null) { - os.close(); - } - } - } - - public void write(OutputStream os) throws IOException { - InputStream is = null; - try { - is = new BufferedInputStream(new FileInputStream(file)); - transfer(is, os); - } finally { - if (is != null) { - is.close(); - } - } - } - - public Writer getWriter() throws IOException { - return new FileWriter(file); - } - - protected abstract String getContentType(); - - public void write(HttpServletResponse response) throws IOException { - response.setContentType(getContentType()); - write(response.getOutputStream()); - } - - protected File getFile() { - return file; - } - - public void finalize() { - file.delete(); - } - - public InputStream getInputStream() { - try { - return new FileInputStream(file); - } catch (FileNotFoundException e) { - return null; - } - } -} Deleted: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/InformaBasedFeed.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -1,65 +0,0 @@ -package org.jboss.forge.feeds; - -import java.io.File; -import java.io.IOException; -import java.net.URL; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; - -import de.nava.informa.core.ChannelExporterIF; -import de.nava.informa.core.ChannelIF; -import de.nava.informa.core.ItemIF; -import de.nava.informa.core.ParseException; -import de.nava.informa.impl.basic.ChannelBuilder; -import de.nava.informa.parsers.FeedParser; -import de.nava.informa.utils.ItemComparator; - -public abstract class InformaBasedFeed extends FileBasedFeed { - public InformaBasedFeed(File file) { - super(file); - } - - protected abstract ChannelExporterIF getExporter() throws IOException; - - @SuppressWarnings("unchecked") - public void generate(Feed[] feeds, String title, String description, - String author, String link) throws IllegalArgumentException, - IOException { - ChannelBuilder builder = new ChannelBuilder(); - ChannelIF newChannel = builder.createChannel(title); - newChannel.setTitle(title); - newChannel.setDescription(description); - newChannel.setCreator(author); - newChannel.setPublisher(author); - newChannel.setLocation(new URL(link)); - newChannel.setPubDate(Calendar.getInstance().getTime()); - - List<ItemIF> newItems = new ArrayList<ItemIF>(); - - for (Feed feed : feeds) { - ChannelIF childChannel; - try { - childChannel = FeedParser.parse(builder, feed.getInputStream()); - } catch (ParseException e) { - throw new IOException(e.getMessage()); - } - - for (Iterator iter = childChannel.getItems().iterator(); iter.hasNext();) { - ItemIF nextItem = (ItemIF) iter.next(); - nextItem.setCreator(childChannel.getCreator()); - newItems.add(nextItem); - } - } - - Collections.sort(newItems, new ItemComparator(true)); - - for (ItemIF newItem : newItems) { - newChannel.addItem(newItem); - } - - getExporter().write(newChannel); - } -} Added: labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/ProjectVariableResolver.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/ProjectVariableResolver.java 2006-05-25 18:53:02 UTC (rev 4427) +++ labs/jbosslabs/trunk/portal-extensions/forge-feeds/src/java/org/jboss/forge/feeds/ProjectVariableResolver.java 2006-05-25 19:04:01 UTC (rev 4428) @@ -0,0 +1,69 @@ +package org.jboss.forge.feeds; + +import org.w3c.dom.Node; +import org.jboss.shotoku.tools.Tools; +import org.jboss.shotoku.feeds.variables.VariableResolver; +import org.jboss.shotoku.feeds.variables.Substitution; +import org.jboss.forge.common.projects.ProjectsHelper; +import org.jboss.forge.common.projects.permissions.NullPermissionsChecker; + +import java.util.Set; +import java.util.HashSet; + +/** + * @author Adam Warski (ad...@as...) + */ +public class ProjectVariableResolver implements VariableResolver { + public static final String PROJECTS_ID = "default"; + public static final String PROJECT_VARIABLE = "${project}"; + public static final String PROJECT_NAME_VARIABLE = "${project-name}"; + + private String[] projects; + + public ProjectVariableResolver(Node n) { + String projectLevelAttr = Tools.getAttributeValue(n, "project-level"); + + if (projectLevelAttr == null) { + projects = new String[0]; + return; + } + + Set<String> projectIds = new HashSet<String>(); + + if ("*".equals(projectLevelAttr)) { + projectIds = ProjectsHelper.getProjects(org.jboss.forge.feeds.ProjectVariableResolver.PROJECTS_ID).getProjectIds( + new NullPermissionsChecker(), null); + } else { + String[] projectLevels = projectLevelAttr.split("[,]"); + for (String projectLevel : projectLevels) { + projectIds.addAll(ProjectsHelper.getProjects(org.jboss.forge.feeds.ProjectVariableResolver.PROJECTS_ID).getProjectIds( + new NullPermissionsChecker(), projectLevel)); + } + } + + projects = projectIds.toArray(new String[0]); + } + + public void expandSubstitutionsSet(Set<String> variables, Set<Substitution> substitutions) { + if (!variables.remove(org.jboss.forge.feeds.ProjectVariableResolver.PROJECT_VARIABLE)) { + return; + } + + variables.remove(org.jboss.forge.feeds.ProjectVariableResolver.PROJECT_NAME_VARIABLE); + + Set<Substitution> newSubs = new HashSet<Substitution>(); + + for (Substitution s : substitutions) { + for (String projectId : projects) { + Substitution newSub = s.clone(); + newSub.add(org.jboss.forge.feeds.ProjectVariableResolver.PROJECT_VARIABLE, projectId); + newSub.add(org.jboss.forge.feeds.ProjectVariableResolver.PROJECT_NAME_VARIABLE, ProjectsHelper.getProjects(org.jboss.forge.feeds.ProjectVariableResolver.PROJECTS_ID). + getProjectName(projectId)); + newSubs.add(newSub); + } + } + + substi... [truncated message content] |
From: <jbo...@li...> - 2006-05-25 18:53:08
|
Author: adamw Date: 2006-05-25 14:53:02 -0400 (Thu, 25 May 2006) New Revision: 4427 Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java Log: http://jira.jboss.com/jira/browse/JBSHOTOKU-36 Modified: labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java =================================================================== --- labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java 2006-05-25 16:40:27 UTC (rev 4426) +++ labs/shotoku/trunk/shotoku-feeds/src/java/org/jboss/shotoku/feeds/tag/AggregatedFeedTagHandler.java 2006-05-25 18:53:02 UTC (rev 4427) @@ -23,7 +23,7 @@ super(feedName, group, definition, s); } - public boolean generate(FeedsDescriptor fd) { + public boolean generate(FeedsDescriptor fd) { String feedName = getFeedName(); String feedType = getFeedType(); Node definition = getDefinition(); |
Author: wrzep Date: 2006-05-25 12:40:27 -0400 (Thu, 25 May 2006) New Revision: 4426 Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusConfWatcher.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java Log: JBLAB-599 Pawel Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -24,6 +24,7 @@ import java.sql.Timestamp; import java.util.ArrayList; +import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -72,6 +73,8 @@ /** Projects present in the Status Matrix */ private Projects projects; + private List<PluginConf> pluginsConf; + private Timestamp timestamp; private Logger log; @@ -88,7 +91,7 @@ // Get configuration projects = ProjectsHelper.getProjects(portalName); - List<PluginConf> pluginsConf = getPluginsConfList(pluginsRoot); + pluginsConf = getPluginsConfList(pluginsRoot); ServiceConf serviceConf = new ServiceConfImpl(serviceNode); ScoresManagerSync.init(portalName, serviceConf); @@ -206,11 +209,43 @@ return colMap; } + + /** + * @return true iff updated scores are available + */ public boolean needsUpdate() { - PluginsValues pluginsValues = ScoresManager.getScores(timestamp); + PluginsValues pluginsValues; + try { + pluginsValues = ScoresManager.getScores(timestamp); + } catch (GetScoresException e) { + log.warn("Resending \"get\" request failed.", e); + return false; + } + if (pluginsValues == null) { + + Calendar tsCal = Calendar.getInstance(); + tsCal.setTime(timestamp); + Calendar now = Calendar.getInstance(); + + if (tsCal.get(Calendar.DAY_OF_MONTH) != + now.get(Calendar.DAY_OF_MONTH)) { + + try { + ScoresManager.save(projects, pluginsConf); + //TODO *Maybe* get rid of "save", have only "get" + // and service performing "save" on it's own + // (after necessary init)? + timestamp = ScoresManager.requestCurrentScores(); + } catch (ScoresSaveException e) { + log.warn("Sending \"save\" request failed.", e); + } catch (GetScoresException e) { + log.warn("Sending \"get\" request failed.", e); + } + } + return false; } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusConfWatcher.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusConfWatcher.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusConfWatcher.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -70,6 +70,7 @@ } @Override + /* Called to check if updated scores are available. */ public void update(String key, StatusDescriptor desc) { desc.update(); } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -107,10 +107,10 @@ } } - private static void handleRequest(GetScoresRequest getScoresRequest) { + private static void handleRequest(GetScoresRequest request) { - Calendar cal = getScoresRequest.getCalendar(); - Timestamp timestamp = getScoresRequest.getTimestamp(); + Calendar cal = request.getCalendar(); + Timestamp timestamp = request.getTimestamp(); PluginsValues pluginsValues = null; try { @@ -121,7 +121,7 @@ } GetScoresResponse response = - new GetScoresResponseImpl(pluginsValues, timestamp); + new GetScoresResponseImpl(pluginsValues, request); RecordManager.add(timestamp, response); } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -164,14 +164,14 @@ public PluginsValuesImpl getPluginsValues(String portalName, Calendar cal) throws GetScoresException { - log.info("Returning plugins values..."); + String key = getNodeName(cal); + log.info("Returning plugins values (" + key + ") ..."); // null date means today if (cal == null) { cal = Calendar.getInstance(); } - String key = getNodeName(cal); PluginsValuesImpl v = values.get(key); if (v == null) { // Not in cache => get value and store it @@ -181,7 +181,8 @@ Directory dir; try { - dir = rootDir.getDirectory(Locations.getShotokuStatusPath(portalName)); + dir = rootDir.getDirectory(Locations. + getShotokuStatusPath(portalName)); } catch (RepositoryException e) { throw new GetScoresException(e); } catch (ResourceDoesNotExist e) { Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -22,7 +22,7 @@ package org.jboss.forge.status.service.impl.protocol; -import java.sql.Timestamp; +import org.jboss.forge.status.service.protocol.GetScoresRequest; import org.jboss.forge.status.service.protocol.GetScoresResponse; import org.jboss.forge.status.service.protocol.PluginsValues; @@ -34,23 +34,21 @@ private static final long serialVersionUID = 7844595317056960170L; private PluginsValues pluginsValues; - private Timestamp timestamp; + private GetScoresRequest request; public GetScoresResponseImpl(PluginsValues pluginsValues, - Timestamp timestamp) { + GetScoresRequest request) { this.pluginsValues = pluginsValues; - this.timestamp = timestamp; + this.request = request; } public PluginsValues getPluginsValues() { return pluginsValues; } - - public Timestamp getTimestamp() { - return timestamp; - } - + public GetScoresRequest getRequest() { + return request; + } } \ No newline at end of file Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -23,15 +23,14 @@ package org.jboss.forge.status.service.protocol; import java.io.Serializable; -import java.sql.Timestamp; /** * @author Pawel Wrzeszcz */ public interface GetScoresResponse extends Serializable { - - public Timestamp getTimestamp(); public PluginsValues getPluginsValues(); + + public GetScoresRequest getRequest(); } \ No newline at end of file Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -30,8 +30,9 @@ for (int i = 0; i < buff.size (); i++) { GetScoresResponse resp = buff.get(i); + Timestamp ts = resp.getRequest().getTimestamp(); - if (resp.getTimestamp().equals(sent)) { + if (ts.equals(sent)) { buff.remove(i); return resp; Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java 2006-05-25 13:54:15 UTC (rev 4425) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java 2006-05-25 16:40:27 UTC (rev 4426) @@ -101,27 +101,6 @@ } return timestamp; - /* - int attempts = 0; - - for (;;) { - - pluginsValues = RecordManager.get(timestamp); - - System.out.println("attempt: " + pluginsValues); - - if ((pluginsValues != null) || - ((attempts++) == Constants.MAX_ATTEMPTS)) { - break; - } - - try { - Thread.sleep(Constants.SLEEP_TIME); - } catch (InterruptedException e) { - throw new GetScoresException(e); - } - } - */ } public static Timestamp requestCurrentScores() @@ -132,7 +111,8 @@ return requestScores(cal); } - public static PluginsValues getScores(Timestamp timestamp) { + public static PluginsValues getScores(Timestamp timestamp) + throws GetScoresException { GetScoresResponse response = RecordManager.get(timestamp); @@ -143,7 +123,18 @@ return null; } - return response.getPluginsValues(); //TODO null here => retry + PluginsValues pluginsValues = response.getPluginsValues(); + + if (pluginsValues == null) { + try { + sendMessage(Constants.GET_SCORES_MESSAGE, + response.getRequest()); + } catch (Exception e) { + throw new GetScoresException(e); + } + } + + return pluginsValues; } public static PluginsValues getLatestScores() |
Author: wrzep Date: 2006-05-25 09:54:15 -0400 (Thu, 25 May 2006) New Revision: 4425 Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java Removed: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/TimestampedScore.java Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java Log: JBLAB-599 Pawel Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2006-05-25 10:37:53 UTC (rev 4424) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/StatusDescriptor.java 2006-05-25 13:54:15 UTC (rev 4425) @@ -50,6 +50,8 @@ private Status status; + int updateCounter = 0; // temp update interval workaround + public StatusDescriptor(String portalName, ContentManager cm) { try { @@ -107,6 +109,12 @@ public void update() { + if (++updateCounter < 6) { // temp update interval workaround + return; + } else { + updateCounter = 0; + } + if (status.needsUpdate()) { fillContext(); } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java 2006-05-25 10:37:53 UTC (rev 4424) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java 2006-05-25 13:54:15 UTC (rev 4425) @@ -38,7 +38,9 @@ import org.jboss.forge.status.common.Constants; import org.jboss.forge.status.exceptions.GetScoresException; import org.jboss.forge.status.exceptions.ScoresSaveException; +import org.jboss.forge.status.service.impl.protocol.GetScoresResponseImpl; import org.jboss.forge.status.service.protocol.GetScoresRequest; +import org.jboss.forge.status.service.protocol.GetScoresResponse; import org.jboss.forge.status.service.protocol.PluginConf; import org.jboss.forge.status.service.protocol.PluginsValues; import org.jboss.forge.status.service.protocol.SaveRequest; @@ -115,10 +117,13 @@ pluginsValues = ScoresManagerSync.getScores(cal); } catch (GetScoresException e) { log.error(e); //TODO - return; //?? + // If something is wrong, response will contain null pluginsValues } - RecordManager.add(timestamp, pluginsValues); + GetScoresResponse response = + new GetScoresResponseImpl(pluginsValues, timestamp); + + RecordManager.add(timestamp, response); } Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java 2006-05-25 10:37:53 UTC (rev 4424) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/protocol/GetScoresResponseImpl.java 2006-05-25 13:54:15 UTC (rev 4425) @@ -0,0 +1,56 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.jboss.forge.status.service.impl.protocol; + +import java.sql.Timestamp; +import org.jboss.forge.status.service.protocol.GetScoresResponse; +import org.jboss.forge.status.service.protocol.PluginsValues; + +/** +* @author Pawel Wrzeszcz +*/ +public class GetScoresResponseImpl implements GetScoresResponse { + + private static final long serialVersionUID = 7844595317056960170L; + + private PluginsValues pluginsValues; + private Timestamp timestamp; + + public GetScoresResponseImpl(PluginsValues pluginsValues, + Timestamp timestamp) { + + this.pluginsValues = pluginsValues; + this.timestamp = timestamp; + } + + public PluginsValues getPluginsValues() { + return pluginsValues; + } + + public Timestamp getTimestamp() { + return timestamp; + } + + + +} \ No newline at end of file Added: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java 2006-05-25 10:37:53 UTC (rev 4424) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/protocol/GetScoresResponse.java 2006-05-25 13:54:15 UTC (rev 4425) @@ -0,0 +1,37 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ + +package org.jboss.forge.status.service.protocol; + +import java.io.Serializable; +import java.sql.Timestamp; + +/** +* @author Pawel Wrzeszcz +*/ +public interface GetScoresResponse extends Serializable { + + public Timestamp getTimestamp(); + + public PluginsValues getPluginsValues(); + +} \ No newline at end of file Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java 2006-05-25 10:37:53 UTC (rev 4424) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java 2006-05-25 13:54:15 UTC (rev 4425) @@ -3,38 +3,38 @@ import java.sql.Timestamp; import java.util.ArrayList; -import org.jboss.forge.status.service.protocol.PluginsValues; +import org.jboss.forge.status.service.protocol.GetScoresResponse; /** * @author Pawel Wrzeszcz */ public class RecordManager { - private static ArrayList<TimestampedScore> buff = - new ArrayList<TimestampedScore> (); + private static ArrayList<GetScoresResponse> buff = + new ArrayList<GetScoresResponse> (); private static int maxSize = 100; - public static void add (Timestamp sent, PluginsValues pluginsValues) { + public static void add (Timestamp sent, GetScoresResponse response) { // Remove the earliest item if the cache is full if (buff.size () > maxSize) { buff.remove (0); } - buff.add(new TimestampedScore(sent, pluginsValues)); + buff.add(response); } - public static PluginsValues get(Timestamp sent) { + public static GetScoresResponse get(Timestamp sent) { for (int i = 0; i < buff.size (); i++) { - TimestampedScore ts = buff.get(i); + GetScoresResponse resp = buff.get(i); - if (ts.getTimestamp().equals(sent)) { + if (resp.getTimestamp().equals(sent)) { buff.remove(i); - return ts.getPluginsValues(); + return resp; } } return null; Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java 2006-05-25 10:37:53 UTC (rev 4424) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/ScoresManager.java 2006-05-25 13:54:15 UTC (rev 4425) @@ -45,6 +45,7 @@ import org.jboss.forge.status.service.impl.protocol.GetScoresRequestImpl; import org.jboss.forge.status.service.impl.protocol.SaveRequestImpl; import org.jboss.forge.status.service.protocol.GetScoresRequest; +import org.jboss.forge.status.service.protocol.GetScoresResponse; import org.jboss.forge.status.service.protocol.PluginConf; import org.jboss.forge.status.service.protocol.PluginsValues; import org.jboss.forge.status.service.protocol.SaveRequest; @@ -134,11 +135,15 @@ public static PluginsValues getScores(Timestamp timestamp) { - PluginsValues pluginsValues = RecordManager.get(timestamp); + GetScoresResponse response = RecordManager.get(timestamp); System.out.println("attempt"); - return pluginsValues; + if (response == null) { + return null; + } + + return response.getPluginsValues(); //TODO null here => retry } public static PluginsValues getLatestScores() Deleted: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/TimestampedScore.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/TimestampedScore.java 2006-05-25 10:37:53 UTC (rev 4424) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/TimestampedScore.java 2006-05-25 13:54:15 UTC (rev 4425) @@ -1,30 +0,0 @@ -package org.jboss.forge.status.tools; - -import java.sql.Timestamp; - -import org.jboss.forge.status.service.protocol.PluginsValues; - -/** - * @author Pawel Wrzeszcz - */ -public class TimestampedScore { - - private Timestamp timestamp; - private PluginsValues pluginsValues; - - public TimestampedScore(Timestamp timestamp, PluginsValues pluginsValues) { - - this.timestamp = timestamp; - this.pluginsValues = pluginsValues; - } - - public Timestamp getTimestamp() { - return timestamp; - } - - public PluginsValues getPluginsValues() { - return pluginsValues; - } - - -} |
From: <jbo...@li...> - 2006-05-25 10:37:59
|
Author: mar...@jb... Date: 2006-05-25 06:37:53 -0400 (Thu, 25 May 2006) New Revision: 4424 Modified: labs/jbossrules/trunk/pom.xml Log: -bad xml Modified: labs/jbossrules/trunk/pom.xml =================================================================== --- labs/jbossrules/trunk/pom.xml 2006-05-25 09:20:31 UTC (rev 4423) +++ labs/jbossrules/trunk/pom.xml 2006-05-25 10:37:53 UTC (rev 4424) @@ -15,20 +15,21 @@ <system>continuum</system> <url>http://ci.codehaus.org:8001/continuum/servlet/continuum/target/Summary.vm/fid/continuumProject</url> <notifiers> - <type>mail</type> - <configuration> - <address>de...@dr...</address> - </configuration> + <notifier> + <type>mail</type> + <configuration> + <address>de...@dr...</address> + </configuration> </notifier> - <notifier> - <type>irc</type> - <configuration> - <host>irc.codehaus.org</host> - <port>6667</port> - <channel>#drools</channel> - </configuration> - </notifier> + <notifier> + <type>irc</type> + <configuration> + <host>irc.codehaus.org</host> + <port>6667</port> + <channel>#drools</channel> + </configuration> + </notifier> </notifiers> </ciManagement> @@ -69,8 +70,8 @@ <roles> <role>Project Lead</role> </roles> - <timezone>0</timezone> - <organization>JBoss Inc.</organization> + <timezone>0</timezone> + <organization>JBoss Inc.</organization> </developer> <developer> @@ -80,8 +81,8 @@ <roles> <role>Developer</role> </roles> - <timezone>+10</timezone> - <organization>JBoss Inc.</organization> + <timezone>+10</timezone> + <organization>JBoss Inc.</organization> </developer> <developer> @@ -146,16 +147,16 @@ <url>file://${basedir}/repository</url> </repository> - <repository> - <id>Maven Snapshots</id> - <url>http://snapshots.maven.codehaus.org/maven2/</url> - <snapshots> - <enabled>true</enabled> - </snapshots> - <releases> - <enabled>false</enabled> - </releases> - </repository> + <repository> + <id>Maven Snapshots</id> + <url>http://snapshots.maven.codehaus.org/maven2/</url> + <snapshots> + <enabled>true</enabled> + </snapshots> + <releases> + <enabled>false</enabled> + </releases> + </repository> </repositories> <dependencies> @@ -174,17 +175,17 @@ <artifactId>maven-clover-plugin</artifactId> </plugin--> - <plugin> - <artifactId>maven-javadoc-plugin</artifactId> - </plugin> - <plugin> - <groupId>org.codehaus.mojo</groupId> - <artifactId>jxr-maven-plugin</artifactId> - </plugin> - + <plugin> + <artifactId>maven-javadoc-plugin</artifactId> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jxr-maven-plugin</artifactId> + </plugin> + <plugin> <artifactId>maven-surefire-plugin</artifactId> - </plugin> + </plugin> </plugins> </reporting> @@ -249,7 +250,7 @@ <module>drools-core</module> <module>drools-compiler</module> <module>drools-jsr94</module> - <module>drools-decisiontables</module> + <module>drools-decisiontables</module> </modules> |
From: <jbo...@li...> - 2006-05-25 09:20:38
|
Author: mar...@jb... Date: 2006-05-25 05:20:31 -0400 (Thu, 25 May 2006) New Revision: 4423 Modified: labs/jbossrules/trunk/drools-compiler/pom.xml labs/jbossrules/trunk/drools-core/pom.xml labs/jbossrules/trunk/drools-decisiontables/pom.xml labs/jbossrules/trunk/drools-jsr94/pom.xml labs/jbossrules/trunk/pom.xml Log: -updated pom versions to 3.0 Modified: labs/jbossrules/trunk/drools-compiler/pom.xml =================================================================== --- labs/jbossrules/trunk/drools-compiler/pom.xml 2006-05-25 08:52:18 UTC (rev 4422) +++ labs/jbossrules/trunk/drools-compiler/pom.xml 2006-05-25 09:20:31 UTC (rev 4423) @@ -2,7 +2,7 @@ <parent> <artifactId>drools</artifactId> <groupId>org.drools</groupId> - <version>3.0-RC-3</version> + <version>3.0</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -10,7 +10,7 @@ <artifactId>drools-compiler</artifactId> <name>Drools :: Compiler</name> - <version>3.0-RC-3</version> + <version>3.0</version> <repositories> <repository> Modified: labs/jbossrules/trunk/drools-core/pom.xml =================================================================== --- labs/jbossrules/trunk/drools-core/pom.xml 2006-05-25 08:52:18 UTC (rev 4422) +++ labs/jbossrules/trunk/drools-core/pom.xml 2006-05-25 09:20:31 UTC (rev 4423) @@ -2,7 +2,7 @@ <parent> <artifactId>drools</artifactId> <groupId>org.drools</groupId> - <version>3.0-RC-3</version> + <version>3.0</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -10,8 +10,8 @@ <artifactId>drools-core</artifactId> <name>Drools :: Rete-OO Core</name> - <version>3.0-RC-3</version> - + <version>3.0</version> + <repositories> <repository> <id>basedir</id> Modified: labs/jbossrules/trunk/drools-decisiontables/pom.xml =================================================================== --- labs/jbossrules/trunk/drools-decisiontables/pom.xml 2006-05-25 08:52:18 UTC (rev 4422) +++ labs/jbossrules/trunk/drools-decisiontables/pom.xml 2006-05-25 09:20:31 UTC (rev 4423) @@ -2,7 +2,7 @@ <parent> <artifactId>drools</artifactId> <groupId>org.drools</groupId> - <version>3.0-RC-3</version> + <version>3.0</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -10,7 +10,7 @@ <artifactId>drools-decisiontables</artifactId> <name>Drools :: Decision Tables</name> - <version>3.0-RC-3</version> + <version>3.0</version> <repositories> <repository> Modified: labs/jbossrules/trunk/drools-jsr94/pom.xml =================================================================== --- labs/jbossrules/trunk/drools-jsr94/pom.xml 2006-05-25 08:52:18 UTC (rev 4422) +++ labs/jbossrules/trunk/drools-jsr94/pom.xml 2006-05-25 09:20:31 UTC (rev 4423) @@ -2,7 +2,7 @@ <parent> <artifactId>drools</artifactId> <groupId>org.drools</groupId> - <version>3.0-RC-3</version> + <version>3.0</version> </parent> <modelVersion>4.0.0</modelVersion> @@ -10,7 +10,7 @@ <artifactId>drools-jsr94</artifactId> <name>Drools :: JSR-94 API Module</name> - <version>3.0-RC-3</version> + <version>3.0</version> <repositories> <repository> Modified: labs/jbossrules/trunk/pom.xml =================================================================== --- labs/jbossrules/trunk/pom.xml 2006-05-25 08:52:18 UTC (rev 4422) +++ labs/jbossrules/trunk/pom.xml 2006-05-25 09:20:31 UTC (rev 4423) @@ -4,7 +4,7 @@ <artifactId>drools</artifactId> <packaging>pom</packaging> <name>Drools</name> - <version>3.0-RC-3</version> + <version>3.0</version> <issueManagement> <system>jira</system> @@ -15,14 +15,20 @@ <system>continuum</system> <url>http://ci.codehaus.org:8001/continuum/servlet/continuum/target/Summary.vm/fid/continuumProject</url> <notifiers> - <notifier> - <type>mail</type> - <address>de...@dr...</address> + <type>mail</type> + <configuration> + <address>de...@dr...</address> + </configuration> </notifier> - <notifier> - <type>irc</type> - <address>irc.codehaus.org:6667#drools</address> - </notifier> + + <notifier> + <type>irc</type> + <configuration> + <host>irc.codehaus.org</host> + <port>6667</port> + <channel>#drools</channel> + </configuration> + </notifier> </notifiers> </ciManagement> |
From: <jbo...@li...> - 2006-05-25 08:52:22
|
Author: mar...@jb... Date: 2006-05-25 04:52:18 -0400 (Thu, 25 May 2006) New Revision: 4422 Modified: labs/jbossrules/trunk/pom.xml Log: -Added new notifiers to pom.xml Modified: labs/jbossrules/trunk/pom.xml =================================================================== --- labs/jbossrules/trunk/pom.xml 2006-05-25 06:52:10 UTC (rev 4421) +++ labs/jbossrules/trunk/pom.xml 2006-05-25 08:52:18 UTC (rev 4422) @@ -13,10 +13,16 @@ <ciManagement> <system>continuum</system> + <url>http://ci.codehaus.org:8001/continuum/servlet/continuum/target/Summary.vm/fid/continuumProject</url> <notifiers> <notifier> + <type>mail</type> <address>de...@dr...</address> </notifier> + <notifier> + <type>irc</type> + <address>irc.codehaus.org:6667#drools</address> + </notifier> </notifiers> </ciManagement> @@ -52,7 +58,7 @@ <developers> <developer> <name>Mark Proctor</name> - <id>5</id> + <id>mark</id> <email>mar...@jb...</email> <roles> <role>Project Lead</role> @@ -63,7 +69,7 @@ <developer> <name>Michael Neale</name> - <id>5</id> + <id>mic</id> <email>mic...@gm...</email> <roles> <role>Developer</role> @@ -71,6 +77,17 @@ <timezone>+10</timezone> <organization>JBoss Inc.</organization> </developer> + + <developer> + <name>Kris Verlaenen</name> + <id>kris</id> + <email>kri...@gm...</email> + <organization>JBoss Inc.</organization> + <roles> + <role>Developer</role> + </roles> + <timezone>+1</timezone> + </developer> <developer> <name>Bob McWhirter</name> @@ -80,6 +97,7 @@ <roles> <role>Founder</role> </roles> + <timezone>-5</timezone> </developer> |
From: <jbo...@li...> - 2006-05-25 06:52:15
|
Author: soh...@jb... Date: 2006-05-25 02:52:10 -0400 (Thu, 25 May 2006) New Revision: 4421 Added: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/PreferenceController.java labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/pref/ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/pref/index.xhtml Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/Constants.java labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/PortalUtil.java labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewForum.java labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewSummary.java labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewTopic.java labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/classes/ResourceJSF.properties labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/portlet.xml labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/index.xhtml Log: http://jira.jboss.com/jira/browse/JBFORUMS-49 - Manage User Preferences Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/Constants.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/Constants.java 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/Constants.java 2006-05-25 06:52:10 UTC (rev 4421) @@ -56,6 +56,18 @@ public static final String p_page = "page"; //other constants------------------------------------------------------------------------------------------------------------------------------- public static final String QUOTE = "quote"; + public static final String NOTIFY_REPLY_KEY = "notifyreply"; + public static final String ALLOW_HTML_KEY = "allowhtml"; + public static final String POST_ORDER_KEY = "postorder"; + public static final String DATE_FORMAT_KEY = "dateformat"; + public static final String ALWAYS_SIG_KEY = "alwaysaddsignature"; + public static final String SIG_KEY = "signature"; + public static final String SUMMARY_MODE_KEY = "summarymode"; + public static final String SUMMARY_LIMIT_KEY = "summarytopiclimit"; + public static final String SUMMARY_DAYS_KEY = "summarytopicdays"; + public static final String SUMMARY_REPLIES_KEY = "summarytopicreplies"; + public static final String TOPICS_FORUM_KEY = "topicsperforum"; + public static final String POSTS_TOPIC_KEY = "postspertopic"; /** * DOCUMENT_ME Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/PortalUtil.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/PortalUtil.java 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/PortalUtil.java 2006-05-25 06:52:10 UTC (rev 4421) @@ -23,6 +23,7 @@ import java.util.Date; +import java.util.Iterator; import java.net.URLEncoder; @@ -162,6 +163,30 @@ return preference; } + + /** + * + * + */ + public static void setPreferences(Map preferences) throws Exception + { + Object o = FacesContext.getCurrentInstance().getExternalContext().getRequest(); + if (!JSFUtil.isAnonymous() && o instanceof PortletRequest) + { + PortletRequest request = (PortletRequest) o; + PortletPreferences pp = request.getPreferences(); + for(Iterator itr=preferences.keySet().iterator();itr.hasNext();) + { + String preferenceKey = (String)itr.next(); + String value = (String)preferences.get(preferenceKey); + if(!pp.isReadOnly(preferenceKey)) + { + pp.setValue(preferenceKey,value); + } + } + pp.store(); + } + } /** * Get a <code>SimpleDateFormat</code> object from the session. The object is stored Added: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/PreferenceController.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/PreferenceController.java 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/PreferenceController.java 2006-05-25 06:52:10 UTC (rev 4421) @@ -0,0 +1,407 @@ +/* +* JBoss, Home of Professional Open Source +* Copyright 2005, JBoss Inc., and individual contributors as indicated +* by the @authors tag. See the copyright.txt in the distribution for a +* full listing of individual contributors. +* +* This is free software; you can redistribute it and/or modify it +* under the terms of the GNU Lesser General Public License as +* published by the Free Software Foundation; either version 2.1 of +* the License, or (at your option) any later version. +* +* This software is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this software; if not, write to the Free +* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +* 02110-1301 USA, or see the FSF site: http://www.fsf.org. +*/ +package org.jboss.portlet.forums.ui.action; + +import java.text.SimpleDateFormat; +import java.util.Map; +import java.util.HashMap; +import java.util.Date; + +import org.jboss.portlet.forums.ui.Constants; +import org.jboss.portlet.forums.ui.JSFUtil; +import org.jboss.portlet.forums.ui.PortalUtil; + +/* + * Created on May 24, 2006 + * + * @author <a href="mailto:soh...@jb...">Sohil Shah</a> + */ +public class PreferenceController extends ActionController +{ + /** + * data associated with "notify on reply" + * the default value of this is setup using the managed-property value in the faces config file + */ + private boolean notifyOnReply = false; + + /** + * data associated with "always allow html" + * the default value of this is setup using the managed-property value in the faces config file + */ + private boolean alwaysAllowHtml = false; + + /** + * data associated with "post order" + * the default value of this is setup using the managed-property value in the faces config file + */ + private String postOrder = null; + + /** + * data associated with "date format" + * the default value of this is setup using the managed-property value in the faces config file + */ + private String dateFormat = null; + + /** + * data associated with "always add signature" + * the default value of this is setup using the managed-property value in the faces config file + */ + private boolean alwaysAddSignature = false; + + /** + * data associated with "signature" + */ + private String signature = null; + + /** + * summary related preferences + */ + private int summaryMode = 0; + private int summaryTopicLimit = 0; + private int summaryTopicDays = 0; + private int summaryTopicReplies = 0; + + + /** + * topic related preferences + */ + private int postsPerTopic = 0; + + /** + * forum related preferences + * + */ + private int topicsPerForum = 0; + + /** + * business data + * + */ + private Map defaultPreferences = null; + + //------accessors------------------------------------------------------------------------------------------------------------------------------- + /** + * + */ + public boolean isNotifyOnReply() + { + return this.notifyOnReply; + } + /** + * + * + */ + public void setNotifyOnReply(boolean notifyOnReply) + { + this.notifyOnReply = notifyOnReply; + } + /** + * @return Returns the alwaysAllowHtml. + */ + public boolean isAlwaysAllowHtml() + { + return alwaysAllowHtml; + } + /** + * @param alwaysAllowHtml The alwaysAllowHtml to set. + */ + public void setAlwaysAllowHtml(boolean alwaysAllowHtml) + { + this.alwaysAllowHtml = alwaysAllowHtml; + } + /** + * @return Returns the postOrder. + */ + public String getPostOrder() + { + return postOrder; + } + /** + * @param postOrder The postOrder to set. + */ + public void setPostOrder(String postOrder) + { + this.postOrder = postOrder; + } + /** + * @return Returns the dateFormat. + */ + public String getDateFormat() + { + return dateFormat; + } + /** + * @param dateFormat The dateFormat to set. + */ + public void setDateFormat(String dateFormat) + { + try + { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat); + simpleDateFormat.format(new Date()); + } + catch(Exception e) + { + this.dateFormat = this.getPreference(Constants.DATE_FORMAT_KEY); + return; //don't modify with the submitted dateFormat + } + + //if I get here, the input date format is fine + this.dateFormat = dateFormat; + } + /** + * @return Returns the alwaysAddSignature. + */ + public boolean isAlwaysAddSignature() + { + return alwaysAddSignature; + } + /** + * @param alwaysAddSignature The alwaysAddSignature to set. + */ + public void setAlwaysAddSignature(boolean alwaysAddSignature) + { + this.alwaysAddSignature = alwaysAddSignature; + } + /** + * @return Returns the signature. + */ + public String getSignature() + { + return signature; + } + /** + * @param signature The signature to set. + */ + public void setSignature(String signature) + { + this.signature = signature; + } + + /** + * + * + */ + public int getSummaryMode() + { + return this.summaryMode; + } + /** + * + * @param summaryMode + */ + public void setSummaryMode(int summaryMode) + { + this.summaryMode = summaryMode; + } + /** + * + * + */ + public int getSummaryTopicLimit() + { + return this.summaryTopicLimit; + } + /** + * + * @param summaryTopicLimit + */ + public void setSummaryTopicLimit(int summaryTopicLimit) + { + this.summaryTopicLimit = summaryTopicLimit; + } + + /** + * + * + */ + public int getSummaryTopicDays() + { + return this.summaryTopicDays; + } + /** + * + * @param summaryTopicDays + */ + public void setSummaryTopicDays(int summaryTopicDays) + { + this.summaryTopicDays = summaryTopicDays; + } + + /** + * + * + */ + public int getSummaryTopicReplies() + { + return this.summaryTopicReplies; + } + + /** + * + * @param summaryTopicReplies + */ + public void setSummaryTopicReplies(int summaryTopicReplies) + { + this.summaryTopicReplies = summaryTopicReplies; + } + + + + /** + * @return Returns the postsPerTopic. + */ + public int getPostsPerTopic() + { + return postsPerTopic; + } + /** + * @param postsPerTopic The postsPerTopic to set. + */ + public void setPostsPerTopic(int postsPerTopic) + { + this.postsPerTopic = postsPerTopic; + } + /** + * @return Returns the topicsPerForum. + */ + public int getTopicsPerForum() + { + return topicsPerForum; + } + /** + * @param topicsPerForum The topicsPerForum to set. + */ + public void setTopicsPerForum(int topicsPerForum) + { + this.topicsPerForum = topicsPerForum; + } + + /** + * + * + */ + public Map getDefaultPreferences() + { + return this.defaultPreferences; + } + + /** + * + * + */ + public void setDefaultPreferences(Map defaultPreferences) + { + this.defaultPreferences = defaultPreferences; + } + //-------cleanup------------------------------------------------------------------------------------------------------------------------------- + public void cleanup() + { + } + //--------------------------------------------------------------------------------------------------------------------------------------------- + /** + * + * + */ + public PreferenceController() + { + super(); + } + + /** + * + * + */ + public boolean isInitialized() + { + boolean initialized = true; + + this.notifyOnReply = Boolean.valueOf(this.getPreference(Constants.NOTIFY_REPLY_KEY)).booleanValue(); + this.alwaysAllowHtml = Boolean.valueOf(this.getPreference(Constants.ALLOW_HTML_KEY)).booleanValue(); + this.alwaysAddSignature = Boolean.valueOf(this.getPreference(Constants.ALWAYS_SIG_KEY)).booleanValue(); + this.signature = this.getPreference(Constants.SIG_KEY); + this.dateFormat = this.getPreference(Constants.DATE_FORMAT_KEY); + this.postOrder = this.getPreference(Constants.POST_ORDER_KEY); + + this.summaryMode = Integer.parseInt(this.getPreference(Constants.SUMMARY_MODE_KEY)); + this.summaryTopicDays = Integer.parseInt(this.getPreference(Constants.SUMMARY_DAYS_KEY)); + this.summaryTopicLimit = Integer.parseInt(this.getPreference(Constants.SUMMARY_LIMIT_KEY)); + this.summaryTopicReplies = Integer.parseInt(this.getPreference(Constants.SUMMARY_REPLIES_KEY)); + + this.postsPerTopic = Integer.parseInt(this.getPreference(Constants.POSTS_TOPIC_KEY)); + this.topicsPerForum = Integer.parseInt(this.getPreference(Constants.TOPICS_FORUM_KEY)); + + return initialized; + } + + /** + * + * + */ + public String getPreference(String preferenceKey) + { + String preference = null; + + preference = (String)this.defaultPreferences.get(preferenceKey); + + //override the default preference with the logged in user's specified preference + String storedPreference = PortalUtil.getPreference(preferenceKey); + if(storedPreference!=null && storedPreference.trim().length()>0) + { + preference = storedPreference; + } + + return preference; + } + + //----------action----------------------------------------------------------------------------------------------------------------------------- + public String execute() + { + String navState = null; + try + { + Map updated = new HashMap(); + + updated.put(Constants.NOTIFY_REPLY_KEY,String.valueOf(this.notifyOnReply)); + updated.put(Constants.ALLOW_HTML_KEY,String.valueOf(this.alwaysAllowHtml)); + updated.put(Constants.ALWAYS_SIG_KEY,String.valueOf(this.alwaysAddSignature)); + updated.put(Constants.SIG_KEY,this.signature); + updated.put(Constants.POST_ORDER_KEY,this.postOrder); + updated.put(Constants.DATE_FORMAT_KEY,this.dateFormat); + updated.put(Constants.SUMMARY_MODE_KEY,String.valueOf(this.summaryMode)); + updated.put(Constants.SUMMARY_LIMIT_KEY,String.valueOf(this.summaryTopicLimit)); + updated.put(Constants.SUMMARY_DAYS_KEY,String.valueOf(this.summaryTopicDays)); + updated.put(Constants.SUMMARY_REPLIES_KEY,String.valueOf(this.summaryTopicReplies)); + updated.put(Constants.POSTS_TOPIC_KEY,String.valueOf(this.postsPerTopic)); + updated.put(Constants.TOPICS_FORUM_KEY,String.valueOf(this.topicsPerForum)); + + PortalUtil.setPreferences(updated); + + navState = Constants.SUCCESS; + } + catch(Exception e) + { + JSFUtil.handleException(e); + } + return navState; + } +} Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewForum.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewForum.java 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewForum.java 2006-05-25 06:52:10 UTC (rev 4421) @@ -35,6 +35,7 @@ import org.jboss.portlet.forums.ui.JSFUtil; import org.jboss.portlet.forums.ui.ForumUtil; import org.jboss.portlet.forums.ui.PortalUtil; +import org.jboss.portlet.forums.ui.action.PreferenceController; //jsf imports @@ -46,12 +47,9 @@ public class ViewForum extends BaseController { //preference related data - private int topicsPerForum = 0; //feed in the topicsPerForum value as a managed property - private String topicsPerForumKey = null; //feed in the topicsPerForum preference key as managed property + private PreferenceController userPreferences = null; + - //managed bean reference injection - private ViewTopic topicBean = null; //used to extract the posts per topic user preference for now - //business data being generated in this bean by executing ui actions //this is data is created such that it can be consumed by the view components //like facelets @@ -67,17 +65,7 @@ public Forum getForum() { return this.forum; - } - - /** - * - * - */ - public void setTopicBean(ViewTopic topicBean) - { - this.topicBean = topicBean; - } - + } //page navigation related methods on this bean-------------------------------------------------------------------------------------------- /** * @@ -216,47 +204,19 @@ } //------------user preferences------------------------------------------------------------------------------------------------------------- /** - * @return Returns the topicsPerForum. + * @return Returns the userPreferences. */ - public int getTopicsPerForum() + public PreferenceController getUserPreferences() { - return topicsPerForum; + return userPreferences; } /** - * @param topicsPerForum The topicsPerForum to set. + * @param userPreferences The userPreferences to set. */ - public void setTopicsPerForum(int topicsPerForum) + public void setUserPreferences(PreferenceController userPreferences) { - this.topicsPerForum = topicsPerForum; - - //get the user's preferred pageSize for viewing a forum and its list of topics, - //instead of using the default page size - String userPreference = PortalUtil.getPreference(this.topicsPerForumKey); - if(userPreference!=null && userPreference.trim().length()>0) - { - int cour = 0; - try{cour = Integer.parseInt(userPreference);}catch(NumberFormatException nfe){} - if(cour>0) - { - this.topicsPerForum = cour; //here override the default page size with the user's preference - } - } - } - - /** - * @return Returns the topicsPerForumKey. - */ - public String getTopicsPerForumKey() - { - return topicsPerForumKey; - } - /** - * @param topicsPerForumKey The topicsPerForumKey to set. - */ - public void setTopicsPerForumKey(String topicsPerForumKey) - { - this.topicsPerForumKey = topicsPerForumKey; - } + this.userPreferences = userPreferences; + } //------------------------------------------------------------------------------------------------------------------------------------- /** * @@ -326,7 +286,7 @@ //setup the pageNavigator for this forum this.pageNavigator = new PageNavigator( topicObjects, //total number of entries to be split up into pages - this.topicsPerForum, + Integer.parseInt(this.userPreferences.getPreference(Constants.TOPICS_FORUM_KEY)), 0 //currently selected page being displayed, first page by default ); @@ -346,7 +306,7 @@ if(posts!=null && !posts.isEmpty()) { PageNavigator topicNav = new PageNavigator(posts.toArray(), - this.topicBean.getPostsPerTopic(), //this is user's posts per page preference + Integer.parseInt(this.userPreferences.getPreference(Constants.POSTS_TOPIC_KEY)), //this is user's posts per page preference 0 //current page of the navigator ); this.topicNavigator.put(cour.getId(),topicNav); Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewSummary.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewSummary.java 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewSummary.java 2006-05-25 06:52:10 UTC (rev 4421) @@ -31,6 +31,8 @@ import org.jboss.portlet.forums.ui.JSFUtil; import org.jboss.portlet.forums.ui.PortalUtil; +import org.jboss.portlet.forums.ui.action.PreferenceController; + //jsf imports @@ -39,17 +41,9 @@ * */ public class ViewSummary extends BaseController -{ - //user preferences for this controller, //initially supplied by the forums-config.xml for default values - //but these values are then stored in the database and is different for different users - private int summaryMode = 0; - private int summaryTopicLimit = 0; - private int summaryTopicDays = 0; - private int summaryTopicReplies = 0; - private String summaryModeKey = null; - private String summaryTopicLimitKey = null; - private String summaryTopicDaysKey = null; - private String summaryTopicRepliesKey = null; +{ + //user preference controller + private PreferenceController userPreferences = null; //business data being generated in this bean by executing ui actions //this is data is created such that it can be consumed by the view components @@ -82,128 +76,21 @@ return String.valueOf(this.getTopics().size()); } - //------------user preferences------------------------------------------------------------------------------------------------------------- + //------------user preferences------------------------------------------------------------------------------------------------------------- /** - * - * @param summaryMode + * @return Returns the userPreferences. */ - public void setSummarymode(int summaryMode) + public PreferenceController getUserPreferences() { - this.summaryMode = summaryMode; - - //overwrite the default value with the user's preference - String storedSummaryMode = PortalUtil.getPreference(this.summaryModeKey); - if(storedSummaryMode!=null && storedSummaryMode.trim().length()>0) - { - this.summaryMode = Integer.parseInt(storedSummaryMode); - } + return userPreferences; } - /** - * - * @param summaryTopicLimit + * @param userPreferences The userPreferences to set. */ - public void setSummarytopiclimit(int summaryTopicLimit) + public void setUserPreferences(PreferenceController userPreferences) { - this.summaryTopicLimit = summaryTopicLimit; - - //overwrite the default value with the user's preference - String storedSummaryTopicLimit = PortalUtil.getPreference(this.summaryTopicLimitKey); - if(storedSummaryTopicLimit!=null && storedSummaryTopicLimit.trim().length()>0) - { - this.summaryTopicLimit = Integer.parseInt(storedSummaryTopicLimit); - } - } - - /** - * - * @param summaryTopicDays - */ - public void setSummarytopicdays(int summaryTopicDays) - { - this.summaryTopicDays = summaryTopicDays; - - //overwrite the default value with the user's preference - String storedSummaryTopicDays = PortalUtil.getPreference(this.summaryTopicDaysKey); - if(storedSummaryTopicDays!=null && storedSummaryTopicDays.trim().length()>0) - { - this.summaryTopicDays = Integer.parseInt(storedSummaryTopicDays); - } - } - - /** - * - * @param summaryTopicReplies - */ - public void setSummarytopicreplies(int summaryTopicReplies) - { - this.summaryTopicReplies = summaryTopicReplies; - - //overwrite the default value with the user's preference - String storedSummaryTopicReplies = PortalUtil.getPreference(this.summaryTopicRepliesKey); - if(storedSummaryTopicReplies!=null && storedSummaryTopicReplies.trim().length()>0) - { - this.summaryTopicReplies = Integer.parseInt(storedSummaryTopicReplies); - } - } - - - /** - * @return Returns the summaryModeKey. - */ - public String getSummaryModeKey() - { - return summaryModeKey; - } - /** - * @param summaryModeKey The summaryModeKey to set. - */ - public void setSummaryModeKey(String summaryModeKey) - { - this.summaryModeKey = summaryModeKey; - } - /** - * @return Returns the summaryTopicDaysKey. - */ - public String getSummaryTopicDaysKey() - { - return summaryTopicDaysKey; - } - /** - * @param summaryTopicDaysKey The summaryTopicDaysKey to set. - */ - public void setSummaryTopicDaysKey(String summaryTopicDaysKey) - { - this.summaryTopicDaysKey = summaryTopicDaysKey; - } - /** - * @return Returns the summaryTopicLimitKey. - */ - public String getSummaryTopicLimitKey() - { - return summaryTopicLimitKey; - } - /** - * @param summaryTopicLimitKey The summaryTopicLimitKey to set. - */ - public void setSummaryTopicLimitKey(String summaryTopicLimitKey) - { - this.summaryTopicLimitKey = summaryTopicLimitKey; - } - /** - * @return Returns the summaryTopicRepliesKey. - */ - public String getSummaryTopicRepliesKey() - { - return summaryTopicRepliesKey; - } - /** - * @param summaryTopicRepliesKey The summaryTopicRepliesKey to set. - */ - public void setSummaryTopicRepliesKey(String summaryTopicRepliesKey) - { - this.summaryTopicRepliesKey = summaryTopicRepliesKey; - } + this.userPreferences = userPreferences; + } //------------------------------------------------------------------------------------------------------------------------------------- /** * @@ -212,16 +99,25 @@ */ public ViewSummary() { - super(); - try - { - this.execute(); - } - catch(Exception e) - { - JSFUtil.handleException(e); - } + super(); } + /** + * + */ + public boolean isInitialized() + { + boolean initialized = false; + try + { + this.execute(); + initialized = true; + } + catch(Exception e) + { + JSFUtil.handleException(e); + } + return initialized; + } /** * @@ -240,7 +136,7 @@ public String getBlockTopicsType() { String blockTopicsType = ""; - switch(this.summaryMode) + switch(Integer.parseInt(this.userPreferences.getPreference(Constants.SUMMARY_MODE_KEY))) { case Constants.BLOCK_TOPICS_MODE_HOT_TOPICS: blockTopicsType = "L_MODE_HOT_TOPICS"; @@ -265,22 +161,24 @@ private void loadDefaultTopics() throws Exception { Calendar after = Calendar.getInstance(); - after.add(Calendar.DATE, - this.summaryTopicDays); + after.add(Calendar.DATE, - this.userPreferences.getSummaryTopicDays()); Date time = after.getTime(); - switch(this.summaryMode) + int summaryTopicReplies = Integer.parseInt(this.userPreferences.getPreference(Constants.SUMMARY_REPLIES_KEY)); + int summaryTopicLimit = Integer.parseInt(this.userPreferences.getPreference(Constants.SUMMARY_LIMIT_KEY)); + switch(Integer.parseInt(this.userPreferences.getPreference(Constants.SUMMARY_MODE_KEY))) { case Constants.BLOCK_TOPICS_MODE_HOT_TOPICS: - this.topics = BaseController.getForumsModule().findTopicsHot(this.summaryTopicReplies,this.summaryTopicLimit); + this.topics = BaseController.getForumsModule().findTopicsHot(summaryTopicReplies,summaryTopicLimit); break; case Constants.BLOCK_TOPICS_MODE_HOTTEST_TOPICS: - this.topics = BaseController.getForumsModule().findTopicsHottest(time,this.summaryTopicLimit); + this.topics = BaseController.getForumsModule().findTopicsHottest(time,summaryTopicLimit); break; case Constants.BLOCK_TOPICS_MODE_LATEST_POSTS: - this.topics = BaseController.getForumsModule().findTopicsByLatestPosts(this.summaryTopicLimit); + this.topics = BaseController.getForumsModule().findTopicsByLatestPosts(summaryTopicLimit); break; case Constants.BLOCK_TOPICS_MODE_MOST_VIEWED: - this.topics = BaseController.getForumsModule().findTopicsMostViewed(time,this.summaryTopicLimit); + this.topics = BaseController.getForumsModule().findTopicsMostViewed(time,summaryTopicLimit); break; } - } + } } Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewTopic.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewTopic.java 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/view/ViewTopic.java 2006-05-25 06:52:10 UTC (rev 4421) @@ -33,6 +33,7 @@ import org.jboss.portlet.forums.ui.ForumUtil; import org.jboss.portlet.forums.ui.JSFUtil; import org.jboss.portlet.forums.ui.PortalUtil; +import org.jboss.portlet.forums.ui.action.PreferenceController; /** @@ -44,8 +45,7 @@ /** * user preference related data */ - private String postsPerTopicKey = null; - private int postsPerTopic = 0; + private PreferenceController userPreferences = null; /** * @@ -139,47 +139,19 @@ } //------------user preferences------------------------------------------------------------------------------------------------------------- /** - * @return Returns the postsPerTopicKey. + * @return Returns the userPreferences. */ - public String getPostsPerTopicKey() + public PreferenceController getUserPreferences() { - return postsPerTopicKey; + return userPreferences; } /** - * @param postsPerTopicKey The postsPerTopicKey to set. + * @param userPreferences The userPreferences to set. */ - public void setPostsPerTopicKey(String postsPerTopicKey) + public void setUserPreferences(PreferenceController userPreferences) { - this.postsPerTopicKey = postsPerTopicKey; - } - - /** - * @return Returns the postsPerTopic. - */ - public int getPostsPerTopic() - { - return postsPerTopic; - } - /** - * @param postsPerTopic The postsPerTopic to set. - */ - public void setPostsPerTopic(int postsPerTopic) - { - this.postsPerTopic = postsPerTopic; - - //override this with the preference specified by the user...if - //nothing is found, use a default value - String userPreference = PortalUtil.getPreference(this.postsPerTopicKey); - if(userPreference!=null && userPreference.trim().length()>0) - { - int cour = -1; - try{cour = Integer.parseInt(userPreference);}catch(NumberFormatException nfe){} - if(cour!=-1) - { - this.postsPerTopic = cour; - } - } - } + this.userPreferences = userPreferences; + } //------------------------------------------------------------------------------------------------------------------------------------- /** @@ -240,7 +212,7 @@ //setup the pageNavigator this.pageNavigator = new PageNavigator( posts.toArray(), //total number of entries to be split up into pages - this.postsPerTopic, + Integer.parseInt(this.userPreferences.getPreference(Constants.POSTS_TOPIC_KEY)), currentPage //currently selected page being displayed, first page by default ); Modified: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/classes/ResourceJSF.properties =================================================================== --- labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/classes/ResourceJSF.properties 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/classes/ResourceJSF.properties 2006-05-25 06:52:10 UTC (rev 4421) @@ -143,7 +143,7 @@ L_HTML_HIDE_TAGS=Hide Tags L_HIDE_USER=Hide user L_NOTIFY_ON_REPLY=Notify on reply -L_NOTIFY_ON_REPLY_EXPLAIN=Nofify when your post was replied +L_NOTIFY_ON_REPLY_EXPLAIN=Notify when your post was replied L_NOTIFY_ON_PRIVMSG=Notify on private message L_POPUP_ON_PRIVMSG=Popup on private message L_POPUP_ON_PRIVMSG_EXPLAIN=Popup when you have private message Modified: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml =================================================================== --- labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml 2006-05-25 06:52:10 UTC (rev 4421) @@ -4,16 +4,15 @@ "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN" "http://java.sun.com/dtd/web-facesconfig_1_0.dtd"> -<faces-config> - +<faces-config> <!-- general application configuration --> <application> <!-- jbossportal-facelets integration --> - <!--property-resolver>org.jboss.portal.faces.el.DelegatingPropertyResolver</property-resolver> - <view-handler>com.sun.facelets.FaceletPortletViewHandler</view-handler--> + <property-resolver>org.jboss.portal.faces.el.DelegatingPropertyResolver</property-resolver> + <view-handler>com.sun.facelets.FaceletPortletViewHandler</view-handler> <!-- standalone facelets integration --> - <view-handler>com.sun.facelets.FaceletViewHandler</view-handler> + <!--view-handler>com.sun.facelets.FaceletViewHandler</view-handler--> <!-- custom action listener with integrated authorization checking --> <action-listener>org.jboss.portlet.forums.auth.AuthorizationListener</action-listener> @@ -90,37 +89,10 @@ <managed-bean-scope>request</managed-bean-scope> <!-- user preferences --> <managed-property> - <property-name>summaryModeKey</property-name> - <value>summarymode</value> - </managed-property> - <managed-property> - <property-name>summaryTopicLimitKey</property-name> - <value>summarytopiclimit</value> - </managed-property> - <managed-property> - <property-name>summaryTopicDaysKey</property-name> - <value>summarytopicdays</value> - </managed-property> - <managed-property> - <property-name>summaryTopicRepliesKey</property-name> - <value>summarytopicreplies</value> - </managed-property> - <managed-property> - <property-name>summarymode</property-name> - <value>0</value> - </managed-property> - <managed-property> - <property-name>summarytopiclimit</property-name> - <value>6</value> - </managed-property> - <managed-property> - <property-name>summarytopicdays</property-name> - <value>20</value> - </managed-property> - <managed-property> - <property-name>summarytopicreplies</property-name> - <value>15</value> - </managed-property> + <property-name>userPreferences</property-name> + <property-class>org.jboss.portlet.forums.ui.action.PreferenceController</property-class> + <value>#{prefController}</value> + </managed-property> </managed-bean> <!-- configuration for ViewCategory --> @@ -137,18 +109,10 @@ <managed-bean-scope>request</managed-bean-scope> <!-- user preferences related configuration --> <managed-property> - <property-name>topicsPerForumKey</property-name> - <value>topicsperforum</value> - </managed-property> - <managed-property> - <property-name>topicsPerForum</property-name> - <value>10</value> - </managed-property> - <managed-property> - <property-name>topicBean</property-name> - <property-class>org.jboss.portlet.forums.ui.view.ViewTopic</property-class> - <value>#{topic}</value> - </managed-property> + <property-name>userPreferences</property-name> + <property-class>org.jboss.portlet.forums.ui.action.PreferenceController</property-class> + <value>#{prefController}</value> + </managed-property> </managed-bean> <navigation-rule> <from-view-id>/views/forums/viewforum_body.xhtml</from-view-id> @@ -165,13 +129,10 @@ <managed-bean-scope>request</managed-bean-scope> <!-- user preferences related configuration --> <managed-property> - <property-name>postsPerTopicKey</property-name> - <value>postspertopic</value> - </managed-property> - <managed-property> - <property-name>postsPerTopic</property-name> - <value>5</value> - </managed-property> + <property-name>userPreferences</property-name> + <property-class>org.jboss.portlet.forums.ui.action.PreferenceController</property-class> + <value>#{prefController}</value> + </managed-property> </managed-bean> <navigation-rule> <from-view-id>/views/topics/viewtopic_body.xhtml</from-view-id> @@ -378,18 +339,88 @@ <navigation-case> <from-outcome>deleteForum</from-outcome> <to-view-id>/views/admin/index.xhtml</to-view-id> + </navigation-case> + </navigation-rule> + + <!-- managedBean for the user preference usecase --> + <managed-bean> + <managed-bean-name>prefController</managed-bean-name> + <managed-bean-class>org.jboss.portlet.forums.ui.action.PreferenceController</managed-bean-class> + <managed-bean-scope>request</managed-bean-scope> + <managed-property> + <property-name>defaultPreferences</property-name> + <map-entries> + <key-class>java.lang.String</key-class> + <map-entry> + <key>notifyreply</key> + <value>true</value> + </map-entry> + <map-entry> + <key>allowhtml</key> + <value>true</value> + </map-entry> + <map-entry> + <key>postorder</key> + <value>ascending</value> + </map-entry> + <map-entry> + <key>dateformat</key> + <value>EEE MMM d, yyy</value> + </map-entry> + <map-entry> + <key>alwaysaddsignature</key> + <value>false</value> + </map-entry> + <map-entry> + <key>signature</key> + <value></value> + </map-entry> + <map-entry> + <key>summarymode</key> + <value>0</value> + </map-entry> + <map-entry> + <key>summarytopiclimit</key> + <value>6</value> + </map-entry> + <map-entry> + <key>summarytopicdays</key> + <value>20</value> + </map-entry> + <map-entry> + <key>summarytopicreplies</key> + <value>15</value> + </map-entry> + <map-entry> + <key>topicsperforum</key> + <value>10</value> + </map-entry> + <map-entry> + <key>postspertopic</key> + <value>15</value> + </map-entry> + </map-entries> + </managed-property> + </managed-bean> + <navigation-rule> + <from-view-id>/views/pref/index.xhtml</from-view-id> + <navigation-case> + <from-outcome>success</from-outcome> + <to-view-id>/views/category/viewcategory_body.xhtml</to-view-id> </navigation-case> - </navigation-rule> - <managed-bean> - <managed-bean-name>deleteTopic</managed-bean-name> - <managed-bean-class>org.jboss.portlet.forums.ui.action.DeleteTopic</managed-bean-class> - <managed-bean-scope>request</managed-bean-scope> - </managed-bean> - <navigation-rule> - <from-view-id>/views/moderator/delete_topic.xhtml</from-view-id> - <navigation-case> - <from-action>#{deleteTopic.confirmDelete}</from-action> - <to-view-id>/views/moderator/modcp_body.xhtml</to-view-id> - </navigation-case> - </navigation-rule> + </navigation-rule> + + + <managed-bean> + <managed-bean-name>deleteTopic</managed-bean-name> + <managed-bean-class>org.jboss.portlet.forums.ui.action.DeleteTopic</managed-bean-class> + <managed-bean-scope>request</managed-bean-scope> + </managed-bean> + <navigation-rule> + <from-view-id>/views/moderator/delete_topic.xhtml</from-view-id> + <navigation-case> + <from-action>#{deleteTopic.confirmDelete}</from-action> + <to-view-id>/views/moderator/modcp_body.xhtml</to-view-id> + </navigation-case> + </navigation-rule> </faces-config> \ No newline at end of file Modified: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/portlet.xml =================================================================== --- labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/portlet.xml 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/portlet.xml 2006-05-25 06:52:10 UTC (rev 4421) @@ -125,18 +125,14 @@ <preference> <name>postspertopic</name> <value>15</value> - </preference> - <!-- not yet integrated with the JSF layer --> + </preference> <preference> <name>notifyreply</name> - <value>1</value> + <value>true</value> </preference> <preference> <name>allowhtml</name> - <value>1</value> - <!-- - <read-only>true</read-only> - --> + <value>true</value> </preference> <preference> <name>postorder</name> @@ -145,6 +141,14 @@ <preference> <name>dateformat</name> <value>EEE MMM d, yyyy HH:mm aaa</value> + </preference> + <preference> + <name>alwaysaddsignature</name> + <value>true</value> + </preference> + <preference> + <name>signature</name> + <value></value> </preference> </portlet-preferences> </portlet> Modified: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/index.xhtml =================================================================== --- labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/index.xhtml 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/index.xhtml 2006-05-25 06:52:10 UTC (rev 4421) @@ -30,14 +30,18 @@ class="bb" > -<!-- load forums summary page if summary is not empty --> -<c:if test="#{summary.numberOfTopicsFound>0}"> - <ui:include src="/views/summary/viewsummary_body.xhtml"/> -</c:if> +<c:if test="#{summary.initialized}"> -<!-- if summary is empty load the main category page --> -<c:if test="#{summary.numberOfTopicsFound==0}"> - <ui:include src="/views/category/viewcategory_body.xhtml"/> + <!-- load forums summary page if summary is not empty --> + <c:if test="#{summary.numberOfTopicsFound>0}"> + <ui:include src="/views/summary/viewsummary_body.xhtml"/> + </c:if> + + <!-- if summary is empty load the main category page --> + <c:if test="#{summary.numberOfTopicsFound==0}"> + <ui:include src="/views/category/viewcategory_body.xhtml"/> + </c:if> + </c:if> </div> \ No newline at end of file Added: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/pref/index.xhtml =================================================================== --- labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/pref/index.xhtml 2006-05-25 05:01:36 UTC (rev 4420) +++ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/pref/index.xhtml 2006-05-25 06:52:10 UTC (rev 4421) @@ -0,0 +1,251 @@ +<!-- +/* +* JBoss, Home of Professional Open Source +* Copyright 2005, JBoss Inc., and individual contributors as indicated +* by the @authors tag. See the copyright.txt in the distribution for a +* full listing of individual contributors. +* +* This is free software; you can redistribute it and/or modify it +* under the terms of the GNU Lesser General Public License as +* published by the Free Software Foundation; either version 2.1 of +* the License, or (at your option) any later version. +* +* This software is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this software; if not, write to the Free +* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +* 02110-1301 USA, or see the FSF site: http://www.fsf.org. +*/ +--> + +<div xmlns="http://www.w3.org/1999/xhtml" + xmlns:ui="http://java.sun.com/jsf/facelets" + xmlns:c="http://java.sun.com/jstl/core" + xmlns:h="http://java.sun.com/jsf/html" + xmlns:f="http://java.sun.com/jsf/core" + xmlns:forums="http://www.jboss.com/products/jbossportal/forums" class="bb"> + + <ui:composition template="/views/common/common.xhtml"> + <ui:define name="mainContent"> + + <c:if test="#{prefController.initialized}"> + <h:form> + <table border="0" cellpadding="3" cellspacing="1" width="100%" class="forumline"> + <!-- title --> + <tr> + <th class="thSides" colspan="2" height="25" valign="middle">${resource.L_PREFERENCES}</th> + </tr> + + <!-- notify on reply --> + <tr> + <td class="row1"><span class="gen">${resource.L_NOTIFY_ON_REPLY}:</span><br/> + <span class="gensmall">${resource.L_NOTIFY_ON_REPLY_EXPLAIN}</span> + </td> + <td class="row2"> + <h:selectOneRadio value="#{prefController.notifyOnReply}" styleClass="gen"> + <f:selectItem itemValue="true" itemLabel="${resource.L_YES}"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="false" itemLabel="${resource.L_NO}"/> + </h:selectOneRadio> + </td> + </tr> + + <!-- Always allow html --> + <tr> + <td class="row1"> + <span class="gen">${resource.L_ALWAYS_ALLOW_HTML}:</span> + </td> + <td class="row2"> + <h:selectOneRadio value="#{prefController.alwaysAllowHtml}" styleClass="gen"> + <f:selectItem itemValue="true" itemLabel="${resource.L_YES}"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="false" itemLabel="${resource.L_NO}"/> + </h:selectOneRadio> + </td> + </tr> + + <!-- Post Order --> + <tr> + <td class="row1"> + <span class="gen">${resource.L_POST_ORDER}:</span> + </td> + <td class="row2"> + <h:selectOneRadio value="#{prefController.postOrder}" styleClass="gen"> + <f:selectItem itemValue="ascending" itemLabel="${resource.L_ASCENDING}"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="descending" itemLabel="${resource.L_DESCENDING}"/> + </h:selectOneRadio> + </td> + </tr> + + <!-- Topics Per Page --> + <tr> + <td class="row1"> + <span class="gen">${resource.L_TOPICS_PER_FORUM}:</span><br/> + <span class="gensmall">${resource.L_TOPICS_PER_FORUM_EXPLAIN}</span> + </td> + <td class="row2"> + <h:selectOneRadio value="#{prefController.topicsPerForum}" styleClass="gen"> + <f:selectItem itemValue="5" itemLabel="5"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="10" itemLabel="10"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="15" itemLabel="15"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="20" itemLabel="20"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="25" itemLabel="25"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="30" itemLabel="30"/> + </h:selectOneRadio> + </td> + </tr> + + <!-- Posts Per Page --> + <tr> + <td class="row1"> + <span class="gen">${resource.L_POSTS_PER_TOPIC}:</span><br/> + <span class="gensmall">${resource.L_POSTS_PER_TOPIC_EXPLAIN}</span> + </td> + <td class="row2"> + <h:selectOneRadio value="#{prefController.postsPerTopic}" styleClass="gen"> + <f:selectItem itemValue="5" itemLabel="5"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="10" itemLabel="10"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="15" itemLabel="15"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="20" itemLabel="20"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="25" itemLabel="25"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="30" itemLabel="30"/> + </h:selectOneRadio> + </td> + </tr> + + <!-- Date Format --> + <tr> + <td class="row1"> + <span class="gen">${resource.L_DATE_FORMAT}:</span> + </td> + <td class="row2"> + <h:inputText maxlength="14" styleClass="post" value="#{prefController.dateFormat}"/> + </td> + </tr> + + <tr> + <th class="thSides" colspan="2" height="25" valign="middle">${resource.L_USER_INFO}</th> + </tr> + + <!-- Always add Signature --> + <tr> + <td class="row1"> + <span class="gen">${resource.L_ALWAYS_ADD_SIGNATURE}:</span> + </td> + <td class="row2"> + <h:selectOneRadio value="#{prefController.alwaysAddSignature}" styleClass="gen"> + <f:selectItem itemValue="true" itemLabel="${resource.L_YES}"> + <f:verbatim>&nbsp;&nbsp;</f:verbatim> + </f:selectItem> + <f:selectItem itemValue="false" itemLabel="${resource.L_NO}"/> + </h:selectOneRadio> + </td> + </tr> + + <!-- Signature --> + <tr> + <td class="row1"> + <span class="gen">${resource.L_SIGNATURE}:</span><br/> + <span class="gensmall">${resource.L_SIGNATURE_EXPLAIN} + <br/><br/><br/><br/> + </span> + </td> + <td class="row2"> + <h:inputTextarea style="width: 300px" rows="6" cols="30" styleClass="post" value="#{prefController.signature}"/> + </td> + </tr> + + <!-- Topic Summary --> + <tr> + <th class="thSides" colspan="2" height="25" valign="middle">${resource.L_TOPIC_SUMMARY}</th> + </tr> + + <!-- Summary Mode --> + <tr> + <td class="row1"><span class="gen">${resource.L_MODE_CHOOSE}:</span><br/> + <span class="gensmall">${resource.L_MODE_CHOOSE_EXPLAIN}</span> + </td> + <td class="row2"> + <h:selectOneMenu value="#{prefController.summaryMode}"> + <f:selectItem itemValue="1" itemLabel="Hot topics (above some number of replies)" styleClass="gen"/> + <f:selectItem itemValue="0" itemLabel="Latest posted topics" styleClass="gen"/> + <f:selectItem itemValue="2" itemLabel="Hottest topics (most replied)" styleClass="gen"/> + <f:selectItem itemValue="3" itemLabel="Most viewed topics" styleClass="gen"/> + </h:selectOneMenu> + </td> + </tr> + + <!-- Topics Limit --> + <tr> + <td class="row1"><span class="gen">${resource.L_TOPIC_SUMMARY_LIMIT}:</span><br/> + <span class="gensmall">${resource.L_TOPIC_SUMMARY_LIMIT_EXPLAIN}</span> + </td> + <td class="row2"> + <h:inputText maxlength="7" styleClass="post" value="#{prefController.summaryTopicLimit}"/> + </td> + </tr> + + <!-- Days Old Posts --> + <tr> + <td class="row1"><span class="gen">${resource.L_TOPIC_SUMMARY_DAYS}:</span><br/> + <span class="gensmall">${resource.L_TOPIC_SUMMARY_DAYS_EXPLAIN}</span> + </td> + <td class="row2"> + <h:inputText maxlength="7" styleClass="post" value="#{prefController.summaryTopicDays}"/> + </td> + </tr> + + <!-- Replies in Topic --> + <tr> + <td class="row1"><span class="gen">${resource.L_TOPIC_SUMMARY_REPLIES}:</span><br/> + <span class="gensmall">${resource.L_TOPIC_SUMMARY_REPLIES_EXPLAIN}</span> + </td> + <td class="row2"> + <h:inputText maxlength="7" styleClass="post" value="#{prefController.summaryTopicReplies}"/> + </td> + </tr> + + + <!-- buttons --> + <tr> + <td class="catBottom" colspan="2" align="center" height="28"> + <h:commandButton value="${resource.L_SUBMIT}" styleClass="mainoption" action="#{prefController.execute}"/> + &nbsp;&nbsp; + <h:commandButton type="reset" value="${L_RESET}" styleClass="liteoption"/> + </td> + </tr> + </table> + </h:form> + </c:if> + + </ui:define> + </ui:composition> +</div> \ No newline at end of file |
From: <jbo...@li...> - 2006-05-25 05:02:21
|
Author: mic...@jb... Date: 2006-05-25 01:01:36 -0400 (Thu, 25 May 2006) New Revision: 4420 Added: labs/jbossrules/trunk/documentation/training/developers-course/template.odp Modified: labs/jbossrules/trunk/documentation/training/developers-course/Module 6 - rule formats.odp labs/jbossrules/trunk/documentation/training/developers-course/course_outline.odt Log: nearly done for that module Modified: labs/jbossrules/trunk/documentation/training/developers-course/Module 6 - rule formats.odp =================================================================== (Binary files differ) Modified: labs/jbossrules/trunk/documentation/training/developers-course/course_outline.odt =================================================================== (Binary files differ) Added: labs/jbossrules/trunk/documentation/training/developers-course/template.odp =================================================================== (Binary files differ) Property changes on: labs/jbossrules/trunk/documentation/training/developers-course/template.odp ___________________________________________________________________ Name: svn:mime-type + application/octet-stream |
From: <jbo...@li...> - 2006-05-25 04:12:49
|
Author: mar...@jb... Date: 2006-05-25 00:12:45 -0400 (Thu, 25 May 2006) New Revision: 4419 Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java Log: -removed jdk5 code - we only have one element in the array anyway. Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java 2006-05-25 03:52:40 UTC (rev 4418) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java 2006-05-25 04:12:45 UTC (rev 4419) @@ -93,7 +93,7 @@ result = PRIME * result + ((this.declaration == null) ? 0 : this.declaration.hashCode()); result = PRIME * result + ((this.evaluator == null) ? 0 : this.evaluator.hashCode()); result = PRIME * result + ((this.fieldExtractor == null) ? 0 : this.fieldExtractor.hashCode()); - result = PRIME * result + Arrays.hashCode( this.requiredDeclarations ); + result = PRIME * result + this.requiredDeclarations[0].hashCode(); return result; } @@ -111,6 +111,5 @@ return (this.column == other.column) && this.fieldExtractor.equals( other.fieldExtractor ) && this.declaration.equals( other.declaration ) && this.evaluator.equals( other.evaluator ) && Arrays.equals( this.requiredDeclarations, other.requiredDeclarations ); } - - + } \ No newline at end of file |
From: <jbo...@li...> - 2006-05-25 03:52:43
|
Author: mar...@jb... Date: 2006-05-24 23:52:40 -0400 (Wed, 24 May 2006) New Revision: 4418 Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java Log: -removed annotation Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java 2006-05-25 02:38:59 UTC (rev 4417) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java 2006-05-25 03:52:40 UTC (rev 4418) @@ -86,7 +86,6 @@ /* (non-Javadoc) * @see java.lang.Object#hashCode() */ - @Override public int hashCode() { final int PRIME = 31; int result = 1; |
Author: mar...@jb... Date: 2006-05-24 22:38:59 -0400 (Wed, 24 May 2006) New Revision: 4417 Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Message.java labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/ReteooBuilderTest.java labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrs labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrsPerson labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/ThreeColumnsWithCosntraints labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/test_OneAndTwoOrs.drl labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/test_OneAndTwoOrsPerson.drl labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/test_ThreeColumnsWithCosntraints.drl Log: JBRULES-271 Incorrect Handling of 'or' I have found a number of issues. -Added reteoo builder test, using equals test against previously know correct rete dump - using xstream -updating toString methods for more data -Added more equals and hashCode impl -Added more getHtml info to the Jung Visitor impl Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Message.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Message.java 2006-05-25 02:38:51 UTC (rev 4416) +++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Message.java 2006-05-25 02:38:59 UTC (rev 4417) @@ -0,0 +1,68 @@ +/** + * + */ +package org.drools; + +public class Message { + + private String message1 = "One"; + private String message2 = "Two"; + private String message3 = "Three"; + private String message4 = "Four"; + + + public static final int HELLO = 0; + public static final int GOODBYE = 1; + + private String message; + + private int status; + + public String getMessage() { + return this.message; + } + + public void setMessage(String message) { + this.message = message; + } + + public int getStatus() { + return this.status; + } + + public void setStatus( int status ) { + this.status = status; + } + + public String getMessage1() { + return message1; + } + + public void setMessage1(String message1) { + this.message1 = message1; + } + + public String getMessage2() { + return message2; + } + + public void setMessage2(String message2) { + this.message2 = message2; + } + + public String getMessage3() { + return message3; + } + + public void setMessage3(String message3) { + this.message3 = message3; + } + + public String getMessage4() { + return message4; + } + + public void setMessage4(String message4) { + this.message4 = message4; + } +} \ No newline at end of file Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/ReteooBuilderTest.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/ReteooBuilderTest.java 2006-05-25 02:38:51 UTC (rev 4416) +++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/reteoo/ReteooBuilderTest.java 2006-05-25 02:38:59 UTC (rev 4417) @@ -0,0 +1,130 @@ +package org.drools.reteoo; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.util.Iterator; +import java.util.List; + +import junit.framework.TestCase; + +import org.drools.RuleBase; +import org.drools.RuleBaseFactory; +import org.drools.compiler.PackageBuilder; +import org.drools.reteoo.ObjectSink; +import org.drools.rule.And; +import org.drools.rule.Package; +import org.drools.visualize.ReteooJungViewer; + +import com.thoughtworks.xstream.XStream; + +public class ReteooBuilderTest extends TestCase { + + private boolean writeTree = false; + + private boolean showRete = false; + + /** Implementation specific subclasses must provide this. */ + protected RuleBase getRuleBase() throws Exception { + return RuleBaseFactory.newRuleBase(); + } + + public void testThreeColumnsWithCosntraints() throws Exception { + checkRuleBase( "ThreeColumnsWithCosntraints" ); + } + + public void testOneAndTwoOrs() throws Exception { + checkRuleBase( "OneAndTwoOrs" ); + } + + public void testX() throws Exception { + checkRuleBase( "OneAndTwoOrsPerson" ); + } + + private void writeRuleBase(RuleBase ruleBase, + String fileName) throws IOException { + XStream xstream = new XStream(); + + PrintWriter out = new PrintWriter( new BufferedWriter( new FileWriter( "src/test/resources/org/drools/reteoo/" + fileName ) ) ); + + xstream.toXML( ruleBase, + out ); + } + + private void checkRuleBase(String name) throws Exception { + PackageBuilder builder = new PackageBuilder(); + builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_" + name + ".drl" ) ) ); + Package pkg = builder.getPackage(); + + RuleBaseImpl ruleBase = (RuleBaseImpl) getRuleBase(); + ruleBase.addPackage( pkg ); + + if ( showRete ) { + final ReteooJungViewer viewer = new ReteooJungViewer( ruleBase ); + + javax.swing.SwingUtilities.invokeLater( new Runnable() { + public void run() { + viewer.showGUI(); + } + } ); + + while ( viewer.isRunning() ) { + Thread.yield(); + Thread.sleep( 100 ); + } + } + + if ( writeTree ) { + writeRuleBase( ruleBase, + name ); + } + + XStream xstream = new XStream(); + + RuleBase goodRuleBase = (RuleBase) xstream.fromXML( new BufferedReader( new FileReader( "src/test/resources/org/drools/reteoo/" + name ) ) ); + + nodesEquals( ((RuleBaseImpl) goodRuleBase).getRete(), + ((RuleBaseImpl) ruleBase).getRete() ); + } + + private void nodesEquals(Object object1, + Object object2) { + assertEquals( object1 + " is not of the same type as " + object2, + object1.getClass(), + object2.getClass() ); + + assertEquals( object1 + " is not equal to " + object2, + object1, + object2 ); + + List list1 = null; + List list2 = null; + + if ( object1 instanceof ObjectSource ) { + ObjectSource source1 = (ObjectSource) object1; + ObjectSource source2 = (ObjectSource) object2; + + list1 = source1.getObjectSinksAsList(); + list2 = source2.getObjectSinksAsList(); + } else if ( object1 instanceof TupleSource ) { + TupleSource source1 = (TupleSource) object1; + TupleSource source2 = (TupleSource) object2; + + list1 = source1.getTupleSinks(); + list2 = source2.getTupleSinks(); + } + + assertEquals( object1.getClass() + " nodes have different number of sinks", + list1.size(), + list2.size() ); + + for ( int i = 0, size = list1.size(); i < size; i++ ) { + nodesEquals( list1.get( i ), + list2.get( i ) ); + } + } +} Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrs =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrs 2006-05-25 02:38:51 UTC (rev 4416) +++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrs 2006-05-25 02:38:59 UTC (rev 4417) @@ -0,0 +1,413 @@ +<org.drools.reteoo.RuleBaseImpl> + <map> + <entry> + <string>org.drools.reteoo</string> + <org.drools.rule.Package> + <org.drools.rule.PackageCompilationData> + <map> + <entry> + <string>org/drools/reteoo/Rule_Hello_World_2_0.class</string> + <byte-array>yv66vgAAADAAJwcAAgEAJm9yZy9kcm9vbHMvcmV0ZW9vL1J1bGVfSGVsbG9fV29ybGRfMl8wBwAE +AQAQamF2YS9sYW5nL09iamVjdAEABjxpbml0PgEAAygpVgEABENvZGUKAAMACQwABQAGAQAPTGlu +ZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAKExvcmcvZHJvb2xzL3Jl +dGVvby9SdWxlX0hlbGxvX1dvcmxkXzJfMDsBAAVldmFsMAEAAygpWgEACkV4Y2VwdGlvbnMHABIB +ABNqYXZhL2xhbmcvRXhjZXB0aW9uAQALY29uc2VxdWVuY2UBACMoTG9yZy9kcm9vbHMvc3BpL0tu +b3dsZWRnZUhlbHBlcjspVgkAFgAYBwAXAQAQamF2YS9sYW5nL1N5c3RlbQwAGQAaAQADb3V0AQAV +TGphdmEvaW8vUHJpbnRTdHJlYW07CAAcAQAGZG9uZSAyCgAeACAHAB8BABNqYXZhL2lvL1ByaW50 +U3RyZWFtDAAhACIBAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWAQAGZHJvb2xzAQAg +TG9yZy9kcm9vbHMvc3BpL0tub3dsZWRnZUhlbHBlcjsBAApTb3VyY2VGaWxlAQAZUnVsZV9IZWxs +b19Xb3JsZF8yXzAuamF2YQAhAAEAAwAAAAAAAwABAAUABgABAAcAAAAvAAEAAQAAAAUqtwAIsQAA +AAIACgAAAAYAAQAAAAUACwAAAAwAAQAAAAUADAANAAAACQAOAA8AAgAQAAAABAABABEABwAAACIA +AQAAAAAAAgSsAAAAAgAKAAAABgABAAAABwALAAAAAgAAAAkAEwAUAAIAEAAAAAQAAQARAAcAAAA3 +AAIAAQAAAAmyABUSG7YAHbEAAAACAAoAAAAKAAIAAAAKAAgADAALAAAADAABAAAACQAjACQAAAAB +ACUAAAACACY=</byte-array> + </entry> + <entry> + <string>org/drools/reteoo/Rule_Hello_World_1_0.class</string> + <byte-array>yv66vgAAADAAJQcAAgEAJm9yZy9kcm9vbHMvcmV0ZW9vL1J1bGVfSGVsbG9fV29ybGRfMV8wBwAE +AQAQamF2YS9sYW5nL09iamVjdAEABjxpbml0PgEAAygpVgEABENvZGUKAAMACQwABQAGAQAPTGlu +ZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAKExvcmcvZHJvb2xzL3Jl +dGVvby9SdWxlX0hlbGxvX1dvcmxkXzFfMDsBAAtjb25zZXF1ZW5jZQEAIyhMb3JnL2Ryb29scy9z +cGkvS25vd2xlZGdlSGVscGVyOylWAQAKRXhjZXB0aW9ucwcAEgEAE2phdmEvbGFuZy9FeGNlcHRp +b24JABQAFgcAFQEAEGphdmEvbGFuZy9TeXN0ZW0MABcAGAEAA291dAEAFUxqYXZhL2lvL1ByaW50 +U3RyZWFtOwgAGgEABmRvbmUgMQoAHAAeBwAdAQATamF2YS9pby9QcmludFN0cmVhbQwAHwAgAQAH +cHJpbnRsbgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEABmRyb29scwEAIExvcmcvZHJvb2xzL3Nw +aS9Lbm93bGVkZ2VIZWxwZXI7AQAKU291cmNlRmlsZQEAGVJ1bGVfSGVsbG9fV29ybGRfMV8wLmph +dmEAIQABAAMAAAAAAAIAAQAFAAYAAQAHAAAALwABAAEAAAAFKrcACLEAAAACAAoAAAAGAAEAAAAF +AAsAAAAMAAEAAAAFAAwADQAAAAkADgAPAAIAEAAAAAQAAQARAAcAAAA3AAIAAQAAAAmyABMSGbYA +G7EAAAACAAoAAAAKAAIAAAAHAAgACQALAAAADAABAAAACQAhACIAAAABACMAAAACACQ=</byte-array> + </entry> + <entry> + <string>org/drools/reteoo/Rule_Hello_World_2_0ConsequenceInvoker.class</string> + <byte-array>yv66vgAAADAAMwcAAgEAOG9yZy9kcm9vbHMvcmV0ZW9vL1J1bGVfSGVsbG9fV29ybGRfMl8wQ29u +c2VxdWVuY2VJbnZva2VyBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAGm9yZy9kcm9vbHMvc3Bp +L0NvbnNlcXVlbmNlAQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwALDAAHAAgBAA9MaW5lTnVtYmVy +VGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA6TG9yZy9kcm9vbHMvcmV0ZW9vL1J1 +bGVfSGVsbG9fV29ybGRfMl8wQ29uc2VxdWVuY2VJbnZva2VyOwEACGV2YWx1YXRlAQA9KExvcmcv +ZHJvb2xzL3NwaS9Lbm93bGVkZ2VIZWxwZXI7TG9yZy9kcm9vbHMvV29ya2luZ01lbW9yeTspVgEA +CkV4Y2VwdGlvbnMHABQBABNqYXZhL2xhbmcvRXhjZXB0aW9uCwAWABgHABcBAB5vcmcvZHJvb2xz +L3NwaS9Lbm93bGVkZ2VIZWxwZXIMABkAGgEACGdldFR1cGxlAQAYKClMb3JnL2Ryb29scy9zcGkv +VHVwbGU7CwAWABwMAB0AHgEAB2dldFJ1bGUBABgoKUxvcmcvZHJvb2xzL3J1bGUvUnVsZTsKACAA +IgcAIQEAFG9yZy9kcm9vbHMvcnVsZS9SdWxlDAAjACQBAA9nZXREZWNsYXJhdGlvbnMBACAoKVtM +b3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uOwoAJgAoBwAnAQAmb3JnL2Ryb29scy9yZXRlb28v +UnVsZV9IZWxsb19Xb3JsZF8yXzAMACkAKgEAC2NvbnNlcXVlbmNlAQAjKExvcmcvZHJvb2xzL3Nw +aS9Lbm93bGVkZ2VIZWxwZXI7KVYBAA9rbm93bGVkZ2VIZWxwZXIBACBMb3JnL2Ryb29scy9zcGkv +S25vd2xlZGdlSGVscGVyOwEADXdvcmtpbmdNZW1vcnkBABpMb3JnL2Ryb29scy9Xb3JraW5nTWVt +b3J5OwEABHJ1bGUBABZMb3JnL2Ryb29scy9ydWxlL1J1bGU7AQAKU291cmNlRmlsZQEAK1J1bGVf +SGVsbG9fV29ybGRfMl8wQ29uc2VxdWVuY2VJbnZva2VyLmphdmEAIQABAAMAAQAFAAAAAgABAAcA +CAABAAkAAAAvAAEAAQAAAAUqtwAKsQAAAAIADAAAAAYAAQAAAAMADQAAAAwAAQAAAAUADgAPAAAA +AQAQABEAAgASAAAABAABABMACQAAAHQAAQAEAAAAGCu5ABUBAFcruQAbAQBOLbYAH1cruAAlsQAA +AAIADAAAABoABgAAAAgABwAJAA4ACgATABEAFAAQABcAFAANAAAAKgAEAAAAGAAOAA8AAAAAABgA +KwAsAAEAAAAYAC0ALgACAA4ACgAvADAAAwABADEAAAACADI=</byte-array> + </entry> + <entry> + <string>org/drools/reteoo/Rule_Hello_World_2_0Eval0Invoker.class</string> + <byte-array>yv66vgAAADAArwcAAgEAMm9yZy9kcm9vbHMvcmV0ZW9vL1J1bGVfSGVsbG9fV29ybGRfMl8wRXZh +bDBJbnZva2VyBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAHW9yZy9kcm9vbHMvc3BpL0V2YWxF +eHByZXNzaW9uBwAIAQApb3JnL2Ryb29scy9zZW1hbnRpY3MvamF2YS9Db21waWxlZEludm9rZXIB +AAdjbGFzcyQwAQARTGphdmEvbGFuZy9DbGFzczsBAAlTeW50aGV0aWMBAAY8aW5pdD4BAAMoKVYB +AARDb2RlCgADABAMAAwADQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEA +BHRoaXMBADRMb3JnL2Ryb29scy9yZXRlb28vUnVsZV9IZWxsb19Xb3JsZF8yXzBFdmFsMEludm9r +ZXI7AQAIZXZhbHVhdGUBAFEoTG9yZy9kcm9vbHMvc3BpL1R1cGxlO1tMb3JnL2Ryb29scy9ydWxl +L0RlY2xhcmF0aW9uO0xvcmcvZHJvb2xzL1dvcmtpbmdNZW1vcnk7KVoBAApFeGNlcHRpb25zBwAZ +AQATamF2YS9sYW5nL0V4Y2VwdGlvbgoAGwAdBwAcAQAmb3JnL2Ryb29scy9yZXRlb28vUnVsZV9I +ZWxsb19Xb3JsZF8yXzAMAB4AHwEABWV2YWwwAQADKClaAQAFdHVwbGUBABZMb3JnL2Ryb29scy9z +cGkvVHVwbGU7AQAMZGVjbGFyYXRpb25zAQAeW0xvcmcvZHJvb2xzL3J1bGUvRGVjbGFyYXRpb247 +AQANd29ya2luZ01lbW9yeQEAGkxvcmcvZHJvb2xzL1dvcmtpbmdNZW1vcnk7AQAIaGFzaENvZGUB +AAMoKUkDADZ1jgEAEWdldE1ldGhvZEJ5dGVjb2RlAQASKClMamF2YS91dGlsL0xpc3Q7BwAsAQAr +b3JnL2Ryb29scy91dGlsL2FzbS9NZXRob2RDb21wYXJhdG9yJFRyYWNlcggAHgoAKwAvDAAMADAB +ABUoTGphdmEvbGFuZy9TdHJpbmc7KVYJAAEAMgwACQAKCAA0AQAmb3JnLmRyb29scy5yZXRlb28u +UnVsZV9IZWxsb19Xb3JsZF8yXzAKADYAOAcANwEAD2phdmEvbGFuZy9DbGFzcwwAOQA6AQAHZm9y +TmFtZQEAJShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9DbGFzczsHADwBAB5qYXZhL2xh +bmcvTm9DbGFzc0RlZkZvdW5kRXJyb3IKAD4AQAcAPwEAE2phdmEvbGFuZy9UaHJvd2FibGUMAEEA +QgEACmdldE1lc3NhZ2UBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwoAOwAvCgA2AEUMAEYARwEADmdl +dENsYXNzTG9hZGVyAQAZKClMamF2YS9sYW5nL0NsYXNzTG9hZGVyOwcASQEAFmphdmEvbGFuZy9T +dHJpbmdCdWZmZXIKAEsATQcATAEAEGphdmEvbGFuZy9TdHJpbmcMAE4ATwEAB3JlcGxhY2UBABYo +Q0MpTGphdmEvbGFuZy9TdHJpbmc7CgBLAFEMAFIAUwEAB3ZhbHVlT2YBACYoTGphdmEvbGFuZy9P +YmplY3Q7KUxqYXZhL2xhbmcvU3RyaW5nOwoASAAvCABWAQAGLmNsYXNzCgBIAFgMAFkAWgEABmFw +cGVuZAEALChMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJpbmdCdWZmZXI7CgBIAFwM +AF0AQgEACHRvU3RyaW5nCgBfAGEHAGABABVqYXZhL2xhbmcvQ2xhc3NMb2FkZXIMAGIAYwEAE2dl +dFJlc291cmNlQXNTdHJlYW0BACkoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2lvL0lucHV0U3Ry +ZWFtOwcAZQEAHWphdmEvaW8vQnl0ZUFycmF5T3V0cHV0U3RyZWFtCgBkABAKAGQAaAwAaQBqAQAF +d3JpdGUBAAcoW0JJSSlWCgBsAG4HAG0BABNqYXZhL2lvL0lucHV0U3RyZWFtDABvAHABAARyZWFk +AQAHKFtCSUkpSQcAcgEAIW9yZy9kcm9vbHMvUnVudGltZURyb29sc0V4Y2VwdGlvbggAdAEAPFVu +YWJsZSBnZXRSZXNvdXJjZUFzU3RyZWFtIGZvciBDbGFzcyAnUnVsZV9IZWxsb19Xb3JsZF8yXzAn +IAoAcQAvBwB3AQAab3JnL2Ryb29scy9hc20vQ2xhc3NSZWFkZXIKAGQAeQwAegB7AQALdG9CeXRl +QXJyYXkBAAQoKVtCCgB2AH0MAAwAfgEABShbQilWCgB2AIAMAIEAggEABmFjY2VwdAEAIShMb3Jn +L2Ryb29scy9hc20vQ2xhc3NWaXNpdG9yO1opVgoAKwCEDACFAIYBAAhnZXRUcmFjZQEAKigpTG9y +Zy9kcm9vbHMvYXNtL3V0aWwvVHJhY2VNZXRob2RWaXNpdG9yOwoAiACKBwCJAQAmb3JnL2Ryb29s +cy9hc20vdXRpbC9UcmFjZU1ldGhvZFZpc2l0b3IMAIsAKgEAB2dldFRleHQHAI0BACBqYXZhL2xh +bmcvQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgcAjwEAE2phdmEvaW8vSU9FeGNlcHRpb24BAAV2aXNp +dAEALUxvcmcvZHJvb2xzL3V0aWwvYXNtL01ldGhvZENvbXBhcmF0b3IkVHJhY2VyOwEAAmlzAQAV +TGphdmEvaW8vSW5wdXRTdHJlYW07AQADYm9zAQAfTGphdmEvaW8vQnl0ZUFycmF5T3V0cHV0U3Ry +ZWFtOwEABGRhdGEBAAJbQgEACWJ5dGVDb3VudAEAAUkBAAtjbGFzc1JlYWRlcgEAHExvcmcvZHJv +b2xzL2FzbS9DbGFzc1JlYWRlcjsBAAV0cmFjZQEAKExvcmcvZHJvb2xzL2FzbS91dGlsL1RyYWNl +TWV0aG9kVmlzaXRvcjsBAAZlcXVhbHMBABUoTGphdmEvbGFuZy9PYmplY3Q7KVoKAAEAoQwAKQAq +CwAHAKEKAKQApgcApQEAJG9yZy9kcm9vbHMvdXRpbC9hc20vTWV0aG9kQ29tcGFyYXRvcgwApwCo +AQAPY29tcGFyZUJ5dGVjb2RlAQAjKExqYXZhL3V0aWwvTGlzdDtMamF2YS91dGlsL0xpc3Q7KVoB +AAZvYmplY3QBABJMamF2YS9sYW5nL09iamVjdDsBAAVvdGhlcgEAK0xvcmcvZHJvb2xzL3NlbWFu +dGljcy9qYXZhL0NvbXBpbGVkSW52b2tlcjsBAApTb3VyY2VGaWxlAQAlUnVsZV9IZWxsb19Xb3Js +ZF8yXzBFdmFsMEludm9rZXIuamF2YQAhAAEAAwACAAUABwABAAgACQAKAAEACwAAAAAABQABAAwA +DQABAA4AAAAvAAEAAQAAAAUqtwAPsQAAAAIAEQAAAAYAAQAAAAcAEgAAAAwAAQAAAAUAEwAUAAAA +AQAVABYAAgAXAAAABAABABgADgAAAEwAAQAEAAAABLgAGqwAAAACABEAAAAGAAEAAAAPABIAAAAq +AAQAAAAEABMAFAAAAAAABAAgACEAAQAAAAQAIgAjAAIAAAAEACQAJQADAAEAJgAnAAEADgAAAC0A +AQABAAAAAxIorAAAAAIAEQAAAAYAAQAAABUAEgAAAAwAAQAAAAMAEwAUAAAAAQApACoAAQAOAAAB +egAGAAgAAACmuwArWRIttwAuTLIAMVnHABxXEjO4ADVZswAxpwAPuwA7Wl+2AD23AEO/tgBEuwBI +WRIzEC4QL7YASrgAULcAVBJVtgBXtgBbtgBeTbsAZFm3AGZOEQQAvAg6BKcADC0ZBAMVBbYAZywZ +BAMRBAC2AGtZNgUCo//ppwAOV7sAcVkSc7cAdb+7AHZZLbYAeLcAfDoGGQYrBLYAfyu2AIM6BxkH +tgCHsAACABIAFwAeAIwAWwB7AHsAjgACABEAAABGABEAAAAZAAoAHABMAB4AVAAfAFsAIgBeACYA +ZwAiAGoAIwBrACQAbgAiAHQAJAB7ACgAfAApAIYALACTAC0AmgAuAKAALwASAAAAZgAKAAAApgAT +ABQAAAAKAJwAkACRAAEATABaAJIAkwACAFQAUgCUAJUAAwBbAEsAlgCXAAQAXgAJAJgAmQAFAHQA +BwCYAJkABQCGACAAmACZAAUAkwATAJoAmwAGAKAABgCcAJ0ABwABAJ4AnwABAA4AAACDAAIAAwAA +ACkrxwAFA6wrKqYABQSsK8EAB5oABQOsK8AAB00qtgCgLLkAogEAuACjrAAAAAIAEQAAACIACAAA +ADMABAA0AAYANQALADYADQA5ABQAOgAWAD0AGwA/ABIAAAAgAAMAAAApABMAFAAAAAAAKQCpAKoA +AQAbAA4AqwCsAAIAAQCtAAAAAgCu</byte-array> + </entry> + <entry> + <string>org/drools/reteoo/Rule_Hello_World_1_0ConsequenceInvoker.class</string> + <byte-array>yv66vgAAADAAMwcAAgEAOG9yZy9kcm9vbHMvcmV0ZW9vL1J1bGVfSGVsbG9fV29ybGRfMV8wQ29u +c2VxdWVuY2VJbnZva2VyBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAGm9yZy9kcm9vbHMvc3Bp +L0NvbnNlcXVlbmNlAQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwALDAAHAAgBAA9MaW5lTnVtYmVy +VGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA6TG9yZy9kcm9vbHMvcmV0ZW9vL1J1 +bGVfSGVsbG9fV29ybGRfMV8wQ29uc2VxdWVuY2VJbnZva2VyOwEACGV2YWx1YXRlAQA9KExvcmcv +ZHJvb2xzL3NwaS9Lbm93bGVkZ2VIZWxwZXI7TG9yZy9kcm9vbHMvV29ya2luZ01lbW9yeTspVgEA +CkV4Y2VwdGlvbnMHABQBABNqYXZhL2xhbmcvRXhjZXB0aW9uCwAWABgHABcBAB5vcmcvZHJvb2xz +L3NwaS9Lbm93bGVkZ2VIZWxwZXIMABkAGgEACGdldFR1cGxlAQAYKClMb3JnL2Ryb29scy9zcGkv +VHVwbGU7CwAWABwMAB0AHgEAB2dldFJ1bGUBABgoKUxvcmcvZHJvb2xzL3J1bGUvUnVsZTsKACAA +IgcAIQEAFG9yZy9kcm9vbHMvcnVsZS9SdWxlDAAjACQBAA9nZXREZWNsYXJhdGlvbnMBACAoKVtM +b3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uOwoAJgAoBwAnAQAmb3JnL2Ryb29scy9yZXRlb28v +UnVsZV9IZWxsb19Xb3JsZF8xXzAMACkAKgEAC2NvbnNlcXVlbmNlAQAjKExvcmcvZHJvb2xzL3Nw +aS9Lbm93bGVkZ2VIZWxwZXI7KVYBAA9rbm93bGVkZ2VIZWxwZXIBACBMb3JnL2Ryb29scy9zcGkv +S25vd2xlZGdlSGVscGVyOwEADXdvcmtpbmdNZW1vcnkBABpMb3JnL2Ryb29scy9Xb3JraW5nTWVt +b3J5OwEABHJ1bGUBABZMb3JnL2Ryb29scy9ydWxlL1J1bGU7AQAKU291cmNlRmlsZQEAK1J1bGVf +SGVsbG9fV29ybGRfMV8wQ29uc2VxdWVuY2VJbnZva2VyLmphdmEAIQABAAMAAQAFAAAAAgABAAcA +CAABAAkAAAAvAAEAAQAAAAUqtwAKsQAAAAIADAAAAAYAAQAAAAMADQAAAAwAAQAAAAUADgAPAAAA +AQAQABEAAgASAAAABAABABMACQAAAHQAAQAEAAAAGCu5ABUBAFcruQAbAQBOLbYAH1cruAAlsQAA +AAIADAAAABoABgAAAAgABwAJAA4ACgATABEAFAAQABcAFAANAAAAKgAEAAAAGAAOAA8AAAAAABgA +KwAsAAEAAAAYAC0ALgACAA4ACgAvADAAAwABADEAAAACADI=</byte-array> + </entry> + </map> + <null/> + <byte-array>rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVz +aG9sZHhwP0AAAAAAAAx3CAAAABAAAAADdAAyb3JnLmRyb29scy5yZXRlb28uUnVsZV9IZWxsb19X +b3JsZF8yXzBFdmFsMEludm9rZXJzcgAdb3JnLmRyb29scy5ydWxlLkV2YWxDb25kaXRpb27Bwin8 +/kFWOAIAAkwACmV4cHJlc3Npb250AB9Mb3JnL2Ryb29scy9zcGkvRXZhbEV4cHJlc3Npb247WwAU +cmVxdWlyZWREZWNsYXJhdGlvbnN0AB5bTG9yZy9kcm9vbHMvcnVsZS9EZWNsYXJhdGlvbjt4cgAi +b3JnLmRyb29scy5ydWxlLkNvbmRpdGlvbmFsRWxlbWVudMYMc+lm86I2AgAAeHBzcgAyb3JnLmRy +b29scy5yZXRlb28uUnVsZV9IZWxsb19Xb3JsZF8yXzBFdmFsMEludm9rZXKXFrzydxbvVwIAAHhw +dXIAHltMb3JnLmRyb29scy5ydWxlLkRlY2xhcmF0aW9uO/Wnzws0aCnjAgAAeHAAAAAAdAA4b3Jn +LmRyb29scy5yZXRlb28uUnVsZV9IZWxsb19Xb3JsZF8xXzBDb25zZXF1ZW5jZUludm9rZXJzcgAU +b3JnLmRyb29scy5ydWxlLlJ1bGWXYS6qPu45BwIADloACWF1dG9Gb2N1c0oACWxvYWRPcmRlcloA +Bm5vTG9vcEkACHNhbGllbmNlWgARc2VtYW50aWNhbGx5VmFsaWRMAA9BY3RpdmF0aW9uR3JvdXB0 +ABJMamF2YS9sYW5nL1N0cmluZztMAAthZ2VuZGFHcm91cHEAfgAOTAALY29uc2VxdWVuY2V0ABxM +b3JnL2Ryb29scy9zcGkvQ29uc2VxdWVuY2U7WwAQZGVjbGFyYXRpb25BcnJheXEAfgAFTAAMZGVj +bGFyYXRpb25zdAAPTGphdmEvdXRpbC9NYXA7TAAIZHVyYXRpb250ABlMb3JnL2Ryb29scy9zcGkv +RHVyYXRpb247TAAHbGhzUm9vdHQAFUxvcmcvZHJvb2xzL3J1bGUvQW5kO0wABG5hbWVxAH4ADkwA +A3BrZ3EAfgAOeHAAAAAAAAAAAAEAAAAAAAFwdAAETUFJTnNyADhvcmcuZHJvb2xzLnJldGVvby5S +dWxlX0hlbGxvX1dvcmxkXzFfMENvbnNlcXVlbmNlSW52b2tlcifhlfKgIvVCAgAAeHBwc3EAfgAA +P0AAAAAAAAx3CAAAABAAAAAAeHBzcgATb3JnLmRyb29scy5ydWxlLkFuZPz45yLwpsN2AgAAeHIA +HG9yZy5kcm9vbHMucnVsZS5Hcm91cEVsZW1lbnStyDhMPW6oKAIAAUwACGNoaWxkcmVudAAQTGph +dmEvdXRpbC9MaXN0O3hxAH4ABnNyABNqYXZhLnV0aWwuQXJyYXlMaXN0eIHSHZnHYZ0DAAFJAARz +aXpleHAAAAADdwQAAAAKc3EAfgAYc3EAfgAcAAAAAncEAAAACnNyABZvcmcuZHJvb2xzLnJ1bGUu +Q29sdW1ufzmwAkCvUeYCAAVJAAVpbmRleEkABm9mZnNldEwAC2NvbnN0cmFpbnRzcQB+ABpMAAtk +ZWNsYXJhdGlvbnQAHUxvcmcvZHJvb2xzL3J1bGUvRGVjbGFyYXRpb247TAAKb2JqZWN0VHlwZXQA +G0xvcmcvZHJvb2xzL3NwaS9PYmplY3RUeXBlO3hwAAAAAAAAAABzcQB+ABwAAAABdwQAAAABc3IA +IW9yZy5kcm9vbHMucnVsZS5MaXRlcmFsQ29uc3RyYWludLL2CCNr01zdAgADTAAJZXZhbHVhdG9y +dAAaTG9yZy9kcm9vbHMvc3BpL0V2YWx1YXRvcjtMAAlleHRyYWN0b3J0AB9Mb3JnL2Ryb29scy9z +cGkvRmllbGRFeHRyYWN0b3I7TAAFZmllbGR0ABtMb3JnL2Ryb29scy9zcGkvRmllbGRWYWx1ZTt4 +cHNyAD1vcmcuZHJvb2xzLmJhc2UuZXZhbHVhdG9ycy5TdHJpbmdGYWN0b3J5JFN0cmluZ0VxdWFs +RXZhbHVhdG9ySU/lvdDlSJYCAAB4cgAdb3JnLmRyb29scy5iYXNlLkJhc2VFdmFsdWF0b3KuQXGs +NOGNawIAAkkACG9wZXJhdG9ySQAEdHlwZXhwAAAAAQAAALRzcgAjb3JnLmRyb29scy5iYXNlLkNs +YXNzRmllbGRFeHRyYWN0b3Jl+pJWyozjYwIAAkwABWNsYXp6dAARTGphdmEvbGFuZy9DbGFzcztM +AAlmaWVsZE5hbWVxAH4ADnhwdnIAEm9yZy5kcm9vbHMuTWVzc2FnZQAAAAAAAAAAAAAAeHB0AAht +ZXNzYWdlMXNyABlvcmcuZHJvb2xzLmJhc2UuRmllbGRJbXBsrplN9KzddkQCAAFMAAV2YWx1ZXQA +EkxqYXZhL2xhbmcvT2JqZWN0O3hwdAADT25leHBzcgAfb3JnLmRyb29scy5iYXNlLkNsYXNzT2Jq +ZWN0VHlwZTn3by4/Dg+CAgACSQAJdmFsdWVUeXBlTAAPb2JqZWN0VHlwZUNsYXNzcQB+AC54cAAA +ANJxAH4AMXNxAH4AIAAAAAEAAAAAc3EAfgAcAAAAAXcEAAAAAXNxAH4AJXEAfgAsc3EAfgAtcQB+ +ADF0AAhtZXNzYWdlMnNxAH4AM3QAA1R3b3hwc3EAfgA3AAAA0nEAfgAxeHNyABJvcmcuZHJvb2xz +LnJ1bGUuT3IVF4eAAV23IwIAAHhxAH4AGXNxAH4AHAAAAAJ3BAAAAApzcQB+ACAAAAACAAAAAHNx +AH4AHAAAAAF3BAAAAAFzcQB+ACVxAH4ALHNxAH4ALXEAfgAxdAAIbWVzc2FnZTJzcQB+ADNxAH4A +Nnhwc3EAfgA3AAAA0nEAfgAxc3EAfgAgAAAAAgAAAABzcQB+ABwAAAABdwQAAAABc3EAfgAlcQB+ +ACxzcQB+AC1xAH4AMXQACG1lc3NhZ2Uyc3EAfgAzcQB+AD94cHNxAH4ANwAAANJxAH4AMXhzcQB+ +AEFzcQB+ABwAAAACdwQAAAAKc3EAfgAgAAAAAwAAAABzcQB+ABwAAAABdwQAAAABc3EAfgAlcQB+ +ACxzcQB+AC1xAH4AMXQACG1lc3NhZ2Uzc3EAfgAzcQB+ADZ4cHNxAH4ANwAAANJxAH4AMXNxAH4A +IAAAAAMAAAAAc3EAfgAcAAAAAXcEAAAAAXNxAH4AJXEAfgAsc3EAfgAtcQB+ADF0AAhtZXNzYWdl +M3NxAH4AM3QABVRocmVleHBzcQB+ADcAAADScQB+ADF4eHQADUhlbGxvIFdvcmxkIDFwdAA4b3Jn +LmRyb29scy5yZXRlb28uUnVsZV9IZWxsb19Xb3JsZF8yXzBDb25zZXF1ZW5jZUludm9rZXJzcQB+ +AA0AAAAAAAAAAAIAAAAAAAFwcQB+ABRzcgA4b3JnLmRyb29scy5yZXRlb28uUnVsZV9IZWxsb19X +b3JsZF8yXzBDb25zZXF1ZW5jZUludm9rZXJ0dXLt8KwGgwIAAHhwcHNxAH4AAD9AAAAAAAAMdwgA +AAAQAAAAAHhwc3EAfgAYc3EAfgAcAAAABHcEAAAACnNxAH4AGHNxAH4AHAAAAAJ3BAAAAApzcQB+ +ACAAAAAAAAAAAHNxAH4AHAAAAAF3BAAAAAFzcQB+ACVxAH4ALHNxAH4ALXEAfgAxdAAIbWVzc2Fn +ZTFzcQB+ADNxAH4ANnhwc3EAfgA3AAAA0nEAfgAxc3EAfgAgAAAAAQAAAABzcQB+ABwAAAABdwQA +AAABc3EAfgAlcQB+ACxzcQB+AC1xAH4AMXQACG1lc3NhZ2Uyc3EAfgAzcQB+AD94cHNxAH4ANwAA +ANJxAH4AMXhzcQB+AEFzcQB+ABwAAAACdwQAAAAKc3EAfgAgAAAAAgAAAABzcQB+ABwAAAABdwQA +AAABc3EAfgAlcQB+ACxzcQB+AC1xAH4AMXQACG1lc3NhZ2Uyc3EAfgAzcQB+ADZ4cHNxAH4ANwAA +ANJxAH4AMXNxAH4AIAAAAAIAAAAAc3EAfgAcAAAAAXcEAAAAAXNxAH4AJXEAfgAsc3EAfgAtcQB+ +ADF0AAhtZXNzYWdlMnNxAH4AM3EAfgA/eHBzcQB+ADcAAADScQB+ADF4c3EAfgBBc3EAfgAcAAAA +AncEAAAACnNxAH4AIAAAAAMAAAAAc3EAfgAcAAAAAXcEAAAAAXNxAH4AJXEAfgAsc3EAfgAtcQB+ +ADF0AAhtZXNzYWdlM3NxAH4AM3EAfgA2eHBzcQB+ADcAAADScQB+ADFzcQB+ACAAAAADAAAAAHNx +AH4AHAAAAAF3BAAAAAFzcQB+ACVxAH4ALHNxAH4ALXEAfgAxdAAIbWVzc2FnZTNzcQB+ADNxAH4A +YXhwc3EAfgA3AAAA0nEAfgAxeHEAfgAHeHQADUhlbGxvIFdvcmxkIDJweA==</byte-array> + </org.drools.rule.PackageCompilationData> + <string>org.drools.reteoo</string> + <list> + <string>org.drools.Message</string> + <string>org.drools.reteoo.*</string> + <string>java.lang.*</string> + </list> + <map/> + <byte-array>rO0ABXNyABdqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDTATlwQbMD7AgABWgALYWNjZXNzT3JkZXJ4 +cgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4 +cD9AAAAAAAAMdwgAAAAQAAAAAnQADUhlbGxvIFdvcmxkIDFzcgAUb3JnLmRyb29scy5ydWxlLlJ1 +bGWXYS6qPu45BwIADloACWF1dG9Gb2N1c0oACWxvYWRPcmRlcloABm5vTG9vcEkACHNhbGllbmNl +WgARc2VtYW50aWNhbGx5VmFsaWRMAA9BY3RpdmF0aW9uR3JvdXB0ABJMamF2YS9sYW5nL1N0cmlu +ZztMAAthZ2VuZGFHcm91cHEAfgAFTAALY29uc2VxdWVuY2V0ABxMb3JnL2Ryb29scy9zcGkvQ29u +c2VxdWVuY2U7WwAQZGVjbGFyYXRpb25BcnJheXQAHltMb3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0 +aW9uO0wADGRlY2xhcmF0aW9uc3QAD0xqYXZhL3V0aWwvTWFwO0wACGR1cmF0aW9udAAZTG9yZy9k +cm9vbHMvc3BpL0R1cmF0aW9uO0wAB2xoc1Jvb3R0ABVMb3JnL2Ryb29scy9ydWxlL0FuZDtMAARu +YW1lcQB+AAVMAANwa2dxAH4ABXhwAAAAAAAAAAABAAAAAAABcHQABE1BSU5zcgA4b3JnLmRyb29s +cy5yZXRlb28uUnVsZV9IZWxsb19Xb3JsZF8xXzBDb25zZXF1ZW5jZUludm9rZXIn4ZXyoCL1QgIA +AHhwcHNxAH4AAT9AAAAAAAAMdwgAAAAQAAAAAHhwc3IAE29yZy5kcm9vbHMucnVsZS5BbmT8+Oci +8KbDdgIAAHhyABxvcmcuZHJvb2xzLnJ1bGUuR3JvdXBFbGVtZW50rcg4TD1uqCgCAAFMAAhjaGls +ZHJlbnQAEExqYXZhL3V0aWwvTGlzdDt4cgAib3JnLmRyb29scy5ydWxlLkNvbmRpdGlvbmFsRWxl +bWVudMYMc+lm86I2AgAAeHBzcgATamF2YS51dGlsLkFycmF5TGlzdHiB0h2Zx2GdAwABSQAEc2l6 +ZXhwAAAAA3cEAAAACnNxAH4AEHNxAH4AFQAAAAJ3BAAAAApzcgAWb3JnLmRyb29scy5ydWxlLkNv +bHVtbn85sAJAr1HmAgAFSQAFaW5kZXhJAAZvZmZzZXRMAAtjb25zdHJhaW50c3EAfgASTAALZGVj +bGFyYXRpb250AB1Mb3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uO0wACm9iamVjdFR5cGV0ABtM +b3JnL2Ryb29scy9zcGkvT2JqZWN0VHlwZTt4cAAAAAAAAAAAc3EAfgAVAAAAAXcEAAAAAXNyACFv +cmcuZHJvb2xzLnJ1bGUuTGl0ZXJhbENvbnN0cmFpbnSy9ggja9Nc3QIAA0wACWV2YWx1YXRvcnQA +GkxvcmcvZHJvb2xzL3NwaS9FdmFsdWF0b3I7TAAJZXh0cmFjdG9ydAAfTG9yZy9kcm9vbHMvc3Bp +L0ZpZWxkRXh0cmFjdG9yO0wABWZpZWxkdAAbTG9yZy9kcm9vbHMvc3BpL0ZpZWxkVmFsdWU7eHBz +cgA9b3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuU3RyaW5nRmFjdG9yeSRTdHJpbmdFcXVhbEV2 +YWx1YXRvcklP5b3Q5UiWAgAAeHIAHW9yZy5kcm9vbHMuYmFzZS5CYXNlRXZhbHVhdG9yrkFxrDTh +jWsCAAJJAAhvcGVyYXRvckkABHR5cGV4cAAAAAEAAAC0c3IAI29yZy5kcm9vbHMuYmFzZS5DbGFz +c0ZpZWxkRXh0cmFjdG9yZfqSVsqM42MCAAJMAAVjbGF6enQAEUxqYXZhL2xhbmcvQ2xhc3M7TAAJ +ZmllbGROYW1lcQB+AAV4cHZyABJvcmcuZHJvb2xzLk1lc3NhZ2UAAAAAAAAAAAAAAHhwdAAIbWVz +c2FnZTFzcgAZb3JnLmRyb29scy5iYXNlLkZpZWxkSW1wbK6ZTfSs3XZEAgABTAAFdmFsdWV0ABJM +amF2YS9sYW5nL09iamVjdDt4cHQAA09uZXhwc3IAH29yZy5kcm9vbHMuYmFzZS5DbGFzc09iamVj +dFR5cGU5928uPw4PggIAAkkACXZhbHVlVHlwZUwAD29iamVjdFR5cGVDbGFzc3EAfgAneHAAAADS +cQB+ACpzcQB+ABkAAAABAAAAAHNxAH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNxAH4AJnEAfgAq +dAAIbWVzc2FnZTJzcQB+ACx0AANUd294cHNxAH4AMAAAANJxAH4AKnhzcgASb3JnLmRyb29scy5y +dWxlLk9yFReHgAFdtyMCAAB4cQB+ABFzcQB+ABUAAAACdwQAAAAKc3EAfgAZAAAAAgAAAABzcQB+ +ABUAAAABdwQAAAABc3EAfgAecQB+ACVzcQB+ACZxAH4AKnQACG1lc3NhZ2Uyc3EAfgAscQB+AC94 +cHNxAH4AMAAAANJxAH4AKnNxAH4AGQAAAAIAAAAAc3EAfgAVAAAAAXcEAAAAAXNxAH4AHnEAfgAl +c3EAfgAmcQB+ACp0AAhtZXNzYWdlMnNxAH4ALHEAfgA4eHBzcQB+ADAAAADScQB+ACp4c3EAfgA6 +c3EAfgAVAAAAAncEAAAACnNxAH4AGQAAAAMAAAAAc3EAfgAVAAAAAXcEAAAAAXNxAH4AHnEAfgAl +c3EAfgAmcQB+ACp0AAhtZXNzYWdlM3NxAH4ALHEAfgAveHBzcQB+ADAAAADScQB+ACpzcQB+ABkA +AAADAAAAAHNxAH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNxAH4AJnEAfgAqdAAIbWVzc2FnZTNz +cQB+ACx0AAVUaHJlZXhwc3EAfgAwAAAA0nEAfgAqeHhxAH4AA3B0AA1IZWxsbyBXb3JsZCAyc3EA +fgAEAAAAAAAAAAACAAAAAAABcHEAfgAMc3IAOG9yZy5kcm9vbHMucmV0ZW9vLlJ1bGVfSGVsbG9f +V29ybGRfMl8wQ29uc2VxdWVuY2VJbnZva2VydHVy7fCsBoMCAAB4cHBzcQB+AAE/QAAAAAAADHcI +AAAAEAAAAAB4cHNxAH4AEHNxAH4AFQAAAAR3BAAAAApzcQB+ABBzcQB+ABUAAAACdwQAAAAKc3EA +fgAZAAAAAAAAAABzcQB+ABUAAAABdwQAAAABc3EAfgAecQB+ACVzcQB+ACZxAH4AKnQACG1lc3Nh +Z2Uxc3EAfgAscQB+AC94cHNxAH4AMAAAANJxAH4AKnNxAH4AGQAAAAEAAAAAc3EAfgAVAAAAAXcE +AAAAAXNxAH4AHnEAfgAlc3EAfgAmcQB+ACp0AAhtZXNzYWdlMnNxAH4ALHEAfgA4eHBzcQB+ADAA +AADScQB+ACp4c3EAfgA6c3EAfgAVAAAAAncEAAAACnNxAH4AGQAAAAIAAAAAc3EAfgAVAAAAAXcE +AAAAAXNxAH4AHnEAfgAlc3EAfgAmcQB+ACp0AAhtZXNzYWdlMnNxAH4ALHEAfgAveHBzcQB+ADAA +AADScQB+ACpzcQB+ABkAAAACAAAAAHNxAH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNxAH4AJnEA +fgAqdAAIbWVzc2FnZTJzcQB+ACxxAH4AOHhwc3EAfgAwAAAA0nEAfgAqeHNxAH4AOnNxAH4AFQAA +AAJ3BAAAAApzcQB+ABkAAAADAAAAAHNxAH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNxAH4AJnEA +fgAqdAAIbWVzc2FnZTNzcQB+ACxxAH4AL3hwc3EAfgAwAAAA0nEAfgAqc3EAfgAZAAAAAwAAAABz +cQB+ABUAAAABdwQAAAABc3EAfgAecQB+ACVzcQB+ACZxAH4AKnQACG1lc3NhZ2Uzc3EAfgAscQB+ +AFp4cHNxAH4AMAAAANJxAH4AKnhzcgAdb3JnLmRyb29scy5ydWxlLkV2YWxDb25kaXRpb27Bwin8 +/kFWOAIAAkwACmV4cHJlc3Npb250AB9Mb3JnL2Ryb29scy9zcGkvRXZhbEV4cHJlc3Npb247WwAU +cmVxdWlyZWREZWNsYXJhdGlvbnNxAH4AB3hxAH4AE3NyADJvcmcuZHJvb2xzLnJldGVvby5SdWxl +X0hlbGxvX1dvcmxkXzJfMEV2YWwwSW52b2tlcpcWvPJ3Fu9XAgAAeHB1cgAeW0xvcmcuZHJvb2xz +LnJ1bGUuRGVjbGFyYXRpb2479afPCzRoKeMCAAB4cAAAAAB4cQB+AFxweAA=</byte-array> + </org.drools.rule.Package> + </entry> + </map> + <byte-array>rO0ABXNyABZvcmcuZHJvb2xzLnJldGVvby5SZXRlm91EaJZIDFYCAANMAA1sYXN0QWRkZWROb2Rl +dAAiTG9yZy9kcm9vbHMvcmV0ZW9vL09iamVjdFR5cGVOb2RlO0wAD29iamVjdFR5cGVOb2Rlc3QA +D0xqYXZhL3V0aWwvTWFwO0wACHJlc29sdmVydAAjTG9yZy9kcm9vbHMvc3BpL09iamVjdFR5cGVS +ZXNvbHZlcjt4cgAeb3JnLmRyb29scy5yZXRlb28uT2JqZWN0U291cmNltmijIJDpM1QCAAFMAAtv +YmplY3RTaW5rc3QAIkxvcmcvZHJvb2xzL3JldGVvby9PYmplY3RTaW5rTGlzdDt4cgAab3JnLmRy +b29scy5yZXRlb28uQmFzZU5vZGXOTGpzJMiEyAIABFoAEGF0dGFjaGluZ05ld05vZGVaAAloYXNN +ZW1vcnlJAAJpZEkAC3NoYXJlZENvdW50eHAAAAAAAAAAAAAAc3IAJ29yZy5kcm9vbHMucmV0ZW9v +LkRlZmF1bHRPYmplY3RTaW5rTGlzdPo+R7tpyPGBAgAAeHIAE2phdmEudXRpbC5BcnJheUxpc3R4 +gdIdmcdhnQMAAUkABHNpemV4cAAAAAB3BAAAAAF4c3IAIG9yZy5kcm9vbHMucmV0ZW9vLk9iamVj +dFR5cGVOb2RlHFpT8/VEsecCAAJMAApvYmplY3RUeXBldAAbTG9yZy9kcm9vbHMvc3BpL09iamVj +dFR5cGU7TAAEcmV0ZXQAGExvcmcvZHJvb2xzL3JldGVvby9SZXRlO3hxAH4ABAABAAAAAQAAAABz +cgAmb3JnLmRyb29scy5yZXRlb28uSGFzaGVkT2JqZWN0U2lua0xpc3TV7ms9KQ8rtgIABEwAC2Fs +cGhhU3dpdGNocQB+AAJMAAtoYXNoZWRTaW5rc3QAEExqYXZhL3V0aWwvTGlzdDtMAA5sYXN0T2Jq +ZWN0U2lua3QAHkxvcmcvZHJvb2xzL3JldGVvby9PYmplY3RTaW5rO0wACm90aGVyU2lua3NxAH4A +EHhwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNo +b2xkeHA/QAAAAAAADHcIAAAAEAAAAANzcgAhb3JnLmRyb29scy5yZXRlb28uQWxwaGFOb2RlU3dp +dGNoMZuhVXO8i/ICAAJMAAthbHBoYVN3aXRjaHEAfgACTAAKY29uc3RyYWludHQAI0xvcmcvZHJv +b2xzL3J1bGUvTGl0ZXJhbENvbnN0cmFpbnQ7eHBzcQB+ABM/QAAAAAAADHcIAAAAEAAAAAF0AANP +bmVzcgAbb3JnLmRyb29scy5yZXRlb28uQWxwaGFOb2RlwVdcM1sgQfUCAAJMAApjb25zdHJhaW50 +dAAgTG9yZy9kcm9vbHMvc3BpL0ZpZWxkQ29uc3RyYWludDtMAAxvYmplY3RTb3VyY2V0ACBMb3Jn +L2Ryb29scy9yZXRlb28vT2JqZWN0U291cmNlO3hxAH4ABAABAAAAAgAAAABzcQB+AAgAAAABdwQA +AAABc3IAJm9yZy5kcm9vbHMucmV0ZW9vLkxlZnRJbnB1dEFkYXB0ZXJOb2Rlgw8/tI1cB8UCAAJM +AAZiaW5kZXJ0ACJMb3JnL2Ryb29scy9jb21tb24vQmV0YU5vZGVCaW5kZXI7TAAMb2JqZWN0U291 +cmNlcQB+ABx4cgAdb3JnLmRyb29scy5yZXRlb28uVHVwbGVTb3VyY2Wpd8v35SfRowIAAUwACnR1 +cGxlU2lua3NxAH4AEHhxAH4ABgABAAAAAwAAAAdzcQB+AAkAAAABdwQAAAABc3IAGm9yZy5kcm9v +bHMucmV0ZW9vLkpvaW5Ob2RlhoaNs5oqdWACAAB4cgAab3JnLmRyb29scy5yZXRlb28uQmV0YU5v +ZGXIoFuwvMOJ7QIAA0wADmpvaW5Ob2RlQmluZGVycQB+ACBMAAlsZWZ0SW5wdXR0AB9Mb3JnL2Ry +b29scy9yZXRlb28vVHVwbGVTb3VyY2U7TAAKcmlnaHRJbnB1dHEAfgAceHEAfgAhAAAAAAAFAAAA +B3NxAH4ACQAAAAJ3BAAAAAJzcQB+ACQAAAAAAAcAAAADc3EAfgAJAAAAAncEAAAAAnNxAH4AJAAA +AAAACQAAAAFzcQB+AAkAAAACdwQAAAACc3IAHm9yZy5kcm9vbHMucmV0ZW9vLlRlcm1pbmFsTm9k +ZeDeT2OkDz9qAgACTAAEcnVsZXQAFkxvcmcvZHJvb2xzL3J1bGUvUnVsZTtMAAt0dXBsZVNvdXJj +ZXEAfgAmeHEAfgAGAAAAAAAKAAAAAHNyABRvcmcuZHJvb2xzLnJ1bGUuUnVsZZdhLqo+7jkHAgAO +WgAJYXV0b0ZvY3VzSgAJbG9hZE9yZGVyWgAGbm9Mb29wSQAIc2FsaWVuY2VaABFzZW1hbnRpY2Fs +bHlWYWxpZEwAD0FjdGl2YXRpb25Hcm91cHQAEkxqYXZhL2xhbmcvU3RyaW5nO0wAC2FnZW5kYUdy +b3VwcQB+ADFMAAtjb25zZXF1ZW5jZXQAHExvcmcvZHJvb2xzL3NwaS9Db25zZXF1ZW5jZTtbABBk +ZWNsYXJhdGlvbkFycmF5dAAeW0xvcmcvZHJvb2xzL3J1bGUvRGVjbGFyYXRpb247TAAMZGVjbGFy +YXRpb25zcQB+AAJMAAhkdXJhdGlvbnQAGUxvcmcvZHJvb2xzL3NwaS9EdXJhdGlvbjtMAAdsaHNS +b290dAAVTG9yZy9kcm9vbHMvcnVsZS9BbmQ7TAAEbmFtZXEAfgAxTAADcGtncQB+ADF4cAAAAAAA +AAAAAQAAAAAAAXB0AARNQUlOc3IAOG9yZy5kcm9vbHMucmV0ZW9vLlJ1bGVfSGVsbG9fV29ybGRf +MV8wQ29uc2VxdWVuY2VJbnZva2VyJ+GV8qAi9UICAAB4cHBzcQB+ABM/QAAAAAAADHcIAAAAEAAA +AAB4cHNyABNvcmcuZHJvb2xzLnJ1bGUuQW5k/PjnIvCmw3YCAAB4cgAcb3JnLmRyb29scy5ydWxl +Lkdyb3VwRWxlbWVudK3IOEw9bqgoAgABTAAIY2hpbGRyZW5xAH4AEHhyACJvcmcuZHJvb2xzLnJ1 +bGUuQ29uZGl0aW9uYWxFbGVtZW50xgxz6WbzojYCAAB4cHNxAH4ACQAAAAN3BAAAAApzcQB+ADtz +cQB+AAkAAAACdwQAAAAKc3IAFm9yZy5kcm9vbHMucnVsZS5Db2x1bW5/ObACQK9R5gIABUkABWlu +ZGV4SQAGb2Zmc2V0TAALY29uc3RyYWludHNxAH4AEEwAC2RlY2xhcmF0aW9udAAdTG9yZy9kcm9v +bHMvcnVsZS9EZWNsYXJhdGlvbjtMAApvYmplY3RUeXBlcQB+AAx4cAAAAAAAAAAAc3EAfgAJAAAA +AXcEAAAAAXNyACFvcmcuZHJvb2xzLnJ1bGUuTGl0ZXJhbENvbnN0cmFpbnSy9ggja9Nc3QIAA0wA +CWV2YWx1YXRvcnQAGkxvcmcvZHJvb2xzL3NwaS9FdmFsdWF0b3I7TAAJZXh0cmFjdG9ydAAfTG9y +Zy9kcm9vbHMvc3BpL0ZpZWxkRXh0cmFjdG9yO0wABWZpZWxkdAAbTG9yZy9kcm9vbHMvc3BpL0Zp +ZWxkVmFsdWU7eHBzcgA9b3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuU3RyaW5nRmFjdG9yeSRT +dHJpbmdFcXVhbEV2YWx1YXRvcklP5b3Q5UiWAgAAeHIAHW9yZy5kcm9vbHMuYmFzZS5CYXNlRXZh +bHVhdG9yrkFxrDThjWsCAAJJAAhvcGVyYXRvckkABHR5cGV4cAAAAAEAAAC0c3IAI29yZy5kcm9v +bHMuYmFzZS5DbGFzc0ZpZWxkRXh0cmFjdG9yZfqSVsqM42MCAAJMAAVjbGF6enQAEUxqYXZhL2xh +bmcvQ2xhc3M7TAAJZmllbGROYW1lcQB+ADF4cHZyABJvcmcuZHJvb2xzLk1lc3NhZ2UAAAAAAAAA +AAAAAHhwdAAIbWVzc2FnZTFzcgAZb3JnLmRyb29scy5iYXNlLkZpZWxkSW1wbK6ZTfSs3XZEAgAB +TAAFdmFsdWV0ABJMamF2YS9sYW5nL09iamVjdDt4cHEAfgAZeHBzcgAfb3JnLmRyb29scy5iYXNl +LkNsYXNzT2JqZWN0VHlwZTn3by4/Dg+CAgACSQAJdmFsdWVUeXBlTAAPb2JqZWN0VHlwZUNsYXNz +cQB+AE94cAAAANJxAH4AUnNxAH4AQgAAAAEAAAAAc3EAfgAJAAAAAXcEAAAAAXNxAH4ARnEAfgBN +c3EAfgBOcQB+AFJ0AAhtZXNzYWdlMnNxAH4AVHQAA1R3b3hwc3EAfgBXAAAA0nEAfgBSeHNyABJv +cmcuZHJvb2xzLnJ1bGUuT3IVF4eAAV23IwIAAHhxAH4APHNxAH4ACQAAAAJ3BAAAAApzcQB+AEIA +AAACAAAAAHNxAH4ACQAAAAF3BAAAAAFzcQB+AEZxAH4ATXNxAH4ATnEAfgBSdAAIbWVzc2FnZTJz +cQB+AFRxAH4AGXhwc3EAfgBXAAAA0nEAfgBSc3EAfgBCAAAAAgAAAABzcQB+AAkAAAABdwQAAAAB +c3EAfgBGcQB+AE1zcQB+AE5xAH4AUnQACG1lc3NhZ2Uyc3EAfgBUcQB+AF94cHNxAH4AVwAAANJx +AH4AUnhzcQB+AGFzcQB+AAkAAAACdwQAAAAKc3EAfgBCAAAAAwAAAABzcQB+AAkAAAABdwQAAAAB +c3EAfgBGcQB+AE1zcQB+AE5xAH4AUnQACG1lc3NhZ2Uzc3EAfgBUcQB+ABl4cHNxAH4AVwAAANJx +AH4AUnNxAH4AQgAAAAMAAAAAc3EAfgAJAAAAAXcEAAAAAXNxAH4ARnEAfgBNc3EAfgBOcQB+AFJ0 +AAhtZXNzYWdlM3NxAH4AVHQABVRocmVleHBzcQB+AFcAAADScQB+AFJ4eHQADUhlbGxvIFdvcmxk +IDFwcQB+ACtzcgAjb3JnLmRyb29scy5yZXRlb28uRXZhbENvbmRpdGlvbk5vZGX0ZMFqPZPvZwIA +AkwACWNvbmRpdGlvbnQAH0xvcmcvZHJvb2xzL3J1bGUvRXZhbENvbmRpdGlvbjtMAAt0dXBsZVNv +dXJjZXEAfgAmeHEAfgAhAAEAAAATAAAAAHNxAH4ACQAAAAF3BAAAAAFzcQB+AC0AAAAAABQAAAAA +c3EAfgAwAAAAAAAAAAACAAAAAAABcHEAfgA3c3IAOG9yZy5kcm9vbHMucmV0ZW9vLlJ1bGVfSGVs +bG9fV29ybGRfMl8wQ29uc2VxdWVuY2VJbnZva2VydHVy7fCsBoMCAAB4cHBzcQB+ABM/QAAAAAAA +DHcIAAAAEAAAAAB4cHNxAH4AO3NxAH4ACQAAAAR3BAAAAApzcQB+ADtzcQB+AAkAAAACdwQAAAAK +c3EAfgBCAAAAAAAAAABzcQB+AAkAAAABdwQAAAABc3EAfgBGcQB+AE1zcQB+AE5xAH4AUnQACG1l +c3NhZ2Uxc3EAfgBUcQB+ABl4cHNxAH4AVwAAANJxAH4AUnNxAH4AQgAAAAEAAAAAc3EAfgAJAAAA +AXcEAAAAAXNxAH4ARnEAfgBNc3EAfgBOcQB+AFJ0AAhtZXNzYWdlMnNxAH4AVHEAfgBfeHBzcQB+ +AFcAAADScQB+AFJ4c3EAfgBhc3EAfgAJAAAAAncEAAAACnNxAH4AQgAAAAIAAAAAc3EAfgAJAAAA +AXcEAAAAAXNxAH4ARnEAfgBNc3EAfgBOcQB+AFJ0AAhtZXNzYWdlMnNxAH4AVHEAfgAZeHBzcQB+ +AFcAAADScQB+AFJzcQB+AEIAAAACAAAAAHNxAH4ACQAAAAF3BAAAAAFzcQB+AEZxAH4ATXNxAH4A +TnEAfgBSdAAIbWVzc2FnZTJzcQB+AFRxAH4AX3hwc3EAfgBXAAAA0nEAfgBSeHNxAH4AYXNxAH4A +CQAAAAJ3BAAAAApzcQB+AEIAAAADAAAAAHNxAH4ACQAAAAF3BAAAAAFzcQB+AEZxAH4ATXNxAH4A +TnEAfgBSdAAIbWVzc2FnZTNzcQB+AFRxAH4AGXhwc3EAfgBXAAAA0nEAfgBSc3EAfgBCAAAAAwAA +AABzcQB+AAkAAAABdwQAAAABc3EAfgBGcQB+AE1zcQB+AE5xAH4AUnQACG1lc3NhZ2Uzc3EAfgBU +cQB+AIF4cHNxAH4AVwAAANJxAH4AUnhzcgAdb3JnLmRyb29scy5ydWxlLkV2YWxDb25kaXRpb27B +win8/kFWOAIAAkwACmV4cHJlc3Npb250AB9Mb3JnL2Ryb29scy9zcGkvRXZhbEV4cHJlc3Npb247 +WwAUcmVxdWlyZWREZWNsYXJhdGlvbnNxAH4AM3hxAH4APXNyADJvcmcuZHJvb2xzLnJldGVvby5S +dWxlX0hlbGxvX1dvcmxkXzJfMEV2YWwwSW52b2tlcpcWvPJ3Fu9XAgAAeHB1cgAeW0xvcmcuZHJv +b2xzLnJ1bGUuRGVjbGFyYXRpb2479afPCzRoKeMCAAB4cAAAAAB4dAANSGVsbG8gV29ybGQgMnBx +AH4AhnhxAH4AwXEAfgAreHNyACBvcmcuZHJvb2xzLmNvbW1vbi5CZXRhTm9kZUJpbmRlctk6TZBB +8FqzAgABWwALY29uc3RyYWludHN0ACFbTG9yZy9kcm9vbHMvc3BpL0ZpZWxkQ29uc3RyYWludDt4 +cHVyACFbTG9yZy5kcm9vbHMuc3BpLkZpZWxkQ29uc3RyYWludDua9pf2tEoPxgIAAHhwAAAAAXNy +ACpvcmcuZHJvb2xzLmNvbW1vbi5JbnN0YW5jZUVxdWFsc0NvbnN0cmFpbnS7zovNlGVsmwIAAkkA +C290aGVyQ29sdW1uWwAMZGVjbGFyYXRpb25zcQB+ADN4cAAAAAJ1cQB+AMQAAAAAcQB+AClzcQB+ +ABoAAQAAAAgAAAAAc3EAfgAIAAAAAncEAAAAAnEAfgArc3EAfgAkAAAAAAAPAAAAAXNxAH4ACQAA +AAJ3BAAAAAJzcQB+AC0AAAAAABAAAAAAcQB+ADZxAH4A0XNxAH4AhAABAAAAFwAAAABzcQB+AAkA +AAABdwQAAAABc3EAfgAtAAAAAAAYAAAAAHEAfgCJcQB+ANR4cQB+AMFxAH4A0XhzcQB+AMd1cQB+ +AMoAAAABc3EAfgDMAAAAAnVxAH4AxAAAAABzcQB+ACQAAAAAAA4AAAADc3EAfgAJAAAAAncEAAAA +AnEAfgDRc3EAfgAkAAAAAAARAAAAAXNxAH4ACQAAAAJ3BAAAAAJzcQB+AC0AAAAAABIAAAAAcQB+ +ADZxAH4A3XNxAH4AhAABAAAAGQAAAABzcQB+AAkAAAABdwQAAAABc3EAfgAtAAAAAAAaAAAAAHEA +fgCJcQB+AOB4cQB+AMFxAH4A3XhzcQB+AMd1cQB+AMoAAAABc3EAfgDMAAAAAnVxAH4AxAAAAABx +AH4A23NxAH4AGgABAAAACwAAAABzcQB+AAgAAAACdwQAAAACc3EAfgAkAAAAAAAMAAAAAXNxAH4A +CQAAAAJ3BAAAAAJzcQB+AC0AAAAAAA0AAAAAcQB+ADZxAH4A6XNxAH4AhAABAAAAFQAAAABzcQB+ +AAkAAAABdwQAAAABc3EAfgAtAAAAAAAWAAAAAHEAfgCJcQB+AOx4cQB+AMFxAH4A6XhzcQB+AMd1 +cQB+AMoAAAABc3EAfgDMAAAAAnVxAH4AxAAAAABxAH4AKXEAfgDncQB+AN14cQB+AH1xAH4ADnhz +cQB+AMd1cQB+AMoAAAABc3EAfgDMAAAAAXVxAH4AxAAAAABxAH4AJ3NxAH4AGgABAAAABAAAAABz +cQB+AAgAAAACdwQAAAACcQB+ACdxAH4A23hxAH4AW3EAfgAOcQB+AM94cQB+AHZxAH4ADnEAfgDp +eHNxAH4Ax3VxAH4AygAAAAFzcQB+AMwAAAABdXEAfgDEAAAAAHEAfgAnc3EAfgAaAAEAAAAGAAAA +AHNxAH4ACAAAAAF3BAAAAAFxAH4AKXhxAH4AZnEAfgAOcQB+ANt4c3EAfgDHdXEAfgDKAAAAAXNx +AH4AzAAAAAB1cQB+AMQAAAAAcQB+ACJxAH4A93hzcQB+AMd1cQB+AMoAAAAAcQB+AB14cQB+AEpx +AH4ADnhxAH4ASnEAfgAXc3EAfgAVc3EAfgATP0AAAAAAAAx3CAAAABAAAAACcQB+AIFxAH4A53EA +fgAZcQB+AM94cQB+AHZxAH4BBXNxAH4AFXNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAnEAfgBfcQB+ +APdxAH4AGXEAfgD9eHEAfgBbcQB+AQd4c3EAfgAJAAAABXcEAAAAB3EAfgAdcQB+APdxAH4A/XEA +fgDPcQB+AOd4cQB+AOdzcQB+AAkAAAAAdwQAAAABeHEAfgBYcQB+AAdzcQB+ABM/QAAAAAAADHcI +AAAAEAAAAAFxAH4AWHEAfgAOeHNyACZvcmcuZHJvb2xzLnNwaS5DbGFzc09iamVjdFR5cGVSZXNv +bHZlcgKE2PxwsbDrAgABTAAKb2JqZWN0VHlwZXQAQ0xvcmcvZHJvb2xzL3NwaS9DbGFzc09iamVj +dFR5cGVSZXNvbHZlciRNb2RpZmllYWJsZUNsYXNzT2JqZWN0VHlwZTt4cHNyAEFvcmcuZHJvb2xz +LnNwaS5DbGFzc09iamVjdFR5cGVSZXNvbHZlciRNb2RpZmllYWJsZUNsYXNzT2JqZWN0VHlwZUSl +q5QCN/s1AgAAeHEAfgBXAAABLHBzcgAfb3JnLmRyb29scy5yZXRlb28uUmV0ZW9vQnVpbGRlckhO +IHYwMlIUAgAJSQAXY3VycmVudE9mZnNldEFkanVzdG1lbnRJAAJpZEwADWF0dGFjaGVkTm9kZXNx +AH4AAkwADGRlY2xhcmF0aW9uc3EAfgACTAAMb2JqZWN0U291cmNlcQB+ABxMAApvYmplY3RUeXBl +cQB+AAJMAAhyZXNvbHZlcnEAfgADTAAFcnVsZXNxAH4AAkwAC3R1cGxlU291cmNlcQB+ACZ4cAAA +AAAAAAAbc3EAfgATP0AAAAAAABh3CAAAACAAAAAScQB+ACtxAH4AK3EAfgDscQB+AOxxAH4AJ3EA +fgAncQB+AM9xAH4Az3EAfgAOcQB+AA5xAH4AHXEAfgAdcQB+ACJxAH4AInEAfgDbcQB+ANtxAH4A +6XEAfgDpcQB+AN1xAH4A3XEAfgCGcQB+AIZxAH4A4HEAfgDgcQB+AOdxAH4A53EAfgD9cQB+AP1x +AH4A1HEAfgDUcQB+APdxAH4A93EAfgDRcQB+ANFxAH4AKXEAfgApeHNxAH4AEz9AAAAAAAAMdwgA +AAAQAAAAAHhxAH4A53NyABdqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDTATlwQbMD7AgABWgALYWNj +ZXNzT3JkZXJ4cQB+ABM/QAAAAAAADHcIAAAAEAAAAAFxAH4Al3NyABFqYXZhLmxhbmcuSW50ZWdl +chLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAAD +eABxAH4BDnNxAH4AEz9AAAAAAAAMdwgAAAAQAAAAAnEAfgA2dXIAHVtMb3JnLmRyb29scy5yZXRl +b28uQmFzZU5vZGU7C+fJk0Ocs+oCAAB4cAAAAARxAH4AL3EAfgDrcQB+ANNxAH4A33EAfgCJdXEA +fgEbAAAABHEAfgCIcQB+AO5xAH4A1nEAfgDieHEAfgDgc3IAKm9yZy5kcm9vbHMucmV0ZW9vLkRl +ZmF1bHRGYWN0SGFuZGxlRmFjdG9yeVZzPs2mk8QSAgACSgAHY291bnRlckoAAmlkeHAAAAAAAAAA +AAAAAAAAAAAAc3EAfgATP0AAAAAAAAx3CAAAABAAAAAAeA==</byte-array> +</org.drools.reteoo.RuleBaseImpl> \ No newline at end of file Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrsPerson =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrsPerson 2006-05-25 02:38:51 UTC (rev 4416) +++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/reteoo/OneAndTwoOrsPerson 2006-05-25 02:38:59 UTC (rev 4417) @@ -0,0 +1,420 @@ +<org.drools.reteoo.RuleBaseImpl> + <map> + <entry> + <string>org.drools.reteoo</string> + <org.drools.rule.Package> + <org.drools.rule.PackageCompilationData> + <map> + <entry> + <string>org/drools/reteoo/Rule_Hello_World_2_0.class</string> + <byte-array>yv66vgAAADAAKQcAAgEAJm9yZy9kcm9vbHMvcmV0ZW9vL1J1bGVfSGVsbG9fV29ybGRfMl8wBwAE +AQAQamF2YS9sYW5nL09iamVjdAEABjxpbml0PgEAAygpVgEABENvZGUKAAMACQwABQAGAQAPTGlu +ZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAKExvcmcvZHJvb2xzL3Jl +dGVvby9SdWxlX0hlbGxvX1dvcmxkXzJfMDsBAAtjb25zZXF1ZW5jZQEATChMb3JnL2Ryb29scy9z +cGkvS25vd2xlZGdlSGVscGVyO0xqYXZhL2xhbmcvU3RyaW5nO0xvcmcvZHJvb2xzL0ZhY3RIYW5k +bGU7KVYBAApFeGNlcHRpb25zBwASAQATamF2YS9sYW5nL0V4Y2VwdGlvbgkAFAAWBwAVAQAQamF2 +YS9sYW5nL1N5c3RlbQwAFwAYAQADb3V0AQAVTGphdmEvaW8vUHJpbnRTdHJlYW07CAAaAQAGZG9u +ZSAxCgAcAB4HAB0BABNqYXZhL2lvL1ByaW50U3RyZWFtDAAfACABAAdwcmludGxuAQAVKExqYXZh +L2xhbmcvU3RyaW5nOylWAQAGZHJvb2xzAQAgTG9yZy9kcm9vbHMvc3BpL0tub3dsZWRnZUhlbHBl +cjsBAAkkbWVzc2FnZTEBABJMamF2YS9sYW5nL1N0cmluZzsBABMkbWVzc2FnZTFfX0hhbmRsZV9f +AQAXTG9yZy9kcm9vbHMvRmFjdEhhbmRsZTsBAApTb3VyY2VGaWxlAQAZUnVsZV9IZWxsb19Xb3Js +ZF8yXzAuamF2YQAhAAEAAwAAAAAAAgABAAUABgABAAcAAAAvAAEAAQAAAAUqtwAIsQAAAAIACgAA +AAYAAQAAAAcACwAAAAwAAQAAAAUADAANAAAACQAOAA8AAgAQAAAABAABABEABwAAAEsAAgADAAAA +CbIAExIZtgAbsQAAAAIACgAAAAoAAgAAAAkACAALAAsAAAAgAAMAAAAJACEAIgAAAAAACQAjACQA +AQAAAAkAJQAmAAIAAQAnAAAAAgAo</byte-array> + </entry> + <entry> + <string>org/drools/reteoo/Rule_Hello_World_1_0.class</string> + <byte-array>yv66vgAAADAAJQcAAgEAJm9yZy9kcm9vbHMvcmV0ZW9vL1J1bGVfSGVsbG9fV29ybGRfMV8wBwAE +AQAQamF2YS9sYW5nL09iamVjdAEABjxpbml0PgEAAygpVgEABENvZGUKAAMACQwABQAGAQAPTGlu +ZU51bWJlclRhYmxlAQASTG9jYWxWYXJpYWJsZVRhYmxlAQAEdGhpcwEAKExvcmcvZHJvb2xzL3Jl +dGVvby9SdWxlX0hlbGxvX1dvcmxkXzFfMDsBAAtjb25zZXF1ZW5jZQEAIyhMb3JnL2Ryb29scy9z +cGkvS25vd2xlZGdlSGVscGVyOylWAQAKRXhjZXB0aW9ucwcAEgEAE2phdmEvbGFuZy9FeGNlcHRp +b24JABQAFgcAFQEAEGphdmEvbGFuZy9TeXN0ZW0MABcAGAEAA291dAEAFUxqYXZhL2lvL1ByaW50 +U3RyZWFtOwgAGgEABmRvbmUgMQoAHAAeBwAdAQATamF2YS9pby9QcmludFN0cmVhbQwAHwAgAQAH +cHJpbnRsbgEAFShMamF2YS9sYW5nL1N0cmluZzspVgEABmRyb29scwEAIExvcmcvZHJvb2xzL3Nw +aS9Lbm93bGVkZ2VIZWxwZXI7AQAKU291cmNlRmlsZQEAGVJ1bGVfSGVsbG9fV29ybGRfMV8wLmph +dmEAIQABAAMAAAAAAAIAAQAFAAYAAQAHAAAALwABAAEAAAAFKrcACLEAAAACAAoAAAAGAAEAAAAH +AAsAAAAMAAEAAAAFAAwADQAAAAkADgAPAAIAEAAAAAQAAQARAAcAAAA3AAIAAQAAAAmyABMSGbYA +G7EAAAACAAoAAAAKAAIAAAAJAAgACwALAAAADAABAAAACQAhACIAAAABACMAAAACACQ=</byte-array> + </entry> + <entry> + <string>org/drools/reteoo/Rule_Hello_World_2_0ConsequenceInvoker.class</string> + <byte-array>yv66vgAAADAATwcAAgEAOG9yZy9kcm9vbHMvcmV0ZW9vL1J1bGVfSGVsbG9fV29ybGRfMl8wQ29u +c2VxdWVuY2VJbnZva2VyBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAGm9yZy9kcm9vbHMvc3Bp +L0NvbnNlcXVlbmNlAQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwALDAAHAAgBAA9MaW5lTnVtYmVy +VGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA6TG9yZy9kcm9vbHMvcmV0ZW9vL1J1 +bGVfSGVsbG9fV29ybGRfMl8wQ29uc2VxdWVuY2VJbnZva2VyOwEACGV2YWx1YXRlAQA9KExvcmcv +ZHJvb2xzL3NwaS9Lbm93bGVkZ2VIZWxwZXI7TG9yZy9kcm9vbHMvV29ya2luZ01lbW9yeTspVgEA +CkV4Y2VwdGlvbnMHABQBABNqYXZhL2xhbmcvRXhjZXB0aW9uCwAWABgHABcBAB5vcmcvZHJvb2xz +L3NwaS9Lbm93bGVkZ2VIZWxwZXIMABkAGgEACGdldFR1cGxlAQAYKClMb3JnL2Ryb29scy9zcGkv +VHVwbGU7CwAWABwMAB0AHgEAB2dldFJ1bGUBABgoKUxvcmcvZHJvb2xzL3J1bGUvUnVsZTsKACAA +IgcAIQEAFG9yZy9kcm9vbHMvcnVsZS9SdWxlDAAjACQBAA9nZXREZWNsYXJhdGlvbnMBACAoKVtM +b3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uOwsAJgAoBwAnAQAUb3JnL2Ryb29scy9zcGkvVHVw +bGUMACkAKgEAA2dldAEARShMb3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uOylMb3JnL2Ryb29s +cy9jb21tb24vSW50ZXJuYWxGYWN0SGFuZGxlOwsALAAuBwAtAQAYb3JnL2Ryb29scy9Xb3JraW5n +TWVtb3J5DAAvADABAAlnZXRPYmplY3QBACsoTG9yZy9kcm9vbHMvRmFjdEhhbmRsZTspTGphdmEv +bGFuZy9PYmplY3Q7CgAyADQHADMBABtvcmcvZHJvb2xzL3J1bGUvRGVjbGFyYXRpb24MADUANgEA +CGdldFZhbHVlAQAmKExqYXZhL2xhbmcvT2JqZWN0OylMamF2YS9sYW5nL09iamVjdDsHADgBABBq +YXZhL2xhbmcvU3RyaW5nCgA6ADwHADsBACZvcmcvZHJvb2xzL3JldGVvby9SdWxlX0hlbGxvX1dv +cmxkXzJfMAwAPQA+AQALY29uc2VxdWVuY2UBAEwoTG9yZy9kcm9vbHMvc3BpL0tub3dsZWRnZUhl +bHBlcjtMamF2YS9sYW5nL1N0cmluZztMb3JnL2Ryb29scy9GYWN0SGFuZGxlOylWAQAPa25vd2xl +ZGdlSGVscGVyAQAgTG9yZy9kcm9vbHMvc3BpL0tub3dsZWRnZUhlbHBlcjsBAA13b3JraW5nTWVt +b3J5AQAaTG9yZy9kcm9vbHMvV29ya2luZ01lbW9yeTsBAAV0dXBsZQEAFkxvcmcvZHJvb2xzL3Nw +aS9UdXBsZTsBAARydWxlAQAWTG9yZy9kcm9vbHMvcnVsZS9SdWxlOwEADGRlY2xhcmF0aW9ucwEA +HltMb3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uOwEAEyRtZXNzYWdlMV9fSGFuZGxlX18BABdM +b3JnL2Ryb29scy9GYWN0SGFuZGxlOwEACSRtZXNzYWdlMQEAEkxqYXZhL2xhbmcvU3RyaW5nOwEA +ClNvdXJjZUZpbGUBACtSdWxlX0hlbGxvX1dvcmxkXzJfMENvbnNlcXVlbmNlSW52b2tlci5qYXZh +ACEAAQADAAEABQAAAAIAAQAHAAgAAQAJAAAALwABAAEAAAAFKrcACrEAAAACAAwAAAAGAAEAAAAD +AA0AAAAMAAEAAAAFAA4ADwAAAAEAEAARAAIAEgAAAAQAAQATAAkAAADPAAMACAAAAD8ruQAVAQBO +K7kAGwEAOgQZBLYAHzoFLRkFAzK5ACUCADoGGQUDMiwZBrkAKwIAtgAxwAA3OgcrGQcZBrgAObEA +AAACAAwAAAAmAAkAAAAIAAcACQAPAAoAFgAMACIADwA2ABUANwAWADsAFAA+ABgADQAAAFIACAAA +AD8ADgAPAAAAAAA/AD8AQAABAAAAPwBBAEIAAgAHADgAQwBEAAMADwAwAEUARgAEABYAKQBHAEgA +BQAiAB0ASQBKAAYANgAJAEsATAAHAAEATQAAAAIATg==</byte-array> + </entry> + <entry> + <string>org/drools/reteoo/Rule_Hello_World_1_0ConsequenceInvoker.class</string> + <byte-array>yv66vgAAADAAMwcAAgEAOG9yZy9kcm9vbHMvcmV0ZW9vL1J1bGVfSGVsbG9fV29ybGRfMV8wQ29u +c2VxdWVuY2VJbnZva2VyBwAEAQAQamF2YS9sYW5nL09iamVjdAcABgEAGm9yZy9kcm9vbHMvc3Bp +L0NvbnNlcXVlbmNlAQAGPGluaXQ+AQADKClWAQAEQ29kZQoAAwALDAAHAAgBAA9MaW5lTnVtYmVy +VGFibGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAAR0aGlzAQA6TG9yZy9kcm9vbHMvcmV0ZW9vL1J1 +bGVfSGVsbG9fV29ybGRfMV8wQ29uc2VxdWVuY2VJbnZva2VyOwEACGV2YWx1YXRlAQA9KExvcmcv +ZHJvb2xzL3NwaS9Lbm93bGVkZ2VIZWxwZXI7TG9yZy9kcm9vbHMvV29ya2luZ01lbW9yeTspVgEA +CkV4Y2VwdGlvbnMHABQBABNqYXZhL2xhbmcvRXhjZXB0aW9uCwAWABgHABcBAB5vcmcvZHJvb2xz +L3NwaS9Lbm93bGVkZ2VIZWxwZXIMABkAGgEACGdldFR1cGxlAQAYKClMb3JnL2Ryb29scy9zcGkv +VHVwbGU7CwAWABwMAB0AHgEAB2dldFJ1bGUBABgoKUxvcmcvZHJvb2xzL3J1bGUvUnVsZTsKACAA +IgcAIQEAFG9yZy9kcm9vbHMvcnVsZS9SdWxlDAAjACQBAA9nZXREZWNsYXJhdGlvbnMBACAoKVtM +b3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uOwoAJgAoBwAnAQAmb3JnL2Ryb29scy9yZXRlb28v +UnVsZV9IZWxsb19Xb3JsZF8xXzAMACkAKgEAC2NvbnNlcXVlbmNlAQAjKExvcmcvZHJvb2xzL3Nw +aS9Lbm93bGVkZ2VIZWxwZXI7KVYBAA9rbm93bGVkZ2VIZWxwZXIBACBMb3JnL2Ryb29scy9zcGkv +S25vd2xlZGdlSGVscGVyOwEADXdvcmtpbmdNZW1vcnkBABpMb3JnL2Ryb29scy9Xb3JraW5nTWVt +b3J5OwEABHJ1bGUBABZMb3JnL2Ryb29scy9ydWxlL1J1bGU7AQAKU291cmNlRmlsZQEAK1J1bGVf +SGVsbG9fV29ybGRfMV8wQ29uc2VxdWVuY2VJbnZva2VyLmphdmEAIQABAAMAAQAFAAAAAgABAAcA +CAABAAkAAAAvAAEAAQAAAAUqtwAKsQAAAAIADAAAAAYAAQAAAAMADQAAAAwAAQAAAAUADgAPAAAA +AQAQABEAAgASAAAABAABABMACQAAAHQAAQAEAAAAGCu5ABUBAFcruQAbAQBOLbYAH1cruAAlsQAA +AAIADAAAABoABgAAAAgABwAJAA4ACgATABEAFAAQABcAFAANAAAAKgAEAAAAGAAOAA8AAAAAABgA +KwAsAAEAAAAYAC0ALgACAA4ACgAvADAAAwABADEAAAACADI=</byte-array> + </entry> + </map> + <null/> + <byte-array>rO0ABXNyABFqYXZhLnV0aWwuSGFzaE1hcAUH2sHDFmDRAwACRgAKbG9hZEZhY3RvckkACXRocmVz +aG9sZHhwP0AAAAAAAAx3CAAAABAAAAACdAA4b3JnLmRyb29scy5yZXRlb28uUnVsZV9IZWxsb19X +b3JsZF8xXzBDb25zZXF1ZW5jZUludm9rZXJzcgAUb3JnLmRyb29scy5ydWxlLlJ1bGWXYS6qPu45 +BwIADloACWF1dG9Gb2N1c0oACWxvYWRPcmRlcloABm5vTG9vcEkACHNhbGllbmNlWgARc2VtYW50 +aWNhbGx5VmFsaWRMAA9BY3RpdmF0aW9uR3JvdXB0ABJMamF2YS9sYW5nL1N0cmluZztMAAthZ2Vu +ZGFHcm91cHEAfgAETAALY29uc2VxdWVuY2V0ABxMb3JnL2Ryb29scy9zcGkvQ29uc2VxdWVuY2U7 +WwAQZGVjbGFyYXRpb25BcnJheXQAHltMb3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uO0wADGRl +Y2xhcmF0aW9uc3QAD0xqYXZhL3V0aWwvTWFwO0wACGR1cmF0aW9udAAZTG9yZy9kcm9vbHMvc3Bp +L0R1cmF0aW9uO0wAB2xoc1Jvb3R0ABVMb3JnL2Ryb29scy9ydWxlL0FuZDtMAARuYW1lcQB+AARM +AANwa2dxAH4ABHhwAAAAAAAAAAABAAAAAAABcHQABE1BSU5zcgA4b3JnLmRyb29scy5yZXRlb28u +UnVsZV9IZWxsb19Xb3JsZF8xXzBDb25zZXF1ZW5jZUludm9rZXIn4ZXyoCL1QgIAAHhwcHNxAH4A +AD9AAAAAAAAMdwgAAAAQAAAAAHhwc3IAE29yZy5kcm9vbHMucnVsZS5BbmT8+Oci8KbDdgIAAHhy +ABxvcmcuZHJvb2xzLnJ1bGUuR3JvdXBFbGVtZW50rcg4TD1uqCgCAAFMAAhjaGlsZHJlbnQAEExq +YXZhL3V0aWwvTGlzdDt4cgAib3JnLmRyb29scy5ydWxlLkNvbmRpdGlvbmFsRWxlbWVudMYMc+lm +86I2AgAAeHBzcgATamF2YS51dGlsLkFycmF5TGlzdHiB0h2Zx2GdAwABSQAEc2l6ZXhwAAAAA3cE +AAAACnNxAH4AD3NxAH4AFAAAAAJ3BAAAAApzcgAWb3JnLmRyb29scy5ydWxlLkNvbHVtbn85sAJA +r1HmAgAFSQAFaW5kZXhJAAZvZmZzZXRMAAtjb25zdHJhaW50c3EAfgARTAALZGVjbGFyYXRpb250 +AB1Mb3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uO0wACm9iamVjdFR5cGV0ABtMb3JnL2Ryb29s +cy9zcGkvT2JqZWN0VHlwZTt4cAAAAAAAAAAAc3EAfgAUAAAAAXcEAAAAAXNyACFvcmcuZHJvb2xz +LnJ1bGUuTGl0ZXJhbENvbnN0cmFpbnSy9ggja9Nc3QIAA0wACWV2YWx1YXRvcnQAGkxvcmcvZHJv +b2xzL3NwaS9FdmFsdWF0b3I7TAAJZXh0cmFjdG9ydAAfTG9yZy9kcm9vbHMvc3BpL0ZpZWxkRXh0 +cmFjdG9yO0wABWZpZWxkdAAbTG9yZy9kcm9vbHMvc3BpL0ZpZWxkVmFsdWU7eHBzcgA9b3JnLmRy +b29scy5iYXNlLmV2YWx1YXRvcnMuU3RyaW5nRmFjdG9yeSRTdHJpbmdFcXVhbEV2YWx1YXRvcklP +5b3Q5UiWAgAAeHIAHW9yZy5kcm9vbHMuYmFzZS5CYXNlRXZhbHVhdG9yrkFxrDThjWsCAAJJAAhv +cGVyYXRvckkABHR5cGV4cAAAAAEAAAC0c3IAI29yZy5kcm9vbHMuYmFzZS5DbGFzc0ZpZWxkRXh0 +cmFjdG9yZfqSVsqM42MCAAJMAAVjbGF6enQAEUxqYXZhL2xhbmcvQ2xhc3M7TAAJZmllbGROYW1l +cQB+AAR4cHZyABJvcmcuZHJvb2xzLk1lc3NhZ2UAAAAAAAAAAAAAAHhwdAAIbWVzc2FnZTFzcgAZ +b3JnLmRyb29scy5iYXNlLkZpZWxkSW1wbK6ZTfSs3XZEAgABTAAFdmFsdWV0ABJMamF2YS9sYW5n +L09iamVjdDt4cHQAA09uZXhwc3IAH29yZy5kcm9vbHMuYmFzZS5DbGFzc09iamVjdFR5cGU5928u +Pw4PggIAAkkACXZhbHVlVHlwZUwAD29iamVjdFR5cGVDbGFzc3EAfgAmeHAAAADScQB+AClzcQB+ +ABgAAAABAAAAAHNxAH4AFAAAAAF3BAAAAAFzcQB+AB1xAH4AJHNxAH4AJXEAfgApdAAIbWVzc2Fn +ZTJzcQB+ACt0AANUd294cHNxAH4ALwAAANJxAH4AKXhzcgASb3JnLmRyb29scy5ydWxlLk9yFReH +gAFdtyMCAAB4cQB+ABBzcQB+ABQAAAACdwQAAAAKc3EAfgAYAAAAAgAAAABzcQB+ABQAAAABdwQA +AAABc3EAfgAdcQB+ACRzcQB+ACVxAH4AKXQACG1lc3NhZ2Uyc3EAfgArcQB+AC54cHNxAH4ALwAA +ANJxAH4AKXNxAH4AD3NxAH4AFAAAAAJ3BAAAAApzcQB+ABgAAAADAAAAAHNxAH4AFAAAAAF3BAAA +AAFzcQB+AB1xAH4AJHNxAH4AJXZyABFvcmcuZHJvb2xzLkNoZWVzZe+FAhE7Rf31AgACSQAFcHJp +Y2VMAAR0eXBlcQB+AAR4cHQABHR5cGVzcQB+ACt0AAdzdGlsdG9ueHBzcQB+AC8AAADScQB+AEpz +cQB+ABgAAAAEAAAAAHNxAH4AFAAAAAF3BAAAAAFzcQB+AB1xAH4AJHNxAH4AJXEAfgBKdAAEdHlw +ZXNxAH4AK3QABGJyaWV4cHNxAH4ALwAAANJxAH4ASnh4c3EAfgA5c3EAfgAUAAAAAncEAAAACnNx +AH4AGAAAAAUAAAAAc3EAfgAUAAAAAXcEAAAAAXNxAH4AHXEAfgAkc3EAfgAlcQB+ACl0AAhtZXNz +YWdlM3NxAH4AK3EAfgAueHBzcQB+AC8AAADScQB+AClzcQB+ABgAAAAFAAAAAHNxAH4AFAAAAAF3 +BAAAAAFzcQB+AB1xAH4AJHNxAH4AJXEAfgApdAAIbWVzc2FnZTNzcQB+ACt0AAVUaHJlZXhwc3EA +fgAvAAAA0nEAfgApeHh0AA1IZWxsbyBXb3JsZCAxcHQAOG9yZy5kcm9vbHMucmV0ZW9vLlJ1bGVf +SGVsbG9fV29ybGRfMl8wQ29uc2VxdWVuY2VJbnZva2Vyc3EAfgADAAAAAAAAAAACAAAAAAABcHEA +fgALc3IAOG9yZy5kcm9vbHMucmV0ZW9vLlJ1bGVfSGVsbG9fV29ybGRfMl8wQ29uc2VxdWVuY2VJ +bnZva2VydHVy7fCsBoMCAAB4cHBzcQB+AAA/QAAAAAAADHcIAAAAEAAAAAF0AAkkbWVzc2FnZTFz +cgAbb3JnLmRyb29scy5ydWxlLkRlY2xhcmF0aW9uA3M8AfIg69YCAANJAAZjb2x1bW5MAAlleHRy +YWN0b3J0ABpMb3JnL2Ryb29scy9zcGkvRXh0cmFjdG9yO0wACmlkZW50aWZpZXJxAH4ABHhwAAAA +AHNxAH4AJXEAfgApdAAIbWVzc2FnZTFxAH4Abnhwc3EAfgAPc3EAfgAUAAAABHcEAAAACnNxAH4A +D3NxAH4AFAAAAAJ3BAAAAApzcQB+ABgAAAAAAAAAAHNxAH4AFAAAAAJ3BAAAAAJxAH4AcXNxAH4A +HXEAfgAkc3EAfgAlcQB+ACl0AAhtZXNzYWdlMXNxAH4AK3EAfgAueHBzcQB+AC8AAADScQB+AClz +cQB+ABgAAAABAAAAAHNxAH4AFAAAAAF3BAAAAAFzcQB+AB1xAH4AJHNxAH4AJXEAfgApdAAIbWVz +c2FnZTJzcQB+ACtxAH4AN3hwc3EAfgAvAAAA0nEAfgApeHNxAH4AOXNxAH4AFAAAAAJ3BAAAAApz +cQB+ABgAAAACAAAAAHNxAH4AFAAAAAF3BAAAAAFzcQB+AB1xAH4AJHNxAH4AJXEAfgApdAAIbWVz +c2FnZTJzcQB+ACtxAH4ALnhwc3EAfgAvAAAA0nEAfgApc3EAfgAPc3EAfgAUAAAAAncEAAAACnNx +AH4AGAAAAAMAAAAAc3EAfgAUAAAAAXcEAAAAAXNxAH4AHXEAfgAkc3EAfgAlcQB+AEp0AAR0eXBl +c3EAfgArcQB+AE14cHNxAH4ALwAAANJxAH4ASnNxAH4AGAAAAAQAAAAAc3EAfgAUAAAAAXcEAAAA +AXNxAH4AHXEAfgAkc3EAfgAlcQB+AEp0AAR0eXBlc3EAfgArcQB+AFV4cHNxAH4ALwAAANJxAH4A +Snh4c3EAfgA5c3EAfgAUAAAAAncEAAAACnNxAH4AGAAAAAUAAAAAc3EAfgAUAAAAAXcEAAAAAXNx +AH4AHXEAfgAkc3EAfgAlcQB+ACl0AAhtZXNzYWdlM3NxAH4AK3EAfgAueHBzcQB+AC8AAADScQB+ +AClzcQB+ABgAAAAFAAAAAHNxAH4AFAAAAAF3BAAAAAFzcQB+AB1xAH4AJHNxAH4AJXEAfgApdAAI +bWVzc2FnZTNzcQB+ACtxAH4AZnhwc3EAfgAvAAAA0nEAfgApeHNxAH4AOXNxAH4AFAAAAAJ3BAAA +AApzcQB+ABgAAAAGAAAAAHNxAH4AFAAAAAF3BAAAAAFzcQB+AB1xAH4AJHNxAH4AJXZyABFvcmcu +ZHJvb2xzLlBlcnNvbiSkLwIXn7hmAgAISQADYWdlWgAFYWxpdmVDAANzZXhMAApiaWdEZWNpbWFs +dAAWTGphdmEvbWF0aC9CaWdEZWNpbWFsO0wACmJpZ0ludGVnZXJ0ABZMamF2YS9tYXRoL0JpZ0lu +dGVnZXI7TAAFbGlrZXNxAH4ABEwABG5hbWVxAH4ABEwABnN0YXR1c3EAfgAEeHB0AARuYW1lc3EA +fgArdAAEbWFya3hwc3EAfgAvAAAA0nEAfgC4c3EAfgAYAAAABgAAAABzcQB+ABQAAAABdwQAAAAB +c3IAJ29yZy5kcm9vbHMucnVsZS5Cb3VuZFZhcmlhYmxlQ29uc3RyYWludHD61IBf/tZXAgAFSQAG +Y29sdW1uTAALZGVjbGFyYXRpb25xAH4AGUwACWV2YWx1YXRvcnEAfgAeTAAOZmllbGRFeHRyYWN0 +b3JxAH4AH1sAFHJlcXVpcmVkRGVjbGFyYXRpb25zcQB+AAZ4cAAAAABxAH4AcXEAfgAkc3EAfgAl +cQB+ALh0AARuYW1ldXIAHltMb3JnLmRyb29scy5ydWxlLkRlY2xhcmF0aW9uO/Wnzws0aCnjAgAA +eHAAAAABcQB+AHF4cHNxAH4ALwAAANJxAH4AuHh4dAANSGVsbG8gV29ybGQgMnB4</byte-array> + </org.drools.rule.PackageCompilationData> + <string>org.drools.reteoo</string> + <list> + <string>org.drools.Message</string> + <string>org.drools.Cheese</string> + <string>org.drools.Person</string> + <string>org.drools.reteoo.*</string> + <string>java.lang.*</string> + </list> + <map/> + <byte-array>rO0ABXNyABdqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDTATlwQbMD7AgABWgALYWNjZXNzT3JkZXJ4 +cgARamF2YS51dGlsLkhhc2hNYXAFB9rBwxZg0QMAAkYACmxvYWRGYWN0b3JJAAl0aHJlc2hvbGR4 +cD9AAAAAAAAMdwgAAAAQAAAAAnQADUhlbGxvIFdvcmxkIDFzcgAUb3JnLmRyb29scy5ydWxlLlJ1 +bGWXYS6qPu45BwIADloACWF1dG9Gb2N1c0oACWxvYWRPcmRlcloABm5vTG9vcEkACHNhbGllbmNl +WgARc2VtYW50aWNhbGx5VmFsaWRMAA9BY3RpdmF0aW9uR3JvdXB0ABJMamF2YS9sYW5nL1N0cmlu +ZztMAAthZ2VuZGFHcm91cHEAfgAFTAALY29uc2VxdWVuY2V0ABxMb3JnL2Ryb29scy9zcGkvQ29u +c2VxdWVuY2U7WwAQZGVjbGFyYXRpb25BcnJheXQAHltMb3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0 +aW9uO0wADGRlY2xhcmF0aW9uc3QAD0xqYXZhL3V0aWwvTWFwO0wACGR1cmF0aW9udAAZTG9yZy9k +cm9vbHMvc3BpL0R1cmF0aW9uO0wAB2xoc1Jvb3R0ABVMb3JnL2Ryb29scy9ydWxlL0FuZDtMAARu +YW1lcQB+AAVMAANwa2dxAH4ABXhwAAAAAAAAAAABAAAAAAABcHQABE1BSU5zcgA4b3JnLmRyb29s +cy5yZXRlb28uUnVsZV9IZWxsb19Xb3JsZF8xXzBDb25zZXF1ZW5jZUludm9rZXIn4ZXyoCL1QgIA +AHhwcHNxAH4AAT9AAAAAAAAMdwgAAAAQAAAAAHhwc3IAE29yZy5kcm9vbHMucnVsZS5BbmT8+Oci +8KbDdgIAAHhyABxvcmcuZHJvb2xzLnJ1bGUuR3JvdXBFbGVtZW50rcg4TD1uqCgCAAFMAAhjaGls +ZHJlbnQAEExqYXZhL3V0aWwvTGlzdDt4cgAib3JnLmRyb29scy5ydWxlLkNvbmRpdGlvbmFsRWxl +bWVudMYMc+lm86I2AgAAeHBzcgATamF2YS51dGlsLkFycmF5TGlzdHiB0h2Zx2GdAwABSQAEc2l6 +ZXhwAAAAA3cEAAAACnNxAH4AEHNxAH4AFQAAAAJ3BAAAAApzcgAWb3JnLmRyb29scy5ydWxlLkNv +bHVtbn85sAJAr1HmAgAFSQAFaW5kZXhJAAZvZmZzZXRMAAtjb25zdHJhaW50c3EAfgASTAALZGVj +bGFyYXRpb250AB1Mb3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uO0wACm9iamVjdFR5cGV0ABtM +b3JnL2Ryb29scy9zcGkvT2JqZWN0VHlwZTt4cAAAAAAAAAAAc3EAfgAVAAAAAXcEAAAAAXNyACFv +cmcuZHJvb2xzLnJ1bGUuTGl0ZXJhbENvbnN0cmFpbnSy9ggja9Nc3QIAA0wACWV2YWx1YXRvcnQA +GkxvcmcvZHJvb2xzL3NwaS9FdmFsdWF0b3I7TAAJZXh0cmFjdG9ydAAfTG9yZy9kcm9vbHMvc3Bp +L0ZpZWxkRXh0cmFjdG9yO0wABWZpZWxkdAAbTG9yZy9kcm9vbHMvc3BpL0ZpZWxkVmFsdWU7eHBz +cgA9b3JnLmRyb29scy5iYXNlLmV2YWx1YXRvcnMuU3RyaW5nRmFjdG9yeSRTdHJpbmdFcXVhbEV2 +YWx1YXRvcklP5b3Q5UiWAgAAeHIAHW9yZy5kcm9vbHMuYmFzZS5CYXNlRXZhbHVhdG9yrkFxrDTh +jWsCAAJJAAhvcGVyYXRvckkABHR5cGV4cAAAAAEAAAC0c3IAI29yZy5kcm9vbHMuYmFzZS5DbGFz +c0ZpZWxkRXh0cmFjdG9yZfqSVsqM42MCAAJMAAVjbGF6enQAEUxqYXZhL2xhbmcvQ2xhc3M7TAAJ +ZmllbGROYW1lcQB+AAV4cHZyABJvcmcuZHJvb2xzLk1lc3NhZ2UAAAAAAAAAAAAAAHhwdAAIbWVz +c2FnZTFzcgAZb3JnLmRyb29scy5iYXNlLkZpZWxkSW1wbK6ZTfSs3XZEAgABTAAFdmFsdWV0ABJM +amF2YS9sYW5nL09iamVjdDt4cHQAA09uZXhwc3IAH29yZy5kcm9vbHMuYmFzZS5DbGFzc09iamVj +dFR5cGU5928uPw4PggIAAkkACXZhbHVlVHlwZUwAD29iamVjdFR5cGVDbGFzc3EAfgAneHAAAADS +cQB+ACpzcQB+ABkAAAABAAAAAHNxAH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNxAH4AJnEAfgAq +dAAIbWVzc2FnZTJzcQB+ACx0AANUd294cHNxAH4AMAAAANJxAH4AKnhzcgASb3JnLmRyb29scy5y +dWxlLk9yFReHgAFdtyMCAAB4cQB+ABFzcQB+ABUAAAACdwQAAAAKc3EAfgAZAAAAAgAAAABzcQB+ +ABUAAAABdwQAAAABc3EAfgAecQB+ACVzcQB+ACZxAH4AKnQACG1lc3NhZ2Uyc3EAfgAscQB+AC94 +cHNxAH4AMAAAANJxAH4AKnNxAH4AEHNxAH4AFQAAAAJ3BAAAAApzcQB+ABkAAAADAAAAAHNxAH4A +FQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNxAH4AJnZyABFvcmcuZHJvb2xzLkNoZWVzZe+FAhE7Rf31 +AgACSQAFcHJpY2VMAAR0eXBlcQB+AAV4cHQABHR5cGVzcQB+ACx0AAdzdGlsdG9ueHBzcQB+ADAA +AADScQB+AEtzcQB+ABkAAAAEAAAAAHNxAH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNxAH4AJnEA +fgBLdAAEdHlwZXNxAH4ALHQABGJyaWV4cHNxAH4AMAAAANJxAH4AS3h4c3EAfgA6c3EAfgAVAAAA +AncEAAAACnNxAH4AGQAAAAUAAAAAc3EAfgAVAAAAAXcEAAAAAXNxAH4AHnEAfgAlc3EAfgAmcQB+ +ACp0AAhtZXNzYWdlM3NxAH4ALHEAfgAveHBzcQB+ADAAAADScQB+ACpzcQB+ABkAAAAFAAAAAHNx +AH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNxAH4AJnEAfgAqdAAIbWVzc2FnZTNzcQB+ACx0AAVU +aHJlZXhwc3EAfgAwAAAA0nEAfgAqeHhxAH4AA3B0AA1IZWxsbyBXb3JsZCAyc3EAfgAEAAAAAAAA +AAACAAAAAAABcHEAfgAMc3IAOG9yZy5kcm9vbHMucmV0ZW9vLlJ1bGVfSGVsbG9fV29ybGRfMl8w +Q29uc2VxdWVuY2VJbnZva2VydHVy7fCsBoMCAAB4cHBzcQB+AAE/QAAAAAAADHcIAAAAEAAAAAF0 +AAkkbWVzc2FnZTFzcgAbb3JnLmRyb29scy5ydWxlLkRlY2xhcmF0aW9uA3M8AfIg69YCAANJAAZj +b2x1bW5MAAlleHRyYWN0b3J0ABpMb3JnL2Ryb29scy9zcGkvRXh0cmFjdG9yO0wACmlkZW50aWZp +ZXJxAH4ABXhwAAAAAHNxAH4AJnEAfgAqdAAIbWVzc2FnZTFxAH4Abnhwc3EAfgAQc3EAfgAVAAAA +BHcEAAAACnNxAH4AEHNxAH4AFQAAAAJ3BAAAAApzcQB+ABkAAAAAAAAAAHNxAH4AFQAAAAJ3BAAA +AAJxAH4AcXNxAH4AHnEAfgAlc3EAfgAmcQB+ACp0AAhtZXNzYWdlMXNxAH4ALHEAfgAveHBzcQB+ +ADAAAADScQB+ACpzcQB+ABkAAAABAAAAAHNxAH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNxAH4A +JnEAfgAqdAAIbWVzc2FnZTJzcQB+ACxxAH4AOHhwc3EAfgAwAAAA0nEAfgAqeHNxAH4AOnNxAH4A +FQAAAAJ3BAAAAApzcQB+ABkAAAACAAAAAHNxAH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNxAH4A +JnEAfgAqdAAIbWVzc2FnZTJzcQB+ACxxAH4AL3hwc3EAfgAwAAAA0nEAfgAqc3EAfgAQc3EAfgAV +AAAAAncEAAAACnNxAH4AGQAAAAMAAAAAc3EAfgAVAAAAAXcEAAAAAXNxAH4AHnEAfgAlc3EAfgAm +cQB+AEt0AAR0eXBlc3EAfgAscQB+AE54cHNxAH4AMAAAANJxAH4AS3NxAH4AGQAAAAQAAAAAc3EA +fgAVAAAAAXcEAAAAAXNxAH4AHnEAfgAlc3EAfgAmcQB+AEt0AAR0eXBlc3EAfgAscQB+AFZ4cHNx +AH4AMAAAANJxAH4AS3h4c3EAfgA6c3EAfgAVAAAAAncEAAAACnNxAH4AGQAAAAUAAAAAc3EAfgAV +AAAAAXcEAAAAAXNxAH4AHnEAfgAlc3EAfgAmcQB+ACp0AAhtZXNzYWdlM3NxAH4ALHEAfgAveHBz +cQB+ADAAAADScQB+ACpzcQB+ABkAAAAFAAAAAHNxAH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNx +AH4AJnEAfgAqdAAIbWVzc2FnZTNzcQB+ACxxAH4AZ3hwc3EAfgAwAAAA0nEAfgAqeHNxAH4AOnNx +AH4AFQAAAAJ3BAAAAApzcQB+ABkAAAAGAAAAAHNxAH4AFQAAAAF3BAAAAAFzcQB+AB5xAH4AJXNx +AH4AJnZyABFvcmcuZHJvb2xzLlBlcnNvbiSkLwIXn7hmAgAISQADYWdlWgAFYWxpdmVDAANzZXhM +AApiaWdEZWNpbWFsdAAWTGphdmEvbWF0aC9CaWdEZWNpbWFsO0wACmJpZ0ludGVnZXJ0ABZMamF2 +YS9tYXRoL0JpZ0ludGVnZXI7TAAFbGlrZXNxAH4ABUwABG5hbWVxAH4ABUwABnN0YXR1c3EAfgAF +eHB0AARuYW1lc3EAfgAsdAAEbWFya3hwc3EAfgAwAAAA0nEAfgC4c3EAfgAZAAAABgAAAABzcQB+ +ABUAAAABdwQAAAABc3IAJ29yZy5kcm9vbHMucnVsZS5Cb3VuZFZhcmlhYmxlQ29uc3RyYWludHD6 +1IBf/tZXAgAFSQAGY29sdW1uTAALZGVjbGFyYXRpb25xAH4AGkwACWV2YWx1YXRvcnEAfgAfTAAO +ZmllbGRFeHRyYWN0b3JxAH4AIFsAFHJlcXVpcmVkRGVjbGFyYXRpb25zcQB+AAd4cAAAAABxAH4A +cXEAfgAlc3EAfgAmcQB+ALh0AARuYW1ldXIAHltMb3JnLmRyb29scy5ydWxlLkRlY2xhcmF0aW9u +O/Wnzws0aCnjAgAAeHAAAAABcQB+AHF4cHNxAH4AMAAAANJxAH4AuHh4cQB+AGlweAA=</byte-array> + </org.drools.rule.Package> + </entry> + </map> + <byte-array>rO0ABXNyABZvcmcuZHJvb2xzLnJldGVvby5SZXRlm91EaJZIDFYCAANMAA1sYXN0QWRkZWROb2Rl +dAAiTG9yZy9kcm9vbHMvcmV0ZW9vL09iamVjdFR5cGVOb2RlO0wAD29iamVjdFR5cGVOb2Rlc3QA +D0xqYXZhL3V0aWwvTWFwO0wACHJlc29sdmVydAAjTG9yZy9kcm9vbHMvc3BpL09iamVjdFR5cGVS +ZXNvbHZlcjt4cgAeb3JnLmRyb29scy5yZXRlb28uT2JqZWN0U291cmNltmijIJDpM1QCAAFMAAtv +YmplY3RTaW5rc3QAIkxvcmcvZHJvb2xzL3JldGVvby9PYmplY3RTaW5rTGlzdDt4cgAab3JnLmRy +b29scy5yZXRlb28uQmFzZU5vZGXOTGpzJMiEyAIABFoAEGF0dGFjaGluZ05ld05vZGVaAAloYXNN +ZW1vcnlJAAJpZEkAC3NoYXJlZENvdW50eHAAAAAAAAAAAAAAc3IAJ29yZy5kcm9vbHMucmV0ZW9v +LkRlZmF1bHRPYmplY3RTaW5rTGlzdPo+R7tpyPGBAgAAeHIAE2phdmEudXRpbC5BcnJheUxpc3R4 +gdIdmcdhnQMAAUkABHNpemV4cAAAAAB3BAAAAAF4c3IAIG9yZy5kcm9vbHMucmV0ZW9vLk9iamVj +dFR5cGVOb2RlHFpT8/VEsecCAAJMAApvYmplY3RUeXBldAAbTG9yZy9kcm9vbHMvc3BpL09iamVj +dFR5cGU7TAAEcmV0ZXQAGExvcmcvZHJvb2xzL3JldGVvby9SZXRlO3hxAH4ABAABAAAAFwAAAABz +cgAmb3JnLmRyb29scy5yZXRlb28uSGFzaGVkT2JqZWN0U2lua0xpc3TV7ms9KQ8rtgIABEwAC2Fs +cGhhU3dpdGNocQB+AAJMAAtoYXNoZWRTaW5rc3QAEExqYXZhL3V0aWwvTGlzdDtMAA5sYXN0T2Jq +ZWN0U2lua3QAHkxvcmcvZHJvb2xzL3JldGVvby9PYmplY3RTaW5rO0wACm90aGVyU2lua3NxAH4A +EHhwc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNo +b2xkeHA/QAAAAAAADHcIAAAAEAAAAAFzcgAhb3JnLmRyb29scy5yZXRlb28uQWxwaGFOb2RlU3dp +dGNoMZuhVXO8i/ICAAJMAAthbHBoYVN3aXRjaHEAfgACTAAKY29uc3RyYWludHQAI0xvcmcvZHJv +b2xzL3J1bGUvTGl0ZXJhbENvbnN0cmFpbnQ7eHBzcQB+ABM/QAAAAAAADHcIAAAAEAAAAAF0AARt +YXJrc3IAG29yZy5kcm9vbHMucmV0ZW9vLkFscGhhTm9kZcFXXDNbIEH1AgACTAAKY29uc3RyYWlu +dHQAIExvcmcvZHJvb2xzL3NwaS9GaWVsZENvbnN0cmFpbnQ7TAAMb2JqZWN0U291cmNldAAgTG9y +Zy9kcm9vbHMvcmV0ZW9vL09iamVjdFNvdXJjZTt4cQB+AAQAAQAAABgAAAAAc3EAfgAIAAAABHcE +AAAABHNyABpvcmcuZHJvb2xzLnJldGVvby5Kb2luTm9kZYaGjbOaKnVgAgAAeHIAGm9yZy5kcm9v +bHMucmV0ZW9vLkJldGFOb2RlyKBbsLzDie0CAANMAA5qb2luTm9kZUJpbmRlcnQAIkxvcmcvZHJv +b2xzL2NvbW1vbi9CZXRhTm9kZUJpbmRlcjtMAAlsZWZ0SW5wdXR0AB9Mb3JnL2Ryb29scy9yZXRl +b28vVHVwbGVTb3VyY2U7TAAKcmlnaHRJbnB1dHEAfgAceHIAHW9yZy5kcm9vbHMucmV0ZW9vLlR1 +cGxlU291cmNlqXfL9+Un0aMCAAFMAAp0dXBsZVNpbmtzcQB+ABB4cQB+AAYAAAAAABkAAAAAc3EA +fgAJAAAAAXcEAAAAAXNyAB5vcmcuZHJvb2xzLnJldGVvby5UZXJtaW5hbE5vZGXg3k9jpA8/agIA +AkwABHJ1bGV0ABZMb3JnL2Ryb29scy9ydWxlL1J1bGU7TAALdHVwbGVTb3VyY2VxAH4AInhxAH4A +BgAAAAAAGgAAAABzcgAUb3JnLmRyb29scy5ydWxlLlJ1bGWXYS6qPu45BwIADloACWF1dG9Gb2N1 +c0oACWxvYWRPcmRlcloABm5vTG9vcEkACHNhbGllbmNlWgARc2VtYW50aWNhbGx5VmFsaWRMAA9B +Y3RpdmF0aW9uR3JvdXB0ABJMamF2YS9sYW5nL1N0cmluZztMAAthZ2VuZGFHcm91cHEAfgAqTAAL +Y29uc2VxdWVuY2V0ABxMb3JnL2Ryb29scy9zcGkvQ29uc2VxdWVuY2U7WwAQZGVjbGFyYXRpb25B +cnJheXQAHltMb3JnL2Ryb29scy9ydWxlL0RlY2xhcmF0aW9uO0wADGRlY2xhcmF0aW9uc3EAfgAC +TAAIZHVyYXRpb250ABlMb3JnL2Ryb29scy9zcGkvRHVyYXRpb247TAAHbGhzUm9... [truncated message content] |
From: <jbo...@li...> - 2006-05-25 02:39:07
|
Author: mar...@jb... Date: 2006-05-24 22:38:51 -0400 (Wed, 24 May 2006) New Revision: 4416 Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldImpl.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java labs/jbossrules/trunk/drools-core/src/main/java/org/drools/visualize/ReteooJungViewer.java Log: JBRULES-271 Incorrect Handling of 'or' I have found a number of issues. -Added reteoo builder test, using equals test against previously know correct rete dump - using xstream -updating toString methods for more data -Added more equals and hashCode impl -Added more getHtml info to the Jung Visitor impl Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ClassFieldExtractor.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -67,6 +67,10 @@ public int getIndex() { return this.extractor.getIndex(); } + + public String getFieldName() { + return this.fieldName; + } public Object getValue(Object object) { return this.extractor.getValue( object ); @@ -76,18 +80,25 @@ return this.extractor.getObjectType(); } - public boolean equals(Object other) { - if ( this == other ) { + public String toString() { + return "[ClassFieldExtractor class=" + this.clazz + " field=" + this.fieldName + "]"; + } + + public int hashCode() { + return this.getObjectType().hashCode() * 17 + this.getIndex(); + } + + public boolean equals(Object object) { + if ( this == object ) { return true; } - if ( !(other instanceof ClassFieldExtractor) ) { + + if ( object == null || object.getClass() != ClassFieldExtractor.class ) { return false; } - ClassFieldExtractor extr = (ClassFieldExtractor) other; - return this.extractor.getObjectType().equals( extr.getObjectType() ) && this.extractor.getIndex() == extr.getIndex(); + + ClassFieldExtractor other = (ClassFieldExtractor) object; + + return this.extractor.getObjectType().equals( other.getObjectType() ) && this.extractor.getIndex() == other.getIndex(); } - - public int hashCode() { - return this.getObjectType().hashCode() * 17 + this.getIndex(); - } } \ No newline at end of file Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldImpl.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldImpl.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/FieldImpl.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -31,17 +31,21 @@ public Object getValue() { return this.value; } + + public String toString() { + return this.value.toString(); + } - public boolean equals(Object other) { - if ( this == other ) { + public boolean equals(Object object) { + if ( this == object ) { return true; } - if ( !(other instanceof FieldImpl) ) { + if ( object == null || !(object instanceof FieldValue) ) { return false; } - FieldImpl field = (FieldImpl) other; + FieldImpl other = (FieldImpl) object; - return (((this.value == null) && (field.value == null)) || ((this.value != null) && (this.value.equals( field.value )))); + return (((this.value == null) && (other.value == null)) || ((this.value != null) && (this.value.equals( other.value )))); } public int hashCode() { Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/common/InstanceEqualsConstraint.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -44,7 +44,24 @@ } public String toString() { - return this.getClass().getName() + "[ otherColumn == " + this.otherColumn + " ]"; + return "[InstanceEqualsConstraint otherColumn=" + this.otherColumn + " ]"; } + + public int hashCode() { + return this.otherColumn; + } + + public boolean equals(Object object) { + if ( this == object ) { + return true; + } + if ( object == null || getClass() != object.getClass() ) { + return false; + } + + InstanceEqualsConstraint other = ( InstanceEqualsConstraint ) object; + return this.otherColumn == other.otherColumn ; + } + } \ No newline at end of file Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/AlphaNode.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -23,6 +23,7 @@ import org.drools.FactException; import org.drools.RuleBaseConfiguration; import org.drools.common.PropagationContextImpl; +import org.drools.rule.LiteralConstraint; import org.drools.spi.FieldConstraint; import org.drools.spi.PropagationContext; @@ -188,6 +189,19 @@ this.attachingNewNode = false; } + + public void remove(BaseNode node, + WorkingMemoryImpl[] workingMemories) { + this.objectSinks.remove( (ObjectSink) node ); + removeShare(); + if ( this.sharedCount < 0 ) { + for ( int i = 0, length = workingMemories.length; i < length; i++ ) { + workingMemories[i].clearNodeMemory( this ); + } + this.objectSource.remove( this, + workingMemories ); + } + } /** * Creates a HashSet for the AlphaNode's memory. @@ -196,6 +210,14 @@ return new HashSet(); } + public String toString() { + return "[AlphaNode constraint=" + this.constraint + "]"; + } + + public int hashCode() { + return this.objectSource.hashCode() * 17 + ((this.constraint != null) ? this.constraint.hashCode() : 0); + } + /* * (non-Javadoc) * @@ -214,22 +236,4 @@ return this.objectSource.equals( other.objectSource ) && this.constraint.equals( other.constraint ); } - - public int hashCode() { - return this.objectSource.hashCode() * 17 + ((this.constraint != null) ? this.constraint.hashCode() : 0); - } - - public void remove(BaseNode node, - WorkingMemoryImpl[] workingMemories) { - this.objectSinks.remove( (ObjectSink) node ); - removeShare(); - if ( this.sharedCount < 0 ) { - for ( int i = 0, length = workingMemories.length; i < length; i++ ) { - workingMemories[i].clearNodeMemory( this ); - } - this.objectSource.remove( this, - workingMemories ); - } - } - } Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/BetaNode.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -19,6 +19,7 @@ import org.drools.RuleBaseConfiguration; import org.drools.common.BetaNodeBinder; import org.drools.common.PropagationContextImpl; +import org.drools.spi.FieldConstraint; import org.drools.spi.PropagationContext; /** @@ -89,6 +90,10 @@ this.joinNodeBinder = joinNodeBinder; } + + public FieldConstraint[] getConstraints(){ + return this.joinNodeBinder.getConstraints(); + } /* (non-Javadoc) * @see org.drools.reteoo.BaseNode#attach() Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/LeftInputAdapterNode.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -26,6 +26,7 @@ import org.drools.common.BetaNodeBinder; import org.drools.common.PropagationContextImpl; import org.drools.rule.EvalCondition; +import org.drools.spi.FieldConstraint; import org.drools.spi.PropagationContext; import org.drools.util.LinkedList; import org.drools.util.LinkedListNode; @@ -85,6 +86,10 @@ this.binder = binder; setHasMemory( true ); } + + public FieldConstraint[] getConstraints() { + return this.binder.getConstraints(); + } /* (non-Javadoc) * @see org.drools.reteoo.BaseNode#attach() Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/Rete.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -277,5 +277,22 @@ public Object createMemory( RuleBaseConfiguration config ) { return new HashMap(); } + + public int hashCode() { + return this.objectTypeNodes.hashCode(); + } + + public boolean equals(Object object) { + if ( object == this ) { + return true; + } + if ( object == null || object.getClass() != Rete.class ) { + return false; + } + + Rete other = (Rete) object; + return this.objectTypeNodes.equals( other.objectTypeNodes ); + } + } Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/ReteooToJungVisitor.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -23,7 +23,9 @@ import java.util.List; import java.util.Map; +import org.drools.base.ClassFieldExtractor; import org.drools.rule.LiteralConstraint; +import org.drools.spi.FieldConstraint; import org.drools.spi.FieldValue; import org.drools.util.ReflectiveVisitor; import org.drools.visualize.ReteooJungViewer.DroolsVertex; @@ -218,12 +220,12 @@ public String getHtml() { LiteralConstraint constraint = (LiteralConstraint) node.getConstraint(); - FieldValue field = constraint.getField(); - return "AlphaNode<br>field name : " + "<br>evaluator : " + constraint.getEvaluator() + "<br>value : " + field.getValue(); + ClassFieldExtractor extractor = ( ClassFieldExtractor ) constraint.getFieldExtractor(); + return "AlphaNode<br>field : " + extractor.getFieldName() + "<br>evaluator : " + constraint.getEvaluator() + "<br>value : " + constraint.getField(); } public String toString() { - return "AlphaNode"; + return this.node.toString(); } public Paint getFillPaint() { @@ -240,11 +242,11 @@ } public String getHtml() { - return "LeftInputAdapterNode : " + this.node.getId(); + return "LeftInputAdapterNode<br>" + dumpConstraints( this.node.getConstraints() ); } public String toString() { - return "leftInputAdapter"; + return this.node.toString(); } public Paint getFillPaint() { @@ -261,11 +263,11 @@ } public String getHtml() { - return "RightInputAdapterNodeVertex : " + this.node.getId(); + return "RightInputAdapterNode"; } public String toString() { - return "RightInputAdapterNodeVertex"; + return "RightInputAdapterNode"; } public Paint getFillPaint() { @@ -282,7 +284,7 @@ } public String getHtml() { - return "JoinNode : " + this.node.getId(); + return "JoinNode<br> " + dumpConstraints( this.node.getConstraints() ); } public String toString() { @@ -373,4 +375,12 @@ return Color.BLACK; } } + + public static String dumpConstraints(FieldConstraint[] constraints) { + StringBuffer buffer = new StringBuffer(); + for ( int i = 0, length = constraints.length; i < length; i++ ) { + buffer.append( constraints[i].toString() + "<br>" ); + } + return buffer.toString(); + } } Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/BoundVariableConstraint.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -17,7 +17,10 @@ +import java.util.Arrays; + import org.drools.WorkingMemory; +import org.drools.common.InstanceEqualsConstraint; import org.drools.common.InternalFactHandle; import org.drools.spi.Evaluator; import org.drools.spi.FieldConstraint; @@ -74,6 +77,41 @@ // } return evaluator.evaluate( this.fieldExtractor.getValue( handle.getObject() ), declaration.getValue( tuple.get( this.column ).getObject() ) ); + } + + public String toString() { + return "[BoundVariableConstraint fieldExtractor=" + this.fieldExtractor + " declaration=" + this.declaration + "]"; + } + /* (non-Javadoc) + * @see java.lang.Object#hashCode() + */ + @Override + public int hashCode() { + final int PRIME = 31; + int result = 1; + result = PRIME * result + this.column; + result = PRIME * result + ((this.declaration == null) ? 0 : this.declaration.hashCode()); + result = PRIME * result + ((this.evaluator == null) ? 0 : this.evaluator.hashCode()); + result = PRIME * result + ((this.fieldExtractor == null) ? 0 : this.fieldExtractor.hashCode()); + result = PRIME * result + Arrays.hashCode( this.requiredDeclarations ); + return result; + } + + public boolean equals(Object object) { + if ( this == object ) { + return true; + } + + if ( object == null || getClass() != object.getClass() ) { + return false; + } + + BoundVariableConstraint other = ( BoundVariableConstraint ) object; + + return (this.column == other.column) && this.fieldExtractor.equals( other.fieldExtractor ) && this.declaration.equals( other.declaration ) && this.evaluator.equals( other.evaluator ) && Arrays.equals( this.requiredDeclarations, + other.requiredDeclarations ); } + + } \ No newline at end of file Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/LiteralConstraint.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -35,7 +35,7 @@ private final Evaluator evaluator; - private static final Declaration[] requiredDeclarations = new Declaration[]{}; + private static final Declaration[] requiredDeclarations = new Declaration[0]; public LiteralConstraint(FieldValue field, FieldExtractor extractor, @@ -73,24 +73,25 @@ this.field.getValue() ); } - public boolean equals(Object other) { - if ( this == other ) { + public String toString() { + return "[LiteralConstraint fieldExtractor=" + this.extractor + " evaluator=" + this.evaluator + " value=" + this.field.getValue() + "]"; + } + + public int hashCode() { + return (this.field.hashCode() * 17) ^ (this.extractor.hashCode() * 11) ^ (this.evaluator.hashCode()); + + } + + public boolean equals(Object object) { + if ( this == object ) { return true; } - if ( !(other instanceof LiteralConstraint) ) { + if ( object == null || object.getClass() != LiteralConstraint.class ) { return false; } - LiteralConstraint lit = (LiteralConstraint) other; + LiteralConstraint other = (LiteralConstraint) object; - return this.field.equals( lit.field ) && this.extractor.equals( lit.extractor ) && this.evaluator.equals( lit.evaluator ); + return this.field.equals( other.field ) && this.extractor.equals( other.extractor ) && this.evaluator.equals( other.evaluator ); } - public int hashCode() { - return (this.field.hashCode() * 17) ^ (this.extractor.hashCode() * 11) ^ (this.evaluator.hashCode()); - - } - - public String toString() { - return "LiteralConstraint { Field(" + this.extractor.getIndex() + ") " + this.evaluator.toString() + " [" + this.field.getValue() + "] }"; - } }; \ No newline at end of file Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/PredicateConstraint.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -96,17 +96,15 @@ return this.expression.hashCode(); } - public boolean equals(Object object) { - if (object == null ) { - return false; - } else if ( object == this ){ + public boolean equals(Object object) { + if ( object == this ) { return true; } - if ( ! (object instanceof PredicateConstraint) ) { + if (object == null || object.getClass() != PredicateConstraint.class ) { return false; } - + PredicateConstraint other = ( PredicateConstraint ) object; return this.expression.equals( other.expression ); Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueConstraint.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -96,16 +96,14 @@ } public boolean equals(Object object) { - if (object == null ) { - return false; - } else if ( object == this ){ + if ( object == this ) { return true; } - if ( ! (object instanceof ReturnValueConstraint) ) { + if (object == null || object.getClass() != PredicateConstraint.class ) { return false; } - + ReturnValueConstraint other = ( ReturnValueConstraint ) object; return this.expression.equals( other.expression ); Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/visualize/ReteooJungViewer.java =================================================================== --- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/visualize/ReteooJungViewer.java 2006-05-25 00:54:30 UTC (rev 4415) +++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/visualize/ReteooJungViewer.java 2006-05-25 02:38:51 UTC (rev 4416) @@ -76,7 +76,7 @@ */ VisualizationViewer vv; - private boolean running; + private boolean running = true; public ReteooJungViewer(RuleBase ruleBase) { // Setup a standard left/right splitPane @@ -211,8 +211,7 @@ public void showGUI() { pack(); - setVisible( true ); - this.running = true; + setVisible( true ); addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { @@ -222,7 +221,7 @@ } ); } - public boolean isRunning() { + public synchronized boolean isRunning() { return this.running; } |
Author: unibrew Date: 2006-05-24 20:54:30 -0400 (Wed, 24 May 2006) New Revision: 4415 Added: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/DeleteTopic.java labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/delete_topic.xhtml Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml Log: [JBFORUMS-39] Moderator DeleteTopic Added: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/DeleteTopic.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/DeleteTopic.java 2006-05-25 00:11:04 UTC (rev 4414) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/DeleteTopic.java 2006-05-25 00:54:30 UTC (rev 4415) @@ -0,0 +1,87 @@ +/* +* JBoss, Home of Professional Open Source +* Copyright 2005, JBoss Inc., and individual contributors as indicated +* by the @authors tag. See the copyright.txt in the distribution for a +* full listing of individual contributors. +* +* This is free software; you can redistribute it and/or modify it +* under the terms of the GNU Lesser General Public License as +* published by the Free Software Foundation; either version 2.1 of +* the License, or (at your option) any later version. +* +* This software is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this software; if not, write to the Free +* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +* 02110-1301 USA, or see the FSF site: http://www.fsf.org. +*/ +package org.jboss.portlet.forums.ui.action; + +import org.jboss.portlet.forums.ui.BaseController; +import org.jboss.portlet.forums.ui.Constants; +import org.jboss.portlet.forums.ui.ForumUtil; +import org.jboss.portlet.forums.ui.JSFUtil; + +import org.jboss.portlet.forums.model.Forum; +import org.jboss.portlet.forums.model.Topic; + + +/** + * @author <a href="mailto:rys...@jb...">Ryszard Kozmik</a> + * + */ +public class DeleteTopic + extends ActionController +{ + //---------------------------------------------------------------------------------------------------------------------------------- + + /** + * + * + */ + public DeleteTopic() + { + + } + //actions--------------------------------------------------------------------------------------------------------------------------------- + + /** + * + */ + public String confirmDelete() + { + String navState = null; + try + { + //get the post id + int topicId = -1; + String t = ForumUtil.getParameter(Constants.p_topicId); + if (t != null && t.trim().length() > 0) + { + topicId = Integer.parseInt(t); + } + + //setup the business objects/data of interest + Topic topic = + BaseController.getForumsModule().findTopicById(new Integer(topicId)); + Forum forum = topic.getForum(); + + this.getForumsModule().removeTopic(topic); + forum.setPostCount(forum.getPostCount() - 1); + forum.setTopicCount(forum.getTopicCount() - 1); + + //set the proper navigation state + navState = Constants.TOPIC_DELETED; + + } + catch (Exception e) + { + JSFUtil.handleException(e); + } + return navState; + } +} Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java 2006-05-25 00:11:04 UTC (rev 4414) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java 2006-05-25 00:54:30 UTC (rev 4415) @@ -140,11 +140,29 @@ //ui actions supported by this bean---------------------------------------------------------------------------------------------------- - + //TODO: STILL NOT FINISHED public String deleteTopic () { - //System.out.println("HELLO"); - //FacesContext.getCurrentInstance().addMessage("message",new FacesMessage(FacesMessage.SEVERITY_INFO,"ehhh","ehhh")); + Iterator it = checkboxes.keySet().iterator(); + + // This flag checks if there was at least one topic selected + boolean isAnySet=false; + while (it.hasNext()) + { + Integer topicId = (Integer)it.next(); + boolean value = ((Boolean)checkboxes.get(topicId)).booleanValue(); + if ( value ) isAnySet=true; + Topic topic = (Topic)forum.getTopics().get(topicId.intValue()); + try { + this.getForumsModule().removeTopic(topic); + } catch(Exception e) + { + JSFUtil.handleException(e); + } + } + if (!isAnySet) + FacesContext.getCurrentInstance().addMessage("message", + new FacesMessage(FacesMessage.SEVERITY_WARN,"","ehhh")); return ""; } @@ -155,11 +173,7 @@ public String lockTopic () { - Iterator it = checkboxes.keySet().iterator(); - while (it.hasNext()) - { - Integer topicId = (Integer)it.next(); - } + return ""; } Modified: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml =================================================================== --- labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml 2006-05-25 00:11:04 UTC (rev 4414) +++ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/WEB-INF/forums-config.xml 2006-05-25 00:54:30 UTC (rev 4415) @@ -379,5 +379,17 @@ <from-outcome>deleteForum</from-outcome> <to-view-id>/views/admin/index.xhtml</to-view-id> </navigation-case> - </navigation-rule> + </navigation-rule> + <managed-bean> + <managed-bean-name>deleteTopic</managed-bean-name> + <managed-bean-class>org.jboss.portlet.forums.ui.action.DeleteTopic</managed-bean-class> + <managed-bean-scope>request</managed-bean-scope> + </managed-bean> + <navigation-rule> + <from-view-id>/views/moderator/delete_topic.xhtml</from-view-id> + <navigation-case> + <from-action>#{deleteTopic.confirmDelete}</from-action> + <to-view-id>/views/moderator/modcp_body.xhtml</to-view-id> + </navigation-case> + </navigation-rule> </faces-config> \ No newline at end of file Added: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/delete_topic.xhtml =================================================================== --- labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/delete_topic.xhtml 2006-05-25 00:11:04 UTC (rev 4414) +++ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/delete_topic.xhtml 2006-05-25 00:54:30 UTC (rev 4415) @@ -0,0 +1,63 @@ +<!-- +/* +* JBoss, Home of Professional Open Source +* Copyright 2005, JBoss Inc., and individual contributors as indicated +* by the @authors tag. See the copyright.txt in the distribution for a +* full listing of individual contributors. +* +* This is free software; you can redistribute it and/or modify it +* under the terms of the GNU Lesser General Public License as +* published by the Free Software Foundation; either version 2.1 of +* the License, or (at your option) any later version. +* +* This software is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this software; if not, write to the Free +* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA +* 02110-1301 USA, or see the FSF site: http://www.fsf.org. +*/ +--> + +<div xmlns="http://www.w3.org/1999/xhtml" + xmlns:ui="http://java.sun.com/jsf/facelets" + xmlns:c="http://java.sun.com/jstl/core" + xmlns:h="http://java.sun.com/jsf/html" + xmlns:f="http://java.sun.com/jsf/core" + xmlns:t="http://myfaces.apache.org/tomahawk" + xmlns:forums="http://www.jboss.com/products/jbossportal/forums" + class="bb" +> + +<ui:composition template="/views/common/common.xhtml"> +<ui:define name="mainContent"> + + <table class="forumline" width="100%" cellspacing="1" cellpadding="3" border="0"> + <tr> + <th class="thHead" height="25" valign="middle"><span class="tableTitle">${resource.Topic_delete_message}</span></th> + </tr> + <tr> + <td class="row1" align="center"> + <h:form> + <span class="gen"><br/> + ${resource.Topic_delete_confirm} + <br/><br/> + <input type="hidden" name="t" value="#{param['t']}"/> + <input type="hidden" name="f" value="#{param['f']}"/> + <h:commandButton type="submit" value="Yes" styleClass="mainoption" action="#{deleteTopic.confirmDelete}"/> + &nbsp;&nbsp; + <h:commandButton type="button" value="No" styleClass="liteoption" onclick="javascript:history.back();"/> + </span> + </h:form> + </td> + </tr> + </table> + + +</ui:define> +</ui:composition> + +</div> \ No newline at end of file |
From: <jbo...@li...> - 2006-05-25 00:11:23
|
Author: mic...@jb... Date: 2006-05-24 20:11:04 -0400 (Wed, 24 May 2006) New Revision: 4414 Added: labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/Marginal-age.drl Modified: labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/acme.dsl labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/approval.drl Log: lab 4 finished Added: labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/Marginal-age.drl =================================================================== --- labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/Marginal-age.drl 2006-05-24 22:58:11 UTC (rev 4413) +++ labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/Marginal-age.drl 2006-05-25 00:11:04 UTC (rev 4414) @@ -0,0 +1,16 @@ +package org.acme.insurance +expander acme.dsl + +# +# Sometimes it may make sense to manage one rule per file. +# + +rule "Driver is in marginal age" + #remember, don't leave any blank lines in between expressions + when + Driver is between 18 and 24 years old + Driver has had more than 1 prior claims + Policy type is 'COMPREHENSIVE' + then + Reject Policy with explanation : 'No accidents allowed if in marginal age group' +end Property changes on: labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/Marginal-age.drl ___________________________________________________________________ Name: svn:eol-style + native Modified: labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/acme.dsl =================================================================== --- labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/acme.dsl 2006-05-24 22:58:11 UTC (rev 4413) +++ labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/acme.dsl 2006-05-25 00:11:04 UTC (rev 4414) @@ -1,13 +1,12 @@ #ACME Discount insurance rule language -[then]Log "{message}"=System.out.println("{message}"); -[when]The Driver is less than {age} years old=d : Driver(age < {age}) -[when]The Driver is greater than {age} years old=d : Driver(age > {age}) -[when]The Driver has had more than {prior} prior claims=d : Driver(priorClaims > {prior}) -[when]The Policy type is '{type}'=Policy(type == "{type}") -[then]Reject the policy with explanation : '{reason}'=assert(new Rejection("{reason}")); -[when]The Driver has a location risk profile of '{risk}'=d : Driver(locationRiskProfile == "{risk}") -[when]The Driver has an age of at least {age}=d : Driver(age >= {age}) -[when]The Driver is between {lower} and {upper} years old=d : Driver(age >= {lower}, age <= {upper}) +[when]Driver is less than {age} years old=d : Driver(age < {age}) +[when]Driver is greater than {age} years old=d : Driver(age > {age}) +[when]Driver has had more than {prior} prior claims=d : Driver(priorClaims > {prior}) +[when]Policy type is '{type}'=Policy(type == "{type}") +[then]Reject Policy with explanation : '{reason}'=assert(new Rejection("{reason}")); +[when]Driver has a location risk profile of '{risk}'=d : Driver(locationRiskProfile == "{risk}") +[when]Driver has an age of at least {age}=d : Driver(age >= {age}) +[when]Driver is between {lower} and {upper} years old=d : Driver(age >= {lower}, age <= {upper}) [when]Policy has not been rejected=not Rejection() [when]Driver has had {number} prior claims=d : Driver(priorClaims == {number}) -[then]Approve the policy with the reason : '{reason}'=assert(new Approve("{reason}")); +[then]Approve Policy with the reason : '{reason}'=assert(new Approve("{reason}")); Modified: labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/approval.drl =================================================================== --- labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/approval.drl 2006-05-24 22:58:11 UTC (rev 4413) +++ labs/jbossrules/trunk/documentation/training/developers-course/lab-4-rule-formats/src/rules/approval/approval.drl 2006-05-25 00:11:04 UTC (rev 4414) @@ -11,72 +11,73 @@ rule "Driver has had too many accidents" when - The Driver has had more than 3 prior claims + Driver has had more than 3 prior claims then - Reject the policy with explanation : 'Too many accidents' + Reject Policy with explanation : 'Too many accidents' -end +end rule "Driver is underage" when - The Driver is less than 18 years old - then - Reject the policy with explanation : 'Driver is underage. Try another insurer' + Driver is less than 18 years old + then + Reject Policy with explanation : 'Driver is underage. Try another insurer' end rule "Driver is in marginal age" #remember, don't leave any blank lines in between expressions when - The Driver is between 18 and 24 years old - The Driver has had more than 1 prior claims - The Policy type is 'COMPREHENSIVE' + Driver is between 18 and 24 years old + Driver has had more than 1 prior claims + Policy type is 'COMPREHENSIVE' then - Reject the policy with explanation : 'No accidents allowed if in marginal age group' + Reject Policy with explanation : 'No accidents allowed if in marginal age group' end rule "Driver in unsafe area for marginal age" when - The Policy type is 'COMPREHENSIVE' - The Driver is less than 25 years old - The Driver has a location risk profile of 'HIGH' + Policy type is 'COMPREHENSIVE' + Driver is less than 25 years old + Driver has a location risk profile of 'HIGH' then - Reject the policy with explanation : 'Marginal age driver in high risk area' + Reject Policy with explanation : 'Marginal age driver in high risk area' end rule "Driver in unsafe area with priors" when - The Driver has a location risk profile of 'MED' - The Policy type is 'COMPREHENSIVE' - The Driver is less than 25 years old - The Driver has had more than 1 prior claims + Driver has a location risk profile of 'MED' + Policy type is 'COMPREHENSIVE' + Driver is less than 25 years old + Driver has had more than 1 prior claims then - Reject the policy with explanation : 'Driver in that area is too risky - given past accidents and age.' + Reject Policy with explanation : 'Driver in that area is too risky - given past accidents and age.' end rule "Driver unsafe for third party" when - The Policy type is 'THIRD_PARTY' - The Driver has had more than 2 prior claims - then - Reject the policy with explanation : 'Too many priors for third party' + Policy type is 'THIRD_PARTY' + Driver has had more than 2 prior claims + then + Reject Policy with explanation : 'Too many priors for third party' + end - + rule "Driver in bad area for theft" when - The Policy type is 'FIRE_THEFT' - The Driver has a location risk profile of 'HIGH' - then - Reject the policy with explanation : 'Unsafe area for theft' + Policy type is 'FIRE_THEFT' + Driver has a location risk profile of 'HIGH' + then + Reject Policy with explanation : 'Unsafe area for theft' end rule "Quick approval - safe driver, any policy type" when Policy has not been rejected - The Driver has an age of at least 30 + Driver has an age of at least 30 Driver has had 0 prior claims then - Approve the policy with the reason : 'Driver is safe and mature.' + Approve Policy with the reason : 'Driver is safe and mature.' end |
From: <jbo...@li...> - 2006-05-24 22:58:17
|
Author: soh...@jb... Date: 2006-05-24 18:58:11 -0400 (Wed, 24 May 2006) New Revision: 4413 Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java Log: Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java 2006-05-24 22:34:45 UTC (rev 4412) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java 2006-05-24 22:58:11 UTC (rev 4413) @@ -101,7 +101,8 @@ catch(Exception e) { log.error(this,e); - throw new FacesException(e); + //something went wrong in the Authorization system + skipAuth = true; } if(skipAuth) Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java 2006-05-24 22:34:45 UTC (rev 4412) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java 2006-05-24 22:58:11 UTC (rev 4413) @@ -79,7 +79,9 @@ catch(Exception e) { log.error(this,e); - throw new FacesException("Error calling action method of component with id " + actionEvent.getComponent().getClientId(facesContext), e); + + //something went wrong in the Authorization system + skipAuth = true; } if(skipAuth) |
From: <jbo...@li...> - 2006-05-24 22:34:55
|
Author: wrzep Date: 2006-05-24 18:34:45 -0400 (Wed, 24 May 2006) New Revision: 4412 Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/CellTemplate.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Column.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Columns.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/MatrixTemplate.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/MetricTemplate.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/RowTemplate.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java Log: JBLAB-599 Pawel Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/Status.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -214,8 +214,13 @@ return false; } - //TODO refresh scores + log.info("Refreshing scores..."); + mainPageColumns.update(pluginsValues); + matrixTemplate.update(pluginsValues); + + log.info("Finished refreshing scores."); + return true; } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/common/Constants.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -5,10 +5,6 @@ */ public class Constants { - - /* The length of time to sleep (in milliseconds) - * if requested scores are not available */ - public static final long SLEEP_TIME = 2000; public static final int MAX_ATTEMPTS = 10; public static final String QUEUE_NAME = "queue/jmm"; @@ -18,7 +14,9 @@ public static final String GET_SCORES_MESSAGE = "get"; public static final String STATUS_LOCAL_SERVICE = "Status/LocalScoresService"; - public static final String STATUS_REMOTE_SERVICE = "Status/RemoteScoresService"; + public static final String STATUS_REMOTE_SERVICE = "Status/RemoteScoresService"; + + public static final long CACHE_INTERVAL = 10*60*1000; /* milliseconds */ /** * This class cannot be instatiated. Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresMDB.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -63,7 +63,6 @@ private static Logger log = Logger.getLogger(ScoresMDB.class); - public void onMessage(Message msg) { ObjectMessage message = (ObjectMessage) msg; @@ -71,8 +70,9 @@ try { String requestName = message.getStringProperty(Constants.NAME_PROPERTY); - System.out.println("request name: " + requestName); + log.info("Request name: " + requestName); + if (requestName.equals(Constants.SAVE_MESSAGE)) { SaveRequest saveRequest = (SaveRequest) message.getObject(); @@ -85,7 +85,8 @@ (GetScoresRequest) message.getObject(); handleRequest(getScoresRequest); } - + + log.info("Finished processing request: " + requestName); } catch (JMSException e) { log.error(e); //TODO @@ -101,10 +102,7 @@ ScoresManagerSync.save(projects, pluginsConf); } catch (ScoresSaveException e) { log.error(e); //TODO - } - - System.out.println("SAVED"); - + } } private static void handleRequest(GetScoresRequest getScoresRequest) { @@ -121,7 +119,6 @@ } RecordManager.add(timestamp, pluginsValues); - System.out.println("added! " + pluginsValues); } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/service/impl/ScoresServiceImpl.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -125,6 +125,8 @@ // Save values and store then in cache values.put(getCurrentNodeName(), pluginsValues); save(node, pluginsValues); + + log.info("Saved succesfully"); } /** @@ -143,7 +145,7 @@ oos.writeObject((PluginsValuesImpl) pluginsValues); oos.close(); node.save("update"); /* os is closed inside save() */ - log.info("Saved succesfully"); + } catch (Exception e) { log.error("Error while saving shotoku node: " + node.getFullName(), e); @@ -191,6 +193,8 @@ log.info("Finished."); values.put(key,v); } + } else { + log.info("Returned cached value."); } return v; Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/CellTemplate.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/CellTemplate.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/CellTemplate.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -56,6 +56,14 @@ metricTemplates = parseMetricTemplates(metricsNode, pluginsValues); } + public void update(PluginsValues pluginsValues) { + + for (MetricTemplate metric : metricTemplates) { + + metric.update(pluginsValues); + } + } + /** * Gets metrics information from the given Node. * Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Column.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Column.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Column.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -59,6 +59,11 @@ log = Logger.getLogger(this.getClass()); } + public void update(PluginValues pluginValues) { + + this.pluginValues = pluginValues; + } + /** * Fills the given context with information appropriate for * the Status Matrix cell, located in the project row and this column. @@ -166,4 +171,5 @@ public String getName() { return name; } + } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Columns.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Columns.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/Columns.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -87,6 +87,16 @@ Tags.ORDER_PLUGIN_ELEMENT); } + public void update(PluginsValues pluginsValues) { + + for (Column column : columns) { + + PluginValues pluginValues = + pluginsValues.getPluginValues(column.getId()); + column.update(pluginValues); + } + } + /** * Adds to the columns list columns defined in columnsRoot. * @@ -122,27 +132,7 @@ } } - /** - * Retruns Plugin determining project order in the Status Matrix. - * - * @param pageRoot Node specfying Columns properties - * @param plugins Plugins used by Columns - * @return Plugin determining projects order - * or null if it is not specified in the properties - */ /* - private Plugin getOrderPlugin(Node pageRoot, PluginsValues pluginsValues) { - - String orderPluginId = XmlTools.getChildNodeValue(pageRoot, - StatusTags.ORDER_PLUGIN_ELEMENT); - - if (orderPluginId != null) { - return pluginsValues.get(orderPluginId); - } - - return null; - }*/ - /** * Fills the given context with the columns information. * Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/MatrixTemplate.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/MatrixTemplate.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/MatrixTemplate.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -61,6 +61,14 @@ rowTemplates = parseMatrixTemplate(rowsRoot, pluginsValues); } + public void update(PluginsValues pluginsValues) { + + for (RowTemplate row : rowTemplates) { + + row.update(pluginsValues); + } + } + /** * Gets rows information from the given Node. * Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/MetricTemplate.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/MetricTemplate.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/MetricTemplate.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -36,8 +36,9 @@ */ public class MetricTemplate { - String name; - PluginValues pluginValues; + private String name; + private String pluginId; + private PluginValues pluginValues; /** * @param cellNode root Node specfying cell properties @@ -48,11 +49,16 @@ name = XmlTools.getChildNodeValue(cellNode, Tags.METRIC_NAME_ELEMENT); - String pluginId = XmlTools.getChildNodeValue(cellNode, + pluginId = XmlTools.getChildNodeValue(cellNode, Tags.METRIC_PLUGIN_ELEMENT); pluginValues = pluginsValues.getPluginValues(pluginId); } + + public void update(PluginsValues pluginsValues) { + + pluginValues = pluginsValues.getPluginValues(pluginId); + } /** * Fills the given context with metric information for specified project. @@ -72,6 +78,5 @@ Integer.toString(pluginValues.getRate(projectId))); } } - } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/RowTemplate.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/RowTemplate.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/templates/RowTemplate.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -64,6 +64,14 @@ cellTemplates = parseRowTemplate(cellsNode, pluginsValues); } + public void update(PluginsValues pluginsValues) { + + for (CellTemplate cell : cellTemplates) { + + cell.update(pluginsValues); + } + } + /** * Gets cells information from the given Node. * Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/RecordManager.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -23,19 +23,17 @@ } buff.add(new TimestampedScore(sent, pluginsValues)); - - System.out.println("added " + sent + " " + buff.size()); } public static PluginsValues get(Timestamp sent) { - System.out.println("get " + sent + " size=" + buff.size()); - for (int i = 0; i < buff.size (); i++) { - TimestampedScore ts = buff.get(i); System.out.print("get " + ts + " "); + TimestampedScore ts = buff.get(i); if (ts.getTimestamp().equals(sent)) { + + buff.remove(i); return ts.getPluginsValues(); } } Modified: labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java 2006-05-24 22:34:09 UTC (rev 4411) +++ labs/jbosslabs/trunk/portal-extensions/forge-status/src/java/org/jboss/forge/status/tools/Tools.java 2006-05-24 22:34:45 UTC (rev 4412) @@ -2,6 +2,7 @@ import org.jboss.forge.status.StatusDescriptor; import org.jboss.forge.status.StatusConfWatcher; +import org.jboss.forge.status.common.Constants; import org.jboss.shotoku.aop.CacheItem; @@ -11,7 +12,7 @@ */ public class Tools { - @CacheItem(interval=10000) + @CacheItem(interval=Constants.CACHE_INTERVAL) private static StatusConfWatcher conf; public static synchronized StatusDescriptor getDesc(final String portalName) { |
From: <jbo...@li...> - 2006-05-24 22:34:16
|
Author: unibrew Date: 2006-05-24 18:34:09 -0400 (Wed, 24 May 2006) New Revision: 4411 Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/modcp_body.xhtml Log: [JBFORUMS-39] Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java 2006-05-24 22:31:43 UTC (rev 4410) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/ui/action/ModeratorAction.java 2006-05-24 22:34:09 UTC (rev 4411) @@ -30,6 +30,7 @@ import java.util.ResourceBundle; +import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.component.UIViewRoot; import javax.faces.component.html.HtmlInputHidden; @@ -142,6 +143,8 @@ public String deleteTopic () { + //System.out.println("HELLO"); + //FacesContext.getCurrentInstance().addMessage("message",new FacesMessage(FacesMessage.SEVERITY_INFO,"ehhh","ehhh")); return ""; } @@ -152,6 +155,11 @@ public String lockTopic () { + Iterator it = checkboxes.keySet().iterator(); + while (it.hasNext()) + { + Integer topicId = (Integer)it.next(); + } return ""; } @@ -172,13 +180,11 @@ { // start with a stub implementation this.forum = BaseController.getForumsModule().findForumById(new Integer(forumId)); - //checkboxes = new HashMap(forum.getTopicCount()); checkboxes=new HashMap(); Iterator it = forum.getTopics().iterator(); while (it.hasNext()) { Topic topic = (Topic)it.next(); - //checkboxes.put(topic.getId(),Boolean.FALSE); } } } Modified: labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/modcp_body.xhtml =================================================================== --- labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/modcp_body.xhtml 2006-05-24 22:31:43 UTC (rev 4410) +++ labs/jbossforums/trunk/forums/src/resources/portal-forums-war/views/moderator/modcp_body.xhtml 2006-05-24 22:34:09 UTC (rev 4411) @@ -11,10 +11,10 @@ <!-- TODO: <n:errors/> -<n:success/> +<n:success/>--> <h:messages layout="table" infoStyle="color:green" warnStyle="color:red" /> ---> + <h:form> <table width="100%" cellspacing="2" cellpadding="2" border="0" align="center"> <tr> @@ -79,7 +79,7 @@ <td class="catBottom" colspan="5" height="29"> <h:commandButton action="#{moderator.deleteTopic}" class="liteoption" value="${resource.Delete}"> - <f:param name="f" value="#{forum.forum.id}"/> + <f:param name="f" value="#{forum.forum.id}"/> </h:commandButton> &nbsp; <h:commandButton action="#{moderator.moveTopic}" class="liteoption" value="${resource.Move}"> @@ -118,6 +118,7 @@ </td> </tr> </table> +<ui:debug hotkey="l" /> </ui:define> </ui:composition> </div> |
From: <jbo...@li...> - 2006-05-24 22:31:47
|
Author: soh...@jb... Date: 2006-05-24 18:31:43 -0400 (Wed, 24 May 2006) New Revision: 4410 Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java Log: lets try this again Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java 2006-05-24 22:18:41 UTC (rev 4409) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java 2006-05-24 22:31:43 UTC (rev 4410) @@ -100,6 +100,7 @@ } catch(Exception e) { + log.error(this,e); throw new FacesException(e); } Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java 2006-05-24 22:18:41 UTC (rev 4409) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java 2006-05-24 22:31:43 UTC (rev 4410) @@ -37,6 +37,7 @@ //myfaces integration +import org.apache.log4j.Logger; import org.apache.myfaces.application.ActionListenerImpl; //jsf forums classes @@ -50,7 +51,9 @@ * @author <a href="mailto:soh...@jb...">Sohil Shah</a> */ public class AuthorizationListener extends ActionListenerImpl -{ +{ + private static final Logger log = Logger.getLogger(AuthorizationListener.class); + /** * */ @@ -75,6 +78,7 @@ } catch(Exception e) { + log.error(this,e); throw new FacesException("Error calling action method of component with id " + actionEvent.getComponent().getClientId(facesContext), e); } @@ -141,10 +145,12 @@ } catch(NoSuchMethodException nsme) { + log.error(this,nsme); throw new FacesException("Error calling action method of component with id " + actionEvent.getComponent().getClientId(facesContext), nsme); } catch(Exception e) { + log.error(this,e); throw new FacesException("Error calling action method of component with id " + actionEvent.getComponent().getClientId(facesContext), e); } return isAccessAllowed; |
From: <jbo...@li...> - 2006-05-24 22:18:44
|
Author: soh...@jb... Date: 2006-05-24 18:18:41 -0400 (Wed, 24 May 2006) New Revision: 4409 Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java Log: Logic fix for when a security provider is not hooked in Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java 2006-05-24 18:35:03 UTC (rev 4408) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/ACLTagHandler.java 2006-05-24 22:18:41 UTC (rev 4409) @@ -89,13 +89,13 @@ FacesContext facesContext = ctx.getFacesContext(); //make sure an authorization provider has been hooked in + boolean skipAuth = false; try { if(Authorization.getProvider()==null) { //no authorization will be enforced - this.nextHandler.apply(ctx, parent); - return; + skipAuth = true; } } catch(Exception e) @@ -103,6 +103,12 @@ throw new FacesException(e); } + if(skipAuth) + { + this.nextHandler.apply(ctx, parent); + return; + } + //an authorization provider is hooked in....go ahead and perform authorization try { Modified: labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java =================================================================== --- labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java 2006-05-24 18:35:03 UTC (rev 4408) +++ labs/jbossforums/trunk/forums/src/main/org/jboss/portlet/forums/auth/AuthorizationListener.java 2006-05-24 22:18:41 UTC (rev 4409) @@ -65,13 +65,12 @@ FacesContext facesContext = FacesContext.getCurrentInstance(); //make sure an authorization provider has been hooked in + boolean skipAuth = false; try { if(Authorization.getProvider()==null) { - //no authorization will be enforced - super.processAction(actionEvent); - return; + skipAuth = true; } } catch(Exception e) @@ -79,7 +78,14 @@ throw new FacesException("Error calling action method of component with id " + actionEvent.getComponent().getClientId(facesContext), e); } + if(skipAuth) + { + //no authorization will be enforced + super.processAction(actionEvent); + return; + } + //an authorization provider is hooked in, go ahead and enforce authorization boolean isAccessAllowed = this.isAccessAllowed(actionEvent); |