Wonder Framework
repository·master·Indexed 42 days ago
https://github.com/wocommunity/wonderA comprehensive framework ecosystem featuring the BugTracker showcase application, the ERMicrosoftPlugIn for SQL Server connectivity, and the DynaReporter multidimensional modeling and reporting tool. Includes documentation on data patterns, D2W (Data-to-Widget) factories, and components like ERXIFrame and ERXQualifierEditor.
What's inside Wonder
- FireRainbow is a tool designed to provide JavaScript syntax highlighting within the Firebug web developer tools. It enhances the debugging experience by making JavaScript code more readable through color-coded syntax.
Overview of ERCoolComponents framework
masterERCoolComponents is a collection of extension components designed for use with the Ajax framework.
It serves as a repository for useful, generic components that follow the patterns of ERX (the base building blocks for non-Ajax things) but specifically require the Ajax framework to function. This separation prevents the core Ajax framework from being polluted with specialized or generic components that are useful but not fundamental to the framework's core architecture.
Overview of the ERMovies D2W Example
masterERMovies is a simple ER-D2W (Entity Relationship to Web) application built with the Wonder framework. It demonstrates how to use a Movies database accessed via JDBC to a Derby database. The application is designed to showcase the capabilities of the Wonder framework in a web-based context.Overview of ERExtensions Framework
masterERExtensions is a collection of extensions for EOF (Enterprise Object Framework) and WOF (WebObjects Framework).
Requirements & Dependencies:
- Requires WebObjects 5.x.
- Depends on Log4j for logging.
- For a detailed list of included classes and their descriptions, refer to the
ClassList.txtfile located in theDocumentationdirectory.
Overview of BugTracker showcase features
masterBugTracker is a showcase application designed to illustrate various Wonder framework features. It serves as a reference implementation for several architectural patterns and capabilities, including:
- Data & Factories: Dummy data creation and the D2W (Data-to-Widget) pattern for factories.
- Reporting: Plist-based reporting and charting reporting.
- Patterns: Workflow patterns, delegate patterns, and
clazzpattern examples. - Testing: Selenium functional testing.
For a detailed setup guide, refer to the official documentation: http://wiki.objectstyle.org/confluence/display/WONDER/Getting+Started+with+BugTracker
Overview of ERCalendar
masterERCalendar is a framework providing a
WOComponentfor generating dynamic iCalendar (.ics) documents. It allows applications to expose calendar data that can be subscribed to by iCalendar-aware clients (like Apple's iCal), provided the component is served from a fixed URL (either the 'Main' page or via a direct action).To include events in the generated calendar, you must add objects to an
ERPublishCalendarPageusing theaddEventmethod. These objects must implement theERCalendarEventinterface.Overview of TextSearchDemo features
masterThe TextSearchDemo showcases four distinct full-text search capabilities using the ERIndexing framework and Lucene:
- Simple Search: Uses the
ERIndexingframework to create an index and Lucene'sQueryParserobject to execute queries. - Spell Check: Uses Lucene's
SpellCheckerobject paired with a text file of common English words to create a spell check dictionary. - Did You Mean...: Uses Lucene's
SpellCheckerobject, but instead of a text file, it uses an existing index (the movies index) as the source. - Auto Suggest: Demonstrates how to retrieve a list of tokens from the index to provide autocomplete suggestions.
- Simple Search: Uses the
Use ERPersistentSessionStorage for persistent database sessions
masterThe
ERPersistentSessionStorageframework provides the necessary infrastructure to store user sessions persistently within a database.Requirements for successful operation: To ensure sessions are correctly persisted and restored, every page and every component within the backtrack cache must be capable of proper serialization. If an object in the session state cannot be serialized, the persistence mechanism will fail.
Debugging Serialization Errors: If you encounter issues with session persistence, use
Findbugsto identify and track down serialization errors within your components or pages.Use OGNL syntax in WOD bindings and D2W assignments
masterWOOgnl is a framework that enables the use of OGNL (Object-Graph Navigation Language) syntax within WOD (WebObjects Development) bindings and D2W (Data to WebObjects) custom assignments.
To trigger OGNL resolution, you must prefix the expression with a specific flag character. By default, this flag is the tilde (
~) character. This flag is configurable; for example, you can set it toOGNL:.Common use cases include:
- Accessing static methods or static instance variables.
- Using conditionals and ternary operators.
- String concatenation.
- Using the
inoperator againstNSArrayorNSSetobjects. - Performing multiple actions per expression using variable declarations and commas.
// Accessing a static method String1: WOString { value = "~@ognl.webobjects.WOOgnl@OgnlSpecialCharacters"; } // Using a conditional with the #this variable // Note: #this represents the previous value in the dot chain String2: WOString { value = "~name.length().(#this > 100? 2*#this : 20+#this)"; } // String concatenation String3: WOString { value = "~\"Hello Max \" + name"; } // Using the 'in' operator String4: WOString { value = "~name in {\"Main\", \"Something\"} ? \"Yes\" : \"No\""; } // Variable declaration and multiple actions String5: WOString { value = "~#A=new com.webobjects.foundation.NSMutableArray(), #A.addObject(name), #A.addObjectsFromArray(session.languages), #A"; }Identify Javascript libraries used in ERPlot WebServerResources
masterTheWebServerResources/jsdirectory contains external Javascript libraries used within the ERPlot framework's code and samples. Currently, this directory includesswfobject.js.What is ERIMAdaptor and its architectural limitations
masterERIMAdaptor provides an Instant Messenger (IM) interface for WOComponents. Unlike standard HTTP adaptors, it operates based on IM network protocols (like AIM) which introduce specific behaviors:
- Session Tracking:
WOSessionsare tracked by buddy name. AConversationis initiated when a buddy contacts the server's IM account, associating the buddy name with aWOSessionID. - Conversation Expiration: Conversations have a configurable expiration (default is 5 minutes of inactivity). Once expired, the connection between the buddy name and the session is lost, even if the
WOSessionitself is still valid. - Message Limits: IM networks often limit message byte size. The framework does not currently auto-split large messages.
- Request Differences:
WORequestobjects in this adaptor do not contain standard HTTP headers. - Concurrency: The current implementation is single-threaded for all conversations.
- Action Limitation: Only one
IMActionper page can be triggered (specifically, the last one visible to the user).
- Session Tracking:
Configure classpath and JVM settings via CLSSPATH.TXT
masterWhen using
WOStart.exe, the application configuration is driven by the file located at<AppName>.woa/Contents/Windows/CLSSPATH.TXT.WOStart.exeparses this file to:- Construct the Classpath: It reads all entries in the file to build a dynamic classpath without length restrictions.
- Identify the Application Class: It uses the
ApplicationClassspecified in the file's header comment. - Apply JVM Settings: It reads
JVMOptionsand theJVMpath.
Important Note on JVM Architecture: If you specify a
JVMpath, the provided JVM must match the architecture of theWOStart.exeyou are using. You cannot mix 32-bitWOStartwith a 64-bit JVM, or vice versa.