|
|
Subject: Re: [HtmlUnit] [VOTE] New committer Daniel Gredler - msg#00073
List: java.htmlunit.devel
Was this page helpful?
Thread at a glance:
Previous Message by Date:
click to view message preview
[HtmlUnit] [ htmlunit-Feature Requests-1204628 ] implement XMLHttpRequest.overrideMimeType
Feature Requests item #1204628, was opened at 2005-05-19 01:28
Message generated for change (Comment added) made by mguillem
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=448269&aid=1204628&group_id=47038
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
>Status: Closed
Priority: 5
Private: No
Submitted By: Ray Suliteanu (raysuliteanu)
>Assigned to: Marc Guillemot (mguillem)
Summary: implement XMLHttpRequest.overrideMimeType
Initial Comment:
There are two differing descriptions of XMLHttpRequest,
the one currently supported in version 1.6 described at
http://developer.apple.com/internet/webcontent/xmlhttpreq.html
and another one at
http://xulplanet.com/references/objref/XMLHttpRequest.html.
The latter has at least one additional method (I
haven't done an exhaustive comparison) which therefore
causes htmlunit to fail since it is not defined.
Naturally I'm trying to test a page that uses it.
Copying the description from the page ...
void overrideMimeType ( AUTF8String mimetype )
Override the mime type returned by the server (if any).
This may be used, for example, to force a stream to be
treated and parsed as text/xml, even if the server does
not report it as such. This must be done before the
send method is invoked.
Arguments:
mimetype: The type used to override that returned
by the server (if any).
It would be nice if htmlunit supported this as well.
----------------------------------------------------------------------
>Comment By: Marc Guillemot (mguillem)
Date: 2006-11-13 13:12
Message:
Logged In: YES
user_id=402164
Now fixed in SVN.
----------------------------------------------------------------------
Comment By: Marc Guillemot (mguillem)
Date: 2006-03-24 08:43
Message:
Logged In: YES
user_id=402164
I guess that it is not difficult to add. Can you provide a
unit test? This would make the job easier for us because we
wouldn't have both to implement and check if the implemented
behavior is correct.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=448269&aid=1204628&group_id=47038
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
Next Message by Date:
click to view message preview
[HtmlUnit] [ htmlunit-Bugs-1579753 ] JavaScriptBackgroundJob run exception in Window.setTimeout()
Bugs item #1579753, was opened at 2006-10-18 16:46
Message generated for change (Comment added) made by oliviermir
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=448266&aid=1579753&group_id=47038
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Closed
Resolution: Invalid
Priority: 5
Private: No
Submitted By: Olivier Cailloux (oliviermir)
Assigned to: Marc Guillemot (mguillem)
Summary: JavaScriptBackgroundJob run exception in Window.setTimeout()
Initial Comment:
Hi,
Thanks for the great job about HTML Unit.
We are currently reviewing the package for use in our
service. It works allright on several web sites... But...
I tried on the isiknowledge website (very complicated,
with frames, cookies, javascript) and can't correctly
simulate here.
This is what I'd like to simulate:
1. load the JCR webpage, that's at
http://portal.isiknowledge.com/portal.cgi?DestApp=JCR&Func=Frame
2. leaving the form as is, press the submit "button"
(which is in fact an image representing a button)
3. I should then reach a page which allows me to choose
a category.
Unfortunately, after simulating the "button" press, I
get an exception. And the page that is reached in the
code is a redirecting page while I was excpecting to
see the "Subject Category Selection" page (this is
probalby due to the onLoad script not working correctly).
Any help is appreciated!
Exception follows, and output of the program and java
test code are attached.
18-oct.-2006 16:24:31
com.gargoylesoftware.htmlunit.javascript.host.JavaScriptBackgroundJob
run
GRAVE: Caught exception in Window.setTimeout()
======= EXCEPTION START ========
Exception class=[org.mozilla.javascript.WrappedException]
com.gargoylesoftware.htmlunit.ScriptException: Wrapped
org.apache.xerces.xni.XNIException (Wrapper definition
for JavaScriptBackgroundJob#1)
at
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:253)
at
com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:695)
at
com.gargoylesoftware.htmlunit.javascript.host.JavaScriptBackgroundJob.run(JavaScriptBackgroundJob.java:106)
at java.lang.Thread.run(Thread.java:595)
at
com.gargoylesoftware.htmlunit.ThreadManager$1.run(ThreadManager.java:101)
Caused by: org.mozilla.javascript.WrappedException:
Wrapped org.apache.xerces.xni.XNIException (Wrapper
definition for JavaScriptBackgroundJob#1)
at
org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1693)
at
org.mozilla.javascript.MemberBox.invoke(MemberBox.java:157)
at
org.mozilla.javascript.ScriptableObject.setBySetter(ScriptableObject.java:1704)
at
org.mozilla.javascript.ScriptableObject.put(ScriptableObject.java:239)
at
com.gargoylesoftware.htmlunit.javascript.SimpleScriptable.put(SimpleScriptable.java:270)
at
org.mozilla.javascript.ScriptableObject.putProperty(ScriptableObject.java:1396)
at
org.mozilla.javascript.ScriptRuntime.setObjectProp(ScriptRuntime.java:1432)
at
org.mozilla.javascript.ScriptRuntime.setObjectProp(ScriptRuntime.java:1422)
at
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:2824)
at
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2250)
at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:149)
at
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:337)
at
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2755)
at
org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:160)
at
org.mozilla.javascript.Context.evaluateString(Context.java:1132)
at
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:249)
... 4 more
Caused by: org.apache.xerces.xni.XNIException
at
org.cyberneko.html.HTMLScanner$ContentScanner.scan(HTMLScanner.java:1921)
at
org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:809)
at
org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:478)
at
org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:431)
at org.apache.xerces.parsers.XMLParser.parse(Unknown
Source)
at
com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.parse(HTMLParser.java:311)
at
com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:226)
at
com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:112)
at
com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:85)
at
com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:431)
at
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:335)
at
com.gargoylesoftware.htmlunit.javascript.host.Window.jsxSet_location(Window.java:374)
at
com.gargoylesoftware.htmlunit.javascript.host.Location.jsxSet_href(Location.java:174)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.mozilla.javascript.MemberBox.invoke(MemberBox.java:142)
... 18 more
WrappedException:
org.mozilla.javascript.WrappedException: Wrapped
org.apache.xerces.xni.XNIException (Wrapper definition
for JavaScriptBackgroundJob#1)
at
org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1693)
at
org.mozilla.javascript.MemberBox.invoke(MemberBox.java:157)
at
org.mozilla.javascript.ScriptableObject.setBySetter(ScriptableObject.java:1704)
at
org.mozilla.javascript.ScriptableObject.put(ScriptableObject.java:239)
at
com.gargoylesoftware.htmlunit.javascript.SimpleScriptable.put(SimpleScriptable.java:270)
at
org.mozilla.javascript.ScriptableObject.putProperty(ScriptableObject.java:1396)
at
org.mozilla.javascript.ScriptRuntime.setObjectProp(ScriptRuntime.java:1432)
at
org.mozilla.javascript.ScriptRuntime.setObjectProp(ScriptRuntime.java:1422)
at
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:2824)
at script.GargoyleWrapper1(Wrapper definition for
JavaScriptBackgroundJob:1)
at script(JavaScriptBackgroundJob:1)
at
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2250)
at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:149)
at
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:337)
at
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2755)
at
org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:160)
at
org.mozilla.javascript.Context.evaluateString(Context.java:1132)
at
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:249)
at
com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:695)
at
com.gargoylesoftware.htmlunit.javascript.host.JavaScriptBackgroundJob.run(JavaScriptBackgroundJob.java:106)
at java.lang.Thread.run(Thread.java:595)
at
com.gargoylesoftware.htmlunit.ThreadManager$1.run(ThreadManager.java:101)
Caused by: org.apache.xerces.xni.XNIException
at
org.cyberneko.html.HTMLScanner$ContentScanner.scan(HTMLScanner.java:1921)
at
org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:809)
at
org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:478)
at
org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:431)
at org.apache.xerces.parsers.XMLParser.parse(Unknown
Source)
at
com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.parse(HTMLParser.java:311)
at
com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:226)
at
com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:112)
at
com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:85)
at
com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:431)
at
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:335)
at
com.gargoylesoftware.htmlunit.javascript.host.Window.jsxSet_location(Window.java:374)
at
com.gargoylesoftware.htmlunit.javascript.host.Location.jsxSet_href(Location.java:174)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.mozilla.javascript.MemberBox.invoke(MemberBox.java:142)
... 18 more
Inside wrapped exception:
org.apache.xerces.xni.XNIException
at
org.cyberneko.html.HTMLScanner$ContentScanner.scan(HTMLScanner.java:1921)
at
org.cyberneko.html.HTMLScanner.scanDocument(HTMLScanner.java:809)
at
org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:478)
at
org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:431)
at org.apache.xerces.parsers.XMLParser.parse(Unknown
Source)
at
com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.parse(HTMLParser.java:311)
at
com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:226)
at
com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:112)
at
com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:85)
at
com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:431)
at
com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:335)
at
com.gargoylesoftware.htmlunit.javascript.host.Window.jsxSet_location(Window.java:374)
at
com.gargoylesoftware.htmlunit.javascript.host.Location.jsxSet_href(Location.java:174)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.mozilla.javascript.MemberBox.invoke(MemberBox.java:142)
at
org.mozilla.javascript.ScriptableObject.setBySetter(ScriptableObject.java:1704)
at
org.mozilla.javascript.ScriptableObject.put(ScriptableObject.java:239)
at
com.gargoylesoftware.htmlunit.javascript.SimpleScriptable.put(SimpleScriptable.java:270)
at
org.mozilla.javascript.ScriptableObject.putProperty(ScriptableObject.java:1396)
at
org.mozilla.javascript.ScriptRuntime.setObjectProp(ScriptRuntime.java:1432)
at
org.mozilla.javascript.ScriptRuntime.setObjectProp(ScriptRuntime.java:1422)
at
org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:2824)
at
org.mozilla.javascript.Interpreter.interpret(Interpreter.java:2250)
at
org.mozilla.javascript.InterpretedFunction.call(InterpretedFunction.java:149)
at
org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:337)
at
org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:2755)
at
org.mozilla.javascript.InterpretedFunction.exec(InterpretedFunction.java:160)
at
org.mozilla.javascript.Context.evaluateString(Context.java:1132)
at
com.gargoylesoftware.htmlunit.javascript.JavaScriptEngine.execute(JavaScriptEngine.java:249)
at
com.gargoylesoftware.htmlunit.html.HtmlPage.executeJavaScriptIfPossible(HtmlPage.java:695)
at
com.gargoylesoftware.htmlunit.javascript.host.JavaScriptBackgroundJob.run(JavaScriptBackgroundJob.java:106)
at java.lang.Thread.run(Thread.java:595)
at
com.gargoylesoftware.htmlunit.ThreadManager$1.run(ThreadManager.java:101)
== CALLING JAVASCRIPT ==
GargoyleWrapper1()
======= EXCEPTION END ========
----------------------------------------------------------------------
>Comment By: Olivier Cailloux (oliviermir)
Date: 2006-11-13 20:14
Message:
Logged In: YES
user_id=866169
Ok, I will ask to the discussion list when I return back to
this. I tried to wait for height seconds (while the page
loads almost immediately when doing it "manually")...
Thank you for your help once again.
----------------------------------------------------------------------
Comment By: Marc Guillemot (mguillem)
Date: 2006-11-09 10:29
Message:
Logged In: YES
user_id=402164
I close this issue as the original problem seem to have been
fixed.
Concerning your second problem, the mailing list is probably
the best place for discussion. Normally it should be handled
automatically. You probably have to wait to a bit after the
initial page load to "see" the new page loaded in the window.
----------------------------------------------------------------------
Comment By: Olivier Cailloux (oliviermir)
Date: 2006-11-06 21:25
Message:
Logged In: YES
user_id=866169
Great! With the htmlunit head, no exceptions any more. No
thread crashes. That's a different behavior as the one you
are observing, though (that's very strange)...
I love open source: at the moment you report a problem, it
is already solved ;-).
Unfortunately I still can't do what I'd like! I don't know
if it's a bug or if I'm doing something bad...
Indeed the page I reach contains this code:
function autoredirect() {
setTimeout("top.location.href='http://edc.isiknowledge.com/?DestApp=JCR&Func=Frame'",
0);
}
and
<body bgcolor="#FFFFFF"
onload="javascript:autoredirect()">
How can I reach the page which should "autoload"? From the
doc (http://htmlunit.sourceforge.net/javascript-howto.html,
end of page) I was expecting to reach it automatically, but
it's not the case...
I tried triggering "autoredirect()" manually (with
currentPage.executeJavaScriptIfPossible), and tried to
register a refresh handled on the web client, but without
success (not sure I did it properly though).
----------------------------------------------------------------------
Comment By: Marc Guillemot (mguillem)
Date: 2006-10-31 09:30
Message:
Logged In: YES
user_id=402164
I ran exactly the code you provided using the latest sources
from SVN. I can imagine that some js execution improvements
lead to another result but this is, in a first time, not
important. What now matters is what you get. How does it
behave by you with the latest sources from SVN?
----------------------------------------------------------------------
Comment By: Olivier Cailloux (oliviermir)
Date: 2006-10-30 18:18
Message:
Logged In: YES
user_id=866169
Hhhmmm that's VERY strange: the exception you are
mentionning (which indeed is different from mine) says that
there is no "isi_main" frame on the given site. But if you
go and check manually the provided site, you will see that
there is indeed such a frame. And my code, here, executes
fine (since several weeks) until the "click" try (which
produces the exception with a delay).
I can't understand why you don't observe the same behavior.
Are you sure you ran the exact same code?
----------------------------------------------------------------------
Comment By: Marc Guillemot (mguillem)
Date: 2006-10-30 17:33
Message:
Logged In: YES
user_id=402164
locally I don't see any js related exception with your code
but a
com.gargoylesoftware.htmlunit.ElementNotFoundException:
elementName=[frame or iframe] attributeName=[name]
attributeValue=[isi_main].
Can you get htmlunit from SVN and check again? If the
problem persists, try to debug
com.gargoylesoftware.htmlunit-ThreadManager#startThread to
investigate the thrown Exception.
----------------------------------------------------------------------
Comment By: Olivier Cailloux (oliviermir)
Date: 2006-10-26 08:54
Message:
Logged In: YES
user_id=866169
I run on java 5, but the thread handler is not taken into
account: when putting a breakpoint in my handling code (with
the change you suggested here), it never stops there.
I think that the exception is indeed handled somewhere in an
existing package: the marks "EXCEPTION START" - "EXCEPTION
END" does not look like a default java handler. As the
exception is handled, naturally my default handler is not
called.
I attach hereby a java file showing the problem, with the
handler.
----------------------------------------------------------------------
Comment By: Marc Guillemot (mguillem)
Date: 2006-10-25 16:46
Message:
Logged In: YES
user_id=402164
Do you run on java 5 or 1.4?
With 5 it is possible to use
Thread.setDefaultUncaughtExceptionHandler with a custom
exception handler that would explore the exception.
----------------------------------------------------------------------
Comment By: Olivier Cailloux (oliviermir)
Date: 2006-10-24 13:04
Message:
Logged In: YES
user_id=866169
Just in case this was not clear: I was referring to the
attached code snippet (Main2.java).
----------------------------------------------------------------------
Comment By: Olivier Cailloux (oliviermir)
Date: 2006-10-23 19:55
Message:
Logged In: YES
user_id=866169
Dear mguillem,
Unfortunately, no, I can't look at the orginal cause... Or I
don't know how to do it. Because the exception is raised in
a different thread than the main thread, and this other
thread is set up internally by I don't know exactly what
part of the code (anyway I can't change it). Indeed if I add
a "try / catch (RuntimeException e)" around the problematic
statement, it does not reach the catch part. (Other
illustration: if I remove the sleep statement, the exception
is never raised because - I suppose - the main thread exits
before the other one crashes.)
But isn't the original cause somewhere in the trace I pasted
here? If no, can I somehow access the part of the code where
the new thread is created and the error raised (maybe by
subclassing something, but what)?
----------------------------------------------------------------------
Comment By: Marc Guillemot (mguillem)
Date: 2006-10-18 22:10
Message:
Logged In: YES
user_id=402164
Can you look at the original cause of the XNIException.
Following should help:
static Throwable extractNestedException(final Throwable e) {
Throwable originalException = e;
Throwable cause = ((XNIException) e).getException();
while (cause != null) {
originalException = cause;
if (cause instanceof XNIException) {
cause = ((XNIException) cause).getException();
} else if (cause instanceof
InvocationTargetException) {
cause = cause.getCause();
} else {
cause = null;
}
}
return originalException;
}
----------------------------------------------------------------------
Comment By: Olivier Cailloux (oliviermir)
Date: 2006-10-18 16:54
Message:
Logged In: YES
user_id=866169
... joining the output of the program as a text file (easier
to read)...
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=448266&aid=1579753&group_id=47038
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
Previous Message by Thread:
click to view message preview
Re: [HtmlUnit] [VOTE] New committer Daniel Gredler
Marc Guillemot wrote:
> I want to propose Daniel Gredler as new committer for htmlunit.
+1
Daniel has been active here for a long time. I think he'd be a good
addition.
--
Mike Bowler
President, Gargoyle Software Inc.
Cell : (289) 385-0120
Website : http://www.GargoyleSoftware.com
Weblog : http://www.SphericalImprovement.com/blogs/mbowler/
LinkedIn: https://www.linkedin.com/in/mbowler
My Books: http://www.literarylist.com/list/mbowler
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
Next Message by Thread:
click to view message preview
[HtmlUnit] New committer Daniel Gredler
Vote results:
3x +1
Welcome to Daniel as new committer. I'm sure that with your help
htmlunit will now make giant steps!
Marc.
PS: Daniel, I've configured you as project member. You should now be
able to commit in SVN. If I've forgotten some settings, just mail me.
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
|
|