Added: activemq/activemq-dotnet/Apache.NMS.XMS/trunk/nant-common.xml URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.XMS/trunk/nant-common.xml?rev=1723221&view=auto ============================================================================== --- activemq/activemq-dotnet/Apache.NMS.XMS/trunk/nant-common.xml (added) +++ activemq/activemq-dotnet/Apache.NMS.XMS/trunk/nant-common.xml Wed Jan 6 02:19:56 2016 @@ -0,0 +1,658 @@ +<?xml version="1.0"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<project xmlns="http://nant.sourceforge.net/release/0.85/nant.xsd"> + + <!-- ============================================================================================ --> + <!-- P R O P E R T Y D E F I N I T I O N S --> + <!-- ============================================================================================ --> + + <!-- global project settings --> + <property name="project.cls.compliant" value="true" unless="${property::exists('project.cls.compliant')}" /> + <property name="project.release.type" value="SNAPSHOT" unless="${property::exists('project.release.type')}" /> + <property name="project.version.full" value="${project.version + if(project.release.type == 'snapshot', '-' + project.release.type, '')}" dynamic="true" /> + <property name="project.startyear" value="2005" /> + <property name="build.dir" value="${basedir}/build" /> + <property name="doc.dir" value="${build.dir}/doc" /> + <property name="lib.dir" value="${path::combine(basedir, 'lib')}" dynamic="true" /> + <property name="lib.family.dir" value="${path::combine(lib.dir, framework::get-family(framework::get-target-framework()))}" dynamic="true" /> + <property name="lib.framework.dir" value="${path::combine(lib.family.dir, version::to-string(framework::get-version(framework::get-target-framework())))}" dynamic="true" /> + <property name="package.dir" value="${basedir}/package" /> + <property name="src.package.name" value="${project.name + '-' + project.version + if(project.release.type == 'SNAPSHOT', '-' + project.release.type, '') + '-src.zip'}" /> + <property name="bin.package.name" value="${project.name + '-' + project.version + if(project.release.type == 'SNAPSHOT', '-' + project.release.type, '') + '-bin.zip'}" /> + + <!-- default configuration --> + <property name="build.defines" value="" /> + <property name="build.noskip" value="false" /> + <property name="build.skip" value="false" /> + <property name="build.skip.release" value="false" unless="${property::exists('build.skip.release')}" /> + <property name="download.skip" value="false" unless="${property::exists('download.skip')}"/> + <property name="install.skip" value="false" unless="${property::exists('install.skip')}"/> + <property name="compile.skip" value="false" unless="${property::exists('compile.skip')}" /> + <property name="current.build.config" value="${if(project.release.type == 'release', 'release', 'debug')}" overwrite="false" /> + <property name="current.build.framework" value="${framework::get-target-framework()}" overwrite="false" /> + <property name="current.build.defines" value="${build.defines}" /> + <property name="build.framework.strings" value="net-2.0,net-3.5,net-4.0,mono-2.0,mono-4.0,netcf-2.0,netcf-3.5" unless="${property::exists('build.framework.strings')}"/> + <property name="current.build.framework.assembly.dir" value="${framework::get-assembly-directory(framework::get-target-framework())}" dynamic="true" /> + + <property name="build.config.strings" value="${if(property::exists('configuration'), configuration, if(build.skip.release == 'true', 'debug', 'debug,release'))}" dynamic="true" /> + + <!-- Figure out the user's HOME directory --> + <property name="user.home" value="${environment::get-variable('HOME')}" + if="${environment::variable-exists('HOME') and platform::is-unix()}" + unless="${property::exists('user.home')}" /> + <property name="user.home" value="${environment::get-variable('USERPROFILE')}" + if="${environment::variable-exists('USERPROFILE') and platform::is-windows()}" + unless="${property::exists('user.home')}" /> + <fail message="The HOME environment variable is not defined. Please set it to your home directory." + unless="${property::exists('user.home')}" if="${platform::is-unix()}" /> + <fail message="The USERPROFILE environment variable is not defined. Please set it to your home directory." + unless="${property::exists('user.home')}" if="${platform::is-windows()}" /> + + <!-- Figure out the NANT repositories --> + <property name="nant.remote.repo" value="${environment::get-variable('NANT_REMOTE_REPO')}" + if="${environment::variable-exists('NANT_REMOTE_REPO')}" + unless="${property::exists('nant.remote.repo')}" /> + <property name="nant.local.repo" value="${environment::get-variable('NANT_REPO')}/local" + if="${environment::variable-exists('NANT_REPO')}" + unless="${property::exists('nant.local.repo')}" /> + <property name="nant.local.repo" value="${user.home}/.nant/repository/local" + unless="${property::exists('nant.local.repo')}" /> + + <!-- Figure out the keyfile location --> + <property name="snk.file" value="${environment::get-variable('ACTIVEMQ_DOTNET_SNK')}" + if="${environment::variable-exists('ACTIVEMQ_DOTNET_SNK')}" + unless="${property::exists('snk.file')}" /> + <property name="snk.file" value="${basedir}/keyfile/NMSKey.snk" + if="${not property::exists('snk.file')}" /> + + <!-- ============================================================================================ --> + <!-- I N I T I A L I Z A T I O N T A R G E T S --> + <!-- ============================================================================================ --> + + <target name="init" description="Initializes build properties"> + <!-- enabled the release or debug configuration --> + <call target="set-${current.build.config}-configuration" /> + + <!-- Check to see if our build setup for the target framework --> + <if test="${not(target::exists('set-'+current.build.framework+'-framework-configuration'))}"> + <fail message="The '${current.build.framework}' framework is not supported by this version of ActiveMQ .NET" /> + </if> + <call target="set-${current.build.framework}-framework-configuration" /> + + <!-- Check to see current platform supports the target framework --> + <if test="${framework::exists(current.build.framework)}"> + <property name="build.skip" value="false" /> + </if> + <if test="${not framework::exists(current.build.framework)}"> + <if test="${build.noskip}"> + <fail message="${current.build.framework.name} is not available." /> + </if> + <if test="${not(build.noskip)}"> + <echo message="${current.build.framework.name} is not available. Build skipped." /> + <property name="build.skip" value="true" /> + </if> + </if> + + <!-- Check to see if we should skip this build framework. --> + <if test="${not(build.skip)}"> + <if test="${property::exists('build.'+current.build.framework+'.skip')}"> + <property name="build.skip" value="true" /> + <echo message="The '${current.build.framework}' framework is not supported by this version of ActiveMQ .NET" /> + </if> + </if> + + <property name="current.build.keysign" value="${current.build.framework.sign}" /> + <property name="build.bin.dir" value="${build.dir}/${current.build.framework}/${current.build.config}" /> + <if test="${not(build.skip)}"> + <echo message="Doing ${if(current.build.keysign,'a signed','an unsigned')} ${current.build.config} build for the ${current.build.framework.name} framework" /> + <mkdir dir="${build.bin.dir}" /> + </if> + <call target="dependency-init" /> + </target> + + <!-- Generate four-digit build number --> + <target name="generate-build-number"> + <if test="${not property::exists('project.version.numeric')}"> + <script language="C#"> + <imports> + <import namespace="System.Globalization" /> + <import namespace="System.Threading" /> + </imports> + <code> + <!-- Format for assembly revision is the number of days from the year the project 'started', property project.startyear. --> + <![CDATA[ + public static void ScriptMain(Project project) + { + int startYear = Convert.ToInt32(project.Properties["project.startyear"]); + DateTime start = new DateTime(startYear, 1, 1); + TimeSpan ts = DateTime.Now - start; + project.Properties["project.version.numeric"] = project.Properties["project.version"].ToString() + "." + ts.Days.ToString(); + } + ]]> + </code> + </script> + </if> + </target> + + <!-- Generate assemblyinfo.cs files --> + <target name="generate-assemblyinfo" depends="generate-build-number" description="Generate the assembly info for the path in assemblyinfo.filename"> + <asminfo output="${assemblyinfo.filename}" language="CSharp"> + <imports> + <import namespace="System" /> + <import namespace="System.Reflection" /> + <import namespace="System.Runtime.InteropServices" /> + </imports> + <attributes> + <attribute type="ComVisibleAttribute" value="false" /> + <attribute type="CLSCompliantAttribute" value="${project.cls.compliant}" /> + <attribute type="AssemblyTitleAttribute" value="${project.short_description}" /> + <attribute type="AssemblyDescriptionAttribute" value="${project.description}" /> + <attribute type="AssemblyConfigurationAttribute" value="${project.release.type}" /> + <attribute type="AssemblyCompanyAttribute" value="http://activemq.apache.org/nms" /> + <attribute type="AssemblyProductAttribute" value="${project.short_description}" /> + <attribute type="AssemblyCopyrightAttribute" value="Copyright (C) ${project.startyear}-${datetime::get-year(datetime::now())} Apache Software Foundation" /> + <attribute type="AssemblyTrademarkAttribute" value="" /> + <attribute type="AssemblyCultureAttribute" value="" /> + <attribute type="AssemblyVersionAttribute" value="${project.version.numeric}" /> + <attribute type="AssemblyInformationalVersionAttribute" value="${project.version}" /> + </attributes> + </asminfo> + </target> + + <!-- ============================================================================================ --> + <!-- C O N F I G U R A T I O N T A R G E T S --> + <!-- ============================================================================================ --> + + <target name="set-noskip-configuration" description="Disable skipping builds"> + <property name="project.noskip" value="true" /> + </target> + + <target name="set-debug-configuration" description="Enabled 'debug' builds"> + <property name="current.build.config" value="debug" /> + <property name="current.build.config.debug" value="true" /> + <property name="current.build.config.release" value="false" /> + <property name="current.build.defines" value="${build.defines}DEBUG,TRACE," dynamic="true" /> + <property name="csc.debug" value="Full" /> + <property name="csc.optimize" value="false" /> + </target> + + <target name="set-release-configuration" description="Enabled 'release' builds"> + <property name="current.build.config" value="release" /> + <property name="current.build.config.release" value="true" /> + <property name="current.build.config.debug" value="false" /> + <property name="csc.debug" value="Full" /> + <property name="csc.optimize" value="true" /> + </target> + + <target name="set-net-2.0-framework-configuration"> + <property name="current.build.framework" value="net-2.0" /> + <property name="current.build.framework.name" value=".NET 2.0" /> + <property name="current.build.defines" value="${build.defines}NET,NET_2_0" dynamic="true" /> + <property name="current.build.framework.sign" value="true" /> + <property name="link.sdkdoc.version" value="SDK_v2_0" /> + <property name="link.sdkdoc.web" value="true" /> + <if test="${framework::exists(current.build.framework)}"> + <property name="nant.settings.currentframework" value="${current.build.framework}" /> + </if> + <!-- Use the .NET 3.5 compiler for improved language features. Still targets same runtime. --> + <if test="${framework::exists('net-3.5')}"> + <property name="nant.settings.currentframework" value="net-3.5" /> + </if> + </target> + + <target name="set-net-3.5-framework-configuration"> + <property name="current.build.framework" value="net-3.5" /> + <property name="current.build.framework.name" value=".NET 3.5" /> + <property name="current.build.defines" value="${build.defines}NET,NET_2_0,NET_3_5" dynamic="true" /> + <property name="current.build.framework.sign" value="true" /> + <property name="link.sdkdoc.version" value="SDK_v6_1" /> + <property name="link.sdkdoc.web" value="true" /> + <if test="${framework::exists(current.build.framework)}"> + <property name="nant.settings.currentframework" value="${current.build.framework}" /> + </if> + </target> + + <target name="set-net-4.0-framework-configuration"> + <property name="current.build.framework" value="net-4.0" /> + <property name="current.build.framework.name" value=".NET 4.0" /> + <property name="current.build.defines" value="${build.defines}NET,NET_2_0,NET_3_5,NET_4_0" dynamic="true" /> + <property name="current.build.framework.sign" value="true" /> + <property name="link.sdkdoc.version" value="SDK_v7_0" /> + <property name="link.sdkdoc.web" value="true" /> + <if test="${framework::exists(current.build.framework)}"> + <property name="nant.settings.currentframework" value="${current.build.framework}" /> + </if> + </target> + + <target name="set-netcf-2.0-framework-configuration"> + <property name="current.build.framework" value="netcf-2.0" /> + <property name="current.build.framework.name" value=".NET Compact Framework 2.0" /> + <property name="current.build.defines" value="${build.defines}PocketPC,NETCF,NETCF_2_0" dynamic="true" /> + <property name="current.build.framework.sign" value="true" /> + <property name="link.sdkdoc.version" value="SDK_v1_1" /> + <property name="link.sdkdoc.web" value="true" /> + <if test="${framework::exists(current.build.framework)}"> + <property name="nant.settings.currentframework" value="${current.build.framework}" /> + </if> + </target> + + <target name="set-netcf-3.5-framework-configuration"> + <property name="current.build.framework" value="netcf-3.5" /> + <property name="current.build.framework.name" value=".NET Compact Framework 3.5" /> + <property name="current.build.defines" value="${build.defines}PocketPC,NETCF,NETCF_3_5" dynamic="true" /> + <property name="current.build.framework.sign" value="true" /> + <property name="link.sdkdoc.version" value="SDK_v3_5" /> + <property name="link.sdkdoc.web" value="true" /> + <if test="${framework::exists(current.build.framework)}"> + <property name="nant.settings.currentframework" value="${current.build.framework}" /> + </if> + </target> + + <target name="set-mono-2.0-framework-configuration"> + <property name="current.build.framework" value="mono-2.0" /> + <property name="current.build.framework.name" value="Mono 2.0" /> + <property name="current.build.defines" value="${build.defines}MONO,MONO_2_0" dynamic="true" /> + <property name="current.build.framework.sign" value="true" /> + <property name="link.sdkdoc.version" value="SDK_v1_1" /> + <property name="link.sdkdoc.web" value="true" /> + <if test="${framework::exists(current.build.framework)}"> + <property name="nant.settings.currentframework" value="${current.build.framework}" /> + </if> + </target> + + <target name="set-mono-4.0-framework-configuration"> + <property name="current.build.framework" value="mono-4.0" /> + <property name="current.build.framework.name" value="Mono 4.0" /> + <property name="current.build.defines" value="${build.defines}MONO,MONO_4_0" dynamic="true" /> + <property name="current.build.framework.sign" value="true" /> + <property name="link.sdkdoc.version" value="SDK_v1_1" /> + <property name="link.sdkdoc.web" value="true" /> + <if test="${framework::exists(current.build.framework)}"> + <property name="nant.settings.currentframework" value="${current.build.framework}" /> + </if> + </target> + + <!-- ============================================================================================ --> + <!-- C O M P I L E T A R G E T S --> + <!-- ============================================================================================ --> + + <target name="compile-all" description="Compile all build configurations for all runtime configurations"> + <echo message="Compiling all build configurations for all runtime configurations." /> + <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework"> + <foreach item="String" in="${build.config.strings}" delim="," property="current.build.config"> + <call target="compile-target" /> + </foreach> + </foreach> + </target> + + <target name="compile-target" depends="init, download-vendor, conditional-compile" /> + + <target name="conditional-compile" depends="init" unless="${build.skip or compile.skip}" + description="Conditionaly compiles all the modules if build framework and type are supported"> + <call target="compile" /> + </target> + + <target name="compile" description="Compile everything"> + <call target="compile-main" cascade="false" /> + <call target="compile-test" cascade="false" /> + </target> + + <target name="compile-main" depends="init" description="Build the main library"> + <echo message="Building the ${project.name} library" /> + <property name="assemblyinfo.filename" value="src/main/csharp/CommonAssemblyInfo.cs" /> + <call target="generate-assemblyinfo" /> + + <csc if="${current.build.keysign}" keyfile="${snk.file}" target="library" + define="${current.build.defines}" warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}" + output="${build.bin.dir}/${project.name}.dll" doc="${build.bin.dir}/${project.name}.xml"> + <nowarn> + <warning number="1591" /> <!-- do not report warnings for missing XML comments --> + </nowarn> + <sources failonempty="true"> + <include name="src/main/csharp/**.cs" /> + </sources> + <references refid="dependencies" /> + </csc> + <csc if="${not current.build.keysign}" target="library" + define="${current.build.defines}" warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}" + output="${build.bin.dir}/${project.name}.dll" doc="${build.bin.dir}/${project.name}.xml"> + <nowarn> + <warning number="1591" /> <!-- do not report warnings for missing XML comments --> + </nowarn> + <sources failonempty="true"> + <include name="src/main/csharp/**.cs" /> + </sources> + <references refid="dependencies" /> + </csc> + <call target="copy-content" /> + </target> + + <!-- Compile the nms-test module --> + <target name="compile-test" depends="compile-main" description="Build the test library"> + <echo message="Building the ${project.name}.Test library" /> + <property name="assemblyinfo.filename" value="src/test/csharp/CommonAssemblyInfo.cs" /> + <call target="generate-assemblyinfo" /> + + <csc if="${current.build.keysign}" keyfile="${snk.file}" target="library" + define="${current.build.defines}" warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}" + output="${build.bin.dir}/${project.name}.Test.dll" doc="${build.bin.dir}/${project.name}.Test.xml"> + <nowarn> + <warning number="1591" /> <!-- do not report warnings for missing XML comments --> + <warning number="3016" /> <!-- do not report warnings for array parameters --> + </nowarn> + <sources failonempty="true"> + <include name="src/test/csharp/**.cs" /> + </sources> + <references refid="test.dependencies" /> + </csc> + <csc if="${not current.build.keysign}" target="library" + define="${current.build.defines}" warnaserror="false" debug="${csc.debug}" optimize="${csc.optimize}" + output="${build.bin.dir}/${project.name}.Test.dll" doc="${build.bin.dir}/${project.name}.Test.xml"> + <nowarn> + <warning number="1591" /> <!-- do not report warnings for missing XML comments --> + <warning number="3016" /> <!-- do not report warnings for array parameters --> + </nowarn> + <sources failonempty="true"> + <include name="src/test/csharp/**.cs" /> + </sources> + <references refid="test.dependencies" /> + </csc> + <call target="copy-content" /> + </target> + + <target name="copy-content"> + <foreach item="File" property="content.filename"> + <in> + <items refid="content.filenames" /> + </in> + <do> + <copy todir="${build.bin.dir}" file="${content.filename}" if="${not file::up-to-date(content.filename, '${build.bin.dir}/${content.filename}')}" /> + </do> + </foreach> + </target> + + <!-- ============================================================================================ --> + <!-- I N S T A L L T A R G E T S --> + <!-- ============================================================================================ --> + + <target name="install-all" description="Install all build configurations for all runtime configurations"> + <echo message="Installing all build configurations for all runtime configurations." /> + <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework"> + <foreach item="String" in="${build.config.strings}" delim="," property="current.build.config"> + <call target="install" /> + </foreach> + </foreach> + </target> + + <!-- Install the modules to the local repo --> + <target name="install" depends="init, compile-target, conditional-install" + description="Install the artifacts into the nant repo" /> + + <target name="conditional-install" unless="${build.skip or install.skip}" + description="Install the artifacts into the nant repo"> + <property name="path" value="${project.group}/${project.name}/${project.version.full}/${current.build.framework}/${current.build.config}" /> + <foreach item="File" property="install.filename"> + <in> + <items refid="install.filenames" /> + </in> + <do> + <property name="repo.task.artifact" value="${path}/${path::get-file-name(install.filename)}" /> + <property name="repo.task.src" value="${install.filename}" /> + <property name="repo.task.dest" value="${nant.local.repo}/${repo.task.artifact}" /> + <mkdir dir="${directory::get-parent-directory(repo.task.dest)}" /> + <copy file="${repo.task.src}" tofile="${repo.task.dest}" /> + </do> + </foreach> + </target> + + <!-- ============================================================================================ --> + <!-- R E P O D O W N L O A D T A R G E T S --> + <!-- ============================================================================================ --> + + <target name="download-vendor-all" description="Download vendor files for all runtime configurations"> + <echo message="Downloading vendor files for all runtime configurations." /> + <property name="current.build.config" value="release" /> + <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework"> + <call target="download-vendor" /> + </foreach> + </target> + + <target name="download-vendor" depends="vendor-init, conditional-download" + description="Download the vendor artifacts from the nant repo" /> + + <target name="conditional-download" unless="${build.skip or download.skip}" + description="Download the artifacts from the nant repo"> + <!-- Iterate over the defined vendor filesets. --> + <foreach item="String" in="${vendor.fileset.names}" delim="," property="current.vendor"> + <property name="vendor.name" value="${property::get-value(current.vendor + '.name')}" /> + <property name="vendor.group" value="${property::get-value(current.vendor + '.group')}" /> + <property name="vendor.version" value="${property::get-value(current.vendor + '.version')}" /> + <property name="vendor.filenames" value="${property::get-value(current.vendor + '.filenames')}" /> + <property name="local.repo.vendor.path" value="${nant.local.repo}/${vendor.group}/${vendor.name}/${vendor.version}/${current.build.framework}/${current.build.config}" /> + <property name="lib.path" value="lib/${vendor.name}/${current.build.framework}" /> + <!-- + Update the LIB folder with the latest version of the file. If there is a newer version + installed in the local repository, then that version will be copied into the LIB folder. + --> + <foreach item="String" in="${vendor.filenames}" delim="," property="repo.task.artifact"> + <property name="lib.task.dest" value="${lib.path}/${repo.task.artifact}" /> + <mkdir dir="${directory::get-parent-directory(lib.task.dest)}" /> + <property name="repo.task.src" value="${local.repo.vendor.path}/${repo.task.artifact}" /> + <copy file="${repo.task.src}" tofile="${lib.task.dest}" if="${file::exists(repo.task.src)}" /> + <if test="${not file::exists(lib.task.dest)}"> + <echo message="Required dependent assembly ${repo.task.artifact} from ${vendor.name} for ${current.build.framework} is not available. Build skipped." /> + <property name="build.skip" value="true" /> + </if> + </foreach> + </foreach> + </target> + + <!-- ============================================================================================ --> + <!-- T E S T T A R G E T S --> + <!-- ============================================================================================ --> + + <target name="test" depends="test-debug" description="Alias test target to test-debug" /> + + <target name="test-all" depends="test-debug, test-release" description="Test all build configurations for all runtime configurations" /> + + <target name="test-debug" depends="" description="Test debug build configurations for all runtime configurations"> + <property name="current.build.config" value="debug" /> + <call target="test-frameworks" /> + </target> + + <target name="test-release" depends="" description="Test release build configurations for all runtime configurations"> + <property name="current.build.config" value="release" /> + <call target="test-frameworks" /> + </target> + + <target name="test-frameworks"> + <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework"> + <call target="init" /> + <if test="${not build.skip}"> + <exec program="nunit-console" failonerror="true" workingdir="build/${current.build.framework}/${current.build.config}"> + <arg value="${NUnit.Projectfile}" /> + <arg value="-labels" /> + <arg value="-exclude=Manual,LongRunning" /> + <arg value="-xml=Nunit.TestOutput.xml" /> + </exec> + </if> + </foreach> + </target> + + <!-- ============================================================================================ --> + <!-- M I S C E L L A N E O U S T A R G E T S --> + <!-- ============================================================================================ --> + + <target name="build" depends="default" description="Build the project." /> + + <target name="rebuild" depends="clean,build" description="Rebuild the project." /> + + <target name="clean" description="Deletes build"> + <if test="${target::exists('clean-init')}"> + <call target="clean-init" /> + </if> + <foreach item="String" in="${build.framework.strings}" delim="," property="current.build.framework"> + <foreach item="String" in="${build.config.strings}" delim="," property="current.build.config"> + <call target="clean-proj" /> + </foreach> + </foreach> + </target> + + <target name="clean-proj" depends="init" description="Deletes specific project build"> + <property name="clean.dir" value="build/${current.build.framework}/${current.build.config}" /> + <delete dir="${clean.dir}" if="${directory::exists(clean.dir)}" /> + <property name="clean.dir" value="package/${current.build.config}" /> + <delete dir="${clean.dir}" if="${directory::exists(clean.dir)}" /> + </target> + + <target name="package" description="Bundle the source and binary distributions."> + <mkdir dir="${package.dir}" + if="${not directory::exists(package.dir)}" /> + <zip zipfile="${package.dir}/${bin.package.name}"> + <fileset refid="bin.package.contents"/> + </zip> + <zip zipfile="${package.dir}/${src.package.name}"> + <fileset refid="src.package.contents"/> + </zip> + </target> + + <target name="doc" depends="build"> + <mkdir dir="${doc.dir}" /> + <ndoc failonerror="false"> + <assemblies basedir="${build.bin.dir}"> + <include name="${project.name}.dll" /> + </assemblies> + <summaries basedir="${basedir}/src/main/ndoc"> + <include name="NamespaceSummary.xml" /> + </summaries> + <documenters> + <documenter name="MSDN"> + <property name="OutputDirectory" value="${doc.dir}" /> + <property name="HtmlHelpName" value="${project.name}" /> + <property name="HtmlHelpCompilerFilename" value="hhc.exe" /> + <property name="IncludeFavorites" value="False" /> + <property name="Title" value="${project.short_description}" /> + <property name="SplitTOCs" value="False" /> + <property name="DefaulTOC" value="" /> + <!-- + <property name="ShowVisualBasic" value="True" /> + <property name="ShowMissingSummaries" value="True" /> + <property name="ShowMissingRemarks" value="True" /> + <property name="ShowMissingParams" value="True" /> + <property name="ShowMissingReturns" value="True" /> + <property name="ShowMissingValues" value="True" /> + --> + <property name="DocumentInternals" value="False" /> + <property name="DocumentProtected" value="True" /> + <property name="DocumentPrivates" value="False" /> + <property name="DocumentEmptyNamespaces" value="False" /> + <property name="IncludeAssemblyVersion" value="True" /> + <property name="CopyrightText" value="" /> + <property name="CopyrightHref" value="" /> + </documenter> + </documenters> + </ndoc> + </target> + + <target name="sandcastle" depends="set-release-configuration, init, conditional-compile"> + <!-- Directories --> + <property name="sandcastle.style" value="vs2005" unless="${property::exists('sandcastle.style')}" /> + <property name="documentation.dir" value="${build.bin.dir}" /> + <property name="bin.intern.dir" value="${build.bin.dir}" /> + <property name="bin.extern.dir" value="${basedir}\lib\NUnit\net-2.0" /> + <property name="sandcastle.dir" value="${environment::get-variable('DXROOT')}" /> + <property name="sandcastle.workingdir" value="${build.dir}\doc\${sandcastle.style}" /> + <property name="sandcastle.output.dir" value="${sandcastle.workingdir}\Output" /> + + <!-- Executables --> + <property name="sandcastle.mrefbuilder.exe" value="${sandcastle.dir}\productiontools\mrefbuilder.exe" /> + <property name="sandcastle.buildassembler.exe" value="${sandcastle.dir}\productiontools\buildassembler.exe" /> + <property name="sandcastle.xsltransform.exe" value="${sandcastle.dir}\productiontools\xsltransform.exe" /> + <property name="sandcastle.productiontransforms.dir" value="${sandcastle.dir}\ProductionTransforms" /> + + <!-- Create or Cleanup Working Directory --> + <mkdir dir="${sandcastle.workingdir}" + if="${not directory::exists(sandcastle.workingdir)}" /> + <delete> + <fileset basedir="${sandcastle.workingdir}"> + <include name="**\*" /> + </fileset> + </delete> + + <!-- Copy configuration file, and hard code references --> + <copy file="${sandcastle.dir}/Presentation/${sandcastle.style}/Configuration/Sandcastle.config" + tofile="${sandcastle.workingdir}/Sandcastle.config"> + <filterchain> + <replacestring from=""..\..\" to=""${sandcastle.dir}\" /> + <replacestring from=""..\" to=""${sandcastle.dir}\Examples\" /> + <replacestring from="".\comments.xml" to=""${documentation.dir}\${project.name}.xml" /> + <replacestring from=""%DXROOT%\Presentation\${sandcastle.style}\content\feedback_content.xml"" to=""${basedir}/src/main/sandcastle/feedback_content.xml"" /> + </filterchain> + </copy> + + <!-- Run MRefBuilder (introspection on assemblies) to create basic Reflection XML --> + <exec program="${sandcastle.mrefbuilder.exe}" workingdir="${sandcastle.workingdir}"> + <arg value="${bin.intern.dir}/${project.name}.dll" /> + <arg value="/out:reflection.int.xml" /> + <arg value="/dep:${bin.extern.dir}\*.dll" /> + </exec> + + <!-- Create Reflection XML --> + <exec program="${sandcastle.xsltransform.exe}" workingdir="${sandcastle.workingdir}"> + <arg value="/xsl:"${sandcastle.productiontransforms.dir}\ApplyVSDocModel.xsl"" if="${sandcastle.style != 'prototype'}" /> + <arg value="/xsl:"${sandcastle.productiontransforms.dir}\ApplyPrototypeDocModel.xsl"" if="${sandcastle.style == 'prototype'}" /> + <arg value="/xsl:"${sandcastle.productiontransforms.dir}\AddFriendlyFilenames.xsl"" /> <!-- if="${sandcastle.style != 'prototype'}" /> --> + <arg value="/xsl:"${sandcastle.productiontransforms.dir}\AddGuidFilenames.xsl"" if="${sandcastle.style == 'disabled'}" /> + <arg value="reflection.int.xml" /> + <arg value="/out:reflection.xml" /> + <arg value="/arg:IncludeAllMembersTopic=true" /> + <arg value="/arg:IncludeInheritedOverloadTopics=true" /> + </exec> + + <!-- Create Manifest (list of Topics) --> + <exec program="${sandcastle.xsltransform.exe}" workingdir="${sandcastle.workingdir}"> + <arg value="/xsl:"${sandcastle.productiontransforms.dir}\ReflectionToManifest.xsl"" /> + <arg value="reflection.xml" /> + <arg value="/out:manifest.xml" /> + </exec> + + <!-- Create Output Environment --> + <mkdir dir="${sandcastle.output.dir}" /> + <mkdir dir="${sandcastle.output.dir}/html" /> + <copy todir="${sandcastle.output.dir}"> + <fileset basedir="${sandcastle.dir}/Presentation/${sandcastle.style}"> + <include name="icons/*" /> + <include name="media/*" /> + <include name="scripts/*" /> + <include name="styles/*" /> + </fileset> + </copy> + + <!-- Run BuildAssembler (create html topic files) --> + <exec program="${sandcastle.buildassembler.exe}" workingdir="${sandcastle.workingdir}"> + <arg value="/config:Sandcastle.config" /> + <arg value="manifest.xml" /> + </exec> + </target> + + <target name="sandcastle-all" description="Generate all formats of the Sandcastle documentation files."> + <foreach item="String" in="vs2005,prototype,hana" delim="," property="sandcastle.style"> + <call target="sandcastle" /> + </foreach> + </target> +</project>
Added: activemq/activemq-dotnet/Apache.NMS.XMS/trunk/nant.build URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.XMS/trunk/nant.build?rev=1723221&view=auto ============================================================================== --- activemq/activemq-dotnet/Apache.NMS.XMS/trunk/nant.build (added) +++ activemq/activemq-dotnet/Apache.NMS.XMS/trunk/nant.build Wed Jan 6 02:19:56 2016 @@ -0,0 +1,189 @@ +<?xml version="1.0"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<project name="Apache.NMS.XMS" default="default" xmlns="http://nant.sourceforge.net/release/0.85/nant.xsd"> + <!-- ============================================================================================ --> + <!-- I N I T I A L I Z A T I O N --> + <!-- ============================================================================================ --> + <property name="basedir" value="${project::get-base-directory()}" /> + <property name="project.name" value="Apache.NMS.XMS" /> + <property name="project.group" value="org.apache.activemq" /> + <property name="project.version" value="1.8.0" unless="${property::exists('project.version')}" /> + <property name="project.release.type" value="SNAPSHOT" unless="${property::exists('project.release.type')}" /> + <property name="project.short_description" value="Apache NMS for XMS Class Library" /> + <property name="project.description" value="Apache NMS for XMS Class Library (.Net Messaging Library Implementation): An implementation of the NMS API for XMS" /> + <!-- The XMS module is not CLS compliant yet --> + <property name="project.cls.compliant" value="false" /> + <!-- Repository organized as: organization/module/version/plaform/artifact, platform might be something like 'all' or 'net-4.0/release' --> + <property name="nunit.dll" value="${basedir}/lib/NUnit/${current.build.framework}/nunit.framework.dll" dynamic="true" /> + <property name="Apache.NMS.dll" value="${basedir}/lib/Apache.NMS/${current.build.framework}/Apache.NMS.dll" dynamic="true" /> + <property name="Apache.NMS.pdb" value="${basedir}/lib/Apache.NMS/${current.build.framework}/Apache.NMS.pdb" dynamic="true" /> + <!--<property name="Apache.NMS.Test.dll" value="${basedir}/lib/Apache.NMS/${current.build.framework}//Apache.NMS.Test.dll" dynamic="true" />--> + <!--<property name="Apache.NMS.Test.pdb" value="${basedir}/lib/Apache.NMS/${current.build.framework}/Apache.NMS.Test.pdb" dynamic="true" />--> + <property name="IBM.XMS.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.dll" dynamic="true" /> + <property name="IBM.XMS.Impl.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Impl.dll" dynamic="true" /> + <property name="IBM.XMS.Core.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Core.dll" dynamic="true" /> + <property name="IBM.XMS.Util.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Util.dll" dynamic="true" /> + <property name="IBM.XMS.NLS.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.NLS.dll" dynamic="true" /> + <property name="IBM.XMS.Provider.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Provider.dll" dynamic="true" /> + <property name="IBM.XMS.Client.Impl.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Client.Impl.dll" dynamic="true" /> + <property name="IBM.XMS.Client.WMQ.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Client.WMQ.dll" dynamic="true" /> + <property name="IBM.XMS.Admin.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Admin.dll" dynamic="true" /> + <property name="IBM.XMS.Admin.Objects.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Admin.Objects.dll" dynamic="true" /> + <property name="IBM.XMS.Comms.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Comms.dll" dynamic="true" /> + <property name="IBM.XMS.Comms.RMM.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Comms.RMM.dll" dynamic="true" /> + <property name="IBM.XMS.Comms.SSL.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Comms.SSL.dll" dynamic="true" /> + <property name="IBM.XMS.Formats.JMF.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Formats.JMF.dll" dynamic="true" /> + <property name="IBM.XMS.Formats.MFP.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Formats.MFP.dll" dynamic="true" /> + <property name="IBM.XMS.Match.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.Match.dll" dynamic="true" /> + <property name="IBM.XMS.SIB.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.SIB.dll" dynamic="true" /> + <property name="IBM.XMS.WCF.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.WCF.dll" dynamic="true" /> + <property name="IBM.XMS.WCF.NLS.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.WCF.NLS.dll" dynamic="true" /> + <property name="IBM.XMS.WMQI.dll" value="${basedir}/lib/IBM.XMS/${current.build.framework}/IBM.XMS.WMQI.dll" dynamic="true" /> + <property name="NUnit.Projectfile" value="Apache.NMS.XMS.Test.nunit" /> + <!-- Skip certain frameworks, since IBM XMS client is not supported on those platforms. --> + <property name="build.netcf-2.0.skip" value="true" /> + <property name="build.netcf-3.5.skip" value="true" /> + <property name="build.mono-2.0.skip" value="true" /> + <!-- Possibly supported (cf. http://stackoverflow.com/questions/10138267/ibm-mqs-net-xms-and-mono) but not tested --> + <property name="build.mono-4.0.skip" value="true" /> + <!-- Possibly supported (cf. http://stackoverflow.com/questions/10138267/ibm-mqs-net-xms-and-mono) but not tested --> + <property name="build.net-2.0.skip" value="true" /> + <!-- Possibly supported but not tested --> + <property name="build.net-3.5.skip" value="true" /> + <!-- Possibly supported but not tested --> + <target name="vendor-init" description="Initializes Vendor library from local repository."> + <!-- + Vendor specific info. The prefix of 'vendor.apache.org' is taken from the property + 'vendor.fileset.names'. This comma-delimited list is iterated, and properties with + well-known suffixes are used to access and copy down vendor file dependencies. + --> + <property name="vendor.fileset.names" value="vendor.apache.org,vendor.nunit.org,vendor.ibm.org" /> + <!-- Property grouping for 'vendor.apache.org' --> + <property name="vendor.apache.org.name" value="Apache.NMS" /> + <property name="vendor.apache.org.group" value="org.apache.activemq" /> + <property name="vendor.apache.org.version" value="1.8.0" /> + <property name="vendor.apache.org.filenames" value="Apache.NMS.dll,Apache.NMS.pdb,Apache.NMS.Test.dll,Apache.NMS.Test.pdb" /> + <!-- Property grouping for 'vendor.nunit.org' --> + <property name="vendor.nunit.org.name" value="NUnit" /> + <property name="vendor.nunit.org.group" value="org.nunit" /> + <property name="vendor.nunit.org.version" value="2.5.8" /> + <property name="vendor.nunit.org.filenames" value="nunit.framework.dll" /> + <!-- Property grouping for 'vendor.ibm.org' --> + <property name="vendor.ibm.org.name" value="IBM.XMS" /> + <property name="vendor.ibm.org.group" value="org.ibm.xms" /> + <property name="vendor.ibm.org.version" value="8.0.0" /> + <property name="vendor.ibm.org.filenames" value="IBM.XMS.dll,IBM.XMS.Impl.dll,IBM.XMS.Core.dll,IBM.XMS.Util.dll,IBM.XMS.NLS.dll,IBM.XMS.Provider.dll,IBM.XMS.Client.Impl.dll,IBM.XMS.Client.WMQ.dll,IBM.XMS.Admin.dll,IBM.XMS.Admin.Objects.dll,IBM.XMS.Comms.dll,IBM.XMS.Comms.RMM.dll,IBM.XMS.Comms.SSL.dll,IBM.XMS.Formats.JMF.dll,IBM.XMS.Formats.MFP.dll,IBM.XMS.Match.dll,IBM.XMS.SIB.dll,IBM.XMS.WCF.dll,IBM.XMS.WCF.NLS.dll,IBM.XMS.WMQI.dll" /> + </target> + <target name="dependency-init" description="Initializes build dependencies"> + <assemblyfileset failonempty="true" id="dependencies"> + <include name="${current.build.framework.assembly.dir}/mscorlib.dll" /> + <include name="${current.build.framework.assembly.dir}/System.dll" /> + <include name="${current.build.framework.assembly.dir}/System.Xml.dll" /> + <include name="${IBM.XMS.dll}" /> + <include name="${IBM.XMS.Impl.dll}" /> + <include name="${IBM.XMS.Core.dll}" /> + <include name="${IBM.XMS.Util.dll}" /> + <include name="${IBM.XMS.NLS.dll}" /> + <include name="${IBM.XMS.Provider.dll}" /> + <include name="${IBM.XMS.Client.Impl.dll}" /> + <include name="${IBM.XMS.Client.WMQ.dll}" /> + <include name="${IBM.XMS.Admin.dll}" /> + <include name="${IBM.XMS.Admin.Objects.dll}" /> + <include name="${IBM.XMS.Comms.dll}" /> + <include name="${IBM.XMS.Comms.RMM.dll}" /> + <include name="${IBM.XMS.Comms.SSL.dll}" /> + <include name="${IBM.XMS.Formats.JMF.dll}" /> + <include name="${IBM.XMS.Formats.MFP.dll}" /> + <include name="${IBM.XMS.Match.dll}" /> + <include name="${IBM.XMS.SIB.dll}" /> + <include name="${IBM.XMS.WCF.dll}" /> + <include name="${IBM.XMS.WCF.NLS.dll}" /> + <include name="${IBM.XMS.WMQI.dll}" /> + <include name="${Apache.NMS.dll}" /> + </assemblyfileset> + <assemblyfileset failonempty="true" id="test.dependencies"> + <include name="${current.build.framework.assembly.dir}/mscorlib.dll" /> + <include name="${current.build.framework.assembly.dir}/System.dll" /> + <include name="${current.build.framework.assembly.dir}/System.Xml.dll" /> + <include name="${IBM.XMS.dll}" /> + <include name="${IBM.XMS.Impl.dll}" /> + <include name="${IBM.XMS.Core.dll}" /> + <include name="${IBM.XMS.Util.dll}" /> + <include name="${IBM.XMS.NLS.dll}" /> + <include name="${IBM.XMS.Provider.dll}" /> + <include name="${IBM.XMS.Client.Impl.dll}" /> + <include name="${IBM.XMS.Client.WMQ.dll}" /> + <include name="${IBM.XMS.Admin.dll}" /> + <include name="${IBM.XMS.Admin.Objects.dll}" /> + <include name="${IBM.XMS.Comms.dll}" /> + <include name="${IBM.XMS.Comms.RMM.dll}" /> + <include name="${IBM.XMS.Comms.SSL.dll}" /> + <include name="${IBM.XMS.Formats.JMF.dll}" /> + <include name="${IBM.XMS.Formats.MFP.dll}" /> + <include name="${IBM.XMS.Match.dll}" /> + <include name="${IBM.XMS.SIB.dll}" /> + <include name="${IBM.XMS.WCF.dll}" /> + <include name="${IBM.XMS.WCF.NLS.dll}" /> + <include name="${IBM.XMS.WMQI.dll}" /> + <include name="${Apache.NMS.dll}" /> + <!--<include name="${Apache.NMS.Test.dll}" />--> + <include name="${build.bin.dir}/${project.name}.dll" /> + <include name="${nunit.dll}" /> + </assemblyfileset> + <fileset id="content.filenames"> + <include name="LICENSE.txt" /> + <include name="NOTICE.txt" /> + <include name="nmsprovider-*.config" /> + <include name="${IBM.XMS.dll}" /> + <include name="${IBM.XMS.Impl.dll}" /> + <include name="${IBM.XMS.Core.dll}" /> + <include name="${IBM.XMS.Util.dll}" /> + <include name="${IBM.XMS.NLS.dll}" /> + <include name="${IBM.XMS.Provider.dll}" /> + <include name="${IBM.XMS.Client.Impl.dll}" /> + <include name="${IBM.XMS.Client.WMQ.dll}" /> + <include name="${IBM.XMS.Admin.dll}" /> + <include name="${IBM.XMS.Admin.Objects.dll}" /> + <include name="${IBM.XMS.Comms.dll}" /> + <include name="${IBM.XMS.Comms.RMM.dll}" /> + <include name="${IBM.XMS.Comms.SSL.dll}" /> + <include name="${IBM.XMS.Formats.JMF.dll}" /> + <include name="${IBM.XMS.Formats.MFP.dll}" /> + <include name="${IBM.XMS.Match.dll}" /> + <include name="${IBM.XMS.SIB.dll}" /> + <include name="${IBM.XMS.WCF.dll}" /> + <include name="${IBM.XMS.WCF.NLS.dll}" /> + <include name="${IBM.XMS.WMQI.dll}" /> + <include name="${Apache.NMS.dll}" /> + <include name="${Apache.NMS.pdb}" /> + <!--<include name="${Apache.NMS.Test.dll}" />--> + <!--<include name="${Apache.NMS.Test.pdb}" />--> + <include name="${nunit.dll}" /> + <include name="${NUnit.Projectfile}" /> + </fileset> + <fileset id="install.filenames"> + <include name="LICENSE.txt" /> + <include name="NOTICE.txt" /> + <include name="${build.bin.dir}/${project.name}.dll" /> + <include name="${build.bin.dir}/${project.name}.pdb" /> + </fileset> + </target> + <target name="default" depends="install-all" /> + <!-- Load the common target definitions --> + <include buildfile="${basedir}/nant-common.xml" /> +</project> Added: activemq/activemq-dotnet/Apache.NMS.XMS/trunk/package.ps1 URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.XMS/trunk/package.ps1?rev=1723221&view=auto ============================================================================== --- activemq/activemq-dotnet/Apache.NMS.XMS/trunk/package.ps1 (added) +++ activemq/activemq-dotnet/Apache.NMS.XMS/trunk/package.ps1 Wed Jan 6 02:19:56 2016 @@ -0,0 +1,61 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +$pkgname = "Apache.NMS.XMS" +$pkgver = "1.8-SNAPSHOT" +$configurations = "release", "debug" +$frameworks = "net-4.0" + +write-progress "Creating package directory." "Initializing..." +if(!(test-path package)) +{ + md package +} + +if(test-path build) +{ + pushd build + + $pkgdir = "..\package" + + write-progress "Packaging Application files." "Scanning..." + $zipfile = "$pkgdir\$pkgname-$pkgver-bin.zip" + zip -9 -u -j "$zipfile" ..\LICENSE.txt + zip -9 -u -j "$zipfile" ..\NOTICE.txt + foreach($configuration in $configurations) + { + foreach($framework in $frameworks) + { + zip -9 -u "$zipfile" "$framework\$configuration\$pkgname.dll" + zip -9 -u "$zipfile" "$framework\$configuration\$pkgname.xml" + zip -9 -u "$zipfile" "$framework\$configuration\xmsprovider*.config" + zip -9 -u "$zipfile" "$framework\$configuration\$pkgname.Test.dll" + zip -9 -u "$zipfile" "$framework\$configuration\$pkgname.Test.xml" + zip -9 -u "$zipfile" "$framework\$configuration\$pkgname.pdb" + zip -9 -u "$zipfile" "$framework\$configuration\$pkgname.Test.pdb" + } + } + + popd +} + +write-progress "Packaging Source code files." "Scanning..." +$pkgdir = "package" +$zipfile = "$pkgdir\$pkgname-$pkgver-src.zip" + +zip -9 -u "$zipfile" LICENSE.txt NOTICE.txt nant-common.xml nant.build package.ps1 vs2013-xms-test.csproj vs2013-xms.csproj vs2013-xms.sln +zip -9 -u -r "$zipfile" keyfile src + +write-progress -Completed "Packaging" "Complete." Propchange: activemq/activemq-dotnet/Apache.NMS.XMS/trunk/src/main/csharp/ ------------------------------------------------------------------------------ --- svn:ignore (added) +++ svn:ignore Wed Jan 6 02:19:56 2016 @@ -0,0 +1 @@ +CommonAssemblyInfo.cs Added: activemq/activemq-dotnet/Apache.NMS.XMS/trunk/src/main/csharp/BytesMessage.cs URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.XMS/trunk/src/main/csharp/BytesMessage.cs?rev=1723221&view=auto ============================================================================== --- activemq/activemq-dotnet/Apache.NMS.XMS/trunk/src/main/csharp/BytesMessage.cs (added) +++ activemq/activemq-dotnet/Apache.NMS.XMS/trunk/src/main/csharp/BytesMessage.cs Wed Jan 6 02:19:56 2016 @@ -0,0 +1,187 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +using System; +using Apache.NMS; +using Apache.NMS.Util; +using Apache.NMS.XMS.Util; +using IBM.XMS; + +namespace Apache.NMS.XMS +{ + class BytesMessage : Apache.NMS.XMS.Message, Apache.NMS.IBytesMessage + { + public IBM.XMS.IBytesMessage xmsBytesMessage + { + get { return (IBM.XMS.IBytesMessage)this.xmsMessage; } + set { this.xmsMessage = value; } + } + + public BytesMessage(IBM.XMS.IBytesMessage message) + : base(message) + { + } + + #region IBytesMessage Members + + public byte[] Content + { + get + { + int contentLength = (int) this.xmsBytesMessage.BodyLength; + byte[] msgContent = new byte[contentLength]; + + this.xmsBytesMessage.Reset(); + this.xmsBytesMessage.ReadBytes(msgContent, contentLength); + return msgContent; + } + + set + { + this.ReadOnlyBody = false; + this.xmsBytesMessage.ClearBody(); + this.xmsBytesMessage.WriteBytes(value, 0, value.Length); + } + } + + public long BodyLength + { + get { return this.xmsBytesMessage.BodyLength; } + } + + public bool ReadBoolean() + { + return this.xmsBytesMessage.ReadBoolean(); + } + + public byte ReadByte() + { + return (byte) this.xmsBytesMessage.ReadByte(); + } + + public int ReadBytes(byte[] value, int length) + { + return this.xmsBytesMessage.ReadBytes(value, length); + } + + public int ReadBytes(byte[] value) + { + return this.xmsBytesMessage.ReadBytes(value); + } + + public char ReadChar() + { + return this.xmsBytesMessage.ReadChar(); + } + + public double ReadDouble() + { + return this.xmsBytesMessage.ReadDouble(); + } + + public short ReadInt16() + { + return this.xmsBytesMessage.ReadShort(); + } + + public int ReadInt32() + { + return this.xmsBytesMessage.ReadInt(); + } + + public long ReadInt64() + { + return this.xmsBytesMessage.ReadLong(); + } + + public float ReadSingle() + { + return this.xmsBytesMessage.ReadFloat(); + } + + public string ReadString() + { + return this.xmsBytesMessage.ReadUTF(); + } + + public void Reset() + { + this.xmsBytesMessage.Reset(); + } + + public void WriteBoolean(bool value) + { + this.xmsBytesMessage.WriteBoolean(value); + } + + public void WriteByte(byte value) + { + this.xmsBytesMessage.WriteByte(value); + } + + public void WriteBytes(byte[] value, int offset, int length) + { + this.xmsBytesMessage.WriteBytes(value, offset, length); + } + + public void WriteBytes(byte[] value) + { + this.xmsBytesMessage.WriteBytes(value); + } + + public void WriteChar(char value) + { + this.xmsBytesMessage.WriteChar(value); + } + + public void WriteDouble(double value) + { + this.xmsBytesMessage.WriteDouble(value); + } + + public void WriteInt16(short value) + { + this.xmsBytesMessage.WriteShort(value); + } + + public void WriteInt32(int value) + { + this.xmsBytesMessage.WriteInt(value); + } + + public void WriteInt64(long value) + { + this.xmsBytesMessage.WriteLong(value); + } + + public void WriteObject(object value) + { + this.xmsBytesMessage.WriteObject(value); + } + + public void WriteSingle(float value) + { + this.xmsBytesMessage.WriteFloat(value); + } + + public void WriteString(string value) + { + this.xmsBytesMessage.WriteUTF(value); + } + + #endregion + } +} Added: activemq/activemq-dotnet/Apache.NMS.XMS/trunk/src/main/csharp/Connection.cs URL: http://svn.apache.org/viewvc/activemq/activemq-dotnet/Apache.NMS.XMS/trunk/src/main/csharp/Connection.cs?rev=1723221&view=auto ============================================================================== --- activemq/activemq-dotnet/Apache.NMS.XMS/trunk/src/main/csharp/Connection.cs (added) +++ activemq/activemq-dotnet/Apache.NMS.XMS/trunk/src/main/csharp/Connection.cs Wed Jan 6 02:19:56 2016 @@ -0,0 +1,461 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +using System; +using Apache.NMS; +using Apache.NMS.Util; +using Apache.NMS.XMS.Util; +using IBM.XMS; + +namespace Apache.NMS.XMS +{ + /// <summary> + /// Represents an NMS connection to IBM MQ. + /// </summary> + /// + public class Connection : Apache.NMS.IConnection + { + private Apache.NMS.AcknowledgementMode acknowledgementMode; + public readonly IBM.XMS.IConnection xmsConnection; + private IRedeliveryPolicy redeliveryPolicy; + private ConnectionMetaData metaData = null; + private readonly Atomic<bool> started = new Atomic<bool>(false); + private bool closed = false; + private bool disposed = false; + + #region Constructors + + /// <summary> + /// Constructs a connection object. + /// </summary> + public Connection(IBM.XMS.IConnection xmsConnection) + { + this.xmsConnection = xmsConnection; + this.xmsConnection.ExceptionListener = this.HandleXmsException; + } + + /// <summary> + /// "Destructs" or "finalizes" a connection object. + /// </summary> + ~Connection() + { + Dispose(false); + } + + #endregion + + #region IStartable Members + + /// <summary> + /// Starts message delivery for this connection. + /// </summary> + public void Start() + { + if(started.CompareAndSet(false, true)) + { + try + { + this.xmsConnection.Start(); + } + catch(Exception ex) + { + ExceptionUtil.WrapAndThrowNMSException(ex); + } + } + } + + public bool IsStarted + { + get { return this.started.Value; } + } + + #endregion + + #region IStoppable Members + + /// <summary> + /// Stop message delivery for this connection. + /// </summary> + public void Stop() + { + try + { + if(started.CompareAndSet(true, false)) + { + this.xmsConnection.Stop(); + } + } + catch(Exception ex) + { + ExceptionUtil.WrapAndThrowNMSException(ex); + } + } + + #endregion + + #region IConnection Members + + /// <summary> + /// Creates a new session to work on this connection + /// </summary> + public Apache.NMS.ISession CreateSession() + { + return CreateSession(acknowledgementMode); + } + + /// <summary> + /// Creates a new session to work on this connection + /// </summary> + public Apache.NMS.ISession CreateSession( + Apache.NMS.AcknowledgementMode mode) + { + try + { + bool isTransacted = + (mode == Apache.NMS.AcknowledgementMode.Transactional); + return XMSConvert.ToNMSSession( + this.xmsConnection.CreateSession( + isTransacted, XMSConvert.ToAcknowledgeMode(mode))); + } + catch(Exception ex) + { + ExceptionUtil.WrapAndThrowNMSException(ex); + return null; + } + } + + public void Close() + { + lock(this) + { + if(closed) + { + return; + } + + try + { + this.xmsConnection.ExceptionListener = null; + this.xmsConnection.Stop(); + this.xmsConnection.Close(); + } + catch(Exception ex) + { + ExceptionUtil.WrapAndThrowNMSException(ex); + } + finally + { + closed = true; + } + } + } + + public void PurgeTempDestinations() + { + } + + #endregion + + #region IDisposable Members + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected void Dispose(bool disposing) + { + if(disposed) + { + return; + } + + if(disposing) + { + // Dispose managed code here. + } + + try + { + Close(); + } + catch + { + // Ignore errors. + } + + disposed = true; + } + + #endregion + + #region Attributes + + /// <summary> + /// The default timeout for network requests. + /// </summary> + public TimeSpan RequestTimeout + { + get { return Apache.NMS.NMSConstants.defaultRequestTimeout; } + set { } + } + + public Apache.NMS.AcknowledgementMode AcknowledgementMode + { + get { return acknowledgementMode; } + set { acknowledgementMode = value; } + } + + public string ClientId + { + get + { + try + { + return this.xmsConnection.ClientID; + } + catch(Exception ex) + { + ExceptionUtil.WrapAndThrowNMSException(ex); + return null; + } + } + set + { + try + { + this.xmsConnection.ClientID = value; + } + catch(Exception ex) + { + ExceptionUtil.WrapAndThrowNMSException(ex); + } + } + } + + /// <summary> + /// Get/or set the redelivery policy for this connection. + /// </summary> + public IRedeliveryPolicy RedeliveryPolicy + { + get { return this.redeliveryPolicy; } + set { this.redeliveryPolicy = value; } + } + + /// <summary> + /// Gets the Meta Data for the NMS Connection instance. + /// </summary> + public IConnectionMetaData MetaData + { + get { return this.metaData ?? (this.metaData = new ConnectionMetaData()); } + } + + #endregion + + #region Properties + + // http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.msc.doc/props_conn.htm?lang=en + + #region Common properties + + /// <summary> + /// This property is used to obtain the name of the queue manager + /// to which it is connected. + /// </summary> + public string ResolvedQueueManagerName + { + get { return this.xmsConnection.GetStringProperty(XMSC.WMQ_RESOLVED_QUEUE_MANAGER); } + set { this.xmsConnection.SetStringProperty(XMSC.WMQ_RESOLVED_QUEUE_MANAGER, value); } + } + + /// <summary> + /// This property is populated with the ID of the queue manager + /// after the connection. + /// </summary> + public string ResolvedQueueManagerId + { + get { return this.xmsConnection.GetStringProperty(XMSC.WMQ_RESOLVED_QUEUE_MANAGER_ID); } + set { this.xmsConnection.SetStringProperty(XMSC.WMQ_RESOLVED_QUEUE_MANAGER_ID, value); } + } + + #endregion + + #region WPM-specific properties + + /// <summary> + /// The communications protocol used for the connection to the + /// messaging engine. This property is read-only. + /// </summary> + public Int32 XMSConnectionProtocol + { + get { return this.xmsConnection.GetIntProperty(XMSC.WPM_CONNECTION_PROTOCOL); } + } + + /// <summary> + /// The communications protocol used for the connection to the + /// messaging engine. This property is read-only. + /// </summary> + public WPMConnectionProtocol ConnectionProtocol + { + get { return XMSConvert.ToWPMConnectionProtocol(this.XMSConnectionProtocol); } + } + + /// <summary> + /// The host name or IP address of the system that contains the + /// messaging engine to which the application is connected. This + /// property is read-only. + /// </summary> + public string HostName + { + get { return this.xmsConnection.GetStringProperty(XMSC.WPM_HOST_NAME); } + } + + /// <summary> + /// The name of the messaging engine to which the application is + /// connected. This property is read-only. + /// </summary> + public string MessagingEngineName + { + get { return this.xmsConnection.GetStringProperty(XMSC.WPM_ME_NAME); } + } + + /// <summary> + /// The number of the port listened on by the messaging engine to + /// which the application is connected. This property is read-only. + /// </summary> + public Int32 Port + { + get { return this.xmsConnection.GetIntProperty(XMSC.WPM_PORT); } + } + + #endregion + + #endregion + + #region Event Listeners, Handlers and Delegates + + /// <summary> + /// A delegate that can receive transport level exceptions. + /// </summary> + public event ExceptionListener ExceptionListener; + + /// <summary> + /// Handles XMS connection exceptions. + /// </summary> + private void HandleXmsException(Exception exception) + { + if(ExceptionListener != null) + { + // Return codes MQRC_RECONNECTING and MQRC_RECONNECTED + // are not defined in XMS. + // const int MQRC_RECONNECTING = 2544; + // const int MQRC_RECONNECTED = 2545; + // According to http://www-01.ibm.com/support/knowledgecenter/#!/SSFKSJ_8.0.0/com.ibm.mq.con.doc/q017800_.htm + // Except for JMS and XMS clients, if a client application has + // access to reconnection options, it can also create an event + // handler to handle reconnection events. + ExceptionListener(exception); + } + else + { + Apache.NMS.Tracer.Error(exception); + } + } + + /// <summary> + /// An asynchronous listener that is notified when a fault tolerant + /// connection has been interrupted. + /// </summary> + /// <remarks> + /// IBM XMS does not handle disconnection / reconnection notifications. + /// This delegate will never be called. + /// </remarks> + public event ConnectionInterruptedListener ConnectionInterruptedListener; + + private void HandleTransportInterrupted() + { + Tracer.Debug("Transport has been interrupted."); + + if(this.ConnectionInterruptedListener != null && !this.closed) + { + try + { + this.ConnectionInterruptedListener(); + } + catch + { + } + } + } + + /// <summary> + /// An asynchronous listener that is notified when a fault tolerant + /// connection has been resumed. + /// </summary> + /// <remarks> + /// IBM XMS does not handle disconnection / reconnection notifications. + /// This delegate will never be called. + /// </remarks> + public event ConnectionResumedListener ConnectionResumedListener; + + private void HandleTransportResumed() + { + Tracer.Debug("Transport has resumed normal operation."); + + if(this.ConnectionResumedListener != null && !this.closed) + { + try + { + this.ConnectionResumedListener(); + } + catch + { + } + } + } + + private ConsumerTransformerDelegate consumerTransformer; + /// <summary> + /// A Delegate that is called each time a Message is dispatched to allow the client to do + /// any necessary transformations on the received message before it is delivered. The + /// ConnectionFactory sets the provided delegate instance on each Connection instance that + /// is created from this factory, each connection in turn passes the delegate along to each + /// Session it creates which then passes that along to the Consumers it creates. + /// </summary> + public ConsumerTransformerDelegate ConsumerTransformer + { + get { return this.consumerTransformer; } + set { this.consumerTransformer = value; } + } + + private ProducerTransformerDelegate producerTransformer; + /// <summary> + /// A delegate that is called each time a Message is sent from this Producer which allows + /// the application to perform any needed transformations on the Message before it is sent. + /// The ConnectionFactory sets the provided delegate instance on each Connection instance that + /// is created from this factory, each connection in turn passes the delegate along to each + /// Session it creates which then passes that along to the Producers it creates. + /// </summary> + public ProducerTransformerDelegate ProducerTransformer + { + get { return this.producerTransformer; } + set { this.producerTransformer = value; } + } + + #endregion + } +}
