Hi Will,
One thing I noticed is that you're missing end quotes after your environment names.. eg "dev-main
Also you may want to consider using the default environments (local, test, qa, stage, prod) I think those names have special meaning to Mach-ii.
You're also missing the <parameters> tag. So If I were to rewrite your code, it would look something like:
<property name="environment" type="MachII.properties.EnvironmentProperty">
<parameters>
<parameter name="defaultEnvironmentName" value="local" />
<parameter name="local">
<struct>
<key name="properties">
<struct>
<key name="dsn" value="datasource1" />
</struct>
</key>
</struct>
</parameter>
<parameter name="test">
<struct>
<key name="properties">
<struct>
<key name="dsn" value="datasource2" />
</struct>
</key>
</struct>
</parameter>
<parameter name="prod">
<struct>
<key name="properties">
<struct>
<key name="dsn" value="datasource2" />
</struct>
</key>
</struct>
</parameter>
</parameters>
</property>Hope that helps!
-- Jason