wocommunity / wonder Goto Github PK
View Code? Open in Web Editor NEWProject Wonder
Home Page: http://wiki.wocommunity.org/
Project Wonder
Home Page: http://wiki.wocommunity.org/
The slf4j libraires in ERJars are pretty old and due to a modification made in a recent version, the old slf4j-api breaks apps using more recent binding libraries (further explanation: http://www.slf4j.org/faq.html#IllegalAccessError )
Added a binding to access "goingVertically" from the d2wContext when the toOneUIStyle is "radio"
Reported by Freddie Tilley
ERXPropertyListSerialization.jsonStringFromPropertyList method when generating a json string encodes unicode characters with an uppercase U: for example fran\U00e7ais
the problem with this is, that the standard safari javascript JSON.parse method only recognises the unicode characters when it is encoded with lowercase: fran\u00e7ais
The links to Java JavaDoc in the Wonder doc still link to Java 1.4. For example:
have links to the 1.4 description of java.util.concurrent.ExecutorService. We should link to the Java 6 doc instead.
In invokeAction and other core component methods, ERXWOForm includes a try/finally block. In the finally block, the ERXWOForm attempts to clear the form name. However, if an exception is thrown in the invokeAction, then that exception is effectively swallowed when the clear form name method throws its own exception.
AjaxSubmitButton references the form element by name. This doesn't work when using ERXWOForm.useIdInsteadOfNameTag = true because the name is converted to id instead. This should probably just be a matter of changing line 153 of ASB to something like the following:
formReference = "document." + (ERXWOForm.useIdInsteadOfNameTag?"getElementById(" + formName + ")":formName);
You can start an instance from within Eclipse and run through Apache instead of using DirectConnect. The problem is that the adaptor has a receive timeout of 30 seconds so if you have a breakpoint in code the adaptor will quickly timeout and display a No instance available error.
It should be checked if it is possible to set the timeout interval to a greater number automatically when starting the instance in Eclipse to prevent this situation.
re this:
// 'Host' is the official HTTP 1.1 header for the host name in the request URL, so this should be checked first.
protected static final NSArray HOST_NAME_KEYS = new NSArray(new String[]{"Host", "x-forwarded-host", "x-webobjects-server-name", "server_name", "http_host"});
this is incorrect. x-forwarded-host should be checked first because if you are running behind a load balancer that is handling ssl decryption for you then ALL incoming requests are http. the above line of code causes infinite re-directs when trying to switch from https to http via an ERXRedirect in an app behind a load balancer where ssl is handed off.
simon
File upload size is limited to ~2Gb with the WO classic adaptor. Limit is about 100Mb on ERWOAdaptor. Should probably fix the ERWOAdaptor to allow larger uploads. Netty example that might be helpful doing that:
Reported by Johan Werner
The java library commons-lang has been released in version 2.6. In ERJars it should be updated from 2.5.
Besides that the framework ERRest contains an older version of this lib even though it has ERJars on its build path and thus doesn't need to include the lib. It should be removed from ERRest.
The framework ERChronic includes commons-lang too. Perhaps it would be reasonable to remove that lib from this framework too and put ERJars on its build path?
The problem is occasional. I don't know the cause of the problem yet. However, the collateral effect is very harmful. The mod_WebObjects logs the following message indefinitely:
[error] Error receiving content (expected 17081 bytes, got 0)
It causes high CPU usage affecting the performance of applications, and it doesn't stop until no space is left on the device.
I've observed this problem only on Apache 2.2 running in an Amazon Linux box.
When a non-Apple provided request handler is not registered, for example ERXRouteRequestHandler, if you try to get an URL that use that handler, we get an "Session has timeout" error page instead of a more useful error (or a 404). I don't know if it's possible to change this behavior, but if it is, we should change it.
Reported by Gavin Eadie
Property expansion using the "@@" feature will fail to expand any of the items if any one of them fails. For example:
Property = First @@present@@ then @@absent@@.
Will expand correctly if the properties "present" and "absent" are available but, if "absent" is missing, then "present" is not expanded.
ERJasperReportsExample and BackgroundTasks should use the H2 database so that the EOF bits runs without needing MySQL or another RDBMS that have to be installed.
It appears that ERXObjectStoreCoordinatorPool leaks EODatabase._DatabaseRecord objects whenever the pool size is > 1 and EOs are saved. After many hours in the debugger, I think I understand why...
Normally, when an EC saves changes, the ObjectsChangedInStore notification is fired, the snapshot is inserted with EODatabase's _fastHashInsert and then the EC refaults the EO when processing changes (updates) or frees the snapshot on finalize (inserts). These actions fire the corresponding _fastHashRemove to free the snapshot.
The problem appears to be that ERXObjectStoreCoordinatorSynchronizer rebroadcasts the ObjectChangedInStore notification to the other OSCs in the pool. This results in snapshots inserted, but with no EC around to clean up, the snapshots are never removed.
Reported by Ray Kiddy
The problem is below. I tried taking the ERAttachment component out to test the rest of the build, but too many things have the ERAttachment framework on their dependencies list. Does BTBusinessLogic desperately need the ERAttachment framework? It must. O well.
[wocompile] Compiling 38 source files to /Users/ray/Roots/classes/ERAttachment
[wocompile] warning: [options] bootstrap class path not set in conjunction with -source 1.5
[wocompile] /Users/ray/Projects/wonder/Frameworks/BusinessLogic/ERAttachment/Sources/er/attachment/metadata/DrewMetadataParser.java:23: error: cannot access JPEGDecodeParam
[wocompile] Metadata metadata = JpegMetadataReader.readMetadata(importFile);
[wocompile] ^
[wocompile] class file for com.sun.image.codec.jpeg.JPEGDecodeParam not found
The com.sun.image.codec.jpeg.JPEGDecodeParam class does not seem to be available to Java 1.7. Is the javax.imageio.plugins.jpeg.JPEGImageReadParam the class that this will be migrating to? It is not clear. The API of the JPEGImageReadParam class is not exactly comparable.
Or is there a way to have the com.sun.image.codec.jpeg.JPEGDecodeParam used by the Java 1.7 compiler when we build the ERAttachment framework?
If you have multiple relationships to one entitity on one page in ERModern, this will not work because there will be multiple identical id's.
Suppose you hava A.r1->B and A.r2->B, than you can not change the second page in a Create or and Edit page, because the id's of the component that is supposed to take care of that are similar.
A solution would be to create a name that would not only contain the name of the entities, but also the name of the relations, as these are supposed to have different names. So: ERMDRelationshipB would be ERMDRelationShopr1B, or in mycase:
MUC_EditRelationshipEmbeddedContact would become: MUC_EditRelationshipEmbeddedPubliciteitContact, and MUC_EditRelationshipEmbeddedTechniekContact
Does that make sense?
Reported by René Bock
I just noticed, that in servlet deployment the method ERXRequest.isRequestSecure doesn't return the expected value for https requests.
The reason is, that if the request header "https" is not set, there is check for header "x-webobjects-server-port"
but in servlet mode the header "x-webobjects-servlet-server-port" is sent...
By the way, the same is true for the header "x-webobjects-server-name" vs. "x-webobjects-servlet-server-name"
As consquence, generateCompleteUrls will generate the wrong protocol part.
Reported by Matt Birtchnell
Allow sub classes of MySQLPlugin to return a subclass of JDBCExpression rather than a class of MySQLExpression.
Class<? extends JDBCExpression>
The woo, wod, html, and api file are all there, but the java file is missing.
Reported by Greg Brown
When Entity modeler creates sql for an index, the statement is like: create index indname >>> FOR<<<< tablename(col). But Derby says:
CREATE [UNIQUE] INDEX index-Name >>>ON<<< table-Name ( Simple-column-Name [ ASC | DESC ]
[ , Simple-column-Name [ ASC | DESC ]] * )
For vs On, one works one doesn't
A Class for makes it more easier to calc Money Values
Reported by Marius Soutier
Currently it relies on the this rule:
smartAttribute.className = 'com.webobjects.foundation.NSTimestamp' => formatter : "%Y-%m-%d"
from ERModernDirectToWeb
If you call ERXSwitchEmbeddedPage without any bindings, it will fail with:
com.webobjects.appserver._private.WODynamicElementCreationException: initialComponentName is a required attribute.
A API file should be added so that inside the component editor, we can know that this binding is required.
Reported by Martin ([email protected])
It seems like the current Wonder pom files configuration is not compatible with Maven 3. After spending a few hours trying to figure out why I couldn't compile the source code with Maven 3.0.2, I found out that it actually works with Maven 2.2.1. I am not sure exactly how to fix this problem, but it seems to be happening when dependencies exist between siblings under a parent module.
For example, when trying to compile BusinessLogic, BTBusinessLogic and ERMoviesLogic won't compile because they both have dependencies on ERTaggable and ERAttachment. BusinessLogic will only compile after removing BTBusinessLogic and ERMoviesLogic from the parent BusinessLogic pom file.
BusinessLogic/
├── BTBusinessLogic
├── ERAttachment
├── ERCoreBusinessLogic
├── ERMoviesLogic
├── ERTaggable
└── WOPayPal
It seems to be also the case for the Ajax, Core and D2W projects.
Reported by Freddie Tilley
After creating a new relationship eo object for an object in ERModernLook D2W using the embedded ERMODEditRelationshipPage. When trying to delete the newly created relationship object without saving the parent object first throws the following exception:
NullPointerException
at er.modern.directtoweb.components.buttons.ERMDDeleteButton.deleteObjectWithFinalCommit(ERMDDeleteButton.java:127)
at er.modern.directtoweb.components.buttons.ERMDDeleteButton.deleteAction(ERMDDeleteButton.java:107)
... skipped 14 stack elements
at er.ajax.AjaxUpdateLink.handleRequest(AjaxUpdateLink.java:383)
... skipped 184 stack elements
at er.ajax.AjaxRequestHandler.handleRequest(AjaxRequestHandler.java:17)
... skipped 6 stack elements
It appears that in the code
if (finalCommit) { // if we are editing, then don't save the parent ec.
object().editingContext().saveChanges();
}
the newly created object() does not have an editing context.
Right now, if we want to create a new object and create a related object linked to the primary one by a 1:N or N:N (flattened) relationship, we have to add each attributes of the destination, like this:
public WOActionResults createAction() throws Throwable {
ERXKeyFilter filter = ERXKeyFilter.filterWithAll();
filter.include(SomeEntity.DESTINATION_ENTITIES.dot(DestinationEntity.SOME_ATTRIBUTE));
SomeEntity newEntity = create(filter);
newEntity.editingContext().saveChanges();
return response(newEntity, filter);
}
If filter.include is not called, the new object 's attributes are getting emptied (or it's not null), and validation when saving while fail because of not null attributes.
I tried to track down the problem, and I found out that the problem is at this line (line 1021) of ERXRestRequestNode:
toManyNode.updateObjectWithFilter(childObj, keyFilter._filterForKey(key), delegate);
When this is called, keyFilter._filterForKey(key) returns ERXKeyFilter.Base.None, that's why everything is empty. That behavior doesn't happen to 1:1 relationship.
The used custom attribute names of some components should be changed to conform the HTML specification. As an example the AjaxUpdateContainer component creates an element with an attribute updateUrl that breaks the validity of the generated HTML.
Those attributes should all be prefixed with data- as described in http://dev.w3.org/html5/spec/global-attributes.html#embedding-custom-non-visible-data-with-the-data-attributes
Add 2 Components with Cats what was used with the Podcast
more changes for H2 Database come in the next Commit
Reported by Ray Kiddy.
Go to: http://webobjects.mdimension.com/cgi-bin/WebObjects/AjaxExample.woa
What happened to the slider? It only appears once?
Unless I'm blind, er.rest.Application is missing from ERRestTest :-)
Reported by Gavin Eadie
In the Ajax Framework, the Javadoc for the AjaxExpansion component says of the "action" binding: "the action to fire when the contents are expanded" but it also fires when the contents are hidden -- it fires on both expansion and contraction.
for upcoming ERExtension Class
Using a rule like
pageConfiguration = 'Foo' && tabKey = 'Bar' => validationKeys = "(validateXY)"
with a ERMODWizard page does not display an error on the Bar tab if validateXY throws a validation exception.
for upcoming ERExtensions Class
ERXRouteController.format() should check the Accept and Content-Type header to figure out the format to use if it was not specified in the URL. For example, JBoss' RestEasy client use Content-Type (bad idea, it should be Accept, but anyway) to specify the preferred format.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.