Wonder Framework

repository·master·Indexed 42 days ago

https://github.com/wocommunity/wonder

A 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.

Tokens
32.2K
Snippets
73
Records
207
Agent score
54%

What's inside Wonder

  1. Overview of ERCoolComponents framework

    master

    ERCoolComponents 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.

  2. Overview of the ERMovies D2W Example

    master
    ERMovies 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.
  3. Overview of BugTracker showcase features

    master

    BugTracker 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 clazz pattern 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

  4. Overview of ERCalendar

    master

    ERCalendar is a framework providing a WOComponent for 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 ERPublishCalendarPage using the addEvent method. These objects must implement the ERCalendarEvent interface.

  5. Overview of TextSearchDemo features

    master

    The TextSearchDemo showcases four distinct full-text search capabilities using the ERIndexing framework and Lucene:

    • Simple Search: Uses the ERIndexing framework to create an index and Lucene's QueryParser object to execute queries.
    • Spell Check: Uses Lucene's SpellChecker object paired with a text file of common English words to create a spell check dictionary.
    • Did You Mean...: Uses Lucene's SpellChecker object, 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.
  6. Use ERPersistentSessionStorage for persistent database sessions

    master

    The ERPersistentSessionStorage framework 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 Findbugs to identify and track down serialization errors within your components or pages.

  7. Use OGNL syntax in WOD bindings and D2W assignments

    master

    WOOgnl 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 to OGNL:.

    Common use cases include:

    • Accessing static methods or static instance variables.
    • Using conditionals and ternary operators.
    • String concatenation.
    • Using the in operator against NSArray or NSSet objects.
    • 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";
    }
  8. What is ERIMAdaptor and its architectural limitations

    master

    ERIMAdaptor 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: WOSessions are tracked by buddy name. A Conversation is initiated when a buddy contacts the server's IM account, associating the buddy name with a WOSession ID.
    • 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 WOSession itself is still valid.
    • Message Limits: IM networks often limit message byte size. The framework does not currently auto-split large messages.
    • Request Differences: WORequest objects in this adaptor do not contain standard HTTP headers.
    • Concurrency: The current implementation is single-threaded for all conversations.
    • Action Limitation: Only one IMAction per page can be triggered (specifically, the last one visible to the user).
  9. Configure classpath and JVM settings via CLSSPATH.TXT

    master

    When using WOStart.exe, the application configuration is driven by the file located at <AppName>.woa/Contents/Windows/CLSSPATH.TXT.

    WOStart.exe parses this file to:

    1. Construct the Classpath: It reads all entries in the file to build a dynamic classpath without length restrictions.
    2. Identify the Application Class: It uses the ApplicationClass specified in the file's header comment.
    3. Apply JVM Settings: It reads JVMOptions and the JVM path.

    Important Note on JVM Architecture: If you specify a JVM path, the provided JVM must match the architecture of the WOStart.exe you are using. You cannot mix 32-bit WOStart with a 64-bit JVM, or vice versa.