foxtrot-user Mailing List for Foxtrot
Brought to you by:
simonebordet
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
(1) |
Apr
(41) |
May
(24) |
Jun
(4) |
Jul
(16) |
Aug
(5) |
Sep
(10) |
Oct
(6) |
Nov
(21) |
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(11) |
Feb
(11) |
Mar
(8) |
Apr
(8) |
May
(4) |
Jun
(5) |
Jul
(6) |
Aug
|
Sep
|
Oct
(4) |
Nov
(11) |
Dec
(2) |
2004 |
Jan
(5) |
Feb
|
Mar
(6) |
Apr
(3) |
May
(4) |
Jun
(13) |
Jul
(1) |
Aug
(12) |
Sep
(10) |
Oct
(6) |
Nov
|
Dec
(5) |
2005 |
Jan
(4) |
Feb
(1) |
Mar
(22) |
Apr
(16) |
May
(17) |
Jun
(2) |
Jul
|
Aug
(2) |
Sep
|
Oct
(3) |
Nov
|
Dec
(13) |
2006 |
Jan
(3) |
Feb
(2) |
Mar
(6) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
|
Aug
(2) |
Sep
|
Oct
(3) |
Nov
(10) |
Dec
(3) |
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(3) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
2008 |
Jan
(3) |
Feb
(2) |
Mar
(13) |
Apr
|
May
|
Jun
(4) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
(2) |
Nov
|
Dec
|
2009 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(2) |
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
(2) |
Oct
(6) |
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Тихомиров В. <int...@ya...> - 2014-07-01 13:03:21
|
Hi, You basically talk to yourself and answer to yourself, thinking you have found the magic solution, but it is all wrong. > It takes just 1 line modification to your wonderful example to make the whole GUI freeze. I just tried the code. You code is not better. I can modify every line so that your code freezes or fails with exception. Incredable piece of shit! I could not believe that the provider of a library is so enchanting idiot. Remember, insulitng is not help, telling that your vis-a-vis is idiot is not a help. It does not even answer any question (I had a question rather than asked for help). But you won't be able to understand that. Thanks god that since Java 1.7 we do not need your shitty library. Bye. 26.06.2014, 13:27, "Simone Bordet" <sim...@gm...>: > Hi, > > On Thu, Jun 26, 2014 at 10:34 AM, Тихомиров Валентин <int...@ya...> wrote: >> What is not clear here? http://gamedev.stackexchange.com/questions/74346/driver-inversion > > Almost nothing. > You basically talk to yourself and answer to yourself, thinking you > have found the magic solution, but it is all wrong. >> The reason is the same as JFileChooser. Please argue that >> 1) we need a worker thread for JFileChooser and > > You do for non trivial operations. >> 2) we do not need to block the GUI thread until file is selected > > You don't. >> Explain me, how did I manage to get away with a single (GUI) thread, avoiding any worker threads, http://gamedev.stackexchange.com/a/76247/35556 > > Your example is so simple and actually so dumb that it's not even > worth explaining. > It takes just 1 line modification to your wonderful example to make > the whole GUI freeze. I just tried the code. >> For now, I feel like I am talking to an idiot rather than foxtrot developer. > > Your lack of understanding of the problem is sooo deep that it is like > trying to explain quantum mechanics to a 2 years old, except that here > the gui freeze problem is so much simpler. And still you don't > understand it. > > You don't even see the problem, you come up with wrong solutions, you > insult people that are trying to help you out. > Go figure. > > -- > Simone Bordet > http://bordet.blogspot.com > --- > Finally, no matter how good the architecture and design are, > to deliver bug-free software with optimal performance and reliability, > the implementation technique must be flawless. Victoria Livschitz |
From: Тихомиров В. <int...@ya...> - 2014-06-26 08:34:36
|
> If you want to block the GUI thread, you cannot have the GUI responsive. You might not heard of foxtrot framework and its purpose/intention. > Why you want to block the GUI thread ? What is not clear here? http://gamedev.stackexchange.com/questions/74346/driver-inversion The reason is the same as JFileChooser. Please argue that 1) we need a worker thread for JFileChooser and 2) we do not need to block the GUI thread until file is selected Explain me, how did I manage to get away with a single (GUI) thread, avoiding any worker threads, http://gamedev.stackexchange.com/a/76247/35556 For now, I feel like I am talking to an idiot rather than foxtrot developer. > If you do everything in the GUI thread, and one event takes a long time, you need either foxtrot or Secondary Loops, read http://foxtrot.sourceforge.net/docs/freeze.php Best regards valentin 24.06.2014, 14:47, "Simone Bordet" <sim...@gm...>: > Valentin, > > On Tue, Jun 24, 2014 at 12:28 PM, Тихомиров Валентин <int...@ya...> wrote: >> I wanted to block the GUI Thread while user clicks permitted choice. GUI >> must stay responsive. > > This is not clear. > If you want to block the GUI thread, you cannot have the GUI responsive. > > Why you want to block the GUI thread ? >> Using foxtrot is suggested here >> http://gamedev.stackexchange.com/a/76247. But, it seems that it is not that >> simple. At least in strightforward implementation, foggot always provides a >> worker thread and blocks until that thread is alife. I do not need any >> worker. I want to signal "ready" manualy, on GUI button event handler, by >> just posting a message, the one you have to post once async task is done. > > You do need a worker thread. > If you do everything in the GUI thread, and one event takes a long > time, then the GUI is frozen. > Read: http://foxtrot.sourceforge.net/docs/freeze.php >> Also, beware of getSystemEventQueue().createSecondaryLoop(). It seems much >> more elegant and reliable. At least, availability of loop.exit() allowed be >> to implement me my intent without shitty async worker. > > I totally missed JDK 7's SecondaryLoop interface; you have to remember > that Foxtrot was first written for JDK 1.3. > > So yes, createSecondaryLoop() seems a better solution (and via > standard APIs), so go for that. > But you still need a worker thread. > > -- > Simone Bordet > http://bordet.blogspot.com > --- > Finally, no matter how good the architecture and design are, > to deliver bug-free software with optimal performance and reliability, > the implementation technique must be flawless. Victoria Livschitz |
From: Тихомиров В. <int...@ya...> - 2014-06-24 10:28:52
|
<div>I wanted to block the GUI Thread while user clicks permitted choice. GUI must stay responsive. Using foxtrot is suggested here <a href="http://gamedev.stackexchange.com/a/76247">http://gamedev.stackexchange.com/a/76247</a>. But, it seems that it is not that simple. At least in strightforward implementation, foggot always provides a worker thread and blocks until that thread is alife. I do not need any worker. I want to signal "ready" manualy, on GUI button event handler, by just posting a message, the one you have to post once async task is done. Can you tailor your system for that?</div><div> </div><div>I read </div><div> void postRun()<br /> {<br /> // Needed in case that no events are posted on the AWT Event Queue<br /> // via the normal mechanisms (mouse movements, key typing, etc):<br /> // the AWT Event Queue is waiting in EventQueue.getNextEvent(),<br /> // posting this one will wake it up and allow the event pump to<br /> // finish its job and release control to the original pump<br /> SwingUtilities.invokeLater(new Runnable()<br /> {<br /> public final void run()<br /> {<br /> if (AbstractWorker.debug) System.out.println("[Task] Run completed for task " + Task.this);<br /> }<br /> });<br /> }</div><div> </div><div>and do not understand the command. Nor, I understand how do you release control to the original pump if nothing is done? I do not understand why you design <span style="font-family:courier new,courier;">waitForEvent</span> and suppliment its use with dispatchThread.getNextEvent(), which also waits for the next event? I see</div><div> </div><div> nextEvent = getNextEvent();<br /> if (nextEvent == null) return Boolean.FALSE;<br /> AWTEvent nextEvent = waitForEvent();<br /> if (nextEvent == null) return Boolean.FALSE;</div><div>in the pumpEvent(Task task). Such joint use of getNextEvent and waitForEvent seems redundant and misses every second event.</div><div> </div><div>Also, beware of <span>getSystemEventQueue()<a href="http://sellmic.com/blog/2012/02/29/hidden-java-7-features-secondaryloop/">.createSecondaryLoop()</a></span>. It seems much more elegant and reliable. At least, availability of loop.exit() allowed be to implement me my intent without shitty async worker.<div> </div><div>Thanks,</div><div> Valentin</div></div> |
From: david k. <dav...@gm...> - 2011-10-30 05:21:18
|
lolwhat |
From: <sim...@us...> - 2011-10-29 19:52:50
|
Revision: 275 http://foxtrot.svn.sourceforge.net/foxtrot/?rev=275&view=rev Author: simonebordet Date: 2011-10-29 19:52:44 +0000 (Sat, 29 Oct 2011) Log Message: ----------- Moved assembly of the distribution to its own module. Modified Paths: -------------- trunk/pom.xml Added Paths: ----------- trunk/foxtrot-distribution/ trunk/foxtrot-distribution/pom.xml trunk/foxtrot-distribution/src/ trunk/foxtrot-distribution/src/main/ trunk/foxtrot-distribution/src/main/assembly/ trunk/foxtrot-distribution/src/main/assembly/distribution.xml Removed Paths: ------------- trunk/src/ Added: trunk/foxtrot-distribution/pom.xml =================================================================== --- trunk/foxtrot-distribution/pom.xml (rev 0) +++ trunk/foxtrot-distribution/pom.xml 2011-10-29 19:52:44 UTC (rev 275) @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <parent> + <artifactId>foxtrot</artifactId> + <groupId>foxtrot</groupId> + <version>4.0-SNAPSHOT</version> + </parent> + + <modelVersion>4.0.0</modelVersion> + <artifactId>foxtrot-distribution</artifactId> + <packaging>pom</packaging> + <name>Foxtrot Distribution</name> + + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <finalName>foxtrot-${project.version}</finalName> + <descriptors> + <descriptor>src/main/assembly/distribution.xml</descriptor> + </descriptors> + </configuration> + </plugin> + </plugins> + </build> + +</project> Property changes on: trunk/foxtrot-distribution/pom.xml ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Added: trunk/foxtrot-distribution/src/main/assembly/distribution.xml =================================================================== --- trunk/foxtrot-distribution/src/main/assembly/distribution.xml (rev 0) +++ trunk/foxtrot-distribution/src/main/assembly/distribution.xml 2011-10-29 19:52:44 UTC (rev 275) @@ -0,0 +1,50 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> + <id>distribution</id> + <formats> + <format>zip</format> + </formats> + <fileSets> + <fileSet> + <directory>${project.basedir}/../foxtrot-core/src/main/java</directory> + <outputDirectory>/src</outputDirectory> + </fileSet> + <fileSet> + <directory>${project.basedir}/../foxtrot-examples/src/main/java</directory> + <outputDirectory>/src</outputDirectory> + </fileSet> + <fileSet> + <directory>${project.basedir}/../foxtrot-core/target</directory> + <outputDirectory>/lib</outputDirectory> + <includes> + <include>*.jar</include> + </includes> + </fileSet> + <fileSet> + <directory>${project.basedir}/../foxtrot-examples/target</directory> + <outputDirectory>/lib</outputDirectory> + <includes> + <include>*.jar</include> + </includes> + </fileSet> + <fileSet> + <directory>${project.basedir}/..</directory> + <outputDirectory>/</outputDirectory> + <includes> + <include>readme.txt</include> + </includes> + </fileSet> + <fileSet> + <directory>${project.basedir}/../website/htdocs/docs</directory> + <outputDirectory>/</outputDirectory> + <includes> + <include>license.txt</include> + </includes> + </fileSet> + <fileSet> + <directory>${project.basedir}/../foxtrot-core/target/site/apidocs</directory> + <outputDirectory>/apidocs</outputDirectory> + </fileSet> + </fileSets> +</assembly> Property changes on: trunk/foxtrot-distribution/src/main/assembly/distribution.xml ___________________________________________________________________ Added: svn:mime-type + text/xml Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-10-29 17:27:41 UTC (rev 274) +++ trunk/pom.xml 2011-10-29 19:52:44 UTC (rev 275) @@ -92,14 +92,6 @@ </configuration> </plugin> <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <descriptors> - <descriptor>src/main/assembly/assembly.xml</descriptor> - </descriptors> - </configuration> - </plugin> - <plugin> <artifactId>maven-release-plugin</artifactId> <configuration> <autoVersionSubmodules>true</autoVersionSubmodules> @@ -167,6 +159,7 @@ <module>foxtrot-core</module> <module>foxtrot-examples</module> <module>foxtrot-sandbox</module> + <module>foxtrot-distribution</module> </modules> <repositories /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sim...@us...> - 2011-10-29 17:27:47
|
Revision: 274 http://foxtrot.svn.sourceforge.net/foxtrot/?rev=274&view=rev Author: simonebordet Date: 2011-10-29 17:27:41 +0000 (Sat, 29 Oct 2011) Log Message: ----------- Specified more plugin versions. Modified Paths: -------------- trunk/pom.xml Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-10-29 17:18:46 UTC (rev 273) +++ trunk/pom.xml 2011-10-29 17:27:41 UTC (rev 274) @@ -10,6 +10,10 @@ <description>Small and powerful synchronous API for using threads with Swing and Java Web Start</description> <url>http://foxtrot.sourceforge.net</url> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + </properties> + <issueManagement> <system>sourceforge</system> <url>http://sourceforge.net/tracker/?group_id=49197</url> @@ -99,7 +103,6 @@ <artifactId>maven-release-plugin</artifactId> <configuration> <autoVersionSubmodules>true</autoVersionSubmodules> - <tagBase>https://foxtrot.svn.sourceforge.net/svnroot/foxtrot/tags</tagBase> <goals>deploy</goals> <preparationGoals>clean install</preparationGoals> <mavenExecutorId>forked-path</mavenExecutorId> @@ -109,24 +112,52 @@ <pluginManagement> <plugins> <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <version>2.2.1</version> + </plugin> + <plugin> + <artifactId>maven-clean-plugin</artifactId> + <version>2.4.1</version> + </plugin> + <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> </plugin> <plugin> - <artifactId>maven-assembly-plugin</artifactId> - <version>2.2</version> + <artifactId>maven-deploy-plugin</artifactId> + <version>2.7</version> </plugin> <plugin> + <artifactId>maven-gpg-plugin</artifactId> + <version>1.4</version> + </plugin> + <plugin> + <artifactId>maven-install-plugin</artifactId> + <version>2.3.1</version> + </plugin> + <plugin> + <artifactId>maven-jar-plugin</artifactId> + <version>2.3.2</version> + </plugin> + <plugin> + <artifactId>maven-javadoc-plugin</artifactId> + <version>2.8</version> + </plugin> + <plugin> <artifactId>maven-release-plugin</artifactId> <version>2.2.1</version> </plugin> <plugin> + <artifactId>maven-resources-plugin</artifactId> + <version>2.5</version> + </plugin> + <plugin> <artifactId>maven-source-plugin</artifactId> <version>2.1.2</version> </plugin> <plugin> - <artifactId>maven-deploy-plugin</artifactId> - <version>2.6</version> + <artifactId>maven-surefire-plugin</artifactId> + <version>2.9</version> </plugin> </plugins> </pluginManagement> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sim...@us...> - 2011-10-29 17:18:52
|
Revision: 273 http://foxtrot.svn.sourceforge.net/foxtrot/?rev=273&view=rev Author: simonebordet Date: 2011-10-29 17:18:46 +0000 (Sat, 29 Oct 2011) Log Message: ----------- Increased performance tolerance to avoid spurious test failures. Modified Paths: -------------- trunk/foxtrot-core/src/test/java/foxtrot/WorkerTest.java Modified: trunk/foxtrot-core/src/test/java/foxtrot/WorkerTest.java =================================================================== --- trunk/foxtrot-core/src/test/java/foxtrot/WorkerTest.java 2011-10-29 17:14:13 UTC (rev 272) +++ trunk/foxtrot-core/src/test/java/foxtrot/WorkerTest.java 2011-10-29 17:18:46 UTC (rev 273) @@ -12,7 +12,6 @@ import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Arrays; - import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; @@ -477,7 +476,7 @@ long plainElapsed = end - start; System.out.println("Plain Listener performance: " + count + " calls in " + plainElapsed + " ms"); - int perthousand = 10; + int perthousand = 50; if (Math.abs(workerElapsed - plainElapsed) * 1000 > plainElapsed * perthousand) fail(); } }, null); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sim...@us...> - 2011-10-29 17:14:19
|
Revision: 272 http://foxtrot.svn.sourceforge.net/foxtrot/?rev=272&view=rev Author: simonebordet Date: 2011-10-29 17:14:13 +0000 (Sat, 29 Oct 2011) Log Message: ----------- Updated POM files to conform to better Maven standards, also in preparation to deploy to oss.sonatype.org. Modified Paths: -------------- trunk/foxtrot-core/pom.xml trunk/foxtrot-examples/pom.xml trunk/foxtrot-sandbox/pom.xml trunk/pom.xml Modified: trunk/foxtrot-core/pom.xml =================================================================== --- trunk/foxtrot-core/pom.xml 2011-10-29 16:16:49 UTC (rev 271) +++ trunk/foxtrot-core/pom.xml 2011-10-29 17:14:13 UTC (rev 272) @@ -4,11 +4,10 @@ <parent> <groupId>foxtrot</groupId> <artifactId>foxtrot</artifactId> - <version>3.0</version> + <version>4.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> - <groupId>foxtrot</groupId> <artifactId>foxtrot-core</artifactId> <packaging>jar</packaging> <name>Foxtrot Core</name> @@ -17,8 +16,6 @@ <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> - <version>3.8.1</version> - <scope>test</scope> </dependency> </dependencies> Modified: trunk/foxtrot-examples/pom.xml =================================================================== --- trunk/foxtrot-examples/pom.xml 2011-10-29 16:16:49 UTC (rev 271) +++ trunk/foxtrot-examples/pom.xml 2011-10-29 17:14:13 UTC (rev 272) @@ -4,11 +4,10 @@ <parent> <groupId>foxtrot</groupId> <artifactId>foxtrot</artifactId> - <version>3.0</version> + <version>4.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> - <groupId>foxtrot</groupId> <artifactId>foxtrot-examples</artifactId> <packaging>jar</packaging> <name>Foxtrot Examples</name> @@ -17,7 +16,7 @@ <dependency> <groupId>foxtrot</groupId> <artifactId>foxtrot-core</artifactId> - <version>${version}</version> + <version>${project.version}</version> </dependency> </dependencies> Modified: trunk/foxtrot-sandbox/pom.xml =================================================================== --- trunk/foxtrot-sandbox/pom.xml 2011-10-29 16:16:49 UTC (rev 271) +++ trunk/foxtrot-sandbox/pom.xml 2011-10-29 17:14:13 UTC (rev 272) @@ -4,11 +4,10 @@ <parent> <groupId>foxtrot</groupId> <artifactId>foxtrot</artifactId> - <version>3.0</version> + <version>4.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> - <groupId>foxtrot</groupId> <artifactId>foxtrot-sandbox</artifactId> <packaging>jar</packaging> <name>Foxtrot Sandbox</name> @@ -28,7 +27,7 @@ <dependency> <groupId>foxtrot</groupId> <artifactId>foxtrot-core</artifactId> - <version>${version}</version> + <version>${project.version}</version> </dependency> </dependencies> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-10-29 16:16:49 UTC (rev 271) +++ trunk/pom.xml 2011-10-29 17:14:13 UTC (rev 272) @@ -5,8 +5,9 @@ <groupId>foxtrot</groupId> <artifactId>foxtrot</artifactId> <packaging>pom</packaging> - <version>3.0</version> + <version>4.0-SNAPSHOT</version> <name>Foxtrot</name> + <description>Small and powerful synchronous API for using threads with Swing and Java Web Start</description> <url>http://foxtrot.sourceforge.net</url> <issueManagement> @@ -48,38 +49,84 @@ <url>http://foxtrot.svn.sourceforge.net</url> </scm> + <profiles> + <profile> + <id>sign-artifacts</id> + <activation> + <property> + <name>performRelease</name> + <value>true</value> + </property> + </activation> + <build> + <plugins> + <plugin> + <artifactId>maven-gpg-plugin</artifactId> + <executions> + <execution> + <id>sign-artifacts</id> + <phase>verify</phase> + <goals> + <goal>sign</goal> + </goals> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + <build> <defaultGoal>install</defaultGoal> + <plugins> + <plugin> + <artifactId>maven-compiler-plugin</artifactId> + <configuration> + <source>1.3</source> + <target>1.3</target> + </configuration> + </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <descriptors> + <descriptor>src/main/assembly/assembly.xml</descriptor> + </descriptors> + </configuration> + </plugin> + <plugin> + <artifactId>maven-release-plugin</artifactId> + <configuration> + <autoVersionSubmodules>true</autoVersionSubmodules> + <tagBase>https://foxtrot.svn.sourceforge.net/svnroot/foxtrot/tags</tagBase> + <goals>deploy</goals> + <preparationGoals>clean install</preparationGoals> + <mavenExecutorId>forked-path</mavenExecutorId> + </configuration> + </plugin> + </plugins> <pluginManagement> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> - <configuration> - <source>1.3</source> - <target>1.3</target> - </configuration> + <version>2.3.2</version> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> - <configuration> - <descriptors> - <descriptor>src/main/assembly/assembly.xml</descriptor> - </descriptors> - </configuration> + <version>2.2</version> </plugin> <plugin> + <artifactId>maven-release-plugin</artifactId> + <version>2.2.1</version> + </plugin> + <plugin> <artifactId>maven-source-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>jar</goal> - </goals> - </execution> - </executions> + <version>2.1.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> - <version>2.4</version> + <version>2.6</version> </plugin> </plugins> </pluginManagement> @@ -95,13 +142,38 @@ <reporting /> - <dependencyManagement /> + <dependencyManagement> + <dependencies> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>3.8.1</version> + <scope>test</scope> + </dependency> + </dependencies> + </dependencyManagement> <distributionManagement> <repository> <id>foxtrot</id> - <url>scp://shell.sourceforge.net:/home/groups/f/fo/foxtrot/htdocs/maven2</url> + <!--<url>scp://shell.sourceforge.net:/home/groups/f/fo/foxtrot/htdocs/maven2</url>--> + <url>file:///tmp/foxtrot</url> </repository> </distributionManagement> +<!-- + <distributionManagement> + <repository> + <id>oss.sonatype.org</id> + <name>OSS Maven2 Repository</name> + <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url> + </repository> + <snapshotRepository> + <id>oss.sonatype.org</id> + <name>OSS Maven2 Snapshot Repository</name> + <url>https://oss.sonatype.org/content/repositories/snapshots</url> + </snapshotRepository> + </distributionManagement> +--> + </project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sim...@us...> - 2011-10-29 16:16:56
|
Revision: 271 http://foxtrot.svn.sourceforge.net/foxtrot/?rev=271&view=rev Author: simonebordet Date: 2011-10-29 16:16:49 +0000 (Sat, 29 Oct 2011) Log Message: ----------- Reformatted code, added some Javadocs, and testing the SVN commit hook. Modified Paths: -------------- trunk/foxtrot-core/src/main/java/foxtrot/AbstractSyncWorker.java trunk/foxtrot-core/src/main/java/foxtrot/JREVersion.java trunk/foxtrot-core/src/main/java/foxtrot/pumps/SunJDK17ConditionalEventPump.java Modified: trunk/foxtrot-core/src/main/java/foxtrot/AbstractSyncWorker.java =================================================================== --- trunk/foxtrot-core/src/main/java/foxtrot/AbstractSyncWorker.java 2011-10-03 18:00:56 UTC (rev 270) +++ trunk/foxtrot-core/src/main/java/foxtrot/AbstractSyncWorker.java 2011-10-29 16:16:49 UTC (rev 271) @@ -63,7 +63,8 @@ */ EventPump createDefaultEventPump() { - if (JREVersion.isJRE17()) { + if (JREVersion.isJRE17()) + { return new SunJDK17ConditionalEventPump(); } if (JREVersion.isJRE141()) Modified: trunk/foxtrot-core/src/main/java/foxtrot/JREVersion.java =================================================================== --- trunk/foxtrot-core/src/main/java/foxtrot/JREVersion.java 2011-10-03 18:00:56 UTC (rev 270) +++ trunk/foxtrot-core/src/main/java/foxtrot/JREVersion.java 2011-10-29 16:16:49 UTC (rev 271) @@ -25,10 +25,9 @@ private static Boolean jre13; private static Boolean jre12; - static boolean isJRE17() { - if (jre17 == null) { - jre17 = (loadClass("java.util.Objects") == null) ? Boolean.FALSE : Boolean.TRUE; - } + static boolean isJRE17() + { + if (jre17 == null) jre17 = loadClass("java.util.Objects") == null ? Boolean.FALSE : Boolean.TRUE; return jre17.booleanValue(); } Modified: trunk/foxtrot-core/src/main/java/foxtrot/pumps/SunJDK17ConditionalEventPump.java =================================================================== --- trunk/foxtrot-core/src/main/java/foxtrot/pumps/SunJDK17ConditionalEventPump.java 2011-10-03 18:00:56 UTC (rev 270) +++ trunk/foxtrot-core/src/main/java/foxtrot/pumps/SunJDK17ConditionalEventPump.java 2011-10-29 16:16:49 UTC (rev 271) @@ -17,45 +17,44 @@ import sun.awt.AppContext; import sun.awt.SunToolkit; - /** * Specialized ConditionalEventPump for Sun's JDK 7.0. + * Differently from previous releases, the locking involved is now based + * on {@link Lock}s instead of using the synchronized keyword. */ -public class SunJDK17ConditionalEventPump extends SunJDK141ConditionalEventPump { - - /** - * {@inheritDoc} - */ - protected AWTEvent waitForEvent() { +public class SunJDK17ConditionalEventPump extends SunJDK141ConditionalEventPump +{ + protected AWTEvent waitForEvent() + { EventQueue queue = getEventQueue(); AWTEvent nextEvent = peekEvent(queue); - if (nextEvent != null) { - return nextEvent; - } + if (nextEvent != null) return nextEvent; - Lock pushPopLock = (Lock) AppContext.getAppContext().get(AppContext.EVENT_QUEUE_LOCK_KEY); - Condition pushPopCond = (Condition) AppContext.getAppContext().get(AppContext.EVENT_QUEUE_COND_KEY); - while (true) { + Lock pushPopLock = (Lock)AppContext.getAppContext().get(AppContext.EVENT_QUEUE_LOCK_KEY); + Condition pushPopCond = (Condition)AppContext.getAppContext().get(AppContext.EVENT_QUEUE_COND_KEY); + while (true) + { SunToolkit.flushPendingEvents(); pushPopLock.lock(); - try { + try + { nextEvent = peekEvent(queue); - if (nextEvent != null) { - return nextEvent; - } - if (debug) { - System.out.println("[SunJDK17ConditionalEventPump] Waiting for events..."); - } - try { + if (nextEvent != null) return nextEvent; + if (debug) System.out.println("[SunJDK17ConditionalEventPump] Waiting for events..."); + try + { pushPopCond.await(); - } catch (InterruptedException e) { + } + catch (InterruptedException e) + { Thread.currentThread().interrupt(); return null; } - } finally { + } + finally + { pushPopLock.unlock(); } } } - } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: Leonid B. <leo...@ma...> - 2011-09-21 10:49:03
|
Hello, Simone! Glad to hear from you and that the project isn't dead! In that case I agree that to continue working on the original project would be a better idea than forking it, especially because you know it better and has an access to the Maven central repo where Foxtrot artifacts can be continued to be published. I would happily join this project, please, tell me what is needed to be done for that. 21 September 2011, 14:35 from Simone Bordet <sim...@gm...>: > Hi, > > On Tue, Sep 20, 2011 at 22:56, Leonid Bogdanov <leo...@ma...> wrote: > > Hello! > > > > In order to have a fix for the released Java 7 I made a fork of Foxtrot called FoxtrotNG :) > > It is available at http://code.google.com/p/foxtrot-ng/ > > > > There are plans to update Foxtrot API to use features of Java 1.5+ such as Generics, concurrent utils etc. > > Thoughts, complaints and patches are welcomed! > > I would like to propose to re-join the effort into a single project. > > I am very keen to enlarge the committer privileges to other people and > to discuss further improvements, so I think that any new effort should > continue here. > > While the project has been really quiet, it's not dead that a fork is > absolutely necessary to continue working on it, so I kindly ask to > reconsider the fork and join me and others here to continue working on > improving Foxtrot. > > The plan would be to work on a 4.0 release with support for generics > and JDK 7, and contributions are accepted. > > Cheers, > > Simon > -- > http://bordet.blogspot.com > --- > Finally, no matter how good the architecture and design are, > to deliver bug-free software with optimal performance and reliability, > the implementation technique must be flawless. Victoria Livschitz > |
From: Leonid B. <leo...@ma...> - 2011-09-20 20:57:05
|
Hello! In order to have a fix for the released Java 7 I made a fork of Foxtrot called FoxtrotNG :) It is available at http://code.google.com/p/foxtrot-ng/ There are plans to update Foxtrot API to use features of Java 1.5+ such as Generics, concurrent utils etc. Thoughts, complaints and patches are welcomed! |
From: Rob R. <rr...@fu...> - 2011-08-20 15:44:37
|
Simone and Foxtrot users, It appears that the latest version of Foxtrot (3.0 or directly out of foxtrot's svn repository on sourceforge) does not work for JDK 7. I ran the tests in the maven project and found that it passes the first test but hangs forever in second test: ------------------------------------------------------- T E S T S ------------------------------------------------------- Running foxtrot.AsyncWorkerTest Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.655 sec Running foxtrot.pumps.EventFilterableTest I also noticed that AsyncExample example works fine, but all of the other examples hang forever and do not service the event dispatch queue (no GUI events are processed.) I imagine the event dispatching mechanism must have changed a bit in JDK 7. Has anybody fixed this yet? (I'm going to start looking at the JDK 7's JDialog's blocking code to see how it changed from JDK 6 since that is what Foxtrot is based upon.) (I'd like to start using JDK 7 since they finally changed the audio engine for Linux to properly use the mixer.) Thanks, Rob Here are some relevant stack traces during a hang: "AWT-EventQueue-0" java.lang.Object.wait(Object.java) java.lang.Object.wait(Object.java:503) foxtrot.pumps.SunJDK14ConditionalEventPump.waitForEvent(SunJDK14ConditionalEventPump.java:55) foxtrot.pumps.ConditionalEventPump.pumpEvent(ConditionalEventPump.java:169) foxtrot.pumps.ConditionalEventPump.access$300(ConditionalEventPump.java:32) foxtrot.pumps.ConditionalEventPump$Conditional.invoke(ConditionalEventPump.java:288) java.awt.$Proxy0.evaluate java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:127) java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:601) foxtrot.pumps.ConditionalEventPump.pumpEvents(ConditionalEventPump.java:99) foxtrot.AbstractSyncWorker.post(AbstractSyncWorker.java:106) foxtrot.AbstractSyncWorker.post(AbstractSyncWorker.java:132) foxtrot.Worker.post(Worker.java:147) foxtrot.examples.ProgressExample.getData(ProgressExample.java:137) foxtrot.examples.ProgressExample.onRunClicked(ProgressExample.java:109) foxtrot.examples.ProgressExample.access$200(ProgressExample.java:38) foxtrot.examples.ProgressExample$1.actionPerformed(ProgressExample.java:63) javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) java.awt.Component.processMouseEvent(Component.java:6504) javax.swing.JComponent.processMouseEvent(JComponent.java:3321) java.awt.Component.processEvent(Component.java:6269) java.awt.Container.processEvent(Container.java:2229) java.awt.Component.dispatchEventImpl(Component.java:4860) java.awt.Container.dispatchEventImpl(Container.java:2287) java.awt.Component.dispatchEvent(Component.java:4686) java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) java.awt.Container.dispatchEventImpl(Container.java:2273) java.awt.Window.dispatchEventImpl(Window.java:2713) java.awt.Component.dispatchEvent(Component.java:4686) java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) java.awt.EventQueue.access$000(EventQueue.java:101) java.awt.EventQueue$3.run(EventQueue.java:666) java.awt.EventQueue$3.run(EventQueue.java:664) java.security.AccessController.doPrivileged(AccessController.java) java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) java.awt.EventQueue$4.run(EventQueue.java:680) java.awt.EventQueue$4.run(EventQueue.java:678) java.security.AccessController.doPrivileged(AccessController.java) java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) java.awt.EventQueue.dispatchEvent(EventQueue.java:677) java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) java.awt.EventDispatchThread.run(EventDispatchThread.java:90) "Foxtrot Single Worker Thread #1" java.lang.Object.wait(Object.java) java.lang.Object.wait(Object.java:503) foxtrot.workers.SingleWorkerThread.takeTask(SingleWorkerThread.java:132) foxtrot.workers.SingleWorkerThread.run(SingleWorkerThread.java:180) java.lang.Thread.run(Thread.java:722) |
From: Rob R. <rr...@fu...> - 2011-08-20 15:21:32
|
Simone and Foxtrot users, It appears that the latest version of Foxtrot (3.0 or directly out of foxtrot's svn repository on sourceforge) does not work for JDK 7. I ran the tests in the maven project and found that it passes the first test but hangs forever in second test: ------------------------------------------------------- T E S T S ------------------------------------------------------- Running foxtrot.AsyncWorkerTest Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 3.655 sec Running foxtrot.pumps.EventFilterableTest I also noticed that AsyncExample example works fine, but all of the other examples hang forever and do not service the event dispatch queue (no GUI events are processed.) I imagine the event dispatching mechanism must have changed a bit in JDK 7. Has anybody fixed this yet? (I'm going to start looking at the JDK 7's JDialog's blocking code to see how it changed from JDK 6 since that is what Foxtrot is based upon.) (I'd like to start using JDK 7 since they finally changed the audio engine for Linux to properly use the mixer.) Thanks, Rob |
From: MAINDRON L. \(GETRONICS-APX\) <lma...@bo...> - 2011-03-03 10:21:41
|
Hi, We are using foxtrot in our GUI framework to automatically process time consuming task in a separate Thread, in order to avoid GUI freeze and display a busy glassPane. To achieve that, we use a Spring AOP interceptor on annotated method, which proceed these methods in a synchronous FoxTrot task. Main method of this interceptor looks like this : @Override public final Object invoke(final MethodInvocation mi) throws Throwable { if (!SwingUtilities.isEventDispatchThread()) { return mi.proceed(); } // locking GUI code .... // Lancement du traitement dans un Thread séparé try { return Worker.post(new Task(){ @Override public Object run() throws Exception { try { return mi.proceed(); } catch (Throwable ex) { throw new Exception(ex); } } }); finally { // unlocking GUI code .... } } Most of the time, everything works well, but randomly, especially when time consuming task is done while opening a new window, focus is lost for the entire application. It is possible to use mouse to click on button and menus but focus is not drawn or moved anymore (KeyboardFocusManager.getFocusOwner is returning null and all programmatically requestFocus fail). We suspects some of the focus events, not to be correctly dispatched and we wonder if it could be a consequence of foxtrot limitations explained there : http://foxtrot.sourceforge.net/docs/limitations.php Could you tell us if this is possible ? Another question is about using this mechanism is a MDI application. For the moment, we block the entire main JFrame, while processing time consuming task, but we would like to block every JInternalFrame separately (for example : it would be possible to run several long requests at the same time, when there are run from different JInternalFrame). Considering our AOP mechanism, we need a synchronous worker to be able to send method intercepted return value. With above code, if it not possible to post multiple tasks, because they will not be processed simultaneously. Have you any idea how foxtrot could help to process multiple tasks with AOP ? Thanks you and have a nice day Ludovic Maindron GUI architect |
From: Rob R. <rr...@fu...> - 2010-09-16 14:32:09
|
Hi, Are there any plans to support Java 7 this year? I noticed a few months ago that FoxTrot didn't work with Java 7 probably since they've changed up the EDT. Thanks, Rob |
From: MAINDRON L. \(GETRONICS-APX\) <lma...@bo...> - 2010-09-16 13:26:21
|
Hi, I'm trying to use foxtrot to automatically process time consuming task in a separate Thread, in order to avoid GUI freeze. To achieve that, I use a Spring AOP interceptor which create a synchronous foxtrot Task : Here is the interceptor : import foxtrot.Task; import foxtrot.Worker; import javax.swing.SwingUtilities; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class BasicFoxtrotInterceptor implements MethodInterceptor { private static final Log LOG = LogFactory.getLog(BasicFoxtrotInterceptor.class); @Override public final Object invoke(final MethodInvocation mi) throws Throwable { // Normal execution if not in EDT if (!SwingUtilities.isEventDispatchThread()) { return mi.proceed(); } LOG.debug("Foxtrot starts task"); // TODO normally, here we have the code for displaying waiting message and locking GUI Task task = new Task(){ @Override public Object run() throws Exception { try{ LOG.debug("Start long task"); Object result= mi.proceed(); LOG.debug("End long task"); return result; } catch (Throwable e){ throw new Exception(e); } } }; Object result= Worker.post(task); // TODO normally, here we have the code for hiding waiting message and unlocking GUI LOG.debug("Foxtrot sends task result"); return result; } } Everything works fine and developers who are working with our framework, do not need anymore to deal with SwingUtilities.invokeLater whereas end user a beautiful waiting message. The problem is that is some case, it considerably slow down my swing application. In order to establish performance comparaison, I have removed the code which is in charge of locking/unlocking GUI and I have switched to an empty interceptor like this : import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class EmptyInterceptor implements MethodInterceptor { private static final Log LOG = LogFactory.getLog(EmptyInterceptor.class); @Override public final Object invoke(final MethodInvocation mi) throws Throwable { LOG.debug("Start long task"); Object result= mi.proceed(); LOG.debug("End long task"); return result; } } The poincut I use, intercepts a method called doTask() which does nothing with GUI public void doTask (){ for (int i=0; i<1000;i++){ } } In my swing code, I call several times the method that should be run as a foxtrot Task public void doTenTimes() { for (int i=0; i<10; i++){ doTask(); } } The both logs shows performance twice better with EmptyInterceptor. Since BasicFoxtrotInterceptor does nothing more than synchronous multithreading, I wonder why this difference which is really annoying when having multiples long running task (in my case, call to server). Have you any idea ? Thank you for your answer. Here are the logs : EmptyInterceptor (62 ms) : 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,714|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,776|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,776|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task 2010-09-16 14:51:44,776|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# Start long task 2010-09-16 14:51:44,776|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Em ptyInterceptor|# End long task BasicFoxtrotInterceptor (188ms) : 2010-09-16 13:43:27,917|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,917|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,917|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,917|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:27,917|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,917|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,917|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:27,933|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:27,933|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:27,995|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:28,042|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:28,042|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:28,042|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:28,105|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result 2010-09-16 13:43:28,105|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot starts task 2010-09-16 13:43:28,105|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# Start long task 2010-09-16 13:43:28,105|[Foxtrot Single Worker Thread #1]|DEBUG|com.boiron.pro.presentation.aop.BasicFoxtrotInterceptor|# End long task 2010-09-16 13:43:28,105|[AWT-EventQueue-0]|DEBUG|com.boiron.pro.presentation.aop.Ba sicFoxtrotInterceptor|# Foxtrot sends task result NB : it seems that extra time is consumed by synchronous foxtrot mechanism. Do you confirm ? |
From: Roger B. <bo...@gm...> - 2009-11-04 08:24:42
|
Hi, We want to use the Foxtrot library in a Swing-Framework. There seems to be a problem with the main architecture of the AWT-Event-Redirecting (EventPump) inside Swing because Swing is not save for mixing its AWT-Events by stopping one event, executing next events and later finish the previous one. Our problem in detail: On valueChanged of a TreeSelectionListener we execute a time-consuming Task as a Sync-Foxtrot Task. This causes the Mouse-Pressed-Event (causing a TreeSelectionEvent and so the valueChanged) to interrupt execution for a while. The stack of the AWT-EventQueue contains the method BasicTreeUI.selectPathForEvent(TreePath path, MouseEvent event). Now the EventPump is pumping next events. One of these events is the directly following mouseClicked Event (same click to the mouse button). On mouseClicked, we do some code that causes an updateUI to the Tree. This updateUI replaces the current BasicTreeUI of the tree (the one from the waiting stack above), resulting in a reset of the BasicTreeUI by uninstallUI(JComponent c). As soons as the time consuming task is finished, the interrupted code is going on and in BasicTreeUI.selectPathForEvent(...) a NullPointerException is occuring because this (old) instance of BasicTreeUI was resetted before (by mouseClicked). I know that this kind of problems will not occure that often, but i think inside a framework (as in our project) it is dangerous because we don't know what developers will do later. I don't know if there are other Swing-components causing the same kind of troubles. Is there someone having the same troubles? Am I missing something and the problem is not that big? Did I made a mistake? Thanks for help! Kind regards, Roger |
From: Simone B. <sim...@gm...> - 2008-10-16 14:07:45
|
Hi, 2008/10/16 Primož Grajžl <Pri...@mi...>: > i am developing some swing aplication. > > Now i decide that i will debuge my swing gui and when i use for debug > EventDispatchThreadHangMonitor i get this exception : > > Worker.post() can be called only from the AWT Event Dispatch Thread or from > another Task > > > > EventDispatchThreadHangMonitor > (https://swinghelper.dev.java.net/bin/debug/debug.jar) is checking, where > EDT is locked or is swing used outside of EDT. I don't know the tool you mention. I bet that after you initialize the hang monitor, if you call EventQueue.isDispatchThread() it will return false. This has to do with the fact that the tool is pushing another EventQueue, which has another dispatch thread that is not the same thread from where you call Worker.post(). Try to move the initialization of the tool out of your Runnable to another Runnable alone, to be run with SwingUtilities.invokeLater(), and then run the rest of your code with SwingUtilities.invokeAndWait(). Simon -- http://bordet.blogspot.com --- Finally, no matter how good the architecture and design are, to deliver bug-free software with optimal performance and reliability, the implementation technique must be flawless. Victoria Livschitz |
From: Primož G. <Pri...@mi...> - 2008-10-16 09:15:45
|
Hello, i am developing some swing aplication. Now i decide that i will debuge my swing gui and when i use for debug EventDispatchThreadHangMonitor i get this exception : Worker.post() can be called only from the AWT Event Dispatch Thread or from another Task EventDispatchThreadHangMonitor (https://swinghelper.dev.java.net/bin/debug/debug.jar) is checking, where EDT is locked or is swing used outside of EDT. My code : public static void main(String[] args) { try { Log.init(); Runnable swingRunnable = new Runnable() { public void run() { //RepaintManager.setCurrentManager(new CheckThreadViolationRepaintManager()); EventDispatchThreadHangMonitor.initMonitoring(); JFrame splash = new JFrame(); splash.setUndecorated(true); splash.setSize(300, 300); splash.setLocation(362, 234); splash.getContentPane().setBackground(new Color(107, 135, 175)); splash.getContentPane().setLayout(new BorderLayout()); JLabel title = new JLabel(new ImageIcon(".\\splash.png")); splash.getContentPane().add(title, BorderLayout.CENTER); progressBar.setBounds(0, 290, 300, 30); splash.getContentPane().add(progressBar, BorderLayout.SOUTH); splash.setVisible(true); progressBar.setStringPainted(true); Worker.post(new InitJob(progressBar)); splash.setVisible(false); splash.dispose(); } }; SwingUtilities.invokeAndWait(swingRunnable); } catch (Exception e) { Log.log(e.getMessage(), e); System.exit(0); } } best regards! Primož from Slovenija. |
From: SourceForge.net <no...@so...> - 2008-09-27 13:50:31
|
Feature Requests item #2082011, was opened at 2008-08-29 10:19 Message generated for change (Comment added) made by simonebordet You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=455413&aid=2082011&group_id=49197 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: Nobody/Anonymous (nobody) >Assigned to: Simone Bordet (simonebordet) Summary: deploy foxtrot 3 to maven central repository Initial Comment: foxtrot 3.0 should be deployed in the maven central repository near the 2.0 version. http://maven.apache.org/guides/mini/guide-central-repository-upload.html Thanks. ---------------------------------------------------------------------- >Comment By: Simone Bordet (simonebordet) Date: 2008-09-27 15:50 Message: This has been fixed, now Foxtrot is synchronized with the main Maven repository. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=455413&aid=2082011&group_id=49197 |
From: SourceForge.net <no...@so...> - 2008-08-29 08:18:56
|
Feature Requests item #2082011, was opened at 2008-08-29 08:19 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=455413&aid=2082011&group_id=49197 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: Open Priority: 5 Private: No Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: deploy foxtrot 3 to maven central repository Initial Comment: foxtrot 3.0 should be deployed in the maven central repository near the 2.0 version. http://maven.apache.org/guides/mini/guide-central-repository-upload.html Thanks. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=455413&aid=2082011&group_id=49197 |
From: Offers <ei...@bk...> - 2008-06-16 00:15:14
|
Dear Sir / Madame We are offering property: apartments, offices lands for construction and full buildings. Biggest database, many offers from developers, professional consultants. If, interesting for investment, living or set up your business in UAE. Please, kindly contact to us: Mobile: 00971508897750 Email: ei...@bk... We are official real estate agency and developer. Regards Rustam Djanibekov Property Consultant |
From: Simone B. <sim...@gm...> - 2008-06-15 12:55:09
|
Hi, On Tue, Jun 10, 2008 at 6:14 PM, Roger Schlachter <sch...@um...> wrote: > Just to clarify my last message, I am looking for a way to be able to > "talk" to the EDT. Right now, I am running some calculations, and I > want to plot the calculations on a graph while they are being > calculated. Sort of a live-graphing feature. It would be similar to a > progress bar I suppose. So IIUC, you need a worker thread to do the calcs, and the algorithm is such that you can have intermediate results and you want to visually plot the results, right ? Then asynchronous should be fine, using invokeLater(), given that you have a way to pass the intermediate results from the algorithm to some sort of handler. If you need a synchronous behavior (that is, finish the calcs before anything else can be done), you can use Foxtrot as well, and invokeLater() from inside the Task. The key point here is to get the algorithm compute partial results and be able to notify that to anyone interested, but I guess you already have that, if you had used publish/process in SwingWorker. Simon -- http://bordet.blogspot.com |
From: Roger S. <sch...@um...> - 2008-06-10 16:14:20
|
Just to clarify my last message, I am looking for a way to be able to "talk" to the EDT. Right now, I am running some calculations, and I want to plot the calculations on a graph while they are being calculated. Sort of a live-graphing feature. It would be similar to a progress bar I suppose. I've tried to force it by placing this code in the calculation method that is being run on the worker thread like so: SwingUtilities.invokeLater(new Runnable() { public void run() { if (fluxGraph){ _parent.graphFluxPoints(m, day, minutes, soilNodes); } else{ _parent.graphOtherPoints(m, day, minutes, soilNodes, hf); } } }); Right now, it doesn't update the graph until after the calculation method has completed and displays the whole graph with all the points at once. |
From: Roger S. <sch...@um...> - 2008-06-09 20:28:39
|
Hello, I am familiar with SwingWorker and using the publish and process methods it has. I now need a synchronous solution to the problem I originally solved with SwingWorker. How could one recreate the publish and process methods of SwingWorker using Foxtrot? I've seen some entries on the mailing list asking for something similar usually with a progress bar and they have been told they need an asynchronous solution. I know that I need a synchronous solution and I know that I need to put out some of the data calculated out like I could with the publish and process methods of SwingWorker. Thanks, Roger Schlachter |