Death Knights

Nov 28, 2008 at 2:58 PM
I'm getting a "Class Not Found" exception when parsing the armory for a Death Knight character, and I believe this is stopping the app from parsing the rest of the armory, thus leaving our roster members stuck at level 70.

Type: Kralizek.WoWArmoryParser.ClassNotValidException
Error Info: DotNetWarcraft.WoWGuildRoster.Business.LoadArmoryRoster.Execute(1) - Exception while calling Kralize
Message: Error in the application. - at Kralizek.WoWArmoryParser.ArmoryParser.GetClassEnumFromString(String Cls) at Kralizek.WoWArmoryParser.ArmoryParser.GetGuild(String Realm, String Name, RegionEnum Region) at DotNetWarcraft.WoWGuildRoster.Business.LoadArmoryRoster.Execute()
Nov 29, 2008 at 7:20 AM

From the ArmoryParser DLL, this is the code that's causing it to barf:

        Protected Shared Function GetClassEnumFromString(ByVal Cls As String) As ClassEnum
            Dim res As ClassEnum
            Select Case Cls.ToLower
                Case "druid"
                    res = ClassEnum.Druid
                Case "hunter" res = ClassEnum.Hunter Case "mage"
                    res = ClassEnum.Mage
                Case "paladin" res = ClassEnum.Paladin Case "priest"
                    res = ClassEnum.Priest
                Case "rogue"
                    res = ClassEnum.Rogue
                Case "shaman"
                    res = ClassEnum.Shaman
                Case "warlock"
                    res = ClassEnum.Warlock
                Case "warrior"
                    res = ClassEnum.Warrior
                Case Else
                    Throw New ClassNotValidException
            End Select
            Return res
        End Function

It's located in DotNetWarcraft.WowGuildRoster -> Kralizek.WowArmoryParser.Port -> WoWArmoryParser -> ArmoryParser.vb

I'll fix this Monday night - I just reimaged my laptop and need to reinstall VS2008, but the software is at my work desk. But that's what most likely needs to be fixed to get it back up and in action. Any other quirks?

Also - any good pointers for a DK graphic?

Dec 1, 2008 at 1:46 AM
Okay - it's fixed in the new v1.5.1 version.

Thankfully, only minor changes required in my code (and most of that on the UI level to account for new entries in the 'all classes' and 'all professions' pages; the images; and the CSS to support the new items). Most of the changes were in the Armory parser code.

I've done some cleanup in the code while I was in there - removed the AjaxToolkit references (should make installs much easier for new folks), cleaned up a parsing of a deprecated Armory XML file (should dramatically cut down - or out - the 503 errors), and made some changes to the Armory Parser code that should speed it up a bit.

It seems to be working on the DNN site for my old guild; please let me know if any regression bugs show their ugly heads.

Dec 22, 2008 at 11:12 AM
There is a bug in your version of the Armory Parser, perhaps in previous versions as well. If the character is on an arena team, it will mistakenly select the last <character> element of the last arena team as the character to be retrieved.

Dec 22, 2008 at 6:46 PM
Thanks Matt,

I know that had been an issue in a previous version (it cause for a lot of shamans and druids that had races of all types -- which looked odd). I thought that Kralizek had fixed it when those issues went away. It makes me a sad panda that they may have returned.

I know how to fix it, and now that I've forked his code, I'll give it a pass either tonight or tomorrow. Do you have a guild and some characters that I can use as test cases? Most of my guild don't actively PvP.

I can also add details around the PvP section of the character page (while I'm in that portion of the code), if that would be of interest to you. Most of the logic to store and display is already in the code...the armory parser just wasn't able to pull it [and, as I mentioned, this isn't an issue any more since I forked Kralizek's code].

Again - thanks!
Dec 22, 2008 at 9:44 PM
I'm using the ArmoryParser for a simple list of characters to track members of a forum's WoW Characters.

You can see it in action here:

The following characters on that list are being misidentified:
stosky stosky Stonemaul Alliance Hunter 14/57/0 80 Armory
nooble iancreduble Stonemaul Alliance Hunter 14/0/57 80 Armory
wreckt wreckt Executus Horde Warlock 0/16/55 80 Armory

Dec 23, 2008 at 4:30 AM
Thanks Matt.

I dug into the forked Armory Parser code and ripped up the garden. :) I made some changes that should cut down on the number of cycles that it runs, by making a decent number of changes in the base code and the classes that it uses to do the parsing.

The new code now properly parses out all of the arena information (emblem, statistics, members, leader, etc), and - in the process - it only parses the 'character' node a single time. This should fix the issue you encountered. I will make use of the data for v1.6.1 of the DNN WoW Guild Roster here, but probably won't post the code for a few days.

I assume that you were using the DLL for the ArmoryParser and not the rest of my code, so I checked in the changes - you should be able to download the project and compile it on your system. If you need me to post the DLL up as a release, I can do that too. Just let me know either way - and let me know how it works for you.

Please let me know how it goes; and hope this helps,
Mar 10, 2009 at 12:27 AM
Hi folks!

The problem had with the DK class introduction is the price to pay for using strong-typed objects instead of bare strings/ints.
I know, in this way it's almost impossible to avoid future problems with armory changes but, I think, if you want a weak-typed object, you can easily retrieve all the information you need via XmlReader or Linq-to-Xml objects.

As far as I can remember, I'm pretty sure I solved the issue with different members enjoying arena. Probably some change in the xml source made the issue pop up again.