[THIS IS HISTORY OF PageMixer framework] ******************************************************************************* **** PageMixer 3.1(2006/04/03) Major topics of this version are: - enrichment/enhancement of Struts co-operation(for Struts 1.2.x) - provide JUnit co-operation (sorry, not yet well-documented, but JavaDoc-ed) [BUG FIX] - ServletConsumerContext.CookieKey (jp.ne.dti.lares.foozy.pagemixer.servlet.ServletConsumerContext.CookieKey) Old implementation might cause NullPointerException, because HttpServletRequest#getCookie returns null array when there is no cookie. [NEW & DEPRECATION for source] - Attribute (jp.ne.dti.lares.foozy.pagemixer.Attribute) - Add #getQuote() method - DeclarationValue (jp.ne.dti.lares.foozy.pagemixer.DeclarationValue) - Add #getQuote() method - HTMLSymbolSet (jp.ne.dti.lares.foozy.pagemixer.HTMLSymbolSet) - add below public member fields - NOFRAMES - ONBLUR - ONCHANGE - ONCLICK - ONDBLCLICK - ONFOCUS - ONKEYDOWN - ONKEYPRESS - ONKEYUP - ONLOAD - ONMOUSEDOWN - ONMOUSEMOVE - ONMOUSEOUT - ONMOUSEOVER - ONMOUSEUP - ONRESET - ONSELECT - ONSUBMIT - ONUNLOAD - MutableStartTagToken (jp.ne.dti.lares.foozy.pagemixer.MutableStartTagToken) - add #ensureMutability() method - SymbolSet (jp.ne.dti.lares.foozy.pagemixer.SymbolSet) - add #importSymbols() method - Token (jp.ne.dti.lares.foozy.pagemixer.Token) Enhance attribute value getting. - add #getAttributeValue(Symbol, String) method - add #hasAttribute(Symbol, String) - URL (jp.ne.dti.lares.foozy.pagemixer.URL) Enhance URL value handling. - add #getScheme() method - add #setScheme() method - add #getHost() method - add #setHost() method - add #getPort() method - add #setPort(int)/#setPort(Integer)/#setPort(String) methods - add #getURI() method - add #setURI() method - Utils (jp.ne.dti.lares.foozy.pagemixer.Utils) - add #calcHash() method - add #calcHashes() method - add #equals() static method - add #toString() static method - FilterPipeline (jp.ne.dti.lares.foozy.pagemixer.mixer.FilterPipeline) Enhance sub-filter order control. - add #add(Filter) method - add #add(Filter[]) method - add #addFilters() method - add #addFactories() method - SequenceDataIterationFilter (jp.ne.dti.lares.foozy.pagemixer.mixer.SequenceDataIterationFilter) - add #add(Filter) method (see "FilterPipeline" also) - SequenceHybridFilter (jp.ne.dti.lares.foozy.pagemixer.mixer.SequenceHybridFilter) - add #getFilter() method This allows you to create sub filters after "super" or its constructor invocation. - AttrTrimFilter(NEW) (jp.ne.dti.lares.foozy.pagemixer.html.AttrTrimFilter) This provides functionality to trim specified attribute from token sequence. - PageMixerSymbolSet(NEW) (jp.ne.dti.lares.foozy.pagemixer.html.PageMixerSymbolSet) This manages PageMixer specific(= not valid under HTML specification) symbols. e.g.: "external", which controls URL rewriting and so on. - PageMixerAttributeValue(NEW) (jp.ne.dti.lares.foozy.pagemixer.PageMixerAttributeValue) This manages PageMixer specific attribute values. - PageMixerSymbolTrimFilter (jp.ne.dti.lares.foozy.pagemixer.html.PageMixerSymbolTrimFilter) This provides functionality to trim attributes, which have PageMixer specific symbol as their name. - SelectInsetFilterTest (jp.ne.dti.lares.foozy.pagemixer.html.SelectInsetFilterTest) Now, this puts '' token after text token, which is selection label, insetting. - URLEditFilter(NEW) (jp.ne.dti.lares.foozy.pagemixer.html.URLEditFilter) This provides you easy URL attribute editting funcionality. - URLRewriteFilter (jp.ne.dti.lares.foozy.pagemixer.html.URLRewriteFilter) - sensitive to "external" attribute You can prevent this filter from appending session ID into token, which has URL attribute, by specifing "external" attribute. - add URLRewriteFilter.A(TokenWatcher) constructor - add URLRewriteFilter.IMG(TokenWatcher) constructor - add URLRewriteFilter.FORM(TokenWatcher) constructor - add URLRewriteFilter.LINK(TokenWatcher) constructor - XHTMLDetectFilter (jp.ne.dti.lares.foozy.pagemixer.html.XHTMLDetectFilter) This stores value into context by specified key object, when this detects 'DOCTYPE ' token for XHTML. - FilterFactory (jp.ne.dti.lares.foozy.pagemixer.servlet.FilterFactory) - change order to insert filter into pipeline OLD: earlier specify, lateer consume NEW: earlier specify, earlier consume - PageServlet (jp.ne.dti.lares.foozy.pagemixer.servlet.PageServlet) - change functionality overriding policy Now, you can override all customization points by deployment descriptor(DD: web.xml) describing, even though the PageServlet derived class, which you specify in DD, customizes it in its construction time. - RequestMethodKey(NEW) (jp.ne.dti.lares.foozy.pagemixer.servlet.RequestMethodKey) This allows you to get value from HttpServletRequest specific method invocation. e.g.: Servlet context path from HtppServletRequest#getContextPath() can be gotten by RequestMethodKey#CONTEXT_PATH - ServletConsumerContext (jp.ne.dti.lares.foozy.pagemixer.servlet.ServletConsumerContext) - enhance parameter checking OLD: this assumed that parameter, which is specified to getValue()/setValue()/unsetValue() methods, is instance of 'KeyCommand' interface(or null, otherwise). NEW: this treat non-'KeyCommand' parameters as null. - re-define some inner classes as non inner ones Some inner classes to identify Servlet environment specific value are re-defined as non inner ones. Re-defined ones are: - ApplicationKey - ContextInitKey - CookieKey - ParameterKey - ReqHeaderKey - RequestKey - ResHeaderKey - ServletInitKey - SessionKey - add some keys to look value up in context Key objects shown below are provided as "final static public" member fields. - BASE_HREF_KEY(moved from StrutsConsumerContext) - CONTEXT_PATH_KEY(moved from StrutsConsumerContext) - XHTML_KEY - make type of key objects narrowed Now, key objects are defined not as "Object", but as concretized class. - ServletUtil (jp.ne.dti.lares.foozy.pagemixer.servlet.ServletUtil) - enhance for composing "href" value of "base" tag - "Host" HTTP header value using OLD: you only can use ServletRequest#getServerName() value. NEW: you can choose from (1)"Host" HTTP header value, or (2) one gotten in old manner. Value is gotten in old manner, if "Host" HTTP header is not specified in current request context. - Servlet context root using OLD: you only can get URL corresponded to current requst context NEW: you can choose from (1)URL corresponded to Servlet context root, or (2)one gotten in old manner. URL gotten in (1) way allows you to specify web application local resource as relative to context root. - base URI - add #getBaseHref(ConsumerContext, boolean, boolean) This deprecates #getBaseHref(HttpServletRequest). - add #getHostName() method - SessionIDInsetFilter(NEW) (jp.ne.dti.lares.foozy.pagemixer.servlet.SessionIDInsetFilter) This provides function to append "session ID"(or your custom value) parameter: - into query string of "href" in "a" - as "hidden" just after "form" This allows you to implement CSRF(Cross Site Request Forgeries) detection easily. - SessionMethodKey(NEW) (jp.ne.dti.lares.foozy.pagemixer.servlet.SessionMethodKey) This allows you to get value from HttpSession specific method invocation. e.g.: session ID from HttpSession#getId() can be gotten by SessionMethodKey#ID - ActionInsetFilter (jp.ne.dti.lares.foozy.pagemixer.struts.ActionInsetFilter) - introduce some attributes Introduced attributes are shown below. - "external" - "module" - "nonaction" - "port" - "scheme" These attributes allow you to contorl insetting in HTML source side. - separate 'transaction' insetting from action URL insetting Now, ActionInsetFilter.FROM does not inset '' tag after target '
' tag. This functionality is provided by TransactionInsetFilter. - Configure(NEW) (jp.ne.dti.lares.foozy.pagemixer.struts.Configure) This build pseudo Struts environment up in ConsumerContext by Struts configuration file(e.g.: struts-config), and this helps you to examine filters, which is designed for Struts environment, on stand alone application environment. - ErrorsInsetFilter (jp.ne.dti.lares.foozy.pagemixer.struts.ErrorsInsetFilter) Now, this is derived from MessagesInsetFilter class in same package. And this deprecates ErrorsTrimFilter. - ExceptionInsetFilter(NEW) (jp.ne.dti.lares.foozy.pagemixer.struts.ExceptionInsetFilter) This provides functionality to inset Exception information gotten from ServletRequest attribute by Globals.EXCEPTION_KEY of Struts. - MessagesInsetFilter(NEW) (jp.ne.dti.lares.foozy.pagemixer.struts.MessagesInsetFilter) This provides functionality to inset message informations gotten from ActionMessages of Struts. - ModuleConfigKey(NEW) This provides functionality to get 'ModuleConfig' of Struts, for PageMixer/Struts co-operation. - StdHeadFilterSet(NEW) (jp.ne.dti.lares.foozy.pagemixer.struts.StdHeadFilterSet) This is standard set of filters, which you should apply on at first of all token processings. - StdTailFilterSet(NEW) (jp.ne.dti.lares.foozy.pagemixer.struts.StdTailFilterSet) This is standard set of filters, which you should apply on at last of all token processings. - StrutsAttributeValue(NEW) (jp.ne.dti.lares.foozy.pagemixer.struts.StrutsAttributeValue) This defines HTML tag attribute values which is used for PageMixer/Struts co-operation. - StrutsFilterFactory(NEW) (jp.ne.dti.lares.foozy.pagemixer.struts.StrutsFilterFactory) This is derived from FilterFactory class to apply "StdHeadFilterSet" and "StdTailFilterSet" at first and last of all filter processings by your specific filters. This adds new variation of constructor for classes shown below. - DefaultPageServlet - MonoPageServlet - LocalePageServlet - I18NDefaultPageServlet - StrutsConsumerContext (jp.ne.dti.lares.foozy.pagemixer.struts.StrutsConsumerContext) - add some keys to look value up in context Key objects shown below are provided as "final static public" member fields. - ACTION_SERVLET_KEY - CANCEL_KEY - ERROR_KEY (this and MessagesInsetFilter deprecate ERROR_MAP_KEY and ErrorKey) - MESSAGE_KEY - MODULE_PREFIXES_KEY - MULTIPART_KEY - SERVLET_KEY - TRANSACTION_TOKEN_KEY (this deprecates TOKEN_KEY) - TRANSACTION_TOKEN_PARAM_KEY - make type of key objects narrowed Now, key objects are defined not as "Object", but as concretized class. - move some definitions of keys to base class(= ServletConsumerContext) Definitions of key objects shown below are moved to base class. - BASE_HREF_KEY - CONTEXT_PATH_KEY(this is also deprectated in base class) - support 'module' in looking ActionConfig up - add some variations of #getActionURI() method - add some variations of #getActionPath() method - re-define some inner classes as non inner ones Some inner classes to identify Servlet environment specific value are re-defined as non inner ones. Re-defined ones are: - ActionConfigKey (deprecates MappedActionKey) - AutoFormKey - FormKey - RequestFormKey - SessionFormKey - StrutsSymbolSet(NEW) (jp.ne.dti.lares.foozy.pagemixer.struts.StrutsSymbolSet) This manages PageMixer/Struts co-operation specific symbols. e.g.: "nonaction", which controls insetting of Action URI. - StrutsSymbolTrimFilter(NEW) (jp.ne.dti.lares.foozy.pagemixer.struts.StrutsSymbolTrimFilter) This provides functionality to trim PageMixer/Struts co-operation specific(= not valid in HTML specification) attributes. - TransactionInsetFilter(NEW) (jp.ne.dti.lares.foozy.pagemixer.struts.TransactionInsetFilter) This provides functionality to inset '' tag after target '' tag. This is separated from ActionInsetFilter.FORM. - JUnit support classes(NEW) Now, some new classes under "jp.ne.dti.lares.foozy.pagemixer.junit" package are provided to examine your specific filter in JUnit environment easily. But, these are not well documented yet. Please see unit test implementations as example: e.g.: "SequenceEditFilterTest0001.java" placed in "src/test/pagemixer/jp/ne/dti/lares/foozy/pagemixer/mixer" - Modifications over some classes - Override #hashCode method - Re-implement #equals method by Utls class - Add comment to prevent PMD from warnning on known things - eliminate MessageFormat using(or use it non-statically) JDK 1.4.x or later says explicitly that MessageFormat is not snchronized(= thread un-safe). [NEW for documentation] - Add some explanations to documents - tutorial - interactive PageMixer demo(included in Servlet demo) ******************************************************************************* **** PageMixer 3.0b(2004/08/27) [NEW & DEPRECATION for source] - Adjust unit test code for non Windows-31J encoding environment - URLTest0003#test0003 (jp.ne.dti.lares.foozy.pagemixer.URLTest0003) ******************************************************************************* **** PageMixer 3.0a(2004/08/26) [MISC] - register PageMixer as project of SourceForge.net - change links in HTML pages of distributions ******************************************************************************* **** PageMixer 3.0(2004/08/15) [NEW & DEPRECATION for source] - Re-design around locale sensitive renderring - move classess for locale sensitive renderring to another package (from "jp.ne.dti.lares.foozy.pagemixer.mixer" to "jp.ne.dti.lares.foozy.pagemixer.page") - adjust classes for Struts co-operation - adjust tutorial documents - adjust classess for demonstration - Re-design around behavior in Servlet environment - move classes for Servlet environment specific to another package (from "jp.ne.dti.lares.foozy.pagemixer.mixer" to "jp.ne.dti.lares.foozy.pagemixer.servlet") - move functionality depending on Servlet BaseTagFilter to ServletUtil ("jp.ne.dti.lares.foozy.pagemixer.html.BaseTagFilter") ("jp.ne.dti.lares.foozy.pagemixer.servlet.ServletUtil") - adjust/add/remove classes for Struts co-operation - adjust tutorial documents - adjust/add/remove classess for demonstration - move demonstration classes for Servlet environment specific to another - Enhance LoosePageState ("jp.ne.dti.lares.foozy.pagemixer.parser.LoosePageState") - support below: - CDATA() - processing instruction() - script(<% .. %>) - add some classes derived from Token - CDATAToken ("jp.ne.dti.lares.foozy.pagemixer.CDATAToken") - DocTypeToken(rename from HTMLDocTypeToken) ("jp.ne.dti.lares.foozy.pagemixer.DocTypeToken") - FixedDocTypeToken(rename from FixedHTMLDocTypeToken) ("jp.ne.dti.lares.foozy.pagemixer.FixedDocTypeToken") - MutableDocTypeToken(rename from MutableHTMLDocTypeToken) ("jp.ne.dti.lares.foozy.pagemixer.MutableDocTypeToken") - PIToken ("jp.ne.dti.lares.foozy.pagemixer.PIToken") - ScriptToken ("jp.ne.dti.lares.foozy.pagemixer.ScriptToken") - Enhance Filter/Watcher status cleanup at producing/consuming - add "clear" method to Consumer ("jp.ne.dti.lares.foozy.pagemixer.mixer.Consumer") - add cleanup procedure registration method "addCleanup" to Filter ("jp.ne.dti.lares.foozy.pagemixer.mixer.Filter") - adjust (many) classes implementing Consumer - make sure to invoke 'Consumer#clear' after producing ("jp.ne.dti.lares.foozy.pagemixer.mixer.Producer" implementing classes) - Support empty tag handling like in XHTML by SequencEditFilter ("jp.ne.dti.lares.foozy.pagemixer.mixer.SequencEditFilter") - adjust classess derived from it - Add TokenWatcher.AttrNot class ("jp.ne.dti.lares.foozy.pagemixer.mixer.TokenWatcher") - Introduce ErrorsInsetFilter ("jp.ne.dti.lares.foozy.pagemixer.struts.ErrorsInsetFilter") - rename ErrorsFilter to ErrorsTrimFilter ("jp.ne.dti.lares.foozy.pagemixer.struts.ErrorsFilter") ("jp.ne.dti.lares.foozy.pagemixer.struts.ErrorsTrimFilter") - Add URL class ("jp.ne.dti.lares.foozy.pagemixer.URL") - adjust classes, which manipulate URL in attribute, to use it [NEW for documentation] - Add tutorial for using PageMixer in Servlet environemtn ("Mixing with Servlet" under doc/usermanual/tutorial/servlet) [MISC] ******************************************************************************* **** PageMixer 2.1(2004/01/23) [NEW & DEPRECATION for source] - Enhance "ServletConsumerContext.ParameterKey" ("jp.ne.dti.lares.foozy.pagemixer.mixer.ServletConsumerContext") - add re-encoding step to value getting procedure: ParameterKey#getValue re-encodes parameter value for non-ascii parameter value via HTML form posting when encoding is specified by specific key. - support SevletRequest#getParameterValues: ParameterKey#getValue returns result of SevletRequest#getParameterValues instead of SevletRequest#getParameter according to constructor parameter. - Add new constructor to "ServletConsumerContext.SessionKey" ("jp.ne.dti.lares.foozy.pagemixer.mixer.ServletConsumerContext") - add "allowCreate" parameter - Add "ServletConsumerContext.ReqHeaderKey" ("jp.ne.dti.lares.foozy.pagemixer.mixer.ServletConsumerContext") - add "HeaderTextInsetFilter" to PageMixer demonstration ("pagemixer.filter.HeaderTextInsetFilter") - Add "ServletConsumerContext.ResHeaderKey" ("jp.ne.dti.lares.foozy.pagemixer.mixer.ServletConsumerContext") - Add "ListDataProvider" ("jp.ne.dti.lares.foozy.pagemixer.mixer.ListDataProvider") - deprecate "ArrayListProvider" ("jp.ne.dti.lares.foozy.pagemixer.mixer.ArrayListDataProvider") - Un-deprecate "getDataProvider(Object)" of "SequenceDataIterationFilter" ("jp.ne.dti.lares.foozy.pagemixer.mixer.SequenceDataIterationFilter") - Add "ItemSelectFilter" ("jp.ne.dti.lares.foozy.pagemixer.html.ItemSelectFilter") - deprecate "CheckboxFilter" ("jp.ne.dti.lares.foozy.pagemixer.html.CheckboxFilter") - deprecate "SelectFilter" ("jp.ne.dti.lares.foozy.pagemixer.html.SelectFilter") - Add "URLRewriteFilter.LINK" ("jp.ne.dti.lares.foozy.pagemixer.html.URLRewriteFilter") - Add another constructor to "BaseTagFilter" ("jp.ne.dti.lares.foozy.pagemixer.html.BaseTagFilter") - add utility "getBaseHref" to set context up for base tag insetting - Add interactive tutorial to PageMixer demonstration (under src/demo/pagemixer) - Add some filters to "CommonFilter" ("pagemixer.filter.CommonFilter" of PageMixer demonstration) - add "BaseTagFilter" ("jp.ne.dti.lares.foozy.pagemixer.html.BaseTagFilter") - add "URLRewriteFilter.LINK" ("jp.ne.dti.lares.foozy.pagemixer.html.URLRewriteFilter") - add "HeaderTextInsetFilter" ("pagemixer.filter.HeaderTextInsetFilter" of PageMixer demonstration) - Add setup procedure for "BaseTagFilter" to "PageBasee" ("jp.ne.dti.lares.foozy.pagemixer.html.BaseTagFilter") ("pagemixer.servlet.PageBase" of PageMixer demonstration) [NEW for documentation] - Fix some typos or mistakes [MISC] - Change directory structure under src/demo (mainly, location of *.properties files or *.html files.) - adjust some tutorial documents - adjust web.xml configuration of PageMixer demonstration - Release test set on JUnit ******************************************************************************* **** PageMixer 2.0(2003/04/30) [NEW & DEPRECATION for source] - Change definition of TokenWatcher/SequenceWatcher ("jp.ne.dti.lares.foozy.pagemixer.mixer.TokenWatcher") ("jp.ne.dti.lares.foozy.pagemixer.mixer.SequenceWatcher") - adjust some filter implementation to invoke "clear()" of above classes - Separate resource reading strategy from PageParser/PersistentProducer ("jp.ne.dti.lares.foozy.pagemixer.mixer.PageParser") ("jp.ne.dti.lares.foozy.pagemixer.mixer.PersistentProducer") - create "Locator" to hide way to read resource in ("jp.ne.dti.lares.foozy.pagemixer.mixer.Locator") - add some methods to PageParser/PersistentProducer to read resource in by "Locator" - Change definition of LocalePage ("jp.ne.dti.lares.foozy.pagemixer.mixer.LocalePage") - create "LocatorLocalePage" as derived class of LocalePage ("jp.ne.dti.lares.foozy.pagemixer.mixer.LocatorLocalePage") - replace "LocalePage.ByPageParser" by "LocatorLocalePage.ByPageParser" - replace "LocalePage.ByPersistentProducer" by "LocatorLocalePage.ByPersistentProducer" - adjust demo classes for new LocalePage definition - Add "PageServlet" ("jp.ne.dti.lares.foozy.pagemixer.mixer.PageServlet") - replace "MixerServlet" by "StrutsPage" derived from "PageServlet" ("jp.ne.dti.lares.foozy.pagemixer.struts.MixerServlet") ("jp.ne.dti.lares.foozy.pagemixer.struts.StrutsPage") - adjust demo implementation for "PageServlet"/"StrutsPage" - Add PageParseException for telling error in page parsing ("jp.ne.dti.lares.foozy.pagemixer.parser.PageParseException") - adjust PageState interface ("jp.ne.dti.lares.foozy.pagemixer.parser.PageState") - adjust LoosePageState definition ("jp.ne.dti.lares.foozy.pagemixer.parser.LoosePageState") - adjust PageParser for new PageState definition ("jp.ne.dti.lares.foozy.pagemixer.mixer.PageParser") - adjust Bootstrap for throwing PageParseException ("pagemixer.filter.Bootstrap" of demo) [NEW for documentation] - Add "Migration guide" to PageMixer document - Update some sections in "What PageMixer is" of PageMixer document - "Update page data" section - "Performance" section - "Comparisons" of "Appendix" section - Adjust content of "Parse locale sensitively" in "Mixing with PageMixer" tutorial - add class diagram - use "LocatorLocalePage.ByPageParser" instead of "LocalePage.ByPageParser" - Add comment about "CLASS" attribute using to "Trim sequence" in "Mixing with PageMixer" tutorial - Adjust content of some sections in "Mixing with Struts" - "Create Servlet" section - "Configuration" section - use "StrutsPage" instead of "MixerServlet"(or "MixerServlet.Forwardable") [MISC] ******************************************************************************* **** PageMixer 1.3(2003/04/13) [NEW & DEPRECATION for source] - Locale handling is enhanced in PageMixer demonstration servlet. - "common.LocaleConstants" is added - "pagemixer.filter.LocaleIterationFilter" is added - "pagemixer.servlet.ServletTemplate" is modified and source HTML files are changed also. - Change implementation of BaseTagFilter ("jp.ne.dti.lares.foozy.pagemixer.html.BaseTagFilter") Previouse version of BaseTagFilter required Servlet API 2.3 ("ServletRequest#getRequestURL" method), even though I announed that PageMixer requires Servlet API 2.2 or later. Now, its implementation does not require Servlet API 2.3. [NEW for documentation] - Add "Action items" to PageMixer document - Add "Should you use ?" to PageMixer document - Enrich JavaDoc comment for demonstration with Struts and so on [MISC] - Encoding specifications are changed Encoding name mapping is chaned at Java2 ver4(JDK 1.4), so encoding specifications and file suffix are changed. [old] [new] 8859_1 iso-8859-01 Shift_JIS Windows-31J Encoding specifications in document HTML file are changed also. ******************************************************************************* **** PageMixer 1.2(2003/02/16) [NEW & DEPRECATION] - Add tutorial for using PageMixer in Struts environment (sorry, not yet completed) - Change constructor signature of ServletConsumerContext ("jp.ne.dti.lares.foozy.pagemixer.mixer.ServletConsumerContext") !!!! ATTENTION: THIS MAKES YOUR OLD APPLICATION IN-COMPILABLE !!!! -> ServletConsumerContext.KeyCommand is modified -> StrutsConsumerContext and inner classes of it are modified -> Demo programs are also modified - Add "ServletConsumerContext.ApplicationKey" class ("jp.ne.dti.lares.foozy.pagemixer.mixer.ServletConsumerContext") - Remove "ServletConsumerContext.AttributeKey" class ("jp.ne.dti.lares.foozy.pagemixer.mixer.ServletConsumerContext") -> Already deprecated since 1.1 - Add "getIterator(Object)" to SequenceDataIterationFilter ("jp.ne.dti.lares.foozy.pagemixer.mixer.SequenceDataIterationFilter") - Add "getDataProvider(Object)" and "getIterator(Object)" to SelectInsetFilter ("jp.ne.dti.lares.foozy.pagemixer.html.SelectInsetFilter") - Change constructor signature of StrutsConsumerContext ("jp.ne.dti.lares.foozy.pagemixer.struts.StrutsConsumerContext") -> Inner classes are modified -> ActionInsetFilter is modified -> MixerServlet is modified -> Demo programs are also modified - Add "ErrorsFilter.WatcherFactory" interface ("jp.ne.dti.lares.foozy.pagemixer.struts.ErrorsFilter") - Define default behavior of "createLocalePage()" ("jp.ne.dti.lares.foozy.pagemixer.strugs.MixerServlet") - Change behavior of FormAttrInsetFilter when null specified ("jp.ne.dti.lares.foozy.pagemixer.struts.FormAttrInsetFilter") -> "getFormValue(Object)" may be invoked with null parameter - Change behavior of FormTextInsetFilter when null specified ("jp.ne.dti.lares.foozy.pagemixer.struts.FormTextInsetFilter") -> "getFormValue(Object)" may be invoked with null parameter [MISC] - Documentation is distributed separately ******************************************************************************* **** PageMixer 1.1(2002/12/30) [NEW & DEPRECATION] - Add Struts support classes(NOT-WELL-DOCUMENTED/NOT-WELL-EXAMINED version) ("jp.ne.dti.lares.foozy.pagemixer.struts.*") -> Add demo programs to use Struts support classes (src/demo/struts/*) - Add "ServletConsumerContext.RequestKey" ("jp.ne.dti.lares.foozy.pagemixer.mixer.ServletConsumerContext.RequestKey") -> "ServletConsumerContext.AttributeKey" is deprecated ("jp.ne.dti.lares.foozy.pagemixer.mixer.ServletConsumerContext.AttributeKey") -> Demo programs are also modified to use "ServletConsumerContext.RequestKey" instead of "ServletConsumerContext.AttributeKey". - Add HTML specific utility filter classes - jp.ne.dti.lares.foozy.pagemixer.html.BaseTagFilter - jp.ne.dti.lares.foozy.pagemixer.html.CheckboxFilter - jp.ne.dti.lares.foozy.pagemixer.html.SelectFilter - jp.ne.dti.lares.foozy.pagemixer.html.SelectInsetFilter - jp.ne.dti.lares.foozy.pagemixer.html.URLRewriteFilter -> "URLRewriteFilter" in PageMixer demo is replaced by "jp.ne.dti.lares.foozy.pagemixer.html.URLRewriteFilter" - Add "PageParser#parse(String id, String encoding)" ("jp.ne.dti.lares.foozy.pagemixer.mixer.PageParser") - Add "SequenceDataIterationFilter#getDataProvider(Object data)" ("jp.ne.dti.lares.foozy.pagemixer.mixer.SequenceDataIterationFilter") -> This helps you to create DataProvider from non DataProvider object. - Add "TokenWatcher.Name.(Symbol name, boolean startOnly)" ("jp.ne.dti.lares.foozy.pagemixer.mixer.TokenWatcher") -> TokenWatcher.Name only founds "Start" token in default. - Add "TokenWatcher.Compound" ("jp.ne.dti.lares.foozy.pagemixer.mixer.TokenWatcher") - Add "LocalePage" ("jp.ne.dti.lares.foozy.pagemixer.mixer.LocalePage") -> This helps to integrate I18N web system -> Add tutorial document and sample program for "LocalePage" -> Demo Servlet programs are also modified to use "LocalePage" - Improve "equals" method of some classes -> This helps you to examine output of filter. -> Add "Utils" as utility for above ("jp.ne.dti.lares.foozy.pagemixer.Utils") - "FormPostEnsureFilter" no longer exists ("pagemixer.filter.FormPostEnsureFilter" in PageMixer demo) -> FORM tags in HTML pages as parser input have 'action="POST"' [MISC] - Directory structure is modified old: src/pagemixer new: src/pagemixer/pagemixer old: demo/{src|war} new: demo/pagemixer/{src|war} - Correct year of COPYRIGHT line("2000" -> "2002") in many files - Add comments to sample filters to invoke as stand alone application ******************************************************************************* **** PageMixer 1.0(2002/11/10) - First release of PageMixer. *******************************************************************************