Re: [EXTERNAL] Re: Java upgrade question

2024-04-05 Thread Morris, Mark via Webobjects-dev
Hi Paul,

Thanks, that’s great to hear! There was some concern expressed a while back 
that it might be impossible to move past Java 8 because of a change to the way 
classes are loaded. I’m definitely glad that turned out not to be the case!

Take care,
Mark

From: Paul Hoadley via Webobjects-dev 
Date: Friday, April 5, 2024 at 4:26 PM
To: webobjects-dev@lists.apple.com , 
webobjects-...@wocommunity.org 
Subject: [EXTERNAL] Re: Java upgrade question
Hi Mark, On 6 Apr 2024, at 6: 55 am, Morris, Mark via Webobjects-dev 
 wrote: I’ve been trying to research (old 
messages, Google, etc. ), but I don’t think I’ve found anything definitive. I 
know at least at

Hi Mark,

On 6 Apr 2024, at 6:55 am, Morris, Mark via Webobjects-dev 
mailto:webobjects-dev@lists.apple.com>> wrote:

I’ve been trying to research (old messages, Google, etc.), but I don’t think 
I’ve found anything definitive.

I know at least at one point there was an issue migrating past Java 8, due to 
the way WOnder patches/extends Apple’s frameworks. Has that been resolved or 
worked around? We would like to totally get rid of Java 8, and move to Java 11 
(or 17, or 21…).

Plenty of people have moved beyond Java 8. We've been using Java 21 since soon 
after it was released. About the only thing you'll need to do is add some JVM 
options in 
build.properties<https://urldefense.com/v3/__http:/build.properties__;!!MfzFaTml5A!kVqrmx58oqFRWdQNqzkgLBMqSjN9BNTffYpBV39CThLDnVveU0G69UQ1s-GThu7W_bSsufTI2G1LRfZyhX0cDO0ULtrRVWo$>,
 such as:

jvmOptions=--add-exports java.base/sun.security.action=ALL-UNNAMED 
--add-exports java.base/sun.util.calendar=ALL-UNNAMED

I'm struggling to think of much else that was required. It was certainly an 
easier transition than I thought it was going to be.


--
Paul Hoadley
https://logicsquad.net/<https://urldefense.com/v3/__https:/logicsquad.net/__;!!MfzFaTml5A!kVqrmx58oqFRWdQNqzkgLBMqSjN9BNTffYpBV39CThLDnVveU0G69UQ1s-GThu7W_bSsufTI2G1LRfZyhX0cDO0UsW_UjCk$>
https://www.linkedin.com/company/logic-squad/<https://urldefense.com/v3/__https:/www.linkedin.com/company/logic-squad/__;!!MfzFaTml5A!kVqrmx58oqFRWdQNqzkgLBMqSjN9BNTffYpBV39CThLDnVveU0G69UQ1s-GThu7W_bSsufTI2G1LRfZyhX0cDO0Ur76lVjQ$>

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Java upgrade question

2024-04-05 Thread Morris, Mark via Webobjects-dev

Hi all,

I’ve been trying to research (old messages, Google, etc.), but I don’t think 
I’ve found anything definitive.

I know at least at one point there was an issue migrating past Java 8, due to 
the way WOnder patches/extends Apple’s frameworks. Has that been resolved or 
worked around? We would like to totally get rid of Java 8, and move to Java 11 
(or 17, or 21…).

Thanks!
--
Mark
 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: [EXTERNAL] Latest working Eclipse/WOLips

2021-03-05 Thread Morris, Mark via Webobjects-dev
Hi Riccardo,

I'm using Eclipse 2020-12, but I haven't heard anyone complaining about issues 
with the new 2021 release. For either one, you need to make sure to point to 
the most recent WOLips. You can find general instructions (referencing slightly 
older versions) at: 
https://wiki.wocommunity.org/display/WEB/Project+Wonder+Installation

Also, note that this mailing list has been unreliable lately, so there's now a 
new, community-maintained list. See the info at: 
https://wiki.wocommunity.org/display/WEB/Home

Hope this helps!
-- Mark

On 3/5/21, 1:00 PM, "Riccardo De Menna via Webobjects-dev" 
 wrote:

Security First: External email, use caution clicking links or opening 
attachments

Hi Everyone,

I’ve noticed there’s some recent development on the WO side. 
Can someone point me out what eclipse/wolips version currently works with 
WO.
I have some old WO-based projects that I need to update/maintain but Big 
Sur disagrees and is not being helpfull.

Regards,
Riccardo De Menna
 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:

https://urldefense.com/v3/__https://lists.apple.com/mailman/options/webobjects-dev/mark.morris*40experian.com__;JQ!!MfzFaTml5A!3jsQi_9jmlbhwrmUZWbNOKdTWNbAhqBMgh6WjWcrC3TcD32vJIyiqZHburg4RYFgRDw$
 

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: [EXTERNAL] Licence for WebObjects

2020-12-08 Thread Morris, Mark via Webobjects-dev
As I recall, we're adhering to the last license Apple published and it stated 
unlimited deployment license on any Java platform and development on any Mac.

--  Mark

On 12/8/20, 5:01 PM, "frelin--- via Webobjects-dev" 
 wrote:

Security First: External email, use caution clicking links or opening 
attachments

Licensing and WebObjects

I have a couple of lawyers wondering about the licensing situation for 
applications developed with WebObjects and Wonder. 

If anyone here has been in a similar situation and have a readily answer i 
would really appreciate it!

/Fredrik


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:

https://urldefense.com/v3/__https://lists.apple.com/mailman/options/webobjects-dev/mark.morris*40experian.com__;JQ!!MfzFaTml5A!1C__JzqgLx0yu45vzwvd5rWMVKvmh_vlFz0AmQmXuVPuWYyRjJsK_zTrFRbP_FmdzCk$
 

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: [EXTERNAL] Re: Trouble installing WOLips - SOLVED

2020-08-23 Thread Morris, Mark via Webobjects-dev
Ok, it was related to our network config. I was just able to connect and 
install WOLips, thanks all!
-- Mark

From: "Morris, Mark via Webobjects-dev" 
Reply-To: "Morris, Mark" 
Date: Sunday, August 23, 2020 at 7:56 PM
To: Paul Hoadley 
Cc: "webobjects-dev@lists.apple.com" 
Subject: Re: [EXTERNAL] Re: Trouble installing WOLips

Hi Paul,

java -version gives:


java version "1.8.0_261"

Java(TM) SE Runtime Environment (build 1.8.0_261-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

I tried with that version, then as I mentioned I also installed the current 
Zulu OpenJDK version of Java 8, and pointed eclipse.ini to that one, but still 
get the same error.

Hmmm, our machines are getting more and more locked down, perhaps it’s 
something in our network configuration….

Thanks!

Regards,
Mark


From: Paul Hoadley 
Date: Sunday, August 23, 2020 at 6:21 PM
To: "Morris, Mark" 
Cc: "webobjects-dev@lists.apple.com" 
Subject: [EXTERNAL] Re: Trouble installing WOLips

Security First: External email, use caution clicking links or opening 
attachments
Hi Mark,

On 22 Aug 2020, at 17:18, Wolfgang Hartmann via Webobjects-dev 
mailto:webobjects-dev@lists.apple.com>> wrote:



You should point eclipse to 
https://jenkins.wocommunity.org/job/WOLips410/lastSuccessfulBuild/artifact/temp/dist<https://urldefense.com/v3/__https:/jenkins.wocommunity.org/job/WOLips410/lastSuccessfulBuild/artifact/temp/dist__;!!MfzFaTml5A!05JY5lPbswE1bhCcdu9dy6TuRpt0ItNGXWST5Qk_ABG7yOtpi_QWmzelG3FLwFuOQfg$>/

That URL works here as well.

What does 'java -version' show for the JDK you're using?


--
Paul Hoadley
https://logicsquad.net/<https://urldefense.com/v3/__https:/logicsquad.net/__;!!MfzFaTml5A!05JY5lPbswE1bhCcdu9dy6TuRpt0ItNGXWST5Qk_ABG7yOtpi_QWmzelG3FLBJLSF70$>
https://www.linkedin.com/company/logic-squad/<https://urldefense.com/v3/__https:/www.linkedin.com/company/logic-squad/__;!!MfzFaTml5A!05JY5lPbswE1bhCcdu9dy6TuRpt0ItNGXWST5Qk_ABG7yOtpi_QWmzelG3FLLAf8w54$>

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: [EXTERNAL] Re: Trouble installing WOLips

2020-08-23 Thread Morris, Mark via Webobjects-dev
Hi Paul,

java -version gives:


java version "1.8.0_261"

Java(TM) SE Runtime Environment (build 1.8.0_261-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)

I tried with that version, then as I mentioned I also installed the current 
Zulu OpenJDK version of Java 8, and pointed eclipse.ini to that one, but still 
get the same error.

Hmmm, our machines are getting more and more locked down, perhaps it’s 
something in our network configuration….

Thanks!

Regards,
Mark


From: Paul Hoadley 
Date: Sunday, August 23, 2020 at 6:21 PM
To: "Morris, Mark" 
Cc: "webobjects-dev@lists.apple.com" 
Subject: [EXTERNAL] Re: Trouble installing WOLips

Security First: External email, use caution clicking links or opening 
attachments
Hi Mark,

On 22 Aug 2020, at 17:18, Wolfgang Hartmann via Webobjects-dev 
mailto:webobjects-dev@lists.apple.com>> wrote:


You should point eclipse to 
https://jenkins.wocommunity.org/job/WOLips410/lastSuccessfulBuild/artifact/temp/dist<https://urldefense.com/v3/__https:/jenkins.wocommunity.org/job/WOLips410/lastSuccessfulBuild/artifact/temp/dist__;!!MfzFaTml5A!05JY5lPbswE1bhCcdu9dy6TuRpt0ItNGXWST5Qk_ABG7yOtpi_QWmzelG3FLwFuOQfg$>/

That URL works here as well.

What does 'java -version' show for the JDK you're using?


--
Paul Hoadley
https://logicsquad.net/<https://urldefense.com/v3/__https:/logicsquad.net/__;!!MfzFaTml5A!05JY5lPbswE1bhCcdu9dy6TuRpt0ItNGXWST5Qk_ABG7yOtpi_QWmzelG3FLBJLSF70$>
https://www.linkedin.com/company/logic-squad/<https://urldefense.com/v3/__https:/www.linkedin.com/company/logic-squad/__;!!MfzFaTml5A!05JY5lPbswE1bhCcdu9dy6TuRpt0ItNGXWST5Qk_ABG7yOtpi_QWmzelG3FLLAf8w54$>

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: [EXTERNAL] Re: Trouble installing WOLips

2020-08-22 Thread Morris, Mark via Webobjects-dev
Hi Wolfy,

Thank you for the suggestions! I changed Eclipse to point to the URL you 
suggested, but I get the same error message.

Also, this is a brand new machine, so I originally tried it with the version of 
Java 8 supplied by Apple. When that didn’t work, I installed the current Zulu 
OpenJDK version of Java 8, and updated the eclipse.ini file to make sure 
Eclipse points to that:


-vm 
/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/server/libjvm.dylib

However, I still got the same error.

Still stymied at the moment.

Regards,
Mark

From: Wolfgang Hartmann 
Date: Saturday, August 22, 2020 at 2:48 AM
To: "webobjects-dev@lists.apple.com" , "Morris, 
Mark" 
Subject: [EXTERNAL] Re: Trouble installing WOLips

Security First: External email, use caution clicking links or opening 
attachments
You should point eclipse to 
https://jenkins.wocommunity.org/job/WOLips410/lastSuccessfulBuild/artifact/temp/dist<https://urldefense.com/v3/__https:/jenkins.wocommunity.org/job/WOLips410/lastSuccessfulBuild/artifact/temp/dist__;!!MfzFaTml5A!wVDdhQtBKUZ7wa4ReqahcMK48FuxJhGpqvvK_ACbV5Z1QJfiEcc4jFxpa-sxGKFdBvA$>/
Maybe the certificate error is related to letscrypt. Please try to update your 
local java installation, because maybe it is to old and don't have the required 
root-ca.
Best Regards,
Wolfy
Get Outlook for 
Android<https://urldefense.com/v3/__https:/aka.ms/ghei36__;!!MfzFaTml5A!wVDdhQtBKUZ7wa4ReqahcMK48FuxJhGpqvvK_ACbV5Z1QJfiEcc4jFxpa-sxj3mnOdk$>

________
From: Morris, Mark via Webobjects-dev 
Sent: Saturday, August 22, 2020 1:51:09 AM
To: webobjects-dev@lists.apple.com 
Subject: Trouble installing WOLips


Hi all! I’m installing WOLips on a new machine, and get the following error:



Unable to read repository at 
https://jenkins.wocommunity.org/job/WOLips410/lastStableBuild/artifact/temp/dist/content.xml<https://urldefense.com/v3/__https:/jenkins.wocommunity.org/job/WOLips410/lastStableBuild/artifact/temp/dist/content.xml__;!!MfzFaTml5A!wVDdhQtBKUZ7wa4ReqahcMK48FuxJhGpqvvK_ACbV5Z1QJfiEcc4jFxpa-sxabEsqtU$>.

Unable to read repository at 
https://jenkins.wocommunity.org/job/WOLips410/lastStableBuild/artifact/temp/dist/content.xml<https://urldefense.com/v3/__https:/jenkins.wocommunity.org/job/WOLips410/lastStableBuild/artifact/temp/dist/content.xml__;!!MfzFaTml5A!wVDdhQtBKUZ7wa4ReqahcMK48FuxJhGpqvvK_ACbV5Z1QJfiEcc4jFxpa-sxabEsqtU$>.

PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find 
valid certification path to requested target



I can see the directory in Safari, but not the content.xml file that eclipse is 
looking for. I’m guessing it’s something basic I’ve forgotten to do, but any 
help would be greatly appreciated. 



Regards,

Mark


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Trouble installing WOLips

2020-08-21 Thread Morris, Mark via Webobjects-dev
Hi all! I’m installing WOLips on a new machine, and get the following error:


Unable to read repository at 
https://jenkins.wocommunity.org/job/WOLips410/lastStableBuild/artifact/temp/dist/content.xml.

Unable to read repository at 
https://jenkins.wocommunity.org/job/WOLips410/lastStableBuild/artifact/temp/dist/content.xml.

PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find 
valid certification path to requested target

I can see the directory in Safari, but not the content.xml file that eclipse is 
looking for. I’m guessing it’s something basic I’ve forgotten to do, but any 
help would be greatly appreciated. 

Regards,
Mark

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Multiple timezones

2020-02-25 Thread Morris, Mark via Webobjects-dev
Hi Michael,

I’d recommend storing only UTC. We grab the client’s timezone from the browser 
using javascript and it gets sent back in the very next RR loop after they 
visit the site, so for the rest of the session we can display any time data in 
their local timezone if necessary.

Hope this helps!
Mark

> On Feb 25, 2020, at 11:59 AM, Michael Kondratov via Webobjects-dev 
>  wrote:
> 
> Hello!
>Whats the winning strategy on dealing with users / records in multiple 
> timezones? We are starting add add companies that are few hours away from us 
> and don't know how to best handle it.
> 
> 
> 
> Sincerely,
> 
> 
> Michael
> 
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://urldefense.com/v3/__https://lists.apple.com/mailman/options/webobjects-dev/mark.morris*40experian.com__;JQ!!MfzFaTml5A!wMwiID9wRhgZflNm9bk6NEiuG69c1pmZ7IK3wIGmNTTVahR43wuAx7f2cBrPRVU_dWc$
>  
> 
> This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: There is not WOHTTPSConnection.... how then?

2019-10-23 Thread Morris, Mark via Webobjects-dev
When I need to connect to another server from my WO apps, I just use java’s 
HttpsURLConnection or HttpURLConnection.

Regards,
Mark

On Oct 23, 2019, at 8:53 AM, Maik Musall via Webobjects-dev 
mailto:webobjects-dev@lists.apple.com>> wrote:

Oh,

I misunderstood. You’re not uploading to *your* application’s server, but the 
application is uploading to somewhere else.

In that case, I’d use apache http client, which has all I need. I can even put 
custom pinned certificates in a local keystore and use that. Not sure about 
client certificates though.

Maik


Am 23.10.2019 um 15:28 schrieb Maik Musall via Webobjects-dev 
mailto:webobjects-dev@lists.apple.com>>:

Hi Markus,

why not use a reverse proxy in front of that, terminating TLS and talking plain 
http to the app internally? I though everyone is doing that. Certainly we are.

Maik


Am 23.10.2019 um 12:01 schrieb Markus Ruggiero via Webobjects-dev 
mailto:webobjects-dev@lists.apple.com>>:

I need to upload data to a server via https. I have it working for http (no 
"s") using WOHttpConnection. But there is none with "S". The customer wants to 
switch to secure connection. How'd I do that?

Here is my code for the non-secure upload:

WORequest request = new WORequest("POST", application.docUploadPath(), 
"HTTP/1.1", null, xml, null);
request.setHeader( authHeaderContent, "Authorization" );
request.setHeader( application.docUploadHost(), "host" );
request.setHeader( "Java/1.8", "user-agent" );
request.setHeader( "text/xml", "content-type" );
WOHTTPConnection connection = new WOHTTPConnection(application.docUploadHost(), 
application.docUploadPort());
boolean sendRequestSucceeded = connection.sendRequest( request );

Thanks for any pointer or even some code snippets.

---markus---
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/maik%40selbstdenker.ag

This email sent to m...@selbstdenker.ag

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/maik%40selbstdenker.ag

This email sent to m...@selbstdenker.ag

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: LoadBalancer

2019-09-09 Thread Morris, Mark via Webobjects-dev
Hi André,

If in reality the situation is as simple as your example, perhaps you could 
just create a separate single instance with a distinct name for your “defined 
instance", and use that for requests that require it. We do something like that 
for certain special situations.

Regards,
Mark

> On Sep 9, 2019, at 3:06 PM, André Rothe via Webobjects-dev 
>  wrote:
> 
> Hello,
> 
> In the JavaMonitor I found the LoadBalancer properties. We use "Round Robin" 
> for our application, but I asked myself, how I could implement a custom 
> scheduler for a specific problem (multiple instances of an application, but 
> some requests should always use a defined instance, all all other requests 
> should be redirected and balanced between the other instances). Is there an 
> interface, which my scheduler has to implement?
> 
> Thank you
> André
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
> 
> This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Access to WOComponents of a page

2019-07-25 Thread Morris, Mark via Webobjects-dev
Of course, this is just an example, replace the class name with your superclass 
class name. ;-)

On Jul 25, 2019, at 8:59 AM, Morris, Mark 
mailto:mark.mor...@experian.com>> wrote:

Hi André,

If you still want to go the subclass route, try adding this in your subclass 
(to get it to use the superclass’s WO template):

@Override
public WOElement template() {
return 
ERXComponentUtilities.inheritTemplateFrom(ContractCodeMapping.class.getSimpleName(),
 session().languages());
}

Regards,
Mark

On Jul 25, 2019, at 2:32 AM, André Rothe via Webobjects-dev 
mailto:Webobjects-dev@lists.apple.com>> wrote:

Hi,

This way I have tried too, but I did not know, which page name I have to
use. I'll try this with the class again.

public WOComponent  generateCapcha(){
{
ERCaptcha captcha = pageWithName(ERCaptcha.class);
captcha. setResponse("");
return captcha;
}

But probably action can be used in your case.


You can try  the subclass way. You  could override appendToResponse in your 
PSDCaptcha to do what you want...

After I have created the subclass, the Captcha was not longer visible. I
will check that again, or I'll go the longer way: fixing the bug within
the framework. There are more problems within the framework, it runs
only with Java 1.5.

Thanks
André

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com<mailto:mark.mor...@experian.com>


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Access to WOComponents of a page

2019-07-25 Thread Morris, Mark via Webobjects-dev
Hi André,

If you still want to go the subclass route, try adding this in your subclass 
(to get it to use the superclass’s WO template):

@Override
public WOElement template() {
return 
ERXComponentUtilities.inheritTemplateFrom(ContractCodeMapping.class.getSimpleName(),
 session().languages());
}

Regards,
Mark

On Jul 25, 2019, at 2:32 AM, André Rothe via Webobjects-dev 
mailto:Webobjects-dev@lists.apple.com>> wrote:

Hi,

This way I have tried too, but I did not know, which page name I have to
use. I'll try this with the class again.

public WOComponent  generateCapcha(){
{
ERCaptcha captcha = pageWithName(ERCaptcha.class);
captcha. setResponse("");
return captcha;
}

But probably action can be used in your case.


You can try  the subclass way. You  could override appendToResponse in your 
PSDCaptcha to do what you want...

After I have created the subclass, the Captcha was not longer visible. I
will check that again, or I'll go the longer way: fixing the bug within
the framework. There are more problems within the framework, it runs
only with Java 1.5.

Thanks
André

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: On the future of WO (here we go again)

2019-03-15 Thread Morris, Mark
Thanks for the offer! Unfortunately I won’t be able to make the trip for WODay. 
I would have loved to be there, and would be really interested in doing a 
deeper dive into understanding Cayenne.

Also, the trip would have been nostalgic for me, since I lived for a year in 
the Frankfurt area (Königstein im Taunus), 40 years ago now.

Regards,
Mark


On Mar 15, 2019, at 10:18 AM, Maik Musall 
mailto:m...@selbstdenker.ag>> wrote:

Hi Mark,

In 2017, Hugi and I converted a large project (>800.000 lines) from EOF to 
Cayenne, within a few months. Had parallel branches for a while and then 
switched in production, never looked back. Cayenne is similar enough that most 
of the work is either boilerplate conversion or actually making use of the 
newly-gained benefits. Very few hard problems encountered, and all solved.

Let's have a talk in Frankfurt about what your EOF specifics actually are.

Maik


Am 15.03.2019 um 15:34 schrieb Morris, Mark 
mailto:mark.mor...@experian.com>>:

Just to throw our 2¢ in, we have an extremely large codebase that is very 
heavily invested in EOF, using it in several ways that dive deep into its 
bowels. ;-) Of course, we also use the WOF part of WO, and all of Wonder.

Regards,
Mark

On Mar 15, 2019, at 5:51 AM, Hugi Thordarson 
mailto:h...@karlmenn.is>> wrote:

Hi all.
In preparation for the coming WODay in Frankfurt, I'd love it if you'd be open 
to having a discussion on the status and future of WO, so we can enter the 
coming work prepared.

I'd like to begin by sharing my own thoughts on the matter, based on my current 
stack and experience. It's a rehash of something I posted to our Slack 
yesterday, may sound revolutionary and will no doubt be controversial, but I 
think some outside-the-box thinking is required at this time. This is lengthy, 
sorry about that…

--

In the past few years I've been working towards minimising the use and effect 
of WO/Wonder on my stack, so when and if The Time comes, I and my customers 
have a migration path forward. Among the things I've done is move from EOF to 
Cayenne and from Ant to Maven (to make using 3rd party jars, including Cayenne 
easier), both of which have turned out to have been very happy decisions which 
I wholeheartedly recommend, regardless of anything else you do.

I love working with my WO/Cayenne stack, which is currently only "polluted" by 
the following frameworks:

-- WO:
* JavaFoundation (indirectly through WO, I never use foundation classes in my 
code unless absolutely required by WO)
* JavaWebObjects

-- Wonder (I consider Wonder "polluted" since it depends on WO/EOF)
* ERExtensions (only the WO stuff, not the EOF stuff)
• Ajax
• WOOgnl (indirectly for parsing Wonder-style inline templates)
…and of course then there's the deployment stuff (JavaMonitor,wotaskd, 
adaptors).

Given this, here's my proposal for a way forward:
* We abandon EOF (and, in fact, any ORM—this is not meant to be a full stack 
effort, initially at least)
* We re-implement JavaWebObjects as required (and the absolutely necessary 
parts of JavaFoundation, such as KVC and NSBundle) as a single framework
* We separate the necessary WO stuff from the EOF/D2W stuff in Wonder (as well 
as other totally unrelated things like mail sending frameworks, other utility 
frameworks and "useful applications") and include it in our re-implementation
* We create a fork of WOLips that knows how to live within the New Universe
* We rule the world

Ideally, what we end with is Just a Web Framework™ with IDE integration (and 
nothing else) that can serve as a basis for future development. While 
re-implementing WO may sound like a huge undertaking, I actually think it's 
smaller than rewriting all of my solutions that depend on it. This probably 
applies to more of you.

Now, looking at my own stack I know this proposal might sound a bit 
self-serving, but I'd like to hear other opinions. I believe it's a realistic 
way forward with (comparatively) minimal development effort. Turns out that WOF 
itself is the only part of the WO/Wonder stack that I really just don't want to 
live without.

This is something I'd like to do, and if anyone likes the idea and is willing 
to participate, I'm confident we can make this work! Doing stuff alone sucks.

Cheers,
- hugi
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_webobjects-2Ddev_mark.morris-2540experian.com=DwMFaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=SmJPfjJ8DMuwgBqZ64cpcNdTQ5HRSWxcLZ8TEAcvLIg=2SPRsvhFirZRRNH5HpjxPr2d21673gUblUUWtoF4bKE=>

This email s

Re: On the future of WO (here we go again)

2019-03-15 Thread Morris, Mark
Just to throw our 2¢ in, we have an extremely large codebase that is very 
heavily invested in EOF, using it in several ways that dive deep into its 
bowels. ;-) Of course, we also use the WOF part of WO, and all of Wonder.

Regards,
Mark

> On Mar 15, 2019, at 5:51 AM, Hugi Thordarson  wrote:
> 
> Hi all.
> In preparation for the coming WODay in Frankfurt, I'd love it if you'd be 
> open to having a discussion on the status and future of WO, so we can enter 
> the coming work prepared.
> 
> I'd like to begin by sharing my own thoughts on the matter, based on my 
> current stack and experience. It's a rehash of something I posted to our 
> Slack yesterday, may sound revolutionary and will no doubt be controversial, 
> but I think some outside-the-box thinking is required at this time. This is 
> lengthy, sorry about that…
> 
> --
> 
> In the past few years I've been working towards minimising the use and effect 
> of WO/Wonder on my stack, so when and if The Time comes, I and my customers 
> have a migration path forward. Among the things I've done is move from EOF to 
> Cayenne and from Ant to Maven (to make using 3rd party jars, including 
> Cayenne easier), both of which have turned out to have been very happy 
> decisions which I wholeheartedly recommend, regardless of anything else you 
> do.
> 
> I love working with my WO/Cayenne stack, which is currently only "polluted" 
> by the following frameworks:
> 
> -- WO:
> * JavaFoundation (indirectly through WO, I never use foundation classes in my 
> code unless absolutely required by WO)
> * JavaWebObjects
> 
> -- Wonder (I consider Wonder "polluted" since it depends on WO/EOF)
> * ERExtensions (only the WO stuff, not the EOF stuff)
> • Ajax
> • WOOgnl (indirectly for parsing Wonder-style inline templates)
> …and of course then there's the deployment stuff (JavaMonitor,wotaskd, 
> adaptors).
> 
> Given this, here's my proposal for a way forward:
> * We abandon EOF (and, in fact, any ORM—this is not meant to be a full stack 
> effort, initially at least)
> * We re-implement JavaWebObjects as required (and the absolutely necessary 
> parts of JavaFoundation, such as KVC and NSBundle) as a single framework
> * We separate the necessary WO stuff from the EOF/D2W stuff in Wonder (as 
> well as other totally unrelated things like mail sending frameworks, other 
> utility frameworks and "useful applications") and include it in our 
> re-implementation
> * We create a fork of WOLips that knows how to live within the New Universe
> * We rule the world
> 
> Ideally, what we end with is Just a Web Framework™ with IDE integration (and 
> nothing else) that can serve as a basis for future development. While 
> re-implementing WO may sound like a huge undertaking, I actually think it's 
> smaller than rewriting all of my solutions that depend on it. This probably 
> applies to more of you.
> 
> Now, looking at my own stack I know this proposal might sound a bit 
> self-serving, but I'd like to hear other opinions. I believe it's a realistic 
> way forward with (comparatively) minimal development effort. Turns out that 
> WOF itself is the only part of the WO/Wonder stack that I really just don't 
> want to live without.
> 
> This is something I'd like to do, and if anyone likes the idea and is willing 
> to participate, I'm confident we can make this work! Doing stuff alone sucks.
> 
> Cheers,
> - hugi
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
> 
> This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


WOLips and dark mode

2019-02-06 Thread Morris, Mark
Hello! So after reading the experiences of others on the list, I went ahead and 
successfully updated to Eclipse 2018-12, and it was as painless as could be.

I was finally trying out Eclipse’s dark mode, and had a couple of questions. 
The rest of the UI seemed to pick reasonable defaults for font and background 
colors, but WOD and HTML fonts are difficult to see. Also, the WO Outline view 
didn’t switch at all, but kept its white background. Is this something that 
WOLips needs to be updated to support, or do I need to set up custom settings?

Thanks!
Mark
 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Advice on whether to upgrade Eclipse / WOLips from Eclipse Mars 4.5

2019-02-05 Thread Morris, Mark
I’m on Eclipse 4.6 and it’s working fine, but a few of my coworkers are on 
Eclipse 4.7 and are very happy with it. (We all use WOLips.)

Coincidentally I just downloaded Eclipse 2018-12 yesterday to give it a try 
sometime in the next week or so. Anyone try this yet?

Regards,
Mark

From: Webobjects-dev 
 on behalf of 
Aaron Rosenzweig 
Date: Tuesday, February 5, 2019 at 11:41 AM
To: John Pollard 
Cc: WebObjects Development 
Subject: Re: Advice on whether to upgrade Eclipse / WOLips from Eclipse Mars 4.5

Hi John, I’m on Eclipse 4.6 and it is ok. I have not tried 4.7 with WO.

Newer Eclipse can sometimes bring better debugging and general Java goodness 
but other than that…

If you are reasonably happy, I wouldn’t switch.

I guess for giggles and grins you could try out 4.7 and see how it goes.
Aaron Rosenzweig / Chat 'n 
Bike
e:  aa...@chatnbike.com  t:  (301) 956-2319

[Image removed by sender. Chat 'n Bike]

[Image removed by sender. Chat 'n Bike]



On Feb 5, 2019, at 5:08 AM, John Pollard 
mailto:j...@pollardweb.com>> wrote:

Hi list,

My last update of Eclipse/WOLips was in 2015 and I am on Eclipse Mars 4.5.2 + 
wolips / subclipse and all works fine.

Should I move up (to Eclipse/WOLips 4.7?) or not much reason to do so?

Many thanks for your advice,

John
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/aaron%40chatnbike.com

This email sent to aa...@chatnbike.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


ERAttachment / multiple file upload questions

2019-01-05 Thread Morris, Mark
Hello!

We’d like to add multiple file upload capabilities to our app. Looking around, 
it seems Wonder has an ERDragAndDropUpload component that does that.

However, it looks like it’s dependent on also using ERAttachment. We’ve been 
using our own Attachment class since before ERAttachment existed, so I’m not 
sure how it could be integrated at this point. On top of that, it looks like 
some of the documentation for ERAttachment is currently unavailable. (I can’t 
get to the Overview or the tutorial movie linked from 
).

So I guess I have a multiple part question. Is ERDragAndDropUpload the best way 
to go nowadays for implementing drag and drop multiple file uploads? If so, is 
it, or maybe ERAttachment, flexible enough that I can get the uploaded files 
and save them in our own Attachment class? Finally, if that might be possible, 
are there live links out there to some of the documentation?

Thanks in advance!

Regards,
Mark
 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Enterprise objects stored in JSON or byte

2018-12-19 Thread Morris, Mark
Hi Mark,

This sounds similar to something we do. We create entities on demand that are 
used for reporting purposes, where data is grouped and rolled up from our 
“real” persistent entities. I think there are some differences in what you’re 
looking at, though.

Perhaps instead of using NSDictionary, you could make use of all the goodness 
in the EOF stack and use ERXGenericRecords. You would have to make sure that 
the top-level editing context associated with these does not actually save 
anywhere.

Good luck!
Mark

> On Dec 19, 2018, at 9:39 AM, Mark Wardle  wrote:
> 
> I want to define a group enterprise objects at runtime and yet use them in a 
> fairly similar way to "normal" enterprise objects. 
> 
> Essentially, I want a generic object that is backed by a NSDictionary (or 
> other persistence mechanism like bytes/protobuf) and has a defined behaviour 
> class. I would like to define the model at runtime rather than using 
> EOModeler. The definition of the object (list of properties and for each 
> property: name, dataType, class, prototype etc.) defined itself at runtime in 
> the backing database. 
> 
> Anyone done something similar, and if so, what is the best approach? I have 
> contemplated building a generic EO that delegates its behaviour and data to 
> the behaviour class and the backing NSDictionary respectively, and alters the 
> implementation of KVC to make it fairly transparent. I'm aware that some of 
> the hidden "magic" that comes from defining an object in EOModeler might be 
> lost. 
> 
> Any hints/tips gratefully received!
> 
> Best wishes,
> 
> Mark
> 
> 
> 
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
> 
> This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: EOEnterpriseObjectClazz with interface

2018-11-20 Thread Morris, Mark
Hi Henrique,

That’s cool, I hadn’t considered how an enum and an interface could work 
together like that. ☺

In my particular case this could work. Another idea I had is using the 
EOEntity’s userInfo dictionary to store the relevant distinguishing 
information. But it doesn’t seem as clean as just adding the method to the 
interface, from an object-oriented / business logic encapsulation point of 
view. It seemed like that capability was implied by the class comments of 
EOEnterpriseObjectClazz, but perhaps it doesn’t quite go that far.

Thanks!
Mark

From: Henrique Prange 
Date: Tuesday, November 20, 2018 at 8:26 PM
To: "Morris, Mark" 
Cc: "Webobjects-dev@lists.apple.com" 
Subject: Re: EOEnterpriseObjectClazz with interface

Hey Mark,

Even if Java allowed you to override static methods of an interface, you would 
still have problems to discover the classes that implement them in runtime. In 
the end, it doesn't matter if you remember to implement the static method in 
your subclass if you forget to call it somewhere else.

For this reason, the answer to your question must have two characteristics:

1. Subclasses of WorkflowRoutable must implement a method to provide useful 
information.

2. WorkflowRoutable types must be easily discoverable at runtime.

It turns out there's a Java construct that can help you in this case. You could 
create an enum of WorkflowRoutableTypes and require every subclass of 
WorkflowRoutable to implement a method that returns its type.The code I imagine 
looks like this:

interface WorkflowRoutable {
public static enum WorkflowRoutableType {
WORKFLOW_1 {
@Override
public String usefulInformation() {
return "useful information for workflow routable 1";
}
},
WORKFLOW_2 {
@Override
public String usefulInformation() {
return "useful information for workflow routable 2";
}
};

public abstract String usefulInformation();
}

...

/**
 * Returns the type of this WorkflowRoutable. You need to create a new type 
whenever
 * you implement this interface. See {@code WorkflowRoutableType} for 
details.
 */
WorkflowRoutableType type();
}

class Workflow1 implements WorkflowRoutable {
@Override
public WorkflowRoutableType type() {
return WorkflowRoutableType.WORKFLOW_1;
}
}

class Workflow2 implements WorkflowRoutable {
@Override
public WorkflowRoutableType type() {
return WorkflowRoutableType.WORKFLOW_2;
}
}

If you create a new Workflow3 class implementing the WorkflowRoutable 
interface, the compiler will require you to override the type method. As a 
result, you'll have to create a new enum type with its version of the useful 
information method.

One side effect of this solution is the ability to discover WorkflowRoutable 
types in runtime easily:

for (WorkflowRoutableType type : WorkflowRoutableType.values()) {
type.usefulInformation();
...
}

And then you kill two birds with one stone. ;)

Cheers,

HP


On Nov 20, 2018, at 9:50 PM, Morris, Mark 
mailto:mark.mor...@experian.com>> wrote:

Hi Johann,

Sure! Here’s a hypothetical.

Let’s say I have a WorkflowRoutable interface that defines a few instance 
methods. Now I can implement that interface on EOs that need to participate in 
workflow, and call those methods in my workflow processing without any trouble. 
Now let’s say there’s some useful information used when configuring workflow 
queues to be able to handle a particular entity, but I may not have any 
instances at that point. I would want to define a class method as part of my 
WorkflowRoutable interface, so that I can safely call that method to get that 
entity-specific workflow information.

Again, no problem in ObjC. But static methods can’t be in Java interfaces (at 
least in that way). Can the Clazz approach help with something like this?

What I do see that I could do using the EOEnterpriseObjectClazz approach is 
implement the “class” method in the superclass of all my EOs with perhaps a 
default implementation that returns null. Then on my entities participating in 
workflow, they could override that method to return useful information. But now 
*all* of my classes have that default implementation, so it’s not really a 
clean workaround….

Thanks again!
Mark

From: Johann Werner mailto:johann.wer...@posteo.de>>
Date: Tuesday, November 20, 2018 at 3:39 AM
To: "Morris, Mark" mailto:mark.mor...@experian.com>>
Cc: "Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>" 
mailto:Webobjects-dev@lists.apple.com>>
Subject: Re: EOEnterpriseObjectClazz with interface

Hi Mark,

I think you have to tell us what exactly you want to achieve? Do you have an 
example?

With the EOEnterpriseObjectClazz you have a static instance within your class 
but this 

Re: EOEnterpriseObjectClazz with interface

2018-11-20 Thread Morris, Mark
Hi Johann,

Sure! Here’s a hypothetical.

Let’s say I have a WorkflowRoutable interface that defines a few instance 
methods. Now I can implement that interface on EOs that need to participate in 
workflow, and call those methods in my workflow processing without any trouble. 
Now let’s say there’s some useful information used when configuring workflow 
queues to be able to handle a particular entity, but I may not have any 
instances at that point. I would want to define a class method as part of my 
WorkflowRoutable interface, so that I can safely call that method to get that 
entity-specific workflow information.

Again, no problem in ObjC. But static methods can’t be in Java interfaces (at 
least in that way). Can the Clazz approach help with something like this?

What I do see that I could do using the EOEnterpriseObjectClazz approach is 
implement the “class” method in the superclass of all my EOs with perhaps a 
default implementation that returns null. Then on my entities participating in 
workflow, they could override that method to return useful information. But now 
*all* of my classes have that default implementation, so it’s not really a 
clean workaround….

Thanks again!
Mark

From: Johann Werner 
Date: Tuesday, November 20, 2018 at 3:39 AM
To: "Morris, Mark" 
Cc: "Webobjects-dev@lists.apple.com" 
Subject: Re: EOEnterpriseObjectClazz with interface

Hi Mark,

I think you have to tell us what exactly you want to achieve? Do you have an 
example?

With the EOEnterpriseObjectClazz you have a static instance within your class 
but this instance is… an instance so you could put an „implements interface“ on 
it. Or if you just want to know if class A has a static clazz object you could 
create some empty interface (IHasClazzObject) as marker.

jw


Am 19.11.2018 um 22:12 schrieb Morris, Mark 
mailto:mark.mor...@experian.com>>:

Hallo Johann,

Thanks for the info. I do see how I could create a default implementation of 
the “static” method I’m expecting in our local EO superclass’s util inner 
class, and from then on know that it will be legal to call it from any of our 
subclasses. So that could work in this case.

In general though I still don’t see how, or if it’s even possible, to do what I 
was originally trying with the interface. For instance methods, I can just test 
“myClass instanceof myInterface” and know whether that class implements the 
methods. In ObjC, I could do the same with a protocol, but with instance and 
class methods. It seems like the description of the clazz paradigm is saying it 
makes that possible, but I’m just not understanding how that works.

Thanks again. Tschüß!
Mark

From: Johann Werner mailto:johann.wer...@posteo.de>>
Date: Monday, November 19, 2018 at 1:37 AM
To: "Morris, Mark" mailto:mark.mor...@experian.com>>
Cc: "Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>" 
mailto:Webobjects-dev@lists.apple.com>>
Subject: Re: EOEnterpriseObjectClazz with interface

Hi Mark,

have a look at BugTracker and its dependent framework BTBusinessLogic. That 
should you give some ideas. There are some more apps/frameworks in Wonder using 
that pattern, just have a look at the type hierarchy of the 
EOEnterpriseObjectClazz class (in Eclipse right click on the class name and 
select „Open Type Hierarchy“ from the context menu).

jw


Am 19.11.2018 um 06:31 schrieb Morris, Mark 
mailto:mark.mor...@experian.com>>:

Hi all,

I ran into a simple case where a good old ObjC protocol would have worked fine, 
but Java provides only frustration. 

I wanted to require that a class that decides to implement a particular 
interface should as part of that interface implement a certain static method. 
No go in Java.

The implementing classes will always be subclasses of ERXGenericRecord, and a 
little searching uncovered the promising EOEnterpriseObjectsClazz approach. 
Right at the top it says:

In Java, static methods are similar to class methods in Objective-C, but one 
cannot use static methods in interfaces and static methods cannot be overridden 
by a subclass. Using the clazz pattern removes those limitations.

However, I didn’t see any examples of this use, and spent a little time but 
couldn’t figure it out. Are there any examples out there?

Thanks!
Mark

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: EOEnterpriseObjectClazz with interface

2018-11-19 Thread Morris, Mark
Hallo Johann,

Thanks for the info. I do see how I could create a default implementation of 
the “static” method I’m expecting in our local EO superclass’s util inner 
class, and from then on know that it will be legal to call it from any of our 
subclasses. So that could work in this case.

In general though I still don’t see how, or if it’s even possible, to do what I 
was originally trying with the interface. For instance methods, I can just test 
“myClass instanceof myInterface” and know whether that class implements the 
methods. In ObjC, I could do the same with a protocol, but with instance and 
class methods. It seems like the description of the clazz paradigm is saying it 
makes that possible, but I’m just not understanding how that works.

Thanks again. Tschüß!
Mark

From: Johann Werner 
Date: Monday, November 19, 2018 at 1:37 AM
To: "Morris, Mark" 
Cc: "Webobjects-dev@lists.apple.com" 
Subject: Re: EOEnterpriseObjectClazz with interface

Hi Mark,

have a look at BugTracker and its dependent framework BTBusinessLogic. That 
should you give some ideas. There are some more apps/frameworks in Wonder using 
that pattern, just have a look at the type hierarchy of the 
EOEnterpriseObjectClazz class (in Eclipse right click on the class name and 
select „Open Type Hierarchy“ from the context menu).

jw


Am 19.11.2018 um 06:31 schrieb Morris, Mark 
mailto:mark.mor...@experian.com>>:

Hi all,

I ran into a simple case where a good old ObjC protocol would have worked fine, 
but Java provides only frustration. 

I wanted to require that a class that decides to implement a particular 
interface should as part of that interface implement a certain static method. 
No go in Java.

The implementing classes will always be subclasses of ERXGenericRecord, and a 
little searching uncovered the promising EOEnterpriseObjectsClazz approach. 
Right at the top it says:

In Java, static methods are similar to class methods in Objective-C, but one 
cannot use static methods in interfaces and static methods cannot be overridden 
by a subclass. Using the clazz pattern removes those limitations.

However, I didn’t see any examples of this use, and spent a little time but 
couldn’t figure it out. Are there any examples out there?

Thanks!
Mark



 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


EOEnterpriseObjectClazz with interface

2018-11-18 Thread Morris, Mark
Hi all,

I ran into a simple case where a good old ObjC protocol would have worked fine, 
but Java provides only frustration. 

I wanted to require that a class that decides to implement a particular 
interface should as part of that interface implement a certain static method. 
No go in Java.

The implementing classes will always be subclasses of ERXGenericRecord, and a 
little searching uncovered the promising EOEnterpriseObjectsClazz approach. 
Right at the top it says:

In Java, static methods are similar to class methods in Objective-C, but one 
cannot use static methods in interfaces and static methods cannot be overridden 
by a subclass. Using the clazz pattern removes those limitations.

However, I didn’t see any examples of this use, and spent a little time but 
couldn’t figure it out. Are there any examples out there?

Thanks!
Mark
 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Tip: Touch bar with Eclipse

2018-10-01 Thread Morris, Mark
All,

Discovered this when I got my new laptop, and thought it others might find it 
useful.

I want function keys, without having to press the fn modifier key, when I’m in 
Eclipse (mainly for debugging; F5 = step into, F6 = step over, etc.). It turns 
out that’s easy to configure.

Go to System Preferences -> Keyboard -> Shortcuts -> Function Keys, click the 
plus button, then select the Eclipse app. Now when you’re in Eclipse, the 
function keys are the default, and pressing the fn key brings up the volume, 
brightness, etc., controls.

— Mark
 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: EOF bug?

2018-08-13 Thread Morris, Mark
Hi Samuel,

Thanks so much for the file!

Hopefully this doesn’t come across as pedantic, but I partially disagree with 
your statement below. You should feel safe to reimplement basic functionality, 
at least with Apple’s frameworks. Just for example, perhaps you would want to 
subclass NSArray to implement a HighPerformanceArray, where maybe it switches 
to a sparse array implementation when appropriate and/or does some sort of 
Huffman encoding if the array gets above a certain size. The theory is that 
don’t need to reimplement every method in NSArray, just the base methods that 
access the fields directly. That’s what the list in the documentation is 
supposed to tell you, and it’s not supposed to be a risky proposition.

Given that, though, they clearly messed up here. ;-)

Thank you again, and take care!

Regards,
Mark


From: Samuel Pelletier 
Date: Monday, August 13, 2018 at 2:27 PM
To: "Morris, Mark" 
Cc: "webobjects-dev@lists.apple.com" 
Subject: Re: EOF bug?

Mark,

objectsNoCopy() is declared in NSArray so all subclasses should have a working 
implementation.

It is very risky to subclass and try to reimplement the basic functionality,you 
need to make sure the subclass conform to all the superclass behaviour past, 
present and future...  Interface are there for multiple implementations 
abstraction.

I attached my version of the java source to put in ERExtension in the 
cone.webobjects.eoaccess package.

Regards,

Samuel



Le 13 août 2018 à 13:51, Morris, Mark 
mailto:mark.mor...@experian.com>> a écrit :

Just a little more info I discovered.

This appears to have hit a subtle implementation problem with NSMutableArray. 
Its implementation of addObjectsFromArray() uses a protected method, 
objectsNoCopy(), on the *argument* array, not on *this* array. That seems to me 
to break the contract of “protected”. The argument array could be a different 
subclass, with a different implementation, and, based on the documentation, 
might not even implement objectsNoCopy().

So even if the writers of _EOExpressionArray had reimplemented NSMutableArray 
as required by the documentation (which they didn’t), this bug would have still 
surfaced due to the architecture issue in NSMutableArray’s implementation.

-- Mark

From: Webobjects-dev 
mailto:webobjects-dev-bounces+mark.morris=experian@lists.apple.com>>
 on behalf of "Morris, Mark" 
mailto:mark.mor...@experian.com>>
Date: Monday, August 13, 2018 at 12:30 PM
To: Samuel Pelletier mailto:sam...@samkar.com>>
Cc: "webobjects-dev@lists.apple.com<mailto:webobjects-dev@lists.apple.com>" 
mailto:webobjects-dev@lists.apple.com>>
Subject: Re: EOF bug?

Hi Samuel,

Yes, I considered suggesting the route of removing _array, but I was concerned 
that they went that way for a reason, although I can’t imagine what that would 
be. Like you said, it seems like a very odd choice.

Yes, we compile our Wonder frameworks, so the file would be great. Thanks for 
looking into this!

Regards,
Mark


From: Samuel Pelletier mailto:sam...@samkar.com>>
Date: Monday, August 13, 2018 at 12:09 PM
To: "Morris, Mark" mailto:mark.mor...@experian.com>>
Cc: "webobjects-dev@lists.apple.com<mailto:webobjects-dev@lists.apple.com>" 
mailto:webobjects-dev@lists.apple.com>>
Subject: Re: EOF bug?

Mark,

OK, I see, _EOExpressionArray is a very bad exemple of inheritance... 
pretending to be a NSMutableArray but in fact using a NSMutableArray and 
implement some parts of it.

I do not see an easy way to patch this except by adding another fixed 
reimplemented class in ERExtensions.

I reimplemented it by removing the _array member and adjusting the Clone 
method. Just adding the objectsNoCopy() will not solve other NSMutableArray 
method mis behaviours.

Either the class is really a NSMutableArray or should not extend it and only 
the implemented methods will exists. With the current situation where we do not 
compile the WO frameworks, I think adjusting the hierarchy is not possible.

Here is my Clone method. All references to _array including methods that only 
forwarded the call are removed.

public Object clone()
{
_EOExpressionArray aCopy = new _EOExpressionArray(_prefix, _infix, _suffix);
aCopy.addObjectsFromArray(this);
return aCopy;
}

Do you compile your wonder frameworks ? If you do, I will send you the java 
file or you can create it yourself.

Regards,

Samuel



Le 13 août 2018 à 10:23, Morris, Mark 
mailto:mark.mor...@experian.com>> a écrit :

Hi Samuel,

Thanks for the response!

Sorry, it was a long night. The problem does indeed occur when objectsNoCopy() 
returns null, even though there are objects in the EOExpressionArray. However, 
the method directly in EOAttribute is actually addObjectsFromArray(), which 
calls objectsNoCopy() in its implementation.

Regards,
Mark

From: Samuel Pelletier mailto:sam...@samkar.com>>
Date: Monday, Augus

Re: EOF bug?

2018-08-13 Thread Morris, Mark
Just a little more info I discovered.

This appears to have hit a subtle implementation problem with NSMutableArray. 
Its implementation of addObjectsFromArray() uses a protected method, 
objectsNoCopy(), on the *argument* array, not on *this* array. That seems to me 
to break the contract of “protected”. The argument array could be a different 
subclass, with a different implementation, and, based on the documentation, 
might not even implement objectsNoCopy().

So even if the writers of _EOExpressionArray had reimplemented NSMutableArray 
as required by the documentation (which they didn’t), this bug would have still 
surfaced due to the architecture issue in NSMutableArray’s implementation.

-- Mark

From: Webobjects-dev 
 on behalf of 
"Morris, Mark" 
Date: Monday, August 13, 2018 at 12:30 PM
To: Samuel Pelletier 
Cc: "webobjects-dev@lists.apple.com" 
Subject: Re: EOF bug?

Hi Samuel,

Yes, I considered suggesting the route of removing _array, but I was concerned 
that they went that way for a reason, although I can’t imagine what that would 
be. Like you said, it seems like a very odd choice.

Yes, we compile our Wonder frameworks, so the file would be great. Thanks for 
looking into this!

Regards,
Mark


From: Samuel Pelletier 
Date: Monday, August 13, 2018 at 12:09 PM
To: "Morris, Mark" 
Cc: "webobjects-dev@lists.apple.com" 
Subject: Re: EOF bug?

Mark,

OK, I see, _EOExpressionArray is a very bad exemple of inheritance... 
pretending to be a NSMutableArray but in fact using a NSMutableArray and 
implement some parts of it.

I do not see an easy way to patch this except by adding another fixed 
reimplemented class in ERExtensions.

I reimplemented it by removing the _array member and adjusting the Clone 
method. Just adding the objectsNoCopy() will not solve other NSMutableArray 
method mis behaviours.

Either the class is really a NSMutableArray or should not extend it and only 
the implemented methods will exists. With the current situation where we do not 
compile the WO frameworks, I think adjusting the hierarchy is not possible.

Here is my Clone method. All references to _array including methods that only 
forwarded the call are removed.

public Object clone()
{
_EOExpressionArray aCopy = new _EOExpressionArray(_prefix, _infix, _suffix);
aCopy.addObjectsFromArray(this);
return aCopy;
}

Do you compile your wonder frameworks ? If you do, I will send you the java 
file or you can create it yourself.

Regards,

Samuel




Le 13 août 2018 à 10:23, Morris, Mark 
mailto:mark.mor...@experian.com>> a écrit :

Hi Samuel,

Thanks for the response!

Sorry, it was a long night. The problem does indeed occur when objectsNoCopy() 
returns null, even though there are objects in the EOExpressionArray. However, 
the method directly in EOAttribute is actually addObjectsFromArray(), which 
calls objectsNoCopy() in its implementation.

Regards,
Mark

From: Samuel Pelletier mailto:sam...@samkar.com>>
Date: Monday, August 13, 2018 at 6:31 AM
To: "Morris, Mark" mailto:mark.mor...@experian.com>>
Cc: "webobjects-dev@lists.apple.com<mailto:webobjects-dev@lists.apple.com>" 
mailto:webobjects-dev@lists.apple.com>>
Subject: Re: EOF bug?

Hi Mark,

I checked my version of EOAttribute and was unable find call to objectsNoCopy() 
in the code. I checked the WO and ERAttributeExtension versions of the class.

Are you on an older version of WO ?

Samuel





Le 13 août 2018 à 05:32, Morris, Mark 
mailto:mark.mor...@experian.com>> a écrit :

Hi all,

After much time and effort, I’ve traced a problem in my code to what appears to 
be a bug in EOF’s _EOExpressionArray.

Let me state first that we’re way behind in our Wonder version, so it’s 
possible that Wonder has fixed this already, but a quick search didn’t find it. 
(We’re planning to catch up to current in the next few months.)

The problem seems to stem from the fact that _EOExpressionArray extends 
NSMutableArray, but it doesn’t reimplement objectsNoCopy(). This is a problem, 
because _EOExpressionArray uses it’s own internal array, not the superclass’s. 
There’s a critical point in EOAttribute._normalizeDefinitionPath() where 
objectsNoCopy() is called but returns null, even though the _EOExpressionArray 
has elements, because it’s referencing the superclass array instead of the one 
local to _EOExpressionArray.

Has anyone seen this? Has it been patched? Thanks!

Regards,
Mark
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_webobjects-2Ddev_samuel-2540samkar.com=DwMFaQ=BNNF-

Re: EOF bug?

2018-08-13 Thread Morris, Mark
Hi Samuel,

Yes, I considered suggesting the route of removing _array, but I was concerned 
that they went that way for a reason, although I can’t imagine what that would 
be. Like you said, it seems like a very odd choice.

Yes, we compile our Wonder frameworks, so the file would be great. Thanks for 
looking into this!

Regards,
Mark


From: Samuel Pelletier 
Date: Monday, August 13, 2018 at 12:09 PM
To: "Morris, Mark" 
Cc: "webobjects-dev@lists.apple.com" 
Subject: Re: EOF bug?

Mark,

OK, I see, _EOExpressionArray is a very bad exemple of inheritance... 
pretending to be a NSMutableArray but in fact using a NSMutableArray and 
implement some parts of it.

I do not see an easy way to patch this except by adding another fixed 
reimplemented class in ERExtensions.

I reimplemented it by removing the _array member and adjusting the Clone 
method. Just adding the objectsNoCopy() will not solve other NSMutableArray 
method mis behaviours.

Either the class is really a NSMutableArray or should not extend it and only 
the implemented methods will exists. With the current situation where we do not 
compile the WO frameworks, I think adjusting the hierarchy is not possible.

Here is my Clone method. All references to _array including methods that only 
forwarded the call are removed.

public Object clone()
{
_EOExpressionArray aCopy = new _EOExpressionArray(_prefix, _infix, _suffix);
aCopy.addObjectsFromArray(this);
return aCopy;
}

Do you compile your wonder frameworks ? If you do, I will send you the java 
file or you can create it yourself.

Regards,

Samuel



Le 13 août 2018 à 10:23, Morris, Mark 
mailto:mark.mor...@experian.com>> a écrit :

Hi Samuel,

Thanks for the response!

Sorry, it was a long night. The problem does indeed occur when objectsNoCopy() 
returns null, even though there are objects in the EOExpressionArray. However, 
the method directly in EOAttribute is actually addObjectsFromArray(), which 
calls objectsNoCopy() in its implementation.

Regards,
Mark

From: Samuel Pelletier mailto:sam...@samkar.com>>
Date: Monday, August 13, 2018 at 6:31 AM
To: "Morris, Mark" mailto:mark.mor...@experian.com>>
Cc: "webobjects-dev@lists.apple.com<mailto:webobjects-dev@lists.apple.com>" 
mailto:webobjects-dev@lists.apple.com>>
Subject: Re: EOF bug?

Hi Mark,

I checked my version of EOAttribute and was unable find call to objectsNoCopy() 
in the code. I checked the WO and ERAttributeExtension versions of the class.

Are you on an older version of WO ?

Samuel




Le 13 août 2018 à 05:32, Morris, Mark 
mailto:mark.mor...@experian.com>> a écrit :

Hi all,

After much time and effort, I’ve traced a problem in my code to what appears to 
be a bug in EOF’s _EOExpressionArray.

Let me state first that we’re way behind in our Wonder version, so it’s 
possible that Wonder has fixed this already, but a quick search didn’t find it. 
(We’re planning to catch up to current in the next few months.)

The problem seems to stem from the fact that _EOExpressionArray extends 
NSMutableArray, but it doesn’t reimplement objectsNoCopy(). This is a problem, 
because _EOExpressionArray uses it’s own internal array, not the superclass’s. 
There’s a critical point in EOAttribute._normalizeDefinitionPath() where 
objectsNoCopy() is called but returns null, even though the _EOExpressionArray 
has elements, because it’s referencing the superclass array instead of the one 
local to _EOExpressionArray.

Has anyone seen this? Has it been patched? Thanks!

Regards,
Mark
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_webobjects-2Ddev_samuel-2540samkar.com=DwMFaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=AdvAfKTkUyccvBpaKhr9GvlfY3653NxMU8J5XO6ue2A=yDB_Rzh491N9j7il8RMpWcTkZo6Q_-nHy8gitXhx_28=>

This email sent to sam...@samkar.com<mailto:sam...@samkar.com>

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: EOF bug?

2018-08-13 Thread Morris, Mark
If it’s true that Wonder hasn’t patched _EOExpressionArray, I guess the 
simplest solution would be to add an implementation of objectsNoCopy() there. 
It looks like it might be as simple as:


   protected Object[] objectsNoCopy() {

  return _array.objectsNoCopy();

   }

-- Mark

From: Webobjects-dev 
 on behalf of 
"Morris, Mark" 
Date: Monday, August 13, 2018 at 9:24 AM
To: Samuel Pelletier 
Cc: "webobjects-dev@lists.apple.com" 
Subject: Re: EOF bug?

Hi Samuel,

Thanks for the response!

Sorry, it was a long night. The problem does indeed occur when objectsNoCopy() 
returns null, even though there are objects in the EOExpressionArray. However, 
the method directly in EOAttribute is actually addObjectsFromArray(), which 
calls objectsNoCopy() in its implementation.

Regards,
Mark

From: Samuel Pelletier 
Date: Monday, August 13, 2018 at 6:31 AM
To: "Morris, Mark" 
Cc: "webobjects-dev@lists.apple.com" 
Subject: Re: EOF bug?

Hi Mark,

I checked my version of EOAttribute and was unable find call to objectsNoCopy() 
in the code. I checked the WO and ERAttributeExtension versions of the class.

Are you on an older version of WO ?

Samuel




Le 13 août 2018 à 05:32, Morris, Mark 
mailto:mark.mor...@experian.com>> a écrit :

Hi all,

After much time and effort, I’ve traced a problem in my code to what appears to 
be a bug in EOF’s _EOExpressionArray.

Let me state first that we’re way behind in our Wonder version, so it’s 
possible that Wonder has fixed this already, but a quick search didn’t find it. 
(We’re planning to catch up to current in the next few months.)

The problem seems to stem from the fact that _EOExpressionArray extends 
NSMutableArray, but it doesn’t reimplement objectsNoCopy(). This is a problem, 
because _EOExpressionArray uses it’s own internal array, not the superclass’s. 
There’s a critical point in EOAttribute._normalizeDefinitionPath() where 
objectsNoCopy() is called but returns null, even though the _EOExpressionArray 
has elements, because it’s referencing the superclass array instead of the one 
local to _EOExpressionArray.

Has anyone seen this? Has it been patched? Thanks!

Regards,
Mark
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_webobjects-2Ddev_samuel-2540samkar.com=DwMFaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=AdvAfKTkUyccvBpaKhr9GvlfY3653NxMU8J5XO6ue2A=yDB_Rzh491N9j7il8RMpWcTkZo6Q_-nHy8gitXhx_28=>

This email sent to sam...@samkar.com<mailto:sam...@samkar.com>

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: EOF bug?

2018-08-13 Thread Morris, Mark
Hi Samuel,

Thanks for the response!

Sorry, it was a long night. The problem does indeed occur when objectsNoCopy() 
returns null, even though there are objects in the EOExpressionArray. However, 
the method directly in EOAttribute is actually addObjectsFromArray(), which 
calls objectsNoCopy() in its implementation.

Regards,
Mark

From: Samuel Pelletier 
Date: Monday, August 13, 2018 at 6:31 AM
To: "Morris, Mark" 
Cc: "webobjects-dev@lists.apple.com" 
Subject: Re: EOF bug?

Hi Mark,

I checked my version of EOAttribute and was unable find call to objectsNoCopy() 
in the code. I checked the WO and ERAttributeExtension versions of the class.

Are you on an older version of WO ?

Samuel



Le 13 août 2018 à 05:32, Morris, Mark 
mailto:mark.mor...@experian.com>> a écrit :

Hi all,

After much time and effort, I’ve traced a problem in my code to what appears to 
be a bug in EOF’s _EOExpressionArray.

Let me state first that we’re way behind in our Wonder version, so it’s 
possible that Wonder has fixed this already, but a quick search didn’t find it. 
(We’re planning to catch up to current in the next few months.)

The problem seems to stem from the fact that _EOExpressionArray extends 
NSMutableArray, but it doesn’t reimplement objectsNoCopy(). This is a problem, 
because _EOExpressionArray uses it’s own internal array, not the superclass’s. 
There’s a critical point in EOAttribute._normalizeDefinitionPath() where 
objectsNoCopy() is called but returns null, even though the _EOExpressionArray 
has elements, because it’s referencing the superclass array instead of the one 
local to _EOExpressionArray.

Has anyone seen this? Has it been patched? Thanks!

Regards,
Mark
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_webobjects-2Ddev_samuel-2540samkar.com=DwMFaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=AdvAfKTkUyccvBpaKhr9GvlfY3653NxMU8J5XO6ue2A=yDB_Rzh491N9j7il8RMpWcTkZo6Q_-nHy8gitXhx_28=>

This email sent to sam...@samkar.com<mailto:sam...@samkar.com>

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


EOF bug?

2018-08-13 Thread Morris, Mark
Hi all,

After much time and effort, I’ve traced a problem in my code to what appears to 
be a bug in EOF’s _EOExpressionArray.

Let me state first that we’re way behind in our Wonder version, so it’s 
possible that Wonder has fixed this already, but a quick search didn’t find it. 
(We’re planning to catch up to current in the next few months.)

The problem seems to stem from the fact that _EOExpressionArray extends 
NSMutableArray, but it doesn’t reimplement objectsNoCopy(). This is a problem, 
because _EOExpressionArray uses it’s own internal array, not the superclass’s. 
There’s a critical point in EOAttribute._normalizeDefinitionPath() where 
objectsNoCopy() is called but returns null, even though the _EOExpressionArray 
has elements, because it’s referencing the superclass array instead of the one 
local to _EOExpressionArray.

Has anyone seen this? Has it been patched? Thanks!

Regards,
Mark
 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Java 10? Anyone?

2018-07-30 Thread Morris, Mark
We've also tried Eclipse Photon with Sierra / High Sierra with no issues. And 
we would also be interested in hearing about anyone's Java 10 (or Java 11 early 
access) experiences.

Thanks!
Mark

On 7/29/18, 3:07 PM, "Webobjects-dev on behalf of Michael Kondratov" 
 wrote:

We are using Eclipse Proton without issues.

MIchael

> On Jul 29, 2018, at 11:02 AM, Markus Ruggiero  
wrote:
> 
> Does anyone already have experience with the latest Java 10 / Wonder 7? 
Does WOLips support the new Eclipse Photon? I am talking Sierra/HighSierra.
> 
> Thanks for a quick thumbs up/down
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> 
https://lists.apple.com/mailman/options/webobjects-dev/michael%40aspireauctions.com
> 
> This email sent to mich...@aspireauctions.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:

https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: ERXBatchingDisplayGroup question

2017-10-12 Thread Morris, Mark
Hi Aaron,

Thanks, that makes perfect sense. I do think our apps might be overusing 
ERXBatchingDisplayGroup a bit. ;-)

Regards,
Mark

On Oct 12, 2017, at 8:17 AM, Aaron Rosenzweig 
<aa...@chatnbike.com<mailto:aa...@chatnbike.com>> wrote:

Hello Mark,

Your question is sound, thanks for asking it.

All display groups “batch” - in that they allow you to show perhaps 10 objects 
at a time and maintain “forward” and “previous” page views.

I maintain that “ERXBatchingDisplayGroup” is poorly named and for your purposes 
you should switch to “ERXDisplayGroup”

You see… the average display group fetches all objects into memory. If this is 
5,000 records, no big deal. If this is a million records, might start to suck. 
Regardless… the average display group fetches all objects but then shows a 
handful at a time.

An “ERXBatchingDisplayGroup” is not an average display group. It is hiding a 
“top n query”

You would use this “non average” display group when you want to give the feel 
of random access to a rather large result set. You would do this because even 
though it may represent 10 million records it only fetches about 100 of them at 
any given time and then displays perhaps ten of them on the page. It is very 
good with memory but you don’t have all the objects at your fingertips.

Cheers,
Aaron Rosenzweig / Chat 'n 
Bike<https://urldefense.proofpoint.com/v2/url?u=http-3A__www.chatnbike.com=DwMFaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=7cQWys-p8TkX1tVJs5krosq_zf43j4SKf9JJeXq6KDI=usWZAX9T7RMIXJaa0puxwRPl5R2kOIwzF1e9yZ5GYsU=>
e:  aa...@chatnbike.com<mailto:aa...@chatnbike.com>  t:  (301) 956-2319
[Chat 'n Bike]  [Chat 'n Bike]

On Oct 11, 2017, at 11:42 PM, Morris, Mark 
<mark.mor...@experian.com<mailto:mark.mor...@experian.com>> wrote:

Hi all,

From some iffy experiences with them back in the WO 3.1 days, I’ve always 
avoided display groups, using my own batching/paging logic. But now I’m having 
issues with an existing ERXBatchingDisplayGroup, and I’m not sure what’s going 
on.

displayedObjects() is working fine, and contains the records I expect. 
allObjects() however returns a FakeArray object, containing an equal number of 
NSKeyValueCoding.ErrorHandling placeholder objects as the total count I expect. 
I see some private and protected methods that look like they might force 
allObjects to update but nothing public, and I see that an EOEditingContext 
save or revert will probably also do the same. However, I don’t see how to just 
ask an ERXBatchingDisplayGroup for all of its objects, without changing the ec.

Perhaps given the batching nature I shouldn’t be doing this, and instead I 
should just go back to the dg’s data source? Any thoughts or advice is welcome!

Regards,
Mark

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/aaron%40chatnbike.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_webobjects-2Ddev_aaron-2540chatnbike.com=DwMFaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=7cQWys-p8TkX1tVJs5krosq_zf43j4SKf9JJeXq6KDI=WjYqs5joCvaXXCrk4NYsDqKfIRmRQ7udrbrY5COlT0Y=>

This email sent to aa...@chatnbike.com<mailto:aa...@chatnbike.com>


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


ERXBatchingDisplayGroup question

2017-10-11 Thread Morris, Mark
Hi all,

From some iffy experiences with them back in the WO 3.1 days, I’ve always 
avoided display groups, using my own batching/paging logic. But now I’m having 
issues with an existing ERXBatchingDisplayGroup, and I’m not sure what’s going 
on.

displayedObjects() is working fine, and contains the records I expect. 
allObjects() however returns a FakeArray object, containing an equal number of 
NSKeyValueCoding.ErrorHandling placeholder objects as the total count I expect. 
I see some private and protected methods that look like they might force 
allObjects to update but nothing public, and I see that an EOEditingContext 
save or revert will probably also do the same. However, I don’t see how to just 
ask an ERXBatchingDisplayGroup for all of its objects, without changing the ec.

Perhaps given the batching nature I shouldn’t be doing this, and instead I 
should just go back to the dg’s data source? Any thoughts or advice is welcome!

Regards,
Mark

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Display database content on a page

2017-10-07 Thread Morris, Mark
+1

— Mark

On Oct 7, 2017, at 9:14 AM, Markus Ruggiero 
> wrote:

Andre,

please take this seriously

Chick Hill wrote:

And it will also show you the correct and effective way to leverage WO and 
Wonder.  The architecture is quite different from most other frameworks and if 
you don’t make the adjustment to that, you will be forever struggling against 
the intention of the frameworks.

One important thing to note (and this seems to be a major stumbling block for 
all non-WOers): We are programming objectoriented, we are not programming SQL / 
database stuff!!

When you think "OO" you think "object". An object encapsulates state and shows 
behavior. When you start to learn oo-programming you usually have instance 
variables and methods. The object's state is kept in the instance vars and the 
behavior is defined by the methods. It is good and strongly recommended style 
to make instance variables private (or maybe proteced) and create public 
accessors (getter and setter methods). One should never access an object's 
state directly (instance variables) from outside the object but access them 
through the getter and setter methods. This allows the object (actually the 
programmer writing the class) to re-implement the internal representation of 
state in any way that makes sense. Any piece of code using the getter/setter 
methods won't be affected by that.

The EOF allows you to implement objects in a way so that their internal state 
is not kept in instance variables but is connected to a database record. 
Correct oo-thinking says "I access the object's state via accessor methods. I 
don't care where/how the object manages to store that state". Your enterprise 
objects are based on classes that inherit from framework classes. There is 
functionality in those classes to pull/push state to/from a relational 
database. You as the "user" of the object DO NOT CARE! The EOF framework 
manages this for you.

You MUST NOT THINK "database/table/record" but THINK "OBJECT".

Instead of asking "how do I retrieve customer records from the database?" you 
should think "how do I make the framework give me a list of customer objects 
that have their state backed by a record in the database?". With this in mind 
EOF becomes almost trivial to use. Any programmer coming from "standard java" 
background has a problem with this thinking because most persistence frameworks 
are more or less nicely built "sql generators". Thus one's thinking is often 
closer to "data record" instead of "object". Not so with Wonder and EOF. Just 
think "object" and you are all set.

With the EOModel you basically tell the EOF framework how to "map object 
thinking into a relational database". Let the framework do it, you are an 
oo-programmer!

Hope this clears things a bit.

Have fun
---markus---


On 6 Oct 2017, at 16:38, André Rothe 
> wrote:

Hi Markus,

I'm on part C of the book...

Best regards
Andre

On 06.10.2017 15:51, Markus Ruggiero wrote:
Hi Andre,

I am the author of Learning the Wonders. If you have any question
regarding the book you can reach me here or directly by writing to
aut...@learningthewonders.com 
.
I'll be glad to help you get started.

---markus---

PS
Chuck and Theo, thanks for the recommendation :-)))
Yes, I use the book as official coursebook in formal education in
Switzerland for the module "Object Oriented implementation of Multiuser
Applications". This in itself has nothing to do with Wonder but
everything with oo-concepts and I use Wonder/WebObjecs as a showcase for
clean oo design.


On 5 Oct 2017, at 23:12, Theodore Petrosky 

> wrote:

"Learning the Wonders" is the best book to start with. The author uses
that book in classes he teaches (I believe in Germany).

I would recommend that book to start with over the others that are
available.

All of the videos are available in the iTunes podcasts. I know the
other links sometimes don’t work.

Use the iTunes podcasts. go to podcasts, then select Store, then
search for WebObjects.

I know you mentioned that you viewed the two chapters of Leaning the
Wonders. It really gets going after that.

Ted



On Oct 5, 2017, at 3:31 PM, Chuck Hill 

> wrote:

Here is a good place to start:

https://www.amazon.com/Learning-Wonders-Markus-Ruggiero-ebook/dp/B00FCDHDAA
http://learningthewonders.com


Chuck

On 2017-10-05, 12:25 PM, 

Re: WOOgnl, redux

2017-08-13 Thread Morris, Mark
To expand on that a bit, which fields are editable for each permission level is 
defined in the code of a superclass for each area, so not quite that flexible, 
but good enough for what we are doing.

> On Aug 13, 2017, at 6:11 PM, Morris, Mark <mark.mor...@experian.com> wrote:
> 
> No, it’s really just something bolted on top of a permission system on a 
> suite of applications that have been in continuous development for almost 20 
> years. In other words, not an ideal architecture at this point, but I think 
> impressive that it’s holding its own!
> 
>> On Aug 13, 2017, at 6:02 PM, Paul Yu <p...@mac.com> wrote:
>> 
>> Is this an ABAC implementation?
>> 
>> Paul
>> 
>> Sent from my iPhone
>> Please excuse iOS autocomplete 
>> 
>>> On Aug 13, 2017, at 5:08 PM, Morris, Mark <mark.mor...@experian.com> wrote:
>>> 
>>> This is a topic that was discussed back in 2011, but my searches haven’t 
>>> turned up a satisfactory solution.
>>> 
>>> Some quick background info, we have information-dense, complex pages, and 
>>> there are a variety of permission levels for internal and external users 
>>> that needed to be implemented at field-level granularity.
>>> 
>>> My approach was to create a method for determining edit-ability in the 
>>> superclass for each area’s components that maps permission level with field 
>>> name:
>>> 
>>>  public boolean editingEnabledByField( String field )
>>> 
>>> … which I’m calling using WOOgnl in WOConditionals as the condition and in 
>>> custom components like this:
>>> 
>>> >> editingEnabled="~editingEnabledByField(\”thisFieldName\")" expanded="$true" 
>>> />
>>> 
>>> This actually works fine as far as the functionality goes. The issue is our 
>>> logs get filled with warnings that look like error messages, one for every 
>>> field for every page hit. Since the bindings on these pages are 
>>> synchronized, the log messages apparently occur when the value of 
>>> “editingEnabled” tries to get pushed into 
>>> “editingEnabledByField(”thisFieldName”)”, which obviously isn’t possible. 
>>> (So getting the value from the ognl expression works fine, setting to the 
>>> ognl expression does not.)
>>> 
>>> In 2011 Mike Schrag wrote about almost this exact same question:
>>> 
>>>> this seems wrong to me ... it's not the ognl is intrinsically unsettable 
>>>> it's that you're trying to set a value on an ognl expression that 
>>>> definitely ISN'T settable. either you should turn off automatic binding 
>>>> synchronization on SelectByCharacterPopupEditField and manually sync, or 
>>>> this patch should maybe be smarter about how it determines "setability" in 
>>>> ognl. i would be afraid of breaking anyone who might be taking advantage 
>>>> of settable ognl expressions. i don't, offhand, know how to perform that 
>>>> check -- whether ognl has API to do it or if it's even possible.
>>> 
>>> The patch he was referring to was:
>>> 
>>>   public WOOgnlAssociation(String s) {
>>>   super(s);
>>>   _isValueSettable = false;
>>>   }
>>> 
>>> … which is a sledgehammer approach that probably wouldn’t be applicable in 
>>> general. However, picking up from where Stefan left off there, perhaps this 
>>> is at least a partial solution (that I think will work for my case anyway):
>>> 
>>>  public WOOgnlAssociation(String s) {
>>>  super(s);
>>>  if( s != null && s.matches( ".+\\(.*\\S.*\\)" ) ) {
>>>  _isValueSettable = false;
>>>  }
>>>  }
>>> 
>>> This regex checks to see if there’s a method call with some sort of 
>>> parameter (by looking for something followed by “(“ followed by some 
>>> non-whitespace followed by “)”).
>>> 
>>> Does this seem reasonable? Any counterexamples where a matching key path 
>>> should be settable? I know that ognl expressions can include parentheses as 
>>> well, but I would think those also would not be settable, right?
>>> 
>>> Thanks for any tips or advice!
>>> 
>>> Regards,
>>> Mark
>>> ___
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/webobjects-dev/pyu%40mac.com
>>> 
>>> This email sent to p...@mac.com
> 
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
> 
> This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: WOOgnl, redux

2017-08-13 Thread Morris, Mark
No, it’s really just something bolted on top of a permission system on a suite 
of applications that have been in continuous development for almost 20 years. 
In other words, not an ideal architecture at this point, but I think impressive 
that it’s holding its own!

> On Aug 13, 2017, at 6:02 PM, Paul Yu <p...@mac.com> wrote:
> 
> Is this an ABAC implementation?
> 
> Paul
> 
> Sent from my iPhone
> Please excuse iOS autocomplete 
> 
>> On Aug 13, 2017, at 5:08 PM, Morris, Mark <mark.mor...@experian.com> wrote:
>> 
>> This is a topic that was discussed back in 2011, but my searches haven’t 
>> turned up a satisfactory solution.
>> 
>> Some quick background info, we have information-dense, complex pages, and 
>> there are a variety of permission levels for internal and external users 
>> that needed to be implemented at field-level granularity.
>> 
>> My approach was to create a method for determining edit-ability in the 
>> superclass for each area’s components that maps permission level with field 
>> name:
>> 
>>   public boolean editingEnabledByField( String field )
>> 
>> … which I’m calling using WOOgnl in WOConditionals as the condition and in 
>> custom components like this:
>> 
>>  > editingEnabled="~editingEnabledByField(\”thisFieldName\")" expanded="$true" 
>> />
>> 
>> This actually works fine as far as the functionality goes. The issue is our 
>> logs get filled with warnings that look like error messages, one for every 
>> field for every page hit. Since the bindings on these pages are 
>> synchronized, the log messages apparently occur when the value of 
>> “editingEnabled” tries to get pushed into 
>> “editingEnabledByField(”thisFieldName”)”, which obviously isn’t possible. 
>> (So getting the value from the ognl expression works fine, setting to the 
>> ognl expression does not.)
>> 
>> In 2011 Mike Schrag wrote about almost this exact same question:
>> 
>>> this seems wrong to me ... it's not the ognl is intrinsically unsettable 
>>> it's that you're trying to set a value on an ognl expression that 
>>> definitely ISN'T settable. either you should turn off automatic binding 
>>> synchronization on SelectByCharacterPopupEditField and manually sync, or 
>>> this patch should maybe be smarter about how it determines "setability" in 
>>> ognl. i would be afraid of breaking anyone who might be taking advantage of 
>>> settable ognl expressions. i don't, offhand, know how to perform that check 
>>> -- whether ognl has API to do it or if it's even possible.
>> 
>> The patch he was referring to was:
>> 
>>public WOOgnlAssociation(String s) {
>>super(s);
>>_isValueSettable = false;
>>}
>> 
>> … which is a sledgehammer approach that probably wouldn’t be applicable in 
>> general. However, picking up from where Stefan left off there, perhaps this 
>> is at least a partial solution (that I think will work for my case anyway):
>> 
>>   public WOOgnlAssociation(String s) {
>>   super(s);
>>   if( s != null && s.matches( ".+\\(.*\\S.*\\)" ) ) {
>>   _isValueSettable = false;
>>   }
>>   }
>> 
>> This regex checks to see if there’s a method call with some sort of 
>> parameter (by looking for something followed by “(“ followed by some 
>> non-whitespace followed by “)”).
>> 
>> Does this seem reasonable? Any counterexamples where a matching key path 
>> should be settable? I know that ognl expressions can include parentheses as 
>> well, but I would think those also would not be settable, right?
>> 
>> Thanks for any tips or advice!
>> 
>> Regards,
>> Mark
>> ___
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/webobjects-dev/pyu%40mac.com
>> 
>> This email sent to p...@mac.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


WOOgnl, redux

2017-08-13 Thread Morris, Mark
This is a topic that was discussed back in 2011, but my searches haven’t turned 
up a satisfactory solution.

Some quick background info, we have information-dense, complex pages, and there 
are a variety of permission levels for internal and external users that needed 
to be implemented at field-level granularity.

My approach was to create a method for determining edit-ability in the 
superclass for each area’s components that maps permission level with field 
name:

public boolean editingEnabledByField( String field )

… which I’m calling using WOOgnl in WOConditionals as the condition and in 
custom components like this:

   

This actually works fine as far as the functionality goes. The issue is our 
logs get filled with warnings that look like error messages, one for every 
field for every page hit. Since the bindings on these pages are synchronized, 
the log messages apparently occur when the value of “editingEnabled” tries to 
get pushed into “editingEnabledByField(”thisFieldName”)”, which obviously isn’t 
possible. (So getting the value from the ognl expression works fine, setting to 
the ognl expression does not.)

In 2011 Mike Schrag wrote about almost this exact same question:

> this seems wrong to me ... it's not the ognl is intrinsically unsettable it's 
> that you're trying to set a value on an ognl expression that definitely ISN'T 
> settable. either you should turn off automatic binding synchronization on 
> SelectByCharacterPopupEditField and manually sync, or this patch should maybe 
> be smarter about how it determines "setability" in ognl. i would be afraid of 
> breaking anyone who might be taking advantage of settable ognl expressions. i 
> don't, offhand, know how to perform that check -- whether ognl has API to do 
> it or if it's even possible.

The patch he was referring to was:

 public WOOgnlAssociation(String s) {
 super(s);
 _isValueSettable = false;
 }

… which is a sledgehammer approach that probably wouldn’t be applicable in 
general. However, picking up from where Stefan left off there, perhaps this is 
at least a partial solution (that I think will work for my case anyway):

public WOOgnlAssociation(String s) {
super(s);
if( s != null && s.matches( ".+\\(.*\\S.*\\)" ) ) {
_isValueSettable = false;
}
}

This regex checks to see if there’s a method call with some sort of parameter 
(by looking for something followed by “(“ followed by some non-whitespace 
followed by “)”).

Does this seem reasonable? Any counterexamples where a matching key path should 
be settable? I know that ognl expressions can include parentheses as well, but 
I would think those also would not be settable, right?

Thanks for any tips or advice!

Regards,
Mark
 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Slow requests

2017-08-10 Thread Morris, Mark
Hi Birthe,

I’m not sure if this is the best way, but it’s what first comes to mind.

You could override WOApplication’s takeValuesFromRequest or invokeAction (or 
both, using the former if available and the latter otherwise) and save the 
current time in the WOContext’s userInfo before calling super. Then in 
WOApplication’s appendToResponse, after calling super, you could log the URL, 
the elapsed time, and any other useful info you might have access to (from 
WOContext you can get to session, for instance). You could also if desired put 
a threshold on min duration to be logged, to avoid logging every request. Just 
a though.

We have something similar keeping track of long response times using 
WOSession’s awake and sleep, so that’s another avenue for session-based 
requests.

Hope this helps!

Regards,
Mark

On Aug 7, 2017, at 7:58 AM, Birthe Berland 
> wrote:

Hi,

From time to time we experience requests that take too long time. From the 
Apache log we can see the url causing the problem. Is there a way to find out 
which component/action it corresponds to?  We have trouble locating the action 
from the dot notification.

Med venlig hilsen

Birthe Berland
Complimenta
Tel.: 8830 7600




___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: GCPieChart

2017-06-15 Thread Morris, Mark
This is probably just as ancient as GoogleCharts, but for server-side 
generation I thought JFreeChart () was pretty 
cool. The factory classes make it really easy to generate (and customize) an 
amazing variety of charts. I’ve used it directly and it's straightforward to 
integrate into WO (or pdf generation, etc.), but I think Wonder might have some 
classes built on it as well.

— Mark

On Jun 15, 2017, at 7:45 PM, Calven Eggert 
> wrote:

Thanks Paul. I'll look into those solutions.

Calven


On Jun 15, 2017, at 8:32 PM, Paul Hoadley 
> wrote:

Hi Calven,

On 16 Jun 2017, at 01:38, Calven Eggert > 
wrote:

I’m thinking of creating a Pie chart using the GCPieChart class.  Does anyone 
have any tips or code examples they would like to share with this class or any 
of the other GC classes?

While I’ve used some of those components in the distant past, 
GoogleCharts.framework is positively ancient. My tip would be to use a more 
modern, client-side charting solution. We’ve used both of these recently:

https://www.highcharts.com
https://d3js.org

If you’re keen on GoogleCharts.framework, there are some examples in the 
ERComponentTour sample app.


--
Paul Hoadley
http://logicsquad.net/
https://www.linkedin.com/company/logic-squad/



___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Tip request: How to avoid coercing twice in NSValidation

2017-05-23 Thread Morris, Mark
It looks like Blowfish is included in ERXCrypto, which is the underlying hash 
for BCrypt, but otherwise from a quick glance it looks like it doesn’t include 
BCrypt or anything comparable. Looks like an opportunity for a contribution!

Regards,
Mark

On May 23, 2017, at 2:32 PM, Theodore Petrosky 
<tedp...@yahoo.com<mailto:tedp...@yahoo.com>> wrote:

of course if we are talking about crypto, you should look at ERExtensions 
er.extensions.crypting to see what is included in Wonder already.  ERXCrypto 
specifically!

I thought he was asking about a method to use the password and not use 
validateForSave.



On May 23, 2017, at 10:26 AM, Morris, Mark 
<mark.mor...@experian.com<mailto:mark.mor...@experian.com>> wrote:

I know this is off topic, but I would recommend BCrypt for your passwords. It 
has 3 features that make it better than simply hashing your passwords:


  1.  It uses a different salt for each password,
  2.  It handles version control automatically (we used to have code to handle 
when we migrated from one hash algorithm to another), and
  3.  It has a parameter to control how computationally expensive the process 
is, so as hardware gets faster you can easily keep pace.

I’ve heard that there are newer schemes out there that also have these 
advantages, so I’m sure they are good as well, but I wouldn’t stick with just 
running it through a SHA256 or similar hash.

Back on topic, I take Sharpy’s approach. ;-)

Regards,
Mark

On May 23, 2017, at 5:26 AM, getsh...@gmail.com<mailto:getsh...@gmail.com> 
wrote:

Hi Riccardo,

I’m interested in how others deal with this too.

My approach is to never bind directly to the password attribute.

With forms that persist a password value I bind to a component ivar, check 
validity on the raw string to whatever my password policy might dictate (in the 
component’s action method) then call the password attribute setter passing the 
digested string.

Sharpy..


On 23 May 2017, at 7:33 pm, Riccardo De Menna 
<deme...@tuorlo.net<mailto:deme...@tuorlo.net>> wrote:

Hi all,

I have a request for tips on how to properly perform a task…

Whenever I have to deal with database fields that contain passwords I generally 
use some sort of ‘digest’ as early as possible and then only store and compare 
the digested data. I’d like to apply this digest in the validateValueForKey 
method of my EOGenericRecord subclass, coercing the value, but I’m having 
problems because validateValueForKey gets called twice, first at component 
validation level and then when things are actually saved (I think it’s called 
by validateTakeValueForKeyPath  first and validateForSave later right?).

Result: My digest algorithm is applied twice and this obviously messes up with 
the whole thing.

What should I do to avoid this?

One idea would be to intercept component validation on 
validateTakeValueForKeyPath and skip coercion there. Or skip it later on the 
validateForSave.

What would be the right way? Also… is it somehow guaranteed that validation 
happens twice? Could it happen three times? More? If so, my idea would not work.

What do you think?

Riccardo
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/getsharp%40gmail.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_webobjects-2Ddev_getsharp-2540gmail.com=DwMFaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=mYhMcDqbGXGvSf5MesRzElrmcU7RcevYTNIQ2ep17GU=SWBvf7okS7GgaEvtzQNMhy2qJbYuqBvxUOl1UbhcgSE=>

This email sent to getsh...@gmail.com<mailto:getsh...@gmail.com>

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_webobjects-2Ddev_mark.morris-2540experian.com=DwMFaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=mYhMcDqbGXGvSf5MesRzElrmcU7RcevYTNIQ2ep17GU=jOfhMJX3wyoC95oOhnqN53ROsnkPpi0ucjdok52ZomY=>

This email sent to mark.mor...@experian.com<mailto:mark.mor...@experian.com>

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/tedpet5%40yahoo.com<https://urldefense.proofpoint.com/v2/url?u=

Re: Tip request: How to avoid coercing twice in NSValidation

2017-05-23 Thread Morris, Mark
I know this is off topic, but I would recommend BCrypt for your passwords. It 
has 3 features that make it better than simply hashing your passwords:


  1.  It uses a different salt for each password,
  2.  It handles version control automatically (we used to have code to handle 
when we migrated from one hash algorithm to another), and
  3.  It has a parameter to control how computationally expensive the process 
is, so as hardware gets faster you can easily keep pace.

I’ve heard that there are newer schemes out there that also have these 
advantages, so I’m sure they are good as well, but I wouldn’t stick with just 
running it through a SHA256 or similar hash.

Back on topic, I take Sharpy’s approach. ;-)

Regards,
Mark

On May 23, 2017, at 5:26 AM, getsh...@gmail.com 
wrote:

Hi Riccardo,

I’m interested in how others deal with this too.

My approach is to never bind directly to the password attribute.

With forms that persist a password value I bind to a component ivar, check 
validity on the raw string to whatever my password policy might dictate (in the 
component’s action method) then call the password attribute setter passing the 
digested string.

Sharpy..


On 23 May 2017, at 7:33 pm, Riccardo De Menna 
> wrote:

Hi all,

I have a request for tips on how to properly perform a task…

Whenever I have to deal with database fields that contain passwords I generally 
use some sort of ‘digest’ as early as possible and then only store and compare 
the digested data. I’d like to apply this digest in the validateValueForKey 
method of my EOGenericRecord subclass, coercing the value, but I’m having 
problems because validateValueForKey gets called twice, first at component 
validation level and then when things are actually saved (I think it’s called 
by validateTakeValueForKeyPath  first and validateForSave later right?).

Result: My digest algorithm is applied twice and this obviously messes up with 
the whole thing.

What should I do to avoid this?

One idea would be to intercept component validation on 
validateTakeValueForKeyPath and skip coercion there. Or skip it later on the 
validateForSave.

What would be the right way? Also… is it somehow guaranteed that validation 
happens twice? Could it happen three times? More? If so, my idea would not work.

What do you think?

Riccardo
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/getsharp%40gmail.com

This email sent to getsh...@gmail.com

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: data backup question

2017-05-17 Thread Morris, Mark
Hi Ted,

On May 16, 2017, at 8:43 PM, Theodore Petrosky 
> wrote:

I thought I could troll my way into something, but you caught me.

My backup needs have always been very small. It’s the beauty of WO to be able 
to present the user with just enough. I was actually hoping to hear from people 
that manage BIG data. maybe not as big as iTunes, but I still big.

what kind of strategy do you have when your data is in the terabyte or petabyte 
range?

We use Oracle databases, and utilize their backup solution. We also use their 
replication technology to keep two other databases up-to-date, using the 
co-located one as a read-only query database (our apps have connections to this 
for certain types of queries) and the one in a separate city as a disaster 
recovery system. With these two available to quickly switch to in the case of 
losing the primary database, the backups are used more for the type of 
emergency where we need to restore a copy of a table to some previous state.

Thanks for not letting me pretend troll you into a distro war. They all work 
just fine.

— Mark


On May 16, 2017, at 9:17 PM, Matthew Ness 
> wrote:

Hi Ted,

Just on backups and PostgreSQL, it's maybe worth noting that as well as
backups in the RDS space, it's trivial to also use traditional 'backup'
and 'restore' functionality, if you need to move, replicate, backup
on-premise, etc.

I wont be drawn into any flavour-distro wars (!), suffice to say Amazon
linux meets out requirements.

Regards,

Matt

On Wed, May 17, 2017, at 10:46 AM, Theodore Petrosky wrote:
No, there are no wars here because we know that postgresql is better in
all ways over MySQL. I mean really, just look at their names one begins
with a ‘p’ and the other an ‘m’. That tells you everything!

Thanks for the info. I am collecting a list of OSs and VMs that I have
successfully installed WO for deployment.

So far, I have Centos on ESXi running on a mac mini. Now using AWS, I
have succeeded with Amazon Linux AMI 2017.03.0 and Red Hat Enterprise
Linux 7.3.

I also found that Centos is available in the AWS VM, so I may give that a
go just to say I did it.

Lots of fun!!!

Thanks again for the info.

Ted


On May 16, 2017, at 7:13 PM, Paul Hoadley 
> wrote:

On 17 May 2017, at 6:22 am, Theodore Petrosky 
 > wrote:

How do you feel about responsiveness, especially postgresql responsiveness?

We haven’t done any serious testing, but PostgreSQL on RDS is quite sufficient 
for our needs.

I have never had any real experience with MySQL so i don’t want to even ask.

Yeah, at the risk of starting a war, my advice would be if you’re in a position 
to choose, choose PostgreSQL over MySQL.


--
Paul Hoadley
http://logicsquad.net/
 
>
https://www.linkedin.com/company/logic-squad/




___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/matt%40logicsquad.net

This email sent to m...@logicsquad.net


--
Matt
http://logicsquad.net
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:

Re: Reading in a framework-level resource in a Maven-built app

2017-04-02 Thread Morris, Mark
Hi Paul,

I’m sorry, I don’t have experience with the building with Maven aspect. It 
seems like while running with the project open in Eclipse that it can find the 
resources in the FrameworkName/Resources folder, so perhaps you could try using 
2 copies in your framework project, one in each place? It seems like the best 
solution is if Maven knew to get the resources out of the spot where they 
traditionally live. (As I recall, back in ProjectBuilder they were in 
FrameworkName/Resources as well.)

Good luck!
Mark


On Apr 2, 2017, at 2:58 AM, Paul Hoadley 
<pa...@logicsquad.net<mailto:pa...@logicsquad.net>> wrote:

Hi Mark,

On 2 Apr 2017, at 4:36 pm, Morris, Mark 
<mark.mor...@experian.com<mailto:mark.mor...@experian.com>> wrote:

I’m not sure if I’m missing the point of your question,

Sorry, it was a little bit unclear.

but WOResourceManager will find files in frameworks just fine if they’re in the 
Resources folder. Note that this is not under any XXX.woa/Contents/Resources 
path as mentioned in your email, you just put the files in the 
FrameworkName/Resources folder

I’m building with Maven, so I’ve put the resource in 
FrameworkName/src/main/resources...

and they end up under FrameworkName.framework/Resources within the jar.

Yep, confirmed.

You do have to supply the framework name in the call to WOResourceManager, such 
as:

InputStream is = 
WOApplication.application().resourceManager().inputStreamForResourceNamed( 
“foo.txt", “FrameworkName", aLanguagesList );

This where I might have rushed the question a bit. What I am after is code that 
works both when the framework is open in Eclipse, and when it’s not and it’s 
instead referencing the built JAR under ~/.m2/repository (or wherever). So if I 
close FrameworkName.framework in Eclipse, your code above does work. If I open 
it again, the InputStream returned is null. But what _does_ then work is:

URL url = getClass().getClassLoader().getResource(“foo.txt")

To be completely clear this time:

1. If framework project is closed in Eclipse (and application is hence using 
framework under ~/.m2/repository), 
WOResourceManager.inputStreamForResourceNamed() works fine.

2. If framework project is open, 
WOResourceManager.inputStreamForResourceNamed() returns null, but 
getClass().getClassLoader().getResource(“foo.txt") does return a URL that can 
be used.

So, to load a resource from a framework, I’ve got to try both methods. Is this 
expected behaviour for a Maven build, or am I doing something wrong?


--
Paul Hoadley
http://logicsquad.net/<https://urldefense.proofpoint.com/v2/url?u=http-3A__logicsquad.net_=DwMFaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=XNYhJDwxsYlHPZAZ-2y60jwwN_KFjyr24irVn_ai14o=XafBhVABXRXPh656uFywRM30b9MHAzvL_5jFgL-m6ew=>
https://www.linkedin.com/company/logic-squad/




 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Reading in a framework-level resource in a Maven-built app

2017-04-02 Thread Morris, Mark
Hi Paul,

I’m not sure if I’m missing the point of your question, but WOResourceManager 
will find files in frameworks just fine if they’re in the Resources folder. 
Note that this is not under any XXX.woa/Contents/Resources path as mentioned in 
your email, you just put the files in the FrameworkName/Resources folder and 
they end up under FrameworkName.framework/Resources within the jar. You do have 
to supply the framework name in the call to WOResourceManager, such as:

InputStream is = 
WOApplication.application().resourceManager().inputStreamForResourceNamed( 
“foo.txt", “FrameworkName", aLanguagesList );

This is of course different from WebServerResources, which end up under the web 
server document root.

Hope this helps!
Mark

> On Apr 1, 2017, at 11:45 PM, Paul Hoadley  wrote:
> 
> Hello,
> 
> I can see reference to this issue a couple of times in the list archives, but 
> I’m not seeing the definitive solution. Could we quickly look at this again?
> 
> I have a file ‘foo.txt’ in Bar.framework at ‘src/main/resources/foo.txt’. In 
> an application Baz dependent on Bar.framework, I want to load foo.txt, say as 
> an InputStream. To be clear:
> 
> * Bar.jar is present at the appropriate place under 
> Baz.woa/Contents/Resources/Java/.
> * Bar.jar does contain foo.txt under its Resources folder.
> * foo.txt is not present in Baz.woa/Contents/Resources.
> 
> All of this seems to be what I’d expect. Further, running out of Eclipse, 
> something as simple as:
> 
> getClass().getClassLoader().getResource(BLACKLIST_FILENAME).toURI()
> 
> will get a URI for the file, because it can be found on the local filesystem. 
> But if I close that project, forcing it to run using the framework JAR, 
> neither that approach, nor WOResourceManager.inputStreamForResourceNamed() 
> can find the file.
> 
> Anyway, rather than trying to debug any of the specifics of what I describe 
> above, let me just ask a simple question: how can I load a framework resource 
> at runtime in deployment given that the resource will be buried deep in a 
> framework JAR?
> 
> 
> -- 
> Paul Hoadley
> http://logicsquad.net/
> https://www.linkedin.com/company/logic-squad/
> 
> 
> 
> 
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
> 
> This email sent to mark.mor...@experian.com


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: excelgeneration problem :(

2017-02-08 Thread Morris, Mark
That’s strange. We have lots of components with mixtures of inline and WOD 
style, and haven’t noticed any problems. Anything we should be watching out for?

— Mark

> On Feb 8, 2017, at 10:16 AM, Gavin Eadie  wrote:
> 
>> On Feb 8, 2017, at 10:34 AM, Ralf Schuchardt  wrote:
>> 
>> I don’t believe you can mix inline and WOD styles in a component. You may 
>> try inlining SheetsForDate and emptying the WOD file.
> 
> .. You certainly can’t mix styles.  You may even have to delete (not just 
> empty) the WOD file for inlining.  I seem to remember the need to empty the 
> WOD file from when I was converting an app years ago, so it’s not gospel .. I 
> mention it just in case my antique recollection is correct and emptying isn’t 
> enough.
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
> 
> This email sent to mark.mor...@experian.com


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Wocomunity ssl certificate

2017-02-07 Thread Morris, Mark
Since the certificate has expired, Eclipse won’t install the plugin if you’re 
trying to do a fresh install.

On Feb 7, 2017, at 6:50 AM, Theodore Petrosky 
> wrote:

I don’t understand! I have no problems with WOLips. would you describe your 
current versions please. how are your installing WOLips? what is the URL?


On Feb 7, 2017, at 3:06 AM, René Bock 
> wrote:

Currently, eclipse refuses to load (and install) the WOLips plugin :-(


Am 07.02.2017 um 04:56 schrieb Michael Kondratov 
>:

The certificate has expired. Any way I can help get it renewed?

Michael
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/bock%40salient-doremus.de

This email sent to b...@salient-doremus.de

Best regards

René Bock


___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/tedpet5%40yahoo.com

This email sent to tedp...@yahoo.com


___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: just a test

2017-02-06 Thread Morris, Mark
Apparently we’re back up.

> On Feb 4, 2017, at 6:13 PM, Theodore Petrosky  wrote:
> 
> are we back up? or is this the end?
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
> 
> This email sent to mark.mor...@experian.com


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Storing Session ID in Cookie And Multiple Browser Windows

2017-01-12 Thread Morris, Mark
Hi Michael,

First upon successful login we set a random secure cookie value, but the trick 
is I also make sure the cookie *key* is unique by using a suffix on the key I 
can increment if necessary. Both key and value are stored in the session, so we 
can compare later, and the cookie needs a reasonable timeout (unrelated to 
session timeout) so that old keys disappear from the user's browser least 
within a day or two. This setup keeps cookies from different sessions from 
stepping on each other, which is important for our customers, who regularly 
have multiple tasks going on in separate windows.

Then in our subclass of ERXComponent I override checkAccess() to check that the 
in-memory key and value matches what’s in the request’s cookies.

You have to override checkAccess() further down the chain for specific pages 
that shouldn’t ever deny access, like the home or login page, or your main 
checkAccess() can consult some list of "always allowed" pages, or some similar 
mechanism. Also, as I recall there was some timing issue with the very first 
request if you’re setting the cookie after login and immediately going to some 
protected page. For that I think I set a one-time flag on the session that 
basically says, “this is the request-response loop in which the user has 
successfully logged in”, so checkAccess() can ignore the missing cookie. Of 
course somewhere at the end of that loop, the flag needs to be reset.

I think that’s the main part of what we do that relates to your question. Hope 
this helps!

Take care,
Mark

> On Jan 12, 2017, at 11:44 AM, Michael Hast <mh...@desertsky.com> wrote:
> 
> Hi Mark:
> 
> Your combination approach sounds like a good idea. Which classes did you 
> overwrite in order to achieve this?
> 
> Michael
> 
> On 1/12/17 10:12 AM, Morris, Mark wrote:
>> Hi,
>> 
>> We use a combination of the session ID in the URL plus a secure cookie that 
>> we manage ourselves to verify that the session hasn’t been hijacked. Don’t 
>> know if this is a viable option in your case, but it does allow multiple 
>> sessions.
>> 
>> Regards,
>> Mark
>> 
>>> On Jan 12, 2017, at 10:34 AM, Samuel Pelletier <sam...@samkar.com> wrote:
>>> 
>>> Hi,
>>> 
>>> Cookies are shared per browser instance so it is not possible to have 
>>> distinct sessions inside a single browser. You can uses different browser 
>>> and they will have their own sessions so if you need 2 simultaneous 
>>> sessions, you can use a window in FireFox and Chrome for example.
>>> 
>>> WOComponent actions are not working well with multiple tabs or windows in 
>>> the same session, the "You backtracked to far" will always come. I usually 
>>> set the page cache very low like 2 so the user does not think it is 
>>> supposed to works and get the error very early.
>>> 
>>> Samuel
>>> 
>>>> Le 11 janv. 2017 à 21:42, Michael Hast <mh...@desertsky.com> a écrit :
>>>> 
>>>> Hello:
>>>> 
>>>> We recently switch our applications to store the session ID in cookies. 
>>>> With the session ID in the URL we were able to open the same application 
>>>> in multiple browser tabs each working with their own session. Is that 
>>>> possible with cookies? We are not experiencing "You backtracked to far" 
>>>> every once in a while because each browser tab works with the same session.
>>>> 
>>>> Michael
>>>> ___
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>>>> Help/Unsubscribe/Update your Subscription:
>>>> https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com
>>>> 
>>>> This email sent to sam...@samkar.com
>>> 
>>> ___
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
>>> 
>>> This email sent to mark.mor...@experian.com
> 


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Storing Session ID in Cookie And Multiple Browser Windows

2017-01-12 Thread Morris, Mark
Hi,

We use a combination of the session ID in the URL plus a secure cookie that we 
manage ourselves to verify that the session hasn’t been hijacked. Don’t know if 
this is a viable option in your case, but it does allow multiple sessions.

Regards,
Mark

> On Jan 12, 2017, at 10:34 AM, Samuel Pelletier  wrote:
> 
> Hi,
> 
> Cookies are shared per browser instance so it is not possible to have 
> distinct sessions inside a single browser. You can uses different browser and 
> they will have their own sessions so if you need 2 simultaneous sessions, you 
> can use a window in FireFox and Chrome for example.
> 
> WOComponent actions are not working well with multiple tabs or windows in the 
> same session, the "You backtracked to far" will always come. I usually set 
> the page cache very low like 2 so the user does not think it is supposed to 
> works and get the error very early.
> 
> Samuel
> 
>> Le 11 janv. 2017 à 21:42, Michael Hast  a écrit :
>> 
>> Hello:
>> 
>> We recently switch our applications to store the session ID in cookies. With 
>> the session ID in the URL we were able to open the same application in 
>> multiple browser tabs each working with their own session. Is that possible 
>> with cookies? We are not experiencing "You backtracked to far" every once in 
>> a while because each browser tab works with the same session.
>> 
>> Michael
>> ___
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com
>> 
>> This email sent to sam...@samkar.com
> 
> 
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
> 
> This email sent to mark.mor...@experian.com


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Best charting?

2016-10-18 Thread Morris, Mark
Hi Ken,

A few years ago I used jFreeChart, which was very easy to integrate. it has 
factory methods for each type of chart that you throw your data at, lots of 
customization options, and a variety of output formats. So for instance you can 
just include a method that returns the image data and use that right in your 
WOImage binding.

Good luck!
Mark

> On Oct 18, 2016, at 2:37 PM, Ken Anderson  wrote:
> 
> All,
> 
> I have some data that I’d like to be able to make HTML 5 charts from.  Are 
> there any decent tools for doing this with WO?
> 
> Thanks!
> Ken
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
> 
> This email sent to mark.mor...@experian.com


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: The WOCommunity slack channel

2016-09-26 Thread Morris, Mark
Although unfortunately I can’t get to slack from work, please add my personal 
email: ma...@mac.com

Thanks!
Mark

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: The WOCommunity slack channel

2016-09-06 Thread Morris, Mark
Hmmm, our corporate IT blocks the slack.com address, 
affecting both the web site and the Mac app. :-(

On Sep 6, 2016, at 2:01 PM, Hugi Thordarson 
> wrote:

It wouldn’t be a WO group without you. And I made a special channel for us 
oldies.

https://wocommunity.slack.com/archives/goats

- hugi


On 6. sep. 2016, at 18:41, Chuck Hill 
> wrote:

Might as well include me.  Now I have to figure out what Slack is.  :-P  The 
Internet is No Place for Old Men!


From: 
>
 on behalf of Markus Ruggiero 
>
Date: Tuesday, September 6, 2016 at 6:57 AM
To: "webobjects-dev@lists.apple.com" 
>
Subject: Re: The WOCommunity slack channel

also interested, please add me in

---markus---


On 06.09.2016, at 14:01, Hugi Thordarson 
> wrote:
Hi all,
just wanted to remind you that Samuel Pelletier created a slack channel for the 
WOCommunity. It’s a lovely little place for chatting about WO. Just let us know 
if you’d like an invite so you can join.
Cheers,
- hugi
// Hugi Thordarson
// http://www.loftfar.is/
// s. 895-6688
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mailinglists%40kataputt.com
This email sent to mailingli...@kataputt.com


___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/chill%40gevityinc.com

This email sent to ch...@gevityinc.com
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/hugi%40karlmenn.is

This email sent to h...@karlmenn.is


___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Remove blank space at the end of all insert/update

2016-08-11 Thread Morris, Mark
Hi Luiz,

One step closer might be to use a StringHelper class, so that you can define 
directly in your .wo the fields on which you want whitespace trimmed.

See 
 
for more info.

Hope this helps!
Mark

On Aug 11, 2016, at 4:47 PM, Luiz Alfredo Carrara Bertusso 
> wrote:


Thank you for your answer, this solves if I manually use it, but is there a way 
to automatically remove the blank spaces?

Em 11 de ago de 2016 09:52, "Fabian Peters" 
> escreveu:
Hi Luiz,

Have a look at this method in ERXEOControlUtilities:

/**
 * Trims all values from string attributes from the given EO unless the EO 
itself
 * or the string attribute is flagged as read-only.
 *
 * @param object the EO whose string attributes should be trimmed
 */
public static void trimSpaces(EOEnterpriseObject object) {

Fabian

> Am 11.08.2016 um 14:32 schrieb Luiz Alfredo Carrara Bertusso 
> >:
>
> Hello, nowadays people can use mobile versions of websites and most of them 
> use the autocomplete function or the swipe one, the problem is both of them 
> add a blank space after the words that come from them.
> The problem is blank spaces at the end of data is not a wished thing, is 
> there some property that can automatically remove blank spaces (somethink 
> lika a trim) before inserting/updating data in database?
> Thanks
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  
> (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/lists.fabian%40e-lumo.com
>
> This email sent to lists.fab...@e-lumo.com

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Horizontal inheritance to splitting big database tables to speed up?

2016-07-11 Thread Morris, Mark
OC,

Sorry, I did this in a project 10 years and a few laptops ago, and the code is 
archived off somewhere. I don’t remember if I hooked in at the adaptor level or 
if I somehow used EOSQLExpression….

— Mark

> On Jul 11, 2016, at 6:13 AM, OC <o...@ocs.cz> wrote:
> 
> Mark,
> 
> On 11. 7. 2016, at 7:03, "Morris, Mark" <mark.mor...@experian.com> wrote:
> 
>> I don’t know that there’s a way to do this.
>> 
>> What I did before was to intercept at the SQL-generation stage and change 
>> the table names based on a session variable value.
> 
> I see. Might I perhaps ask which hooks did you employ, just in case they 
> might prove valuable for my problem, too?
> 
> Thanks a lot,
> OC
> 
>> This was not for performance in my case, it was because a horrible student 
>> information system at a school system I was at duplicated every table for 
>> every school in the system, with a school-specific suffix added to the table 
>> name, and I was hiding that complexity from the rest of the app development. 
>> I could see how something like this might be used in an extreme case to 
>> address performance issues, but it certainly depends on your situation.
>> 
>> — Mark
>> 
>>> On Jul 10, 2016, at 7:20 PM, OC <o...@ocs.cz> wrote:
>>> 
>>> Well... I have re-written my test code completely. Alas there does not seem 
>>> to be a delegate method which would allow to select the target entity 
>>> dynamically based on the source EO :( In fact, I did not succeed to get 
>>> subEntityForEntity at all, whatever I tried (nor 
>>> relationshipFailedToLookupDestinationWithName); and 
>>> classForObjectWithGlobalID gets called all right, but only _after_ fetch, 
>>> not before, where it would help.
>>> 
>>> Oh, sigh.
>>> 
>>> Am I overlooking some hidden gem of a WOnder or EOF delegate, through which 
>>> one _could_ set the target entity for a relationship based on the source 
>>> EO, before EOF tries to fetch?
>>> 
>>> Thanks and all the best,
>>> OC
>>> 
>>> On 10. 7. 2016, at 21:25, OC <o...@ocs.cz> wrote:
>>> 
>>>> Thinking about
>>>> 
>>>> On 9. 7. 2016, at 12:13, OC <o...@ocs.cz> wrote:
>>>> 
>>>>> For one, it would mean each DBTable eo would have its "records" 
>>>>> relationship leading into another target DBRecordXX entity; I am not sure 
>>>>> whether this can be modelled at all?
>>>> 
>>>> actually it would help a lot even without special FrontBase support.
>>>> 
>>>> My current setup is the very primitive
>>>> 
>>>> - DBTable entity, it has a :N relationship "records" into DBRecord
>>>> - DBRecord entity, which contains a FK into DBTable which models an 
>>>> inverse :1 relationship "table" into DBTable.
>>>> 
>>>> A setup we all did a zillion times.
>>>> 
>>>> Now I wonder, might perhaps a horizontal inheritance help me to split 
>>>> those DBRecords? Let us assume that
>>>> 
>>>> (a) I add a "tableType" numeric column to DBTable; there would be N 
>>>> distinct table types
>>>> (b) I model N separate DBRecord1, DBRecord2, ..., DBRecordN entities, all 
>>>> of them children of DBRecord (which itself would become abstract)
>>>> (c) each of them would be linked to a separate SQL table
>>>> 
>>>> At the database level, this definitely would work well. What I can't see, 
>>>> how to process this at the model and EOF levels?
>>>> 
>>>> - I cannot model a relationship to “different entity for each row”; 
>>>> therefore, the target of the "records" relationship of DBTable would still 
>>>> have to be the (abstract) DBRecord;
>>>> - runtime, I would have tell _somehow_ to the EOF that if it is about to 
>>>> fire "records" of a DBTable object, it should fetch them from the 
>>>> ["DBRecord%@",table.tableType] entity instead of from DBRecord -- the 
>>>> subEntityForEntity delegate method comes to mind
>>>> - when adding new records, I would simply use 
>>>> EOUtilities.createAndInsertInstance with appropriate entity name (e.g., 
>>>> "DBRecord33").
>>>> 
>>>> Should such a thing work, or am I in for a nasty surprise? I have actually 
>>>> tried, but either it should not work, or I messed up

Re: Horizontal inheritance to splitting big database tables to speed up?

2016-07-10 Thread Morris, Mark
Hi OC,

I don’t know that there’s a way to do this.

What I did before was to intercept at the SQL-generation stage and change the 
table names based on a session variable value. This was not for performance in 
my case, it was because a horrible student information system at a school 
system I was at duplicated every table for every school in the system, with a 
school-specific suffix added to the table name, and I was hiding that 
complexity from the rest of the app development. I could see how something like 
this might be used in an extreme case to address performance issues, but it 
certainly depends on your situation.

— Mark

> On Jul 10, 2016, at 7:20 PM, OC  wrote:
> 
> Well... I have re-written my test code completely. Alas there does not seem 
> to be a delegate method which would allow to select the target entity 
> dynamically based on the source EO :( In fact, I did not succeed to get 
> subEntityForEntity at all, whatever I tried (nor 
> relationshipFailedToLookupDestinationWithName); and 
> classForObjectWithGlobalID gets called all right, but only _after_ fetch, not 
> before, where it would help.
> 
> Oh, sigh.
> 
> Am I overlooking some hidden gem of a WOnder or EOF delegate, through which 
> one _could_ set the target entity for a relationship based on the source EO, 
> before EOF tries to fetch?
> 
> Thanks and all the best,
> OC
> 
> On 10. 7. 2016, at 21:25, OC  wrote:
> 
>> Thinking about
>> 
>> On 9. 7. 2016, at 12:13, OC  wrote:
>> 
>>> For one, it would mean each DBTable eo would have its "records" 
>>> relationship leading into another target DBRecordXX entity; I am not sure 
>>> whether this can be modelled at all?
>> 
>> actually it would help a lot even without special FrontBase support.
>> 
>> My current setup is the very primitive
>> 
>> - DBTable entity, it has a :N relationship "records" into DBRecord
>> - DBRecord entity, which contains a FK into DBTable which models an inverse 
>> :1 relationship "table" into DBTable.
>> 
>> A setup we all did a zillion times.
>> 
>> Now I wonder, might perhaps a horizontal inheritance help me to split those 
>> DBRecords? Let us assume that
>> 
>> (a) I add a "tableType" numeric column to DBTable; there would be N distinct 
>> table types
>> (b) I model N separate DBRecord1, DBRecord2, ..., DBRecordN entities, all of 
>> them children of DBRecord (which itself would become abstract)
>> (c) each of them would be linked to a separate SQL table
>> 
>> At the database level, this definitely would work well. What I can't see, 
>> how to process this at the model and EOF levels?
>> 
>> - I cannot model a relationship to “different entity for each row”; 
>> therefore, the target of the "records" relationship of DBTable would still 
>> have to be the (abstract) DBRecord;
>> - runtime, I would have tell _somehow_ to the EOF that if it is about to 
>> fire "records" of a DBTable object, it should fetch them from the 
>> ["DBRecord%@",table.tableType] entity instead of from DBRecord -- the 
>> subEntityForEntity delegate method comes to mind
>> - when adding new records, I would simply use 
>> EOUtilities.createAndInsertInstance with appropriate entity name (e.g., 
>> "DBRecord33").
>> 
>> Should such a thing work, or am I in for a nasty surprise? I have actually 
>> tried, but either it should not work, or I messed up something else; instead 
>> of the desired result (or some intelligible error report) I am getting a 
>> very weird “Cannot register the database context for the model Shared” 
>> (which is *not* the model which contains my abstract/inherited entities). 
>> And, my subEntityForEntity delegate method is never called.
>> 
>> Thanks a lot,
>> OC
>> 
>> 
>> 
>> ___
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/webobjects-dev/ocs%40ocs.cz
>> 
>> This email sent to o...@ocs.cz
> 


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Splitting big database tables to speed up?

2016-07-10 Thread Morris, Mark
I saw something, when I just did a quick search, called “zones” that have a 
“data” option, that on the surface sounds somewhat similar, but I’m not sure if 
they will have the same performance benefit that Oracle partitions produce.

Yes, we have tables that huge, and larger, so it makes a big difference to us. 
If you’re in this really huge situation as well, there are even more drastic 
measures possible. You could create separate physical databases, on multiple 
servers, and direct users upon login to instances that are pointing to the 
appropriate database. This would give significant performance gains, at the 
expense of significant increase in complexity.

Good luck!
Mark

> On Jul 10, 2016, at 10:34 AM, Samuel Pelletier <sam...@samkar.com> wrote:
> 
> OC,
> 
> To my knowledge, FrontBase does not support such thing. But I would not 
> expect major speed gain unless your table have a very huge number of entries, 
> in the 100s of millions.
> 
> First make sure your indexes are kept in memory and uses READ_COMMITED.
> 
> You may have to add or adjust some index to be 2 keys (partitioning attribute 
> and searched attribute) to help the lookup. The partitioning described 
> basically does that...
> 
> If you have specific situation that takes unexpected time to execute, you may 
> help by creating some multi key indices; querying multiple indexes and 
> intersecting results is time consuming.
> 
> Samuel
> 
> 
>> Le 10 juil. 2016 à 09:10, OC <o...@ocs.cz> a écrit :
>> 
>> Mark,
>> 
>> On 9. 7. 2016, at 22:54, "Morris, Mark" <mark.mor...@experian.com> wrote:
>> 
>>> ... there might be support in your database for something that will get you 
>>> the same results. We also have quite a few really huge tables, in Oracle, 
>>> and we use table partitioning. You can partition on a value, and then all 
>>> of the records in a partition are kept physically together and treated by 
>>> the optimizer for all practical purposes like separate tables. Indexes can 
>>> also be by partition, so the index search is limited as if it were a 
>>> separate table as well. Huge performance gains for us.
>> 
>> That would help tremendously. Is there anything similar in FrontBase?
>> 
>> Thanks,
>> OC
>> 
>> 
>> ___
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>> Help/Unsubscribe/Update your Subscription:
>> https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com
>> 
>> This email sent to sam...@samkar.com
> 


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Splitting big database tables to speed up?

2016-07-09 Thread Morris, Mark
Hi OC,

I see now. Besides the table-renaming-at-SQL-generation idea someone suggested 
(which certainly works, I’ve used in the past to hide the complexities of an 
old system migrated from many distributed AS400s), there might be support in 
your database for something that will get you the same results. We also have 
quite a few really huge tables, in Oracle, and we use table partitioning. You 
can partition on a value, and then all of the records in a partition are kept 
physically together and treated by the optimizer for all practical purposes 
like separate tables. Indexes can also be by partition, so the index search is 
limited as if it were a separate table as well. Huge performance gains for us.

Good luck!
Mark

> On Jul 9, 2016, at 5:13 AM, OC <o...@ocs.cz> wrote:
> 
> Mark,
> 
> On 9. 7. 2016, at 5:23, "Morris, Mark" <mark.mor...@experian.com> wrote:
> 
>> Just a thought. What about dynamically creating a new EOEntity for each 
>> group of T_RECORD records represented by a T_TABLE record?
> 
> I sort of fear this might bring more problems than those which it would 
> solve. For one, it would mean each DBTable eo would have its "records" 
> relationship leading into another target DBRecordXX entity; I am not sure 
> whether this can be modelled at all?
> 
>> Then you could add a qualifier to the EOEntity that would restrict it to the 
>> correct subset, and it would be included automatically in the SQL.
> 
> There are two rather separate things.
> 
> First, the “qualifying relationship” task of mine: here it would sort of 
> help, but only if the different target entities were session-based. 
> Nevertheless, in this case I would not need separate entities for different 
> tables; I would need separate entities for different sessions. Inside one 
> session, all tables need to be filtered the same way.
> 
> Second, the issue of this thread, “splitting big database tables to speed 
> up”: here it would not help at all. If I access my records through the 
> "records" relationship, the filtering _already is_ done SQL-level, the 
> generated SQL looking like "SELECT ... FROM T_RECORDS WHERE table_id = XXX". 
> The point of this thread was whether it is possible somehow to dodge even 
> this filtering (which is very fast, but on the other hand, the T_RECORDS 
> table is very huge), by tricking EOF to replace it by "SELECT ... FROM 
> T_RECORDS_XXX".
> 
> Keeping all the other things unchanged, especially still having one DBRecord 
> entity modelled the same way -- just having much faster fetches. And joins in 
> other scenarios, etc.
> 
> Thanks a lot,
> OC
> 
>>> On Jul 8, 2016, at 6:10 AM, OC <o...@ocs.cz> wrote:
>>> 
>>> Actually, I wonder...
>>> 
>>> On 8. 7. 2016, at 10:11, OC <o...@ocs.cz> wrote:
>>>> Alas, my DBTables contain _lots_ of DBRecords, and thus the above 
>>>> implementation would get terribly slow
>>> 
>>> ... my setup is pretty standard, i.e.
>>> 
>>> - DBTables are represented by rows in one DB table, say, T_TABLE
>>> - all DBRecords of all tables are represented by rows in another DB table, 
>>> T_RECORD, with a foreign key into T_TABLE.
>>> 
>>> Therefore, whenever DBTable records are used anyhow, *always* the huge 
>>> T_RECORD table is filtered by the desired foreign key. Of course there is 
>>> an index on that column, but since the table contains zillions of records, 
>>> it is still somewhat at the slow side.
>>> 
>>> Conceptually, it would make much better sense to have a separate database 
>>> table for records of each T_TABLE row: almost all operations need just 
>>> records of one table; there is a very little or nothing to do over records 
>>> of more different tables at once. Database-level, I can pretty well imagine 
>>> something like many tables named T_RECORD_X where X would be e.g., the 
>>> primary key of each T_TABLE_ROW. Nevertheless, I can see absolutely no 
>>> reasonable way of EOmodelling such a thing? (Note that _tables_ -- not just 
>>> rows -- would have to be added/removed to/from the schema on-the-fly, as 
>>> users create/delete tables. Table creation/deletion _can_ be slow though; 
>>> we need table processing to be fast.)
>>> 
>>> Are there some well-tested tricks for such cases?
>>> 
>>> Thanks again,
>>> OC
>>> 
>>> 
>>> ___
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
>>> Help/Unsubscribe/Update your Subscription:
>>> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
>>> 
>>> This email sent to mark.mor...@experian.com
>> 
> 


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Splitting big database tables to speed up?

2016-07-08 Thread Morris, Mark
Good point. If new T_TABLE records are added infrequently and don’t need to be 
visible immediately, any mucking with the model could safely be done on app 
startup, and so changes would be available after the next regular instance 
restart. Otherwise it’d be wise to pay heed to Chuck’s warnings.

— Mark

On Jul 8, 2016, at 11:31 PM, Chuck Hill 
<ch...@gevityinc.com<mailto:ch...@gevityinc.com>> wrote:

Modifying the model on the fly in a multi-threaded app is a bit dicey.  It is 
not designed for that.  If you had an EOF stack per user, you could clone the 
model into a new, user specific EOModelGroup and modify it there.

Chuck

From: 
<webobjects-dev-bounces+chill=gevityinc@lists.apple.com<mailto:webobjects-dev-bounces+chill=gevityinc@lists.apple.com>>
 on behalf of "Morris, Mark" 
<mark.mor...@experian.com<mailto:mark.mor...@experian.com>>
Date: Friday, July 8, 2016 at 8:23 PM
To: OC <o...@ocs.cz<mailto:o...@ocs.cz>>
Cc: WebObjects-Dev Mailing List 
<webobjects-dev@lists.apple.com<mailto:webobjects-dev@lists.apple.com>>
Subject: Re: Splitting big database tables to speed up?

Just a thought. What about dynamically creating a new EOEntity for each group 
of T_RECORD records represented by a T_TABLE record? Then you could add a 
qualifier to the EOEntity that would restrict it to the correct subset, and it 
would be included automatically in the SQL. You could use inheritance maybe, or 
just copy the attributes/relationships from your base entity. Inheritance would 
let you use your custom java-based logic that’s in the base entity, though.

Regards,
Mark

On Jul 8, 2016, at 6:10 AM, OC <o...@ocs.cz<mailto:o...@ocs.cz>> wrote:
Actually, I wonder...
On 8. 7. 2016, at 10:11, OC <o...@ocs.cz<mailto:o...@ocs.cz>> wrote:
Alas, my DBTables contain _lots_ of DBRecords, and thus the above 
implementation would get terribly slow
... my setup is pretty standard, i.e.
- DBTables are represented by rows in one DB table, say, T_TABLE
- all DBRecords of all tables are represented by rows in another DB table, 
T_RECORD, with a foreign key into T_TABLE.
Therefore, whenever DBTable records are used anyhow, *always* the huge T_RECORD 
table is filtered by the desired foreign key. Of course there is an index on 
that column, but since the table contains zillions of records, it is still 
somewhat at the slow side.
Conceptually, it would make much better sense to have a separate database table 
for records of each T_TABLE row: almost all operations need just records of one 
table; there is a very little or nothing to do over records of more different 
tables at once. Database-level, I can pretty well imagine something like many 
tables named T_RECORD_X where X would be e.g., the primary key of each 
T_TABLE_ROW. Nevertheless, I can see absolutely no reasonable way of 
EOmodelling such a thing? (Note that _tables_ -- not just rows -- would have to 
be added/removed to/from the schema on-the-fly, as users create/delete tables. 
Table creation/deletion _can_ be slow though; we need table processing to be 
fast.)
Are there some well-tested tricks for such cases?
Thanks again,
OC
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_webobjects-2Ddev_mark.morris-2540experian.com=DQMGaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=JyP3ZmYEMmohCUhAozhBOZw3lYDykuFGe_454Dg1JJg=V4R_tykSBUhnqfj5zRaxiNPEir0mRk7o6NR_IV131c4=>
This email sent to mark.mor...@experian.com<mailto:mark.mor...@experian.com>


___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com<mailto:Webobjects-dev@lists.apple.com>)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/chill%40gevityinc.com<https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.apple.com_mailman_options_webobjects-2Ddev_chill-2540gevityinc.com=DQMGaQ=BNNF-YNv0CLLslhP2Bcx5Q=R0ZqsewJs3eSJk7vLCqZv0r5kJlLXQLnGTeg9t8MlqA=JyP3ZmYEMmohCUhAozhBOZw3lYDykuFGe_454Dg1JJg=YqWUR7bomE_F4BRO7HAAZ7gpnH3_Or7Td-k8wRY-3VE=>

This email sent to ch...@gevityinc.com<mailto:ch...@gevityinc.com>

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Splitting big database tables to speed up?

2016-07-08 Thread Morris, Mark
Just a thought. What about dynamically creating a new EOEntity for each group 
of T_RECORD records represented by a T_TABLE record? Then you could add a 
qualifier to the EOEntity that would restrict it to the correct subset, and it 
would be included automatically in the SQL. You could use inheritance maybe, or 
just copy the attributes/relationships from your base entity. Inheritance would 
let you use your custom java-based logic that’s in the base entity, though.

Regards,
Mark

> On Jul 8, 2016, at 6:10 AM, OC  wrote:
> 
> Actually, I wonder...
> 
> On 8. 7. 2016, at 10:11, OC  wrote:
>> Alas, my DBTables contain _lots_ of DBRecords, and thus the above 
>> implementation would get terribly slow
> 
> ... my setup is pretty standard, i.e.
> 
> - DBTables are represented by rows in one DB table, say, T_TABLE
> - all DBRecords of all tables are represented by rows in another DB table, 
> T_RECORD, with a foreign key into T_TABLE.
> 
> Therefore, whenever DBTable records are used anyhow, *always* the huge 
> T_RECORD table is filtered by the desired foreign key. Of course there is an 
> index on that column, but since the table contains zillions of records, it is 
> still somewhat at the slow side.
> 
> Conceptually, it would make much better sense to have a separate database 
> table for records of each T_TABLE row: almost all operations need just 
> records of one table; there is a very little or nothing to do over records of 
> more different tables at once. Database-level, I can pretty well imagine 
> something like many tables named T_RECORD_X where X would be e.g., the 
> primary key of each T_TABLE_ROW. Nevertheless, I can see absolutely no 
> reasonable way of EOmodelling such a thing? (Note that _tables_ -- not just 
> rows -- would have to be added/removed to/from the schema on-the-fly, as 
> users create/delete tables. Table creation/deletion _can_ be slow though; we 
> need table processing to be fast.)
> 
> Are there some well-tested tricks for such cases?
> 
> Thanks again,
> OC
> 
> 
> ___
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
> 
> This email sent to mark.mor...@experian.com


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Use case for a "case insensitive equals" qualifier

2016-02-25 Thread Morris, Mark
Hi Samuel,

That’s certainly a possibility we’ve talked about, and for sure it would 
improve the performance vs. my solution. The tradeoffs to consider are that we 
have many columns across many tables where this is used, with 100’s of millions 
of records, and so each new index is a huge chunk of storage space. I think in 
the end, though, we should probably do as you suggest, at least for a selected 
subset of those columns.

As a general case of just optimizing the qualifier though, having the 4 index 
lookups, with the merge, is in practice much faster than one full table scan, 
so it seems like a useful tool to have.

Regards,
Mark

On Feb 25, 2016, at 10:16 AM, Samuel Pelletier 
<sam...@samkar.com<mailto:sam...@samkar.com>> wrote:

Hi Mark,

I suggest you look into adding a collation to your column or index. I do not 
know how Oracle does this but it surely exists.

With an index using a collation, your query is trivial and much more efficient 
because the index is already case insensitive, there is no OR.

A query like the one you build generate multiple index lookup, one for each 
part of the OR and the server need to merge all those results before iterating 
into the rows, compute the UPPER for each rows and compare. Imagine the speedup 
if a single index lookup can be used, I would expect at least 10X faster on 
large dataset... probably 100X if multiple OR parts returns 1000s rows.

Regards,

Samuel

Le 25 févr. 2016 à 10:16, Morris, Mark 
<mark.mor...@experian.com<mailto:mark.mor...@experian.com>> a écrit :

Hi Lon,

We run into this a lot, and I have a rather complex solution for a “case 
insensitive begins with” qualifier that actually works well, at least with 
Oracle and its indexing. My method returning this qualifier is actually about 
60 lines, but most of that is optimizations for special cases. (We have 
terabytes of data, so every little bit helps!)

The basic idea, though, is that it only takes a couple of characters to hit on 
an index and make a huge difference in performance. So…

Trying to case-insensitive-equals match 
"pa...@logicsquad.net<mailto:pa...@logicsquad.net>” with the search term 
“pa...@logicsquad.net<mailto:pa...@logicsquad.net>”, you would build this sort 
of qualifier:

(emailAddress like ‘PA*’ OR emailAddress like ‘Pa*’ OR emailAddress like ‘pA*’ 
OR emailAddress like ‘pa*’) AND UPPER(emailAddress) = 
UPPER('pa...@logicsquad.net<mailto:pa...@logicsquad.net>’)

Hope this helps!

Regards,
Mark

On Feb 24, 2016, at 7:12 PM, Chuck Hill 
<ch...@gevityinc.com<mailto:ch...@gevityinc.com>> wrote:

If you always want the comparison to be case insensitive, then you should be 
able to specify a database collation  for the column that is insensitive.   
Then just just a regular equals qualifier.  If you want it case sensitive 
sometimes and insensitive others, that is a different problem.

Chuck

From: 
<webobjects-dev-bounces+chill=gevityinc@lists.apple.com<mailto:webobjects-dev-bounces+chill=gevityinc@lists.apple.com>>
 on behalf of Lon Varscsak 
<lon.varsc...@gmail.com<mailto:lon.varsc...@gmail.com>>
Date: Wednesday, February 24, 2016 at 5:08 PM
To: Paul Hoadley <pa...@logicsquad.net<mailto:pa...@logicsquad.net>>
Cc: WebObjects Development 
<webobjects-dev@lists.apple.com<mailto:webobjects-dev@lists.apple.com>>
Subject: Re: Use case for a "case insensitive equals" qualifier

Hmm, it would be interesting if there was an alternative, but really the 
problem lies in the database.  Any wildcard type searches (at least that start 
with a wildcard) are not likely to use indexes and cause a table scan.  If your 
database supported the concept of having case-insensitive indexes, then I would 
think it would be pretty trivial to implement in your own qualifier.  In Sybase 
(the database I use mostly) you can create a functional index (an index based 
on a function), but it’s the equivalent creating a second column that’s always 
lower and maintaining an index on it.  The difference being that the database 
maintains it for you (which is usually annoying for EOF).

I’ve always wanted a better way to do this too.

-Lon

On Wed, Feb 24, 2016 at 5:13 PM, Paul Hoadley 
<pa...@logicsquad.net<mailto:pa...@logicsquad.net>> wrote:
Hello,

Say you have a web application where the login identifier is the user’s email 
address. This works in the conventional way: the user supplies that address at 
sign-up, and it serves two in-app functions: login identifier, and actual email 
address to which notifications can be sent. This is a fairly common pattern 
among some large, modern web apps.

It turns out that not everyone understands case sensitivity. We are seeing 
login failures in the wild because a user that signed up as 
“pa...@logicsquad.net<mailto:pa...@logicsquad.net>” is now trying to log in 
with “pa...@logicsquad.net<mailto:pa...@log

Re: Use case for a "case insensitive equals" qualifier

2016-02-25 Thread Morris, Mark
If there’s interest, perhaps I could try to see about adding it as an ERX 
qualifier. Most of the optimizations have to do with streamlining in cases 
where a character in the search term is non-alpha, and getting the greatest 
number of characters in the hit with only 4 terms in the OR.

— Mark

On Feb 25, 2016, at 9:16 AM, Morris, Mark 
<mark.mor...@experian.com<mailto:mark.mor...@experian.com>> wrote:

Hi Lon,

We run into this a lot, and I have a rather complex solution for a “case 
insensitive begins with” qualifier that actually works well, at least with 
Oracle and its indexing. My method returning this qualifier is actually about 
60 lines, but most of that is optimizations for special cases. (We have 
terabytes of data, so every little bit helps!)

The basic idea, though, is that it only takes a couple of characters to hit on 
an index and make a huge difference in performance. So…

Trying to case-insensitive-equals match 
"pa...@logicsquad.net<mailto:pa...@logicsquad.net>” with the search term 
“pa...@logicsquad.net<mailto:pa...@logicsquad.net>”, you would build this sort 
of qualifier:

(emailAddress like ‘PA*’ OR emailAddress like ‘Pa*’ OR emailAddress like ‘pA*’ 
OR emailAddress like ‘pa*’) AND UPPER(emailAddress) = 
UPPER('pa...@logicsquad.net<mailto:pa...@logicsquad.net>’)

Hope this helps!

Regards,
Mark

On Feb 24, 2016, at 7:12 PM, Chuck Hill 
<ch...@gevityinc.com<mailto:ch...@gevityinc.com>> wrote:

If you always want the comparison to be case insensitive, then you should be 
able to specify a database collation  for the column that is insensitive.   
Then just just a regular equals qualifier.  If you want it case sensitive 
sometimes and insensitive others, that is a different problem.

Chuck

From: 
<webobjects-dev-bounces+chill=gevityinc@lists.apple.com<mailto:webobjects-dev-bounces+chill=gevityinc@lists.apple.com>>
 on behalf of Lon Varscsak 
<lon.varsc...@gmail.com<mailto:lon.varsc...@gmail.com>>
Date: Wednesday, February 24, 2016 at 5:08 PM
To: Paul Hoadley <pa...@logicsquad.net<mailto:pa...@logicsquad.net>>
Cc: WebObjects Development 
<webobjects-dev@lists.apple.com<mailto:webobjects-dev@lists.apple.com>>
Subject: Re: Use case for a "case insensitive equals" qualifier

Hmm, it would be interesting if there was an alternative, but really the 
problem lies in the database.  Any wildcard type searches (at least that start 
with a wildcard) are not likely to use indexes and cause a table scan.  If your 
database supported the concept of having case-insensitive indexes, then I would 
think it would be pretty trivial to implement in your own qualifier.  In Sybase 
(the database I use mostly) you can create a functional index (an index based 
on a function), but it’s the equivalent creating a second column that’s always 
lower and maintaining an index on it.  The difference being that the database 
maintains it for you (which is usually annoying for EOF).

I’ve always wanted a better way to do this too.

-Lon

On Wed, Feb 24, 2016 at 5:13 PM, Paul Hoadley 
<pa...@logicsquad.net<mailto:pa...@logicsquad.net>> wrote:
Hello,

Say you have a web application where the login identifier is the user’s email 
address. This works in the conventional way: the user supplies that address at 
sign-up, and it serves two in-app functions: login identifier, and actual email 
address to which notifications can be sent. This is a fairly common pattern 
among some large, modern web apps.

It turns out that not everyone understands case sensitivity. We are seeing 
login failures in the wild because a user that signed up as 
“pa...@logicsquad.net<mailto:pa...@logicsquad.net>” is now trying to log in 
with “pa...@logicsquad.net<mailto:pa...@logicsquad.net>”, or vice versa. Here 
are some facts:

1. It would seem to be at least reasonably common for modern web apps that use 
email addresses as login identifiers to ignore case at login time. (For 
example, I tested a couple I had open in browser tabs: Strava and Bitbucket 
ignore case.)

2. Although the domain part of an email address is case-insensitive, my 
understanding is that the relevant RFCs suggest that you shouldn’t make 
assumptions about the local part. While everything I’ve read claims that in 
practice it will make no difference, let’s assume that we need to preserve the 
address as entered at sign-up. (It’s fail-safe to do so, whether we strictly 
need to or not.)

So, 1 is our aim: ignore case on the login identifier at login time. But 
because of 2, we don’t want to, say, normalise the email address given at 
sign-up to lower case and just store that, on the off chance that it makes a 
difference for mail delivery for that particular user. (Again, it probably 
won’t, but let’s assume that it could for the exercise.)

What are our options for finding the right User entity at login time?

1. We can jump in and nai

Re: Use case for a "case insensitive equals" qualifier

2016-02-25 Thread Morris, Mark
Hi Lon,

We run into this a lot, and I have a rather complex solution for a “case 
insensitive begins with” qualifier that actually works well, at least with 
Oracle and its indexing. My method returning this qualifier is actually about 
60 lines, but most of that is optimizations for special cases. (We have 
terabytes of data, so every little bit helps!)

The basic idea, though, is that it only takes a couple of characters to hit on 
an index and make a huge difference in performance. So…

Trying to case-insensitive-equals match 
"pa...@logicsquad.net” with the search term 
“pa...@logicsquad.net”, you would build this sort 
of qualifier:

(emailAddress like ‘PA*’ OR emailAddress like ‘Pa*’ OR emailAddress like ‘pA*’ 
OR emailAddress like ‘pa*’) AND UPPER(emailAddress) = 
UPPER('pa...@logicsquad.net’)

Hope this helps!

Regards,
Mark

On Feb 24, 2016, at 7:12 PM, Chuck Hill 
> wrote:

If you always want the comparison to be case insensitive, then you should be 
able to specify a database collation  for the column that is insensitive.   
Then just just a regular equals qualifier.  If you want it case sensitive 
sometimes and insensitive others, that is a different problem.

Chuck

From: 
>
 on behalf of Lon Varscsak 
>
Date: Wednesday, February 24, 2016 at 5:08 PM
To: Paul Hoadley >
Cc: WebObjects Development 
>
Subject: Re: Use case for a "case insensitive equals" qualifier

Hmm, it would be interesting if there was an alternative, but really the 
problem lies in the database.  Any wildcard type searches (at least that start 
with a wildcard) are not likely to use indexes and cause a table scan.  If your 
database supported the concept of having case-insensitive indexes, then I would 
think it would be pretty trivial to implement in your own qualifier.  In Sybase 
(the database I use mostly) you can create a functional index (an index based 
on a function), but it’s the equivalent creating a second column that’s always 
lower and maintaining an index on it.  The difference being that the database 
maintains it for you (which is usually annoying for EOF).

I’ve always wanted a better way to do this too.

-Lon

On Wed, Feb 24, 2016 at 5:13 PM, Paul Hoadley 
> wrote:
Hello,

Say you have a web application where the login identifier is the user’s email 
address. This works in the conventional way: the user supplies that address at 
sign-up, and it serves two in-app functions: login identifier, and actual email 
address to which notifications can be sent. This is a fairly common pattern 
among some large, modern web apps.

It turns out that not everyone understands case sensitivity. We are seeing 
login failures in the wild because a user that signed up as 
“pa...@logicsquad.net” is now trying to log in 
with “pa...@logicsquad.net”, or vice versa. Here 
are some facts:

1. It would seem to be at least reasonably common for modern web apps that use 
email addresses as login identifiers to ignore case at login time. (For 
example, I tested a couple I had open in browser tabs: Strava and Bitbucket 
ignore case.)

2. Although the domain part of an email address is case-insensitive, my 
understanding is that the relevant RFCs suggest that you shouldn’t make 
assumptions about the local part. While everything I’ve read claims that in 
practice it will make no difference, let’s assume that we need to preserve the 
address as entered at sign-up. (It’s fail-safe to do so, whether we strictly 
need to or not.)

So, 1 is our aim: ignore case on the login identifier at login time. But 
because of 2, we don’t want to, say, normalise the email address given at 
sign-up to lower case and just store that, on the off chance that it makes a 
difference for mail delivery for that particular user. (Again, it probably 
won’t, but let’s assume that it could for the exercise.)

What are our options for finding the right User entity at login time?

1. We can jump in and naively use a CaseInsensitiveLike qualifier, but then a 
user can stick ‘?’ and ‘*’ wildcards in the input. We could strip those out, 
but they’re actually both valid characters in the local part. I stopped short 
of trying to escape them, as this route is starting to seem a little dangerous.

2. We could track both the supplied and a lower-cased version of the identifier 
in separate attributes. This has the advantage of presumably working, but it’s 
awkward, requiring special attention to changing the normalised attribute when 
the 

Re: Report Generator

2015-11-09 Thread Morris, Mark
Although we have a lot of custom code for allowing users to define reports, 
schedule them, run them asynchronously on a mirrored database, etc., for the 
actual output we use ReportMill. It’s commercial, but with its combination of 
having a desktop gui tool to very quickly layout new reports, the introspection 
it uses to let that tool know all about your java objects, and its use of java 
objects instead of SQL queries, it fits well into the WO way of working. Not 
for every use case, but for many it’s really nice.

— Mark

On Nov 9, 2015, at 1:51 PM, Theodore Petrosky 
> wrote:

I have been using ERJasperReports for quite some time and it works great for my 
needs. Are you able to use Wonder? What about ERPDFGeneration?



On Nov 9, 2015, at 12:23 PM, Oscar González 
> wrote:

Hi,
I'm looking for a report generator, I use WOJasperAccess framework for some of 
my reports, I try with DRGrouping and WRReporting frameworks, what is the 
status of this frameworks? is out there a wonder better solution? what are you 
using for report generator?.

Thanks in advance.

Oscar.

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/tedpet5%40yahoo.com

This email sent to tedp...@yahoo.com

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Eclipse 4.5 (Mars)

2015-07-06 Thread Morris, Mark
Same here, the 4.4 branch of WOLips is working fine with Eclipse Mars.

— Mark

On Jul 6, 2015, at 3:08 PM, Hugi Thordarson 
h...@karlmenn.ismailto:h...@karlmenn.is wrote:

I’m using the 4.4 branch, seems to work just fine.

- hugi



On 6. júl. 2015, at 20:06, Ramsey Gurley 
rgur...@smarthealth.commailto:rgur...@smarthealth.com wrote:

Just waiting on a WOLips45 on 
jenkins.wocommunity.orghttp://jenkins.wocommunity.org/ here. I assume 
WOLips44 doesn’t work on Mars.

On Jul 6, 2015, at 12:26 PM, Hugi Thordarson 
h...@karlmenn.ismailto:h...@karlmenn.is wrote:

Almost two weeks running Eclipse Mars, everything works perfectly and WOLips is 
problem free. Just wanted to chime in if anyone is hesitating on that upgrade.

- hugi
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.commailto:Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/rgurley%40smarthealth.com

This email sent to rgur...@smarthealth.commailto:rgur...@smarthealth.com


___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.commailto:Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: On SQL fully qualified names and how to implement them in EO models

2015-05-05 Thread Morris, Mark
Hi Angelo,

I don’t really have anything constructive to add to what others have already 
said. I’ve always had a app user database login, separate from the table 
owner(s). (This allows you to restrict what the app can do, such as only insert 
into audit tables.) Then, in Oracle anyway, you can create a synonym in the app 
user schema to point to the table, no matter which schema it’s in. Another 
option, if they’re all in a single table owner schema, is you can set a 
default schema name for the app user.

You have the flexibility to get as custom as you need to. For example, I had 
another application once where the table names actually had to be changed 
dynamically (not my design!). The schema for most of the tables was repeated 
over a hundred times, once for each customer, with a different suffix. Instead 
of modeling it over and over I intervened in the SQL generation to substitute 
the currently active customer suffix. The result hid all of the complexity 
nicely.

Anyway, good luck with your project. :-)

Regards,
Mark

On May 4, 2015, at 7:04 PM, Ângelo Andrade Cirino aacir...@gmail.com wrote:

 Hi Mark,
 
 I thought about it too, but it would be a non-standard solution, since each 
 developer could use a name for the property. To be more precise, I abandoned 
 this idea after working to change the FrontBase plug-in and SQLHelper to use 
 EOSchemaSynchronizationFactory. The code that will use the schema name 
 property is so deep down in the Wonder framework that using a non-standard 
 property name could lead to serious problems.
 
 What’s your opinion on the validity of adding the schema name as an explicit 
 property for entities? Is it worth the effort?
 
 Angelo
 


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: On SQL fully qualified names and how to implement them in EO models

2015-05-04 Thread Morris, Mark
On May 4, 2015, at 6:42 PM, Ângelo Andrade Cirino aacir...@gmail.com wrote:

 Another possibility, more explicit and more direct, would be to have a new 
 field in Entity Modeler to insert the schema name. This way we would have an 
 entity property that could be directly used to build SQL with the schema 
 name. It would make the SQL generation code non-ambiguous and less error 
 prone.

Don’t forget about the built-in userInfo dictionary in EOEntity (which has 
support in Entity Modeler). That seems like a logical place for extra info like 
this.

Regards,
Mark


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

wocommunity.org status

2015-03-06 Thread Morris, Mark
Is wocommunity.org down? It’s timing out for me. Thanks!

— Mark


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: EO Modeling tool?

2014-10-23 Thread Morris, Mark
I just drag the model onto the OmniGraffle icon on the dock.

On Oct 23, 2014, at 12:53 PM, Ken Anderson 
kenli...@anderhome.commailto:kenli...@anderhome.com wrote:

Really?  I couldn't get 5 to open an eomodel. Any tricks?



On Oct 23, 2014, at 10:56 AM, CHRISTOPH WICK | i4innovation GmbH, Bonn 
c...@i4innovation.demailto:c...@i4innovation.de wrote:

I can't speak for the latest version (6), but my 5.4.4 can still display EO 
Models.

OmniGraffle is also my favorite diagram tool since Diagram.app disappeared with 
NeXT ;-)

C.U.CW
--
The three great virtues of a programmer are Laziness, Impatience and Hubris. 
(Randal Schwartz)

On 23.10.2014, at 16:44, Ken Anderson 
kenli...@anderhome.commailto:kenli...@anderhome.com wrote:

An excellent recommendation.  And, if you have OmniGraffle 4, it will actually 
open the eomodeld and create an initial graphic.  I *wish* they had kept this 
feature in later version!

On Oct 23, 2014, at 10:41 AM, Paul Yu p...@mac.commailto:p...@mac.com wrote:

Omni graffle

Sent from my iPad

On Oct 23, 2014, at 10:40 AM, Calven Eggert 
cegg...@uhnresearch.camailto:cegg...@uhnresearch.ca wrote:

Hi, Fellow WOers

What are people using these days to create diagrams from the EO models?

Calven


___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.commailto:Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/pyu%40mac.com

This email sent to p...@mac.com
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.commailto:Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/kenlists%40anderhome.com

This email sent to kenli...@anderhome.com


___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.commailto:Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/cw%40i4innovation.de

This email sent to c...@i4innovation.de

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.commailto:Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/kenlists%40anderhome.com

This email sent to kenli...@anderhome.commailto:kenli...@anderhome.com

___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.commailto:Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com

This email sent to mark.mor...@experian.commailto:mark.mor...@experian.com

 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Relationships: when NOT no to flatten

2014-10-20 Thread Morris, Mark
Correct! :-)

Flattening would only be useful if you wanted to logically have the 
relationship:

Quote --- Product

Since there is actual information in the QuotedProduct join table, you don’t 
want to flatten.

Regards,
Mark

On Oct 20, 2014, at 2:41 PM, Flavio Donadio fla...@donadio.com.br wrote:

 Hello, people!
 
 
 I am experimenting a little more... and hitting some roadblocks!
 
 Example: I have these entities called Product and Quote. A Quote has many 
 products. But each quoted product has more information, like price, quantity 
 and lead time. So, I am using this QuotedProduct entity, which binds the 
 Product id, the Quote id and the other information.
 
 The relationship could be expressed like this:
 
 Quote --- QuotedProduct --- Product
 
 I understand I shouldn't flatten any of these relationships. Am I right?
 
 
 Cheers,
 Flavio
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
 
 This email sent to mark.mor...@experian.com


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Re: Globally inspecting and conditionally altering fetch spec

2013-06-12 Thread Morris, Mark
Hi Maik,

We're using partitioning on most of our larger tables. Usually the root entity 
on any fetch spec will have a qualifier that will enable the database to make 
use of partition pruning. However, any of the various joined tables in 
generated SQL that should also be able to use partition pruning won't have the 
qualifier, and so performance suffers significantly.

We've gotten by with solutions for specific queries, but I'm hoping to solve 
the general case for any generated SQL. So my thought is, check the root entity 
for the partitioning attribute. If it's there, check the qualifier and grab the 
value if it's included. If so, loop through the joined tables, checking for the 
attribute, and add the qualifier to the fetch spec for each one that has it.

This is obviously very implementation specific, so that's another reason it 
would be nice if all the code involved was centralized in one spot.

Thanks for taking a look!

Regards,
Mark

On Jun 12, 2013, at 4:43 AM, Musall Maik m...@selbstdenker.ag
 wrote:

 Hi Mark,
 
 out of curiosity, what kind of condition are you checking the queries for?
 
 You already ruled out the chance to prevent those from being generated like 
 that in the first place?
 
 Maik
 
 
 Am 11.06.2013 um 20:59 schrieb Morris, Mark mark.mor...@experian.com:
 
 The why is optimization. By altering the qualifier, I can greatly improve 
 performance of these queries (say 20x).
 
 The what is just that, I need to watch for a certain class of queries, and 
 if I see one, alter its qualifier, then let it continue processing.
 
 Thanks again!
 
 -- Mark
 
 On Jun 11, 2013, at 1:50 PM, George Domurot masterm...@knuckleheads.net 
 wrote:
 
 Well then, ya got me. I'm not sure I understand the why/what you're trying 
 to accomplish.
 
 -G
 
 
 On Jun 11, 2013, at 11:23 AM, Morris, Mark mark.mor...@experian.com 
 wrote:
 
 Thanks for the response! :-) Aren't those classes usually used explicitly? 
 I'm hoping to watch every single fetch that's generated and pick and 
 choose the ones I want to alter.
 
 -- Mark
 
 On Jun 11, 2013, at 1:18 PM, George Domurot masterm...@knuckleheads.net
 wrote:
 
 You may want to take a peak at ERXFetchSpecificationBatchIterator or 
 ERXBatchingDisplayGroup.
 
 -G
 
 
 
 On Jun 11, 2013, at 10:41 AM, Morris, Mark mark.mor...@experian.com 
 wrote:
 
 Hi all,
 
 If I want to check for a certain class of query, then alter the 
 qualifier before the fetch is executed, any suggestions for the best 
 approach? So far what I've come up with is registering for 
 EOEditingContext.Delegate's editingContextShouldFetchObjects, then 
 performing the fetch from there if the fetch spec matches my conditions.
 
 Thanks for any advice!
 
 Regards,
 Mark
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/mastermind%40knuckleheads.net
 
 This email sent to masterm...@knuckleheads.net
 
 
 
 
 
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/maik%40selbstdenker.ag
 
 This email sent to m...@selbstdenker.ag
 
 
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/mark.morris%40experian.com
 
 This email sent to mark.mor...@experian.com


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Globally inspecting and conditionally altering fetch spec

2013-06-12 Thread Morris, Mark
Right, that's what gave me some pause. It looks like, if I want to use a 
different fetch spec, I need to do the fetch myself in the delegate method and 
return the results. It would be nice if there was someplace where inspecting 
and changing the fetch spec was an okay thing to do.

Thanks again!
Mark

On Jun 11, 2013, at 7:14 PM, Chuck Hill ch...@global-village.net wrote:

 I don't think that either method intends for you to change the fetch spec.  
 This documentation is just more explicit.  The EC one is probably safer to do 
 that in.
 
 Chuck
 
 
 On 2013-06-11, at 5:03 PM, Morris, Mark wrote:
 
 Yeah, since I need to modify the fetchSpec's qualifier I guess this one 
 won't work. Looks like EOEditingContext.Delegate's 
 editingContextShouldFetchObjects is the best bet. Thanks!
 -- Mark
 
 On Jun 11, 2013, at 2:14 PM, Chuck Hill ch...@global-village.net wrote:
 
 EODatabaseContext.Delegate is another option:
 
 boolean databaseContextShouldSelectObjects(EODatabaseContext dbCtxt, 
 EOFetchSpecification fetchSpec, EODatabaseChannel dbChannel)
 
 Invoked from the EODatabaseChannel method 
 selectObjectsWithFetchSpecification to tell the delegate that the database 
 channel dbChannel will select objects on behalf of the database context 
 dbCtxt as specified by fetchSpec. If the delegate returns true, the channel 
 will proceed to select the object. If the delegate returns false (possibly 
 after issuing custom SQL against the adaptor) the channel will skip the 
 select and return immediately.
 
 The delegate should not modify fetchSpec's qualifier or fetch order.
 
 Parameters:
 dbCtxt - The database context.
 fetchSpec - The criteria to select and order a group of database records.
 dbChannel - The database channel.
 Returns:
 Should return true to allow the select to proceed, false to cause dbChannel 
 to return immediately.
 See Also:
 EODatabaseChannel.selectObjectsWithFetchSpecification( EOFetchSpecification 
 fetchSpecification, EOEditingContext context)
 
 
 
 On 2013-06-11, at 12:02 PM, Morris, Mark wrote:
 
 And as I mentioned, my initial thought is by using 
 EOEditingContext.Delegate's editingContextShouldFetchObjects, but I was 
 curious if anyone might know of any gotchas there or if there might be a 
 better approach.
 -- Mark
 
 On Jun 11, 2013, at 1:59 PM, Morris, Mark mark.mor...@experian.com 
 wrote:
 
 The why is optimization. By altering the qualifier, I can greatly improve 
 performance of these queries (say 20x).
 
 The what is just that, I need to watch for a certain class of queries, 
 and if I see one, alter its qualifier, then let it continue processing.
 
 Thanks again!
 
 -- Mark
 
 On Jun 11, 2013, at 1:50 PM, George Domurot masterm...@knuckleheads.net 
 wrote:
 
 Well then, ya got me. I'm not sure I understand the why/what you're 
 trying to accomplish.
 
 -G
 
 
 On Jun 11, 2013, at 11:23 AM, Morris, Mark mark.mor...@experian.com 
 wrote:
 
 Thanks for the response! :-) Aren't those classes usually used 
 explicitly? I'm hoping to watch every single fetch that's generated and 
 pick and choose the ones I want to alter.
 
 -- Mark
 
 On Jun 11, 2013, at 1:18 PM, George Domurot 
 masterm...@knuckleheads.net
 wrote:
 
 You may want to take a peak at ERXFetchSpecificationBatchIterator or 
 ERXBatchingDisplayGroup.
 
 -G
 
 
 
 On Jun 11, 2013, at 10:41 AM, Morris, Mark 
 mark.mor...@experian.com wrote:
 
 Hi all,
 
 If I want to check for a certain class of query, then alter the 
 qualifier before the fetch is executed, any suggestions for the best 
 approach? So far what I've come up with is registering for 
 EOEditingContext.Delegate's editingContextShouldFetchObjects, then 
 performing the fetch from there if the fetch spec matches my 
 conditions.
 
 Thanks for any advice!
 
 Regards,
 Mark
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/mastermind%40knuckleheads.net
 
 This email sent to masterm...@knuckleheads.net
 
 
 
 
 
 
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
 
 This email sent to ch...@global-village.net
 
 -- 
 Chuck Hill 
 Executive Managing Partner, VP Development and Technical Services
 
 Practical WebObjects - for developers who want to increase their overall 
 knowledge of WebObjects or who are trying to solve specific problems.
 http://www.global-village.net/gvc/practical_webobjects
 
 Global Village Consulting ranks 13th in 2012 in BIV's Top 100 Fastest 
 Growing Companies in B.C! 
 
 Global Village Consulting ranks 44th in 25th annual PROFIT 500

Re: Globally inspecting and conditionally altering fetch spec

2013-06-12 Thread Morris, Mark
I was looking for something like a delegate, but maybe just subclassing ERXEC 
and overriding objectsWithFetchSpecification would be a more straightforward 
way to go….

On Jun 12, 2013, at 10:51 AM, Morris, Mark mark.mor...@experian.com wrote:

 Right, that's what gave me some pause. It looks like, if I want to use a 
 different fetch spec, I need to do the fetch myself in the delegate method 
 and return the results. It would be nice if there was someplace where 
 inspecting and changing the fetch spec was an okay thing to do.
 
 Thanks again!
 Mark
 
 On Jun 11, 2013, at 7:14 PM, Chuck Hill ch...@global-village.net wrote:
 
 I don't think that either method intends for you to change the fetch spec.  
 This documentation is just more explicit.  The EC one is probably safer to 
 do that in.
 
 Chuck
 
 
 On 2013-06-11, at 5:03 PM, Morris, Mark wrote:
 
 Yeah, since I need to modify the fetchSpec's qualifier I guess this one 
 won't work. Looks like EOEditingContext.Delegate's 
 editingContextShouldFetchObjects is the best bet. Thanks!
 -- Mark
 
 On Jun 11, 2013, at 2:14 PM, Chuck Hill ch...@global-village.net wrote:
 
 EODatabaseContext.Delegate is another option:
 
 boolean databaseContextShouldSelectObjects(EODatabaseContext dbCtxt, 
 EOFetchSpecification fetchSpec, EODatabaseChannel dbChannel)
 
 Invoked from the EODatabaseChannel method 
 selectObjectsWithFetchSpecification to tell the delegate that the database 
 channel dbChannel will select objects on behalf of the database context 
 dbCtxt as specified by fetchSpec. If the delegate returns true, the 
 channel will proceed to select the object. If the delegate returns false 
 (possibly after issuing custom SQL against the adaptor) the channel will 
 skip the select and return immediately.
 
 The delegate should not modify fetchSpec's qualifier or fetch order.
 
 Parameters:
 dbCtxt - The database context.
 fetchSpec - The criteria to select and order a group of database records.
 dbChannel - The database channel.
 Returns:
 Should return true to allow the select to proceed, false to cause 
 dbChannel to return immediately.
 See Also:
 EODatabaseChannel.selectObjectsWithFetchSpecification( 
 EOFetchSpecification fetchSpecification, EOEditingContext context)
 
 
 
 On 2013-06-11, at 12:02 PM, Morris, Mark wrote:
 
 And as I mentioned, my initial thought is by using 
 EOEditingContext.Delegate's editingContextShouldFetchObjects, but I was 
 curious if anyone might know of any gotchas there or if there might be a 
 better approach.
 -- Mark
 
 On Jun 11, 2013, at 1:59 PM, Morris, Mark mark.mor...@experian.com 
 wrote:
 
 The why is optimization. By altering the qualifier, I can greatly 
 improve performance of these queries (say 20x).
 
 The what is just that, I need to watch for a certain class of queries, 
 and if I see one, alter its qualifier, then let it continue processing.
 
 Thanks again!
 
 -- Mark
 
 On Jun 11, 2013, at 1:50 PM, George Domurot 
 masterm...@knuckleheads.net wrote:
 
 Well then, ya got me. I'm not sure I understand the why/what you're 
 trying to accomplish.
 
 -G
 
 
 On Jun 11, 2013, at 11:23 AM, Morris, Mark mark.mor...@experian.com 
 wrote:
 
 Thanks for the response! :-) Aren't those classes usually used 
 explicitly? I'm hoping to watch every single fetch that's generated 
 and pick and choose the ones I want to alter.
 
 -- Mark
 
 On Jun 11, 2013, at 1:18 PM, George Domurot 
 masterm...@knuckleheads.net
 wrote:
 
 You may want to take a peak at ERXFetchSpecificationBatchIterator or 
 ERXBatchingDisplayGroup.
 
 -G
 
 
 
 On Jun 11, 2013, at 10:41 AM, Morris, Mark 
 mark.mor...@experian.com wrote:
 
 Hi all,
 
 If I want to check for a certain class of query, then alter the 
 qualifier before the fetch is executed, any suggestions for the best 
 approach? So far what I've come up with is registering for 
 EOEditingContext.Delegate's editingContextShouldFetchObjects, then 
 performing the fetch from there if the fetch spec matches my 
 conditions.
 
 Thanks for any advice!
 
 Regards,
 Mark
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/mastermind%40knuckleheads.net
 
 This email sent to masterm...@knuckleheads.net
 
 
 
 
 
 
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
 
 This email sent to ch...@global-village.net
 
 -- 
 Chuck Hill 
 Executive Managing Partner, VP Development and Technical Services
 
 Practical WebObjects - for developers who want to increase their overall 
 knowledge of WebObjects or who are trying

Globally inspecting and conditionally altering fetch spec

2013-06-11 Thread Morris, Mark
Hi all,

If I want to check for a certain class of query, then alter the qualifier 
before the fetch is executed, any suggestions for the best approach? So far 
what I've come up with is registering for EOEditingContext.Delegate's 
editingContextShouldFetchObjects, then performing the fetch from there if the 
fetch spec matches my conditions.

Thanks for any advice!

Regards,
Mark
 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Globally inspecting and conditionally altering fetch spec

2013-06-11 Thread Morris, Mark
Thanks for the response! :-) Aren't those classes usually used explicitly? I'm 
hoping to watch every single fetch that's generated and pick and choose the 
ones I want to alter.

-- Mark

On Jun 11, 2013, at 1:18 PM, George Domurot masterm...@knuckleheads.net
 wrote:

 You may want to take a peak at ERXFetchSpecificationBatchIterator or 
 ERXBatchingDisplayGroup.
 
 -G
 
 
 
 On Jun 11, 2013, at 10:41 AM, Morris, Mark mark.mor...@experian.com wrote:
 
 Hi all,
 
 If I want to check for a certain class of query, then alter the qualifier 
 before the fetch is executed, any suggestions for the best approach? So far 
 what I've come up with is registering for EOEditingContext.Delegate's 
 editingContextShouldFetchObjects, then performing the fetch from there if 
 the fetch spec matches my conditions.
 
 Thanks for any advice!
 
 Regards,
 Mark
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/mastermind%40knuckleheads.net
 
 This email sent to masterm...@knuckleheads.net
 


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Globally inspecting and conditionally altering fetch spec

2013-06-11 Thread Morris, Mark
The why is optimization. By altering the qualifier, I can greatly improve 
performance of these queries (say 20x).

The what is just that, I need to watch for a certain class of queries, and if I 
see one, alter its qualifier, then let it continue processing.

Thanks again!

-- Mark

On Jun 11, 2013, at 1:50 PM, George Domurot masterm...@knuckleheads.net wrote:

 Well then, ya got me. I'm not sure I understand the why/what you're trying to 
 accomplish.
 
 -G
 
 
 On Jun 11, 2013, at 11:23 AM, Morris, Mark mark.mor...@experian.com wrote:
 
 Thanks for the response! :-) Aren't those classes usually used explicitly? 
 I'm hoping to watch every single fetch that's generated and pick and choose 
 the ones I want to alter.
 
 -- Mark
 
 On Jun 11, 2013, at 1:18 PM, George Domurot masterm...@knuckleheads.net
 wrote:
 
 You may want to take a peak at ERXFetchSpecificationBatchIterator or 
 ERXBatchingDisplayGroup.
 
 -G
 
 
 
 On Jun 11, 2013, at 10:41 AM, Morris, Mark mark.mor...@experian.com 
 wrote:
 
 Hi all,
 
 If I want to check for a certain class of query, then alter the qualifier 
 before the fetch is executed, any suggestions for the best approach? So 
 far what I've come up with is registering for EOEditingContext.Delegate's 
 editingContextShouldFetchObjects, then performing the fetch from there if 
 the fetch spec matches my conditions.
 
 Thanks for any advice!
 
 Regards,
 Mark
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/mastermind%40knuckleheads.net
 
 This email sent to masterm...@knuckleheads.net
 
 
 


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Globally inspecting and conditionally altering fetch spec

2013-06-11 Thread Morris, Mark
And as I mentioned, my initial thought is by using EOEditingContext.Delegate's 
editingContextShouldFetchObjects, but I was curious if anyone might know of any 
gotchas there or if there might be a better approach.
-- Mark

On Jun 11, 2013, at 1:59 PM, Morris, Mark mark.mor...@experian.com wrote:

 The why is optimization. By altering the qualifier, I can greatly improve 
 performance of these queries (say 20x).
 
 The what is just that, I need to watch for a certain class of queries, and if 
 I see one, alter its qualifier, then let it continue processing.
 
 Thanks again!
 
 -- Mark
 
 On Jun 11, 2013, at 1:50 PM, George Domurot masterm...@knuckleheads.net 
 wrote:
 
 Well then, ya got me. I'm not sure I understand the why/what you're trying 
 to accomplish.
 
 -G
 
 
 On Jun 11, 2013, at 11:23 AM, Morris, Mark mark.mor...@experian.com 
 wrote:
 
 Thanks for the response! :-) Aren't those classes usually used explicitly? 
 I'm hoping to watch every single fetch that's generated and pick and choose 
 the ones I want to alter.
 
 -- Mark
 
 On Jun 11, 2013, at 1:18 PM, George Domurot masterm...@knuckleheads.net
 wrote:
 
 You may want to take a peak at ERXFetchSpecificationBatchIterator or 
 ERXBatchingDisplayGroup.
 
 -G
 
 
 
 On Jun 11, 2013, at 10:41 AM, Morris, Mark mark.mor...@experian.com 
 wrote:
 
 Hi all,
 
 If I want to check for a certain class of query, then alter the qualifier 
 before the fetch is executed, any suggestions for the best approach? So 
 far what I've come up with is registering for EOEditingContext.Delegate's 
 editingContextShouldFetchObjects, then performing the fetch from there if 
 the fetch spec matches my conditions.
 
 Thanks for any advice!
 
 Regards,
 Mark
 ___
 Do not post admin requests to the list. They will be ignored.
 Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
 Help/Unsubscribe/Update your Subscription:
 https://lists.apple.com/mailman/options/webobjects-dev/mastermind%40knuckleheads.net
 
 This email sent to masterm...@knuckleheads.net
 
 
 
 


 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com


Re: Globally inspecting and conditionally altering fetch spec

2013-06-11 Thread Morris, Mark
Yeah, since I need to modify the fetchSpec's qualifier I guess this one won't 
work. Looks like EOEditingContext.Delegate's editingContextShouldFetchObjects 
is the best bet. Thanks!
-- Mark

On Jun 11, 2013, at 2:14 PM, Chuck Hill 
ch...@global-village.netmailto:ch...@global-village.net wrote:

EODatabaseContext.Delegate is another option:

boolean databaseContextShouldSelectObjects(EODatabaseContext dbCtxt, 
EOFetchSpecification fetchSpec, EODatabaseChannel dbChannel)

Invoked from the EODatabaseChannel method selectObjectsWithFetchSpecification 
to tell the delegate that the database channel dbChannel will select objects on 
behalf of the database context dbCtxt as specified by fetchSpec. If the 
delegate returns true, the channel will proceed to select the object. If the 
delegate returns false (possibly after issuing custom SQL against the adaptor) 
the channel will skip the select and return immediately.

The delegate should not modify fetchSpec's qualifier or fetch order.

Parameters:
dbCtxt - The database context.
fetchSpec - The criteria to select and order a group of database records.
dbChannel - The database channel.
Returns:
Should return true to allow the select to proceed, false to cause dbChannel to 
return immediately.
See Also:
EODatabaseChannel.selectObjectsWithFetchSpecification( EOFetchSpecification 
fetchSpecification, EOEditingContext context)



On 2013-06-11, at 12:02 PM, Morris, Mark wrote:

And as I mentioned, my initial thought is by using EOEditingContext.Delegate's 
editingContextShouldFetchObjects, but I was curious if anyone might know of any 
gotchas there or if there might be a better approach.
-- Mark

On Jun 11, 2013, at 1:59 PM, Morris, Mark 
mark.mor...@experian.commailto:mark.mor...@experian.com wrote:

The why is optimization. By altering the qualifier, I can greatly improve 
performance of these queries (say 20x).

The what is just that, I need to watch for a certain class of queries, and if I 
see one, alter its qualifier, then let it continue processing.

Thanks again!

-- Mark

On Jun 11, 2013, at 1:50 PM, George Domurot 
masterm...@knuckleheads.netmailto:masterm...@knuckleheads.net wrote:

Well then, ya got me. I'm not sure I understand the why/what you're trying to 
accomplish.

-G


On Jun 11, 2013, at 11:23 AM, Morris, Mark 
mark.mor...@experian.commailto:mark.mor...@experian.com wrote:

Thanks for the response! :-) Aren't those classes usually used explicitly? I'm 
hoping to watch every single fetch that's generated and pick and choose the 
ones I want to alter.

-- Mark

On Jun 11, 2013, at 1:18 PM, George Domurot 
masterm...@knuckleheads.netmailto:masterm...@knuckleheads.net
wrote:

You may want to take a peak at ERXFetchSpecificationBatchIterator or 
ERXBatchingDisplayGroup.

-G



On Jun 11, 2013, at 10:41 AM, Morris, Mark 
mark.mor...@experian.commailto:mark.mor...@experian.com wrote:

Hi all,

If I want to check for a certain class of query, then alter the qualifier 
before the fetch is executed, any suggestions for the best approach? So far 
what I've come up with is registering for EOEditingContext.Delegate's 
editingContextShouldFetchObjects, then performing the fetch from there if the 
fetch spec matches my conditions.

Thanks for any advice!

Regards,
Mark
___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.commailto:Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/mastermind%40knuckleheads.net

This email sent to 
masterm...@knuckleheads.netmailto:masterm...@knuckleheads.net






___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  
(Webobjects-dev@lists.apple.commailto:Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net

This email sent to ch...@global-village.netmailto:ch...@global-village.net

--
Chuck Hill
Executive Managing Partner, VP Development and Technical Services

Practical WebObjects - for developers who want to increase their overall 
knowledge of WebObjects or who are trying to solve specific problems.
http://www.global-village.net/gvc/practical_webobjects

Global Village Consulting ranks 13th in 2012 in BIV's Top 100 Fastest Growing 
Companies in B.C!

Global Village Consulting ranks 44th in 25th annual PROFIT 500 ranking of 
Canada’s Fastest-Growing Companies by PROFIT Magazine!













 ___
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list  (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com