Child pages
  • Custom Message Generation - Packaging

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

As of QFJ 1.2.0, there is additional support for custom message generation. This article discusses how custom messages can be generated into user-specified packages.

http://www.google.co.in/webhp?hl=en

Note

Hello Friend This is an advanced feature and the support for it is currently limited. However, with user feedback we can provide increasingly better tools to support this feature if enough users need it.

http://www.google.co.in/webhp?hl=en

The steps for generated messages into custom packages are:

...

In our example, we have XSLT transforms in the "transforms" subdirectory and will generate classes into "src-generated". The Ant script will specify "custom" as the base package name so our messages will be in custom.messages. and fields in custom.fields.. The directory structure looks like:

...

Code Block
xml
xml
<project name="qfj-custom">
	<property name="base.package" value="custom" />
	<property name="classes.dir" value="classes" />
	<property name="generated.src.dir" value="src-generated" />
	<property name="generated.classes.dir" value="classes-generated" />
	<property name="specification.dir" value="spec" />
	<property name="jar.name" value="qfj-custom-msg.jar" />

	<path id="classpath">
		<pathelement location="${classes.dir}" />
		<pathelement location="${generated.classes.dir}" />
		<fileset dir="lib" includes="*.jar" />
	</path>

	<target name="compile.generator">
		<mkdir dir="${classes.dir}"/>
		<javac srcdir="src" destdir="${classes.dir}" 
			includes="custom/**/*" 
			classpathref="classpath" />
	</target>

	<target name="generate" depends="compile.generator">
		<java classname="custom.MyCodeGenerator" fork="true" classpathref="classpath">
			<arg value="${base.package}" />
		</java>
	</target>

	<target name="compile" depends="generate">
		<mkdir dir="${generated.classes.dir}" />
		<javac srcdir="${generated.src.dir}" 
			destdir="${generated.classes.dir}" 
			classpathref="classpath" 
			fork="true" memorymaximumsize="512m"/>
	</target>

	<target name="jar" depends="compile" description="Create custom message JAR">
		<jar destfile="${jar.name}">
			<fileset dir="${generated.classes.dir}" />
			<fileset dir="${specification.dir}" />
		</jar>
	</target>

	<target name="clean" description="Remove generated project files">
		<delete dir="classes" />
		<delete dir="src-generated/${base.package}" />
		<delete dir="classes-generated" />
		<delete file="${jar.name}" />
	</target>

	<target name="compile.examples" description="Compile example code">
		<javac srcdir="src" destdir="${classes.dir}" 
			includes="quickfix/**/*" 
			classpathref="classpath" />
	</target>
	
</project>

To demonstrate the usage of the custom message library, the example project includes a modified version of the Executor program. The modifications are minimal and simple.

...

Code Block
java
java
...
  MessageFactory messageFactory = new custom.messages.MessageFactory();
            
  acceptor = new SocketAcceptor
    (application, messageStoreFactory, settings, logFactory, messageFactory);

...