"Versioning System Isolated Libraries" Strategy

I am working with NFE 2.2.3 against Natural 4.1x for the mainframe.

I am trying to follow the “Versioning System Isolated Libraries” strategy described in the Natural for Eclipse Architecture help document. The description isn’t detailed enough for me to get it working.

I believe I can create a file that looks like the following example from the help document, call it .nat-team, and drop it into my Natural project folder.


1. <team active="true">
2.	  <distribution replacement="L_${member}_${library}">
3.		  <library token="TE">
4.			  <include pattern="**/test/**"/>
5.		  </library>		
6.		  <library token="FI">
7.			  <include pattern="**/fi*/**"/>
8.			  <exclude pattern="**/fi*/ext*"/>
9.		  </library>		
10.		  <library token="CO">
11.			  <include pattern = "**/co*/**"/>
12.		  </library>		
13.		  <library token="ET"/>
14.	  </distribution>
15.	  <members>
16.		  <member name="anne.smith" token="ASM"/>
17.		  <member name="john.doe" token="JDO"/>
18.	  </members>
19. </team>

Doing that (adapted with my own values) produces the following error:

The “Details” button is grayed-out and a look at the error log says that no stack trace is available.

What user file? What am I missing?

This morning I discovered that the Problems tab in Eclipse contains nicely detailed information about issues with the .nat-team file when they exist. It’s much easier to fix problems with feedback. :slight_smile:

The potentially common mistakes I made during this experiment were:

  • I tried to identify members by their Natural Security credential, rather than by how they logged on to the development machine.
    → Error “User [you] is not specified in the file .nat-team”
    I tried mapping more than one member name to the same token.
    → Error “Token [token] is already assigned to team member [team member]”
    I tried to simplify the file by hard-coding the library I needed and commenting out members entirely.
    → Error “Missing mandatory element members”

The following works for my test use case, where code lives in a directory called “foo,” the user mgodfrey should work against the library DPAP1, and the user bgchpmn should work against the library DPAP2.

<?xml version="1.0" encoding="UTF-8"?>
<team active="true"> 
  <distribution replacement="${library}${member}">
    <library token="DPAP">
  	  <include pattern="**/foo/**"/>
    </library>		
    <library token="DPAPP"/>
  </distribution>
  <members>
    <member name="mgodfrey" token="1"/>
    <member name="bgchpmn" token="2"/>
  </members>
</team>

At the risk of perpetuating a monologue…what would this file look like if I wanted to try the “Versioning System Shared Libraries” approach?

Trying to map two members to the same token…

[snip]
    <member name="mgodfrey" token="1"/>
    <member name="bgchpmn" token="1"/>
[/snip]

…results in the second error listed above.

Trying to map two people in one member element…

[snip]
    <member name="mgodfrey, bgchpmn" token="1"/>
[/snip]

…results in the first error listed above.