Parsing XML using Informatica Cloud - xml-parsing

I am facing an issue while parsing the XML file using Informatica Cloud. The XML have multiple nodes. Example provided below. I have to use 36 SORTER and JOINERS, means SORTERS and JOINERS for each node in the XML. Obviously the mapping became too huge. I have used the JOIN conditions using the internal Primary and Foreign Keys generated within the Informatica. But when I run the package, the package fills the cache. The error sometime I got is
SORT_40406 In transformation [SrtJoiner19], an error has occurred [I/O error occured writing "C:\PROGRA~1\INFORM~1\apps\Data_Integration_Server\data\temp\PMSORT1240837099_119_0a07716": 21207359488]
and sometime the error will be
CMN_1098 ERROR : Cache Directory may not exist or insufficient privilege/space in the supplied cache directory. CMN_1098 [Joiner]
Example XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
<dataModel>
<repo name="SKU" profile="SKU"/>
</dataModel>
<SKU repo="SKU">
<SKU_SKU_Number>ABCDEFG</SKU_SKU_Number>
<SKU_Advanced_Feature_1 mLang="1">
<value lang="en">SKU_Advanced_Feature1</value>
<value lang="da-DK">SKU_Advanced_Feature2</value>
<value lang="mal">SKU_Advanced_Feature3</value>
</SKU_Advanced_Feature_1>
<SKU_Advanced_Feature_2 mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</SKU_Advanced_Feature_2>
<SKU_Advanced_Feature_3 mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</SKU_Advanced_Feature_3>
<SKU_Advanced_Feature_4 mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</SKU_Advanced_Feature_4>
<SKU_Advanced_Feature_5 mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</SKU_Advanced_Feature_5>
<SKU_Application mLang="1">
<value lang="en">Dehumidification and Internal Air Circulation</value>
<value lang="da-DK">Testing SKU Application</value>
</SKU_Application>
<SKU_Approvals_and_Standards mLang="1">
<value lang="en">ETL listed, UL474</value>
<value lang="da-DK"/>
</SKU_Approvals_and_Standards>
<SKU_Approvals_and_Standards mLang="1">
<value lang="en">CSA 22.2 No. 92</value>
<value lang="da-DK"/>
</SKU_Approvals_and_Standards>
<SKU_Basic_Feature_1 mLang="1">
<value lang="en"><p>Goodbye Humidity. Hello Comfort.</p><p>The Honeywell Home TrueDRYâ„¢ DR90 Whole Home Dehumidifier can remove up to 90 pints of moisture per day from your home's air, making you more comfortable. It's ideal for larger homes up to 3, 6000 square feet. It can remove moisture evenly throughout the entire home.</p><p><br></p></value>
<value lang="da-DK"> </value>
</SKU_Basic_Feature_1>
<SKU_Basic_Feature_2 mLang="1">
<value lang="en"><p>Help Lower Energy Costs</p><p>With up to 90 pints of moisture leaving your home, you can run your air conditioner less frequently. This means you can potentially save money on your energy bill. Less moisture in the home also helps to reduce the strain on your air conditioner.<br></p></value>
<value lang="da-DK"> </value>
</SKU_Basic_Feature_2>
<SKU_Basic_Feature_3 mLang="1">
<value lang="en"><p>Minimal Maintenance</p><p>The moisture the Honeywell Home TrueDRY DR90 Whole Home Dehumidifier pulls from your home automatically drains, so you don't have to empty the water reservoir by hand. And the filter only need replacing once per year. This dehumidifier provides unobtrusive, quiet and efficient operation. G82</p></value>
<value lang="da-DK"> </value>
</SKU_Basic_Feature_3>
<SKU_Brand>Honeywell Home</SKU_Brand>
<SKU_Brand_description code="Honeywell Home">Honeywell Home</SKU_Brand_description>
<SKU_Bundle>No</SKU_Bundle>
<SKU_Bundle_description code="No" mLang="1">
<desc lang="en">No</desc>
<desc lang="da-DK"> </desc>
</SKU_Bundle_description>
<SKU_Channel_Display_Category>B</SKU_Channel_Display_Category>
<SKU_Channel_Display_Category_description code="Standard Product">Standard Product</SKU_Channel_Display_Category_description>
<SKU_Color_description code="Silver" mLang="1">
<desc lang="en">Silver</desc>
<desc lang="da-DK"> </desc>
</SKU_Color_description>
<SKU_Color>Silver</SKU_Color>
<SKU_EAN_Number> </SKU_EAN_Number>
<SKU_ECCN_Number> </SKU_ECCN_Number>
<SKU_Features> </SKU_Features>
<SKU_For_Use_With mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</SKU_For_Use_With>
<SKU_GTIN_Number> </SKU_GTIN_Number>
<SKU_Getting_Started_Copy mLang="1">
<value lang="en">Professional installation gets professional results. Find an authorized professional near you to complete your installation.</value>
<value lang="da-DK"> </value>
</SKU_Getting_Started_Copy>
<SKU_Global_ERP_Status_Code>01</SKU_Global_ERP_Status_Code>
<SKU_Global_ERP_Status_Code_description code="Active">Active</SKU_Global_ERP_Status_Code_description>
<SKU_Hazardous_Material_Code> </SKU_Hazardous_Material_Code>
<SKU_Hazardous_Material_Description mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</SKU_Hazardous_Material_Description>
<SKU_Includes mLang="1">
<value lang="en">Four leveling feet with rubber isolation pads</value>
<value lang="da-DK"/>
</SKU_Includes>
<SKU_Install_Type>Professional Install</SKU_Install_Type>
<SKU_Install_Type_description code="Professional Install" mLang="1">
<desc lang="en">Professional Install</desc>
<desc lang="da-DK"> </desc>
</SKU_Install_Type_description>
<SKU_Is_Primary_SKU> </SKU_Is_Primary_SKU>
<SKU_Keywords> </SKU_Keywords>
<SKU_Literature_Language mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</SKU_Literature_Language>
<SKU_Long_Promotion_Description mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</SKU_Long_Promotion_Description>
<SKU_Meta_Description>The DR90A3000/U Honeywell Home Dehumidification from Resideo is built to meet the specific needs for your home. Find product info and resources here.</SKU_Meta_Description>
<SKU_Meta_Title>DR90A3000/U Dehumidification - Honeywell Home From Resideo</SKU_Meta_Title>
<SKU_Name> </SKU_Name>
<SKU_New_SKU_Effective_End_Date> </SKU_New_SKU_Effective_End_Date>
<SKU_New_SKU_Effective_Start_Date> </SKU_New_SKU_Effective_Start_Date>
<SKU_New_SKU_Effective_Timezone_description code=""> </SKU_New_SKU_Effective_Timezone_description>
<SKU_New_SKU_Effective_Timezone> </SKU_New_SKU_Effective_Timezone>
<SKU_New_SKU_Indicator_description code="No">No</SKU_New_SKU_Indicator_description>
<SKU_New_SKU_Indicator>No</SKU_New_SKU_Indicator>
<SKU_OG_Description>The DR90A3000/U Honeywell Home Dehumidification from Resideo is built to meet the specific needs for your home. Find product info and resources here.</SKU_OG_Description>
<SKU_OG_Title>DR90A3000/U Dehumidification - Honeywell Home From Resideo</SKU_OG_Title>
<SKU_PIM_SKU_Status>Published</SKU_PIM_SKU_Status>
<SKU_PIM_SKU_Status_description code="Published">Published</SKU_PIM_SKU_Status_description>
<SKU_PIM_Workflow_Ownership> </SKU_PIM_Workflow_Ownership>
<SKU_Packaging_Material> </SKU_Packaging_Material>
<SKU_Packaging_Shape_description code=" " mLang="1">
<desc lang="en"> </desc>
<desc lang="da-DK"> </desc>
</SKU_Packaging_Shape_description>
<SKU_Packaging_Shape> </SKU_Packaging_Shape>
<SKU_Power_Source> </SKU_Power_Source>
<SKU_Pro_Install>Yes</SKU_Pro_Install>
<SKU_Pro_Install_description code="Yes">Yes</SKU_Pro_Install_description>
<SKU_Pro_Meta_Description>The DR90A3000/U Honeywell Home dehumidifier from Resideo helps you create a more comfortable home for your customers. Find product info and resources here.</SKU_Pro_Meta_Description>
<SKU_Pro_Meta_Title>DR90A3000/U Dehumidifier - Honeywell Home From Resideo</SKU_Pro_Meta_Title>
<SKU_Pro_OG_Description>The DR90A3000/U Honeywell Home dehumidifier from Resideo helps you create a more comfortable home for your customers. Find product info and resources here.</SKU_Pro_OG_Description>
<SKU_Pro_OG_Desription> </SKU_Pro_OG_Desription>
<SKU_Pro_OG_Title>DR90A3000/U Dehumidifier - Honeywell Home From Resideo</SKU_Pro_OG_Title>
<SKU_Product_Features mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</SKU_Product_Features>
<SKU_Product_Manager_description code=""> </SKU_Product_Manager_description>
<SKU_Product_Manager> </SKU_Product_Manager>
<SKU_Product_Manager_owner> </SKU_Product_Manager_owner>
<SKU_Product_Number>DR-Series3</SKU_Product_Number>
<SKU_Product_Taxonomy_Node>RMH Root.Air Treatment.Dehumidifiers</SKU_Product_Taxonomy_Node>
<SKU_Product_Taxonomy_Node_description code="Dehumidifiers">Dehumidifiers</SKU_Product_Taxonomy_Node_description>
<SKU_Program_Type> </SKU_Program_Type>
<SKU_Promotion_Banner> </SKU_Promotion_Banner>
<SKU_Promotion_Effective_End_Time> </SKU_Promotion_Effective_End_Time>
<SKU_Promotion_Effective_Start_Time> </SKU_Promotion_Effective_Start_Time>
<SKU_Promotion_Timezone> </SKU_Promotion_Timezone>
<SKU_Promotion_Timezone_description code=""> </SKU_Promotion_Timezone_description>
<SKU_Release_Indicator>PPR1</SKU_Release_Indicator>
<SKU_Release_Indicator>CR2</SKU_Release_Indicator>
<SKU_Release_Indicator_description code="RDE Pro Public Release 1">PPR1</SKU_Release_Indicator_description>
<SKU_Release_Indicator_description code="RDE Consumer Release 2">CR2</SKU_Release_Indicator_description>
<SKU_Resideo_Workflow_Status> </SKU_Resideo_Workflow_Status>
<SKU_SKU_Accessory_Part_Description mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</SKU_SKU_Accessory_Part_Description>
<SKU_SKU_Asset_Status>Completed</SKU_SKU_Asset_Status>
<SKU_SKU_Asset_Status_description code="Completed">Completed</SKU_SKU_Asset_Status_description>
<SKU_SKU_Compatibility_Description mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</SKU_SKU_Compatibility_Description>
<SKU_SKU_Detail_Page_Title> </SKU_SKU_Detail_Page_Title>
<SKU_SKU_ID>501</SKU_SKU_ID>
<SKU_SKU_Long_Description> </SKU_SKU_Long_Description>
<SKU_SKU_Replacement_Part_Description mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</SKU_SKU_Replacement_Part_Description>
<SKU_SKU_Sequence_Order>1</SKU_SKU_Sequence_Order>
<SKU_SKU_Short_Description>DR90 Whole House Dehumidifier</SKU_SKU_Short_Description>
<SKU_SKU_Title mLang="1">
<value lang="en">90-Pt. TrueDRY Whole Home Dehumidification System</value>
<value lang="da-DK"> </value>
</SKU_SKU_Title>
<SKU_Sequence> </SKU_Sequence>
<SKU_Short_Promotion_Description mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</SKU_Short_Promotion_Description>
<SKU_Sold_By_Retailer>No</SKU_Sold_By_Retailer>
<SKU_Sold_By_Retailer_description code="No">No</SKU_Sold_By_Retailer_description>
<SKU_Sold_Direct_To_Consumer_description code="No">No</SKU_Sold_Direct_To_Consumer_description>
<SKU_Sold_Direct_To_Consumer>No</SKU_Sold_Direct_To_Consumer>
<SKU_Syndication_Channel>RPH</SKU_Syndication_Channel>
<SKU_Syndication_Channel>RCH</SKU_Syndication_Channel>
<SKU_Syndication_Channel>HWH</SKU_Syndication_Channel>
<SKU_Syndication_Channel>PED</SKU_Syndication_Channel>
<SKU_Syndication_Channel_description code="Pro North America">RPH</SKU_Syndication_Channel_description>
<SKU_Syndication_Channel_description code="Consumer United States">RCH</SKU_Syndication_Channel_description>
<SKU_Syndication_Channel_description code="Honeywell Home">HWH</SKU_Syndication_Channel_description>
<SKU_Syndication_Channel_description code="Power Equipment Direct">PED</SKU_Syndication_Channel_description>
<SKU_Type_description code="Dehumidifiers" mLang="1">
<desc lang="en">Dehumidifiers</desc>
<desc lang="da-DK"> </desc>
</SKU_Type_description>
<SKU_Type>Dehumidifiers</SKU_Type>
<SKU_UPC_Number>85267421515</SKU_UPC_Number>
<SKU_Use> </SKU_Use>
<pk1SKU>ABCDEFG</pk1SKU>
<Package_Height>
<sequencePim>0</sequencePim>
<SKU_Package_Height>25.2</SKU_Package_Height>
<SKU_Package_Height_UoM>in</SKU_Package_Height_UoM>
<SKU_Package_Height_UoM_descriptionDesc code="Inch">in</SKU_Package_Height_UoM_descriptionDesc>
</Package_Height>
<Product_Height>
<sequencePim>0</sequencePim>
<SKU_Product_Height>19.3</SKU_Product_Height>
<SKU_Product_Height_UoM>in</SKU_Product_Height_UoM>
<SKU_Product_Height_UoM_descriptionDesc code="Inch">in</SKU_Product_Height_UoM_descriptionDesc>
</Product_Height>
<Package_Length>
<sequencePim>0</sequencePim>
<SKU_Package_Length>35.8</SKU_Package_Length>
<SKU_Package_Length_UoM_descriptionDesc code="Inch">in</SKU_Package_Length_UoM_descriptionDesc>
<SKU_Package_Length_UoM>in</SKU_Package_Length_UoM>
</Package_Length>
<Package_Width>
<sequencePim>0</sequencePim>
<SKU_Package_Width>19.3</SKU_Package_Width>
<SKU_Package_Width_UoM_descriptionDesc code="Inch">in</SKU_Package_Width_UoM_descriptionDesc>
<SKU_Package_Width_UoM>in</SKU_Package_Width_UoM>
</Package_Width>
<Product_Length>
<sequencePim>0</sequencePim>
<SKU_Product_Length>19.3</SKU_Product_Length>
<SKU_Product_Length_UoM_descriptionDesc code="Inch">in</SKU_Product_Length_UoM_descriptionDesc>
<SKU_Product_Length_UoM>in</SKU_Product_Length_UoM>
</Product_Length>
<Product_Width>
<sequencePim>0</sequencePim>
<SKU_Product_Width>14.3</SKU_Product_Width>
<SKU_Product_Width_UoM_descriptionDesc code="Inch">in</SKU_Product_Width_UoM_descriptionDesc>
<SKU_Product_Width_UoM>in</SKU_Product_Width_UoM>
</Product_Width>
<Package_Weight>
<sequencePim>0</sequencePim>
<SKU_Package_Weight>108.6</SKU_Package_Weight>
<SKU_Package_Weight_UoM>lb</SKU_Package_Weight_UoM>
<SKU_Package_Weight_UoM_descriptionDesc code="Pound">lb</SKU_Package_Weight_UoM_descriptionDesc>
</Package_Weight>
<dynamicAttr>
<attrName>Drain Connection Size</attrName>
<attrValue> </attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Drain Connection Type</attrName>
<attrValue mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Dehumidifying Capacity (Max)</attrName>
<attrValue mLang="1">
<value lang="en">90 pints per day</value>
<value lang="da-DK"/>
</attrValue>
<attrValue mLang="1">
<value lang="en"> 45 liters per day</value>
<value lang="da-DK"/>
</attrValue>
<desc code="">90 pints per day| 45 liters per day</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Power Supply Frequency</attrName>
<attrValue mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Building Size (Max)</attrName>
<attrValue mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Energy Performance</attrName>
<attrValue mLang="1">
<value lang="en">2.9 liters per KWH </value>
<value lang="da-DK"> </value>
</attrValue>
<desc code="">2.9 liters per KWH </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Dehumidification Collar Diameter</attrName>
<attrValue> </attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Operating Voltage</attrName>
<attrValue mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Current Draw</attrName>
<attrValue mLang="1">
<value lang="en">5.3 A</value>
<value lang="da-DK"> </value>
</attrValue>
<desc code="">5.3 A</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Recommended Service Life</attrName>
<attrValue mLang="1">
<value lang="en"> </value>
<value lang="da-DK"> </value>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Ventilation Collar Diameter</attrName>
<attrValue> </attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Thermal Charge</attrName>
<attrValue mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Power Consumption</attrName>
<attrValue mLang="1">
<value lang="en">120 VAC</value>
<value lang="da-DK"/>
</attrValue>
<desc code="">120 VAC</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Building Square Footage (Max)</attrName>
<attrValue mLang="1">
<value lang="en">Up to 2800 sq. ft.</value>
<value lang="da-DK"> </value>
</attrValue>
<desc code="">Up to 2800 sq. ft.</desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Energy Star Certified</attrName>
<attrValue>Yes</attrValue>
<desc lang="en"> </desc>
<desc lang="da-DK"> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Auxiliary Outputs</attrName>
<attrValue> </attrValue>
<desc lang="en"> </desc>
<desc lang="da-DK"> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Ambient Operating Temperature (Max)</attrName>
<attrValue mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
<dynamicAttr>
<attrName>Ambient Operating Temperature (Min)</attrName>
<attrValue mLang="1">
<value lang="en"/>
<value lang="da-DK"/>
</attrValue>
<desc code=""> </desc>
</dynamicAttr>
</SKU>
</Root>
The informatica mapping looks like below
JOINERS and SORTERS looks like
Am I doing something wrong here (Of course I know I do). Please help me out to parse the XML in a
XML Hierarchy Parser info

You can try to use Velocity Transformation. This options requires a separate license. If available, you can work on the hierarchical structure of your XML with a single transformation, like in the example.

Related

How to get distinct values from different xpaths in xslt

I would like to achieve distinct values from the given input file using xslt
here is my input:
<Records count="1">
<Record contentId="2410630" levelId="442" levelGuid="29c1b6a4-b7db-49dc-a703-e78aa1b1246a" moduleId="875" parentId="0">
<Record contentId="2410631" levelId="458" levelGuid="67dbf848-5352-4953-a25b-1b1bbcde89be" moduleId="891" parentId="0">
<Record contentId="2208294" levelId="330" levelGuid="d25cfb04-eb2a-423c-bdab-2db21a58fd4d" moduleId="675" parentId="0">
<Field id="31799" guid="2ebbfd8e-3e89-4be5-9c1f-1b5e85950753" type="1">Unauthorized modification of Information/System - External</Field>
<Field id="31796" guid="24640c19-d1de-415b-b349-25b0af521373" type="6">2208294</Field>
<Field guid="7de0f37f-765a-4480-bbea-da1638ab3296">Cyber - 1</Field>
<Field guid="001a8562-9091-4e42-b96a-d17c33c19f6f" >Is all software that will be used for this initiative currently approved for use within</Field>
</Record>
</Record>
<Record contentId="2410632" levelId="458" levelGuid="67dbf848-5352-4953-a25b-1b1bbcde89be" moduleId="891" parentId="0">
<Record contentId="2208289" levelId="330" levelGuid="d25cfb04-eb2a-423c-bdab-2db21a58fd4d" moduleId="675" parentId="0">
<Field id="31799" guid="2ebbfd8e-3e89-4be5-9c1f-1b5e85950753" type="1">Inadequate Information Security Practices</Field>
<Field id="31796" guid="24640c19-d1de-415b-b349-25b0af521373" type="6">2208289</Field>
<Field id="41131" guid="7de0f37f-765a-4480-bbea-da1638ab3296" type="1">Cyber - 10</Field>
<Field id="41132" guid="001a8562-9091-4e42-b96a-d17c33c19f6f" type="1">Will there be a requirement to connect a 3rd party to xxxxx network and what would be the purpose of this connection?</Field>
</Record>
</Record>
<Record contentId="2410633" levelId="458" levelGuid="67dbf848-5352-4953-a25b-1b1bbcde89be" moduleId="891" parentId="0">
<Record contentId="2208270" levelId="330" levelGuid="d25cfb04-eb2a-423c-bdab-2db21a58fd4d" moduleId="675" parentId="0">
<Field id="31799" guid="2ebbfd8e-3e89-4be5-9c1f-1b5e85950753" type="1">Loss of Systems Including Data Center</Field>
<Field id="31796" guid="24640c19-d1de-415b-b349-25b0af521373" type="6">2208270</Field>
<Field id="41131" guid="7de0f37f-765a-4480-bbea-da1638ab3296" type="1">Cyber - 11</Field>
<Field id="41132" guid="001a8562-9091-4e42-b96a-d17c33c19f6f" type="1">Is this product or service hosted or recovered </Field>
</Record>
</Record>
<Record contentId="2410636" levelId="458" levelGuid="67dbf848-5352-4953-a25b-1b1bbcde89be" moduleId="891" parentId="0">
<Record contentId="2208289" levelId="330" levelGuid="d25cfb04-eb2a-423c-bdab-2db21a58fd4d" moduleId="675" parentId="0">
<Field id="31799" guid="2ebbfd8e-3e89-4be5-9c1f-1b5e85950753" type="1">Inadequate Information Security Practices</Field>
<Field id="31796" guid="24640c19-d1de-415b-b349-25b0af521373" type="6">2208289</Field>
<Field id="41131" guid="7de0f37f-765a-4480-bbea-da1638ab3296" type="1">Cyber - 3</Field>
<Field id="41132" guid="001a8562-9091-4e42-b96a-d17c33c19f6f" type="1">Define the Data Classification</Field>
</Record>
</Record>
<Record contentId="2410661" levelId="463" levelGuid="cc59604e-cc41-4253-879a-5fbde3ffd760" moduleId="896" parentId="0">
<Field id="41541" guid="bae76db7-4e46-4113-a453-68243a76d4f6" type="9">
<Reference id="2208289">Inadequate Information Security Practices</Reference>
</Field>
<Field id="41485" guid="6fe04171-26b5-4bad-9430-d6d3d592c404" type="1">QL1 - LS Test - Architecture</Field>
</Record>
<Record contentId="2410666" levelId="463" levelGuid="cc59604e-cc41-4253-879a-5fbde3ffd760" moduleId="896" parentId="0">
<Field id="41541" guid="bae76db7-4e46-4113-a453-68243a76d4f6" type="9">
<Reference id="2208273"> Loss of 50% Staff </Reference>
</Field>
<Field id="41485" guid="6fe04171-26b5-4bad-9430-d6d3d592c404" type="1">QL3 - LS Test - Architecture</Field>
</Record>
<Record contentId="2410649" levelId="462" levelGuid="83a26d99-e79d-41af-8a20-fa069f791cef" moduleId="895" parentId="0">
<Field id="41453" guid="9a764db7-a75e-4a49-9b26-de03e2bc4bb5" type="9">
<Reference id="2208328">Technology Configuration</Reference>
</Field>
<Field id="41397" guid="c9574505-854b-44c2-aa4c-4a419c80b1e6" type="1">DG - Analytics</Field>
</Record>
</Record>
</Records>
My expected output is :
<Record>
<uniqueValues>Unauthorized modification of Information/System - External</uniqueValues>
<cyber>Cyber - 1</cyber>
<question>Is all software that will be used for this initiative currently approved for use within</question>
</Record>
<Record>
<uniqueValues>Inadequate Information Security Practices</uniqueValues>
<cyber>Cyber - 10</cyber>
<question>Will there be a requirement to connect a 3rd party to xxxxx network and what would be the purpose of this connection?</question>
</Record>
<Record>
<uniqueValues>Loss of Systems Including Data Center</uniqueValues>
<cyber>Cyber - 11</cyber>
<question>Is this product or service hosted or recovered </question>
</Record>
<Record>
<uniqueValues>Loss of 50% Staff</uniqueValues>
<question>QL3 - LS Test - Architecture</question>
</Record>
<Record>
<uniqueValues>Technology Configuration</uniqueValues>
<question>DG - Analytics</question>
</Record>
I have tried using distinct values but it is giving me only atomic values i can't able to capture remining field values
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="xml" indent="yes"/>
<xsl:output method="xml"/>
<xsl:template match="Records">
<xsl:for-each select="distinct-values((Record/Record/Field[#guid ='2ebbfd8e-3e89-4be5-9c1f-1b5e85950753'],Record/Record/Field[#guid ='bae76db7-4e46-4113-a453-68243a76d4f6']/Reference,Record/Record/Field[#guid ='9a764db7-a75e-4a49-9b26-de03e2bc4bb5']/Reference))">
<Record>
<uniqueValues><xsl:value-of select="."/></uniqueValues>
</Record>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
this gives only distinct values
Could you please help me how can i write an xslt to get the expected output
Using
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
expand-text="yes"
version="3.0">
<xsl:mode on-no-match="shallow-skip"/>
<xsl:output method="xml" indent="yes" />
<xsl:template match="/Records">
<xsl:copy>
<xsl:for-each-group select="Record/Record" group-by="Record/Field[#guid ='2ebbfd8e-3e89-4be5-9c1f-1b5e85950753'], Field[#guid = ('bae76db7-4e46-4113-a453-68243a76d4f6', '9a764db7-a75e-4a49-9b26-de03e2bc4bb5')]/Reference">
<xsl:copy>
<uniqueValues>{current-grouping-key()}</uniqueValues>
<xsl:apply-templates/>
</xsl:copy>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
<xsl:template match="Field[#guid = '7de0f37f-765a-4480-bbea-da1638ab3296']">
<cyber>
<xsl:value-of select="."/>
</cyber>
</xsl:template>
<xsl:template match="Field[#guid = ('001a8562-9091-4e42-b96a-d17c33c19f6f', '6fe04171-26b5-4bad-9430-d6d3d592c404', 'c9574505-854b-44c2-aa4c-4a419c80b1e6')]">
<question>
<xsl:value-of select="."/>
</question>
</xsl:template>
</xsl:stylesheet>
outputs
<Records>
<Record>
<uniqueValues>Unauthorized modification of Information/System - External</uniqueValues>
<cyber>Cyber - 1</cyber>
<question>Is all software that will be used for this initiative currently approved for use within</question>
</Record>
<Record>
<uniqueValues>Inadequate Information Security Practices</uniqueValues>
<cyber>Cyber - 10</cyber>
<question>Will there be a requirement to connect a 3rd party to xxxxx network and what would be the purpose of this connection?</question>
</Record>
<Record>
<uniqueValues>Loss of Systems Including Data Center</uniqueValues>
<cyber>Cyber - 11</cyber>
<question>Is this product or service hosted or recovered </question>
</Record>
<Record>
<uniqueValues> Loss of 50% Staff </uniqueValues>
<question>QL3 - LS Test - Architecture</question>
</Record>
<Record>
<uniqueValues>Technology Configuration</uniqueValues>
<question>DG - Analytics</question>
</Record>
</Records>
Of course the group-by expression with a sequence i.e. group-by="Record/Field[#guid ='2ebbfd8e-3e89-4be5-9c1f-1b5e85950753'], Field[#guid = ('bae76db7-4e46-4113-a453-68243a76d4f6', '9a764db7-a75e-4a49-9b26-de03e2bc4bb5')]/Reference" will only work if for each item in the grouping population only one of the subexpressions selects a key value and the other ones select the empty sequence.

How to solve Spring security misconfiguration: incorrect request matcher type?

I have this Spring security configuration:
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:oauth="http://www.springframework.org/schema/security/oauth2"
xsi:schemaLocation="http://www.springframework.org/schema/security/oauth2 http://www.springframework.org/schema/security/spring-security-oauth2-2.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.1.xsd ">
<http pattern="/api/swagger-ui.html" security="none" xmlns="http://www.springframework.org/schema/security"/>
<http pattern="/api/webjars/**" security="none" xmlns="http://www.springframework.org/schema/security"/>
<http pattern="/api/swagger-resources/**" security="none" xmlns="http://www.springframework.org/schema/security"/>
<http pattern="/api/v2/api-docs" security="none" xmlns="http://www.springframework.org/schema/security"/>
<http pattern="/api/**" create-session="never" entry-point-ref="oauthAuthenticationEntryPoint"
access-decision-manager-ref="accessDecisionManager" xmlns="http://www.springframework.org/schema/security">
<anonymous enabled="false"/>
<intercept-url pattern="/api/**" access="IS_AUTHENTICATED_FULLY"/>
<custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER"/>
<access-denied-handler ref="oauthAccessDeniedHandler"/>
</http>
<bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased"
xmlns="http://www.springframework.org/schema/beans">
<constructor-arg>
<list>
<bean class="org.springframework.security.oauth2.provider.vote.ScopeVoter"/>
<bean class="org.springframework.security.access.vote.AuthenticatedVoter"/>
</list>
</constructor-arg>
</bean>
<bean id="oauthAuthenticationEntryPoint"
class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
<property name="realmName" value="sample"/>
</bean>
<bean id="oauthAccessDeniedHandler"
class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler"/>
<oauth:resource-server id="resourceServerFilter" resource-id="sample" token-services-ref="remoteTokenServices"/>
<bean id="remoteTokenServices" class="org.springframework.security.oauth2.provider.token.RemoteTokenServices">
<property name="checkTokenEndpointUrl" value="${oauth.check.token.url}"/>
<property name="clientId" value="${oauth.client:crdb}"/>
<property name="clientSecret" value="${oauth.secret:secret}"/>
</bean>
<authentication-manager alias="authenticationManager" xmlns="http://www.springframework.org/schema/security">
</authentication-manager>
<oauth:expression-handler id="oauthExpressionHandler"/>
<oauth:web-expression-handler id="oauthWebExpressionHandler"/>
</beans>
Fortify returns to me Spring security misconfiguration: incorrect request matcher type on line 9, 10, 11, 15. Can someone give me a point how to solve this issue? It seems there is a some path problem, but Im not so familiar with fortify, so I dont know how to solve this issue.
it seems like you have problem using <http/> tag used for configuration. Look closely whether you are using valid attributes related to that tag. You can simply identify the available properties/attributes for that by clicking on the tag.
It seems like xmlns="http://www.springframework.org/schema/security" this is making error because <http> does not have xmlns property.
You also don't need to define it in every http.
Try removing xmlns property from <http> tag and it should work.
For Reference: Spring Security XML Configuration
Available <http> attributes for configuration:
<http pattern=""
name=""
access-decision-manager-ref=""
authentication-manager-ref=""
auto-config=""
create-session=""
disable-url-rewriting=""
entry-point-ref=""
jaas-api-provision=""
once-per-request=""
realm=""
request-matcher=""
request-matcher-ref=""
security=""
security-context-repository-ref=""
servlet-api-provision=""
use-expressions=""/>

How can a PMML reader interpret the predict value's type?

Hi I have a PMML generated for a logistic regression model using R as follows. Only the first part of the pmml is shown here.
<?xml version="1.0"?>
<PMML version="4.2" xmlns="http://www.dmg.org/PMML-4_2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.dmg.org/PMML-4_2 http://www.dmg.org/v4-2/pmml-4-2.xsd">
<Header copyright="Copyright (c) 2015 Upeksha" description="Generalized Linear Regression Model">
<Extension name="user" value="Upeksha" extender="Rattle/PMML"/>
<Application name="Rattle/PMML" version="1.4"/>
<Timestamp>2015-12-02 08:41:27</Timestamp>
</Header>
<DataDictionary numberOfFields="11">
<DataField name="ResponseAccountName" optype="continuous" dataType="double"/>
<DataField name="RegionCat" optype="categorical" dataType="string">
<Value value="ROW"/>
<Value value="EUROPE"/>
<Value value="NAM"/>
</DataField>
<DataField name="TitleCat" optype="categorical" dataType="string">
<Value value="1"/>
<Value value="2"/>
<Value value="3"/>
<Value value="4"/>
</DataField>
<DataField name="RLMaxTitle" optype="categorical" dataType="string">
<Value value="1"/>
<Value value="2"/>
<Value value="3"/>
<Value value="4"/>
</DataField>
<DataField name="Act1_rate" optype="continuous" dataType="double"/>
<DataField name="Act2_rate" optype="continuous" dataType="double"/>
<DataField name="Act3_rate" optype="continuous" dataType="double"/>
<DataField name="Act4_rate" optype="continuous" dataType="double"/>
<DataField name="Act5_rate" optype="continuous" dataType="double"/>
<DataField name="Act6_rate" optype="continuous" dataType="double"/>
<DataField name="AccntAct_rate" optype="continuous" dataType="double"/>
</DataDictionary>
<GeneralRegressionModel modelName="Logistic_Regression" modelType="generalizedLinear" functionName="regression" algorithmName="glm" distribution="binomial" linkFunction="logit">
<MiningSchema>
<MiningField name="ResponseAccountName" usageType="predicted"/>
<MiningField name="RegionCat" usageType="active"/>
<MiningField name="TitleCat" usageType="active"/>
<MiningField name="RLMaxTitle" usageType="active"/>
<MiningField name="Act1_rate" usageType="active"/>
<MiningField name="Act2_rate" usageType="active"/>
<MiningField name="Act3_rate" usageType="active"/>
<MiningField name="Act4_rate" usageType="active"/>
<MiningField name="Act5_rate" usageType="active"/>
<MiningField name="Act6_rate" usageType="active"/>
<MiningField name="AccntAct_rate" usageType="active"/>
</MiningSchema>
<Output>
<OutputField name="Predicted_ResponseAccountName" feature="predictedValue"/>
</Output>
The OutputField dataType is not present here. How could a PMMl reader interpret it's type if so?
I checked the PMML spec and it says that dataType for OutputField is not always required. I am writing a pmml reader and I need to know how the interpretation is done for a pmml like this.
The dataType and optype attributes are optional for the OutputField element, but any sane PMML producer should specify them anyway, as that would make the life much easier for PMML consumers.
If the dataType attribute is missing, then you can infer it based on the feature attribute of the OutputField element. In the current case, the value of the feature attribute is set to predictedValue, which means that the data type and the operational type will be "copied" from the DataField element that represents the target field of this model. Here, the target field (aka the predicted field) is called "ResponseAccountName", which means that the value of this OutputField element will be continuous double.

multi value grouping with xslt 2

For starters my apology for the title, but I do not know a good way to describe my problem. A code sample will therefore make things more clear.
Assume I have following xml tree :
<root>
<node>
<value xml:lang="en">Some English Content</value>
<value xml:lang="fr">Some French Content</value>
<value xml:lang="de">Some German Content</value>
</node>
<node>
<value xml:lang="en">Some English Content</value>
<value xml:lang="de">Some German Content</value>
</node>
<node>
<value xml:lang="en">Some Other English Content</value>
<value xml:lang="fr">Some Other French Content</value>
<value xml:lang="de">Some Other German Content</value>
</node>
<node>
<value xml:lang="en">Some English Content</value>
<value xml:lang="fr">Some French Content</value>
<value xml:lang="de">Some German Content</value>
</node>
<node>
<value xml:lang="fr">Some French Content</value>
<value xml:lang="de">Some German Content</value>
</node>
</root>
So basically there are various nodesets, with a number of localized strings , and I want to group these sets based on the content. Node 1,2,4 and 5 are about the same topic, but not all strings might be available in all locales, so i can not really use a reference string (say English, as it's not available in node 5). Node 3 contains different content, so it should be part of a different group.
Sounds probably pretty complex, but this is the result I like to get (using xslt 2) :
<values>
<group>
<value xml:lang="en">Some English Content</value>
<value xml:lang="fr">Some French Content</value>
<value xml:lang="de">Some German Content</value>
</group>
<group>
<value xml:lang="en">Some Other English Content</value>
<value xml:lang="fr">Some Other French Content</value>
<value xml:lang="de">Some Other German Content</value>
</group>
</values>
Any idea on how to best deal with this ? Note that I can have up to 40 different languages in a node, and can have hundreds of nodes in a file, so resources can become an issue also.
I am not sure I understand your requirement fully but I wrote some code that first tries to fill up node elements with values for the missing languages and then to group on the filled elements:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mf="http://example.com/mf"
exclude-result-prefixes="xs mf">
<xsl:param name="sep" as="xs:string" select="'|'"/>
<xsl:output indent="yes"/>
<xsl:variable name="main-doc" select="/"/>
<xsl:variable name="languages" as="xs:string*">
<xsl:perform-sort select="distinct-values(root/node/value/#xml:lang)">
<xsl:sort select="."/>
</xsl:perform-sort>
</xsl:variable>
<xsl:key name="k1" match="node/value" use="concat(#xml:lang, $sep, .)"/>
<xsl:template match="root">
<values>
<xsl:variable name="filled" as="element(node)*">
<xsl:apply-templates select="node" mode="fill"/>
</xsl:variable>
<xsl:for-each-group select="$filled" group-by="string-join(value, $sep)">
<group>
<xsl:copy-of select="value"/>
</group>
</xsl:for-each-group>
</values>
</xsl:template>
<xsl:template match="node" mode="fill">
<xsl:copy>
<xsl:variable name="this" as="element(node)" select="."/>
<xsl:for-each select="$languages">
<value xml:lang="{.}">
<xsl:value-of
select="if ($this/value[lang(current())])
then $this/value[lang(current())]
else (key('k1',
concat($this/value[1]/#xml:lang, $sep, $this/value[1]),
$main-doc)/../value[lang(current())])[1]"/>
</value>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
As you can see, I needed some order to fill up the elements so I sorted on the distinct #xml:lang, I am not sure you want that. With that approach the output for the input you have posted with Saxon 9.5 is
<values>
<group>
<value xml:lang="de">Some German Content</value>
<value xml:lang="en">Some English Content</value>
<value xml:lang="fr">Some French Content</value>
</group>
<group>
<value xml:lang="de">Some Other German Content</value>
<value xml:lang="en">Some Other English Content</value>
<value xml:lang="fr">Some Other French Content</value>
</group>
</values>
I am also not sure which strategy is the intended one to fill elements (see also the comment I posted). In the end I decided to key the node/value elements on the concatenation of #xml:lang and their content, then when filling up elements where a language is missing I simply match on the first value child a node has. So that basically means if some node has a first value xml:lang="foo" with contents bar, the match is simply on that language foo and contents bar and we copy over the value contents for the missing language.
If you don't want the sorting and you can live with the order of the initial sequence of attributes then you can omit the sorting, the stylesheet then is
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mf="http://example.com/mf"
exclude-result-prefixes="xs mf">
<xsl:param name="sep" as="xs:string" select="'|'"/>
<xsl:output indent="yes"/>
<xsl:variable name="main-doc" select="/"/>
<xsl:variable name="languages" as="xs:string*" select="distinct-values(root/node/value/#xml:lang)"/>
<xsl:key name="k1" match="node/value" use="concat(#xml:lang, $sep, .)"/>
<xsl:template match="root">
<values>
<xsl:variable name="filled" as="element(node)*">
<xsl:apply-templates select="node" mode="fill"/>
</xsl:variable>
<xsl:for-each-group select="$filled" group-by="string-join(value, $sep)">
<group>
<xsl:copy-of select="value"/>
</group>
</xsl:for-each-group>
</values>
</xsl:template>
<xsl:template match="node" mode="fill">
<xsl:copy>
<xsl:variable name="this" as="element(node)" select="."/>
<xsl:for-each select="$languages">
<value xml:lang="{.}">
<xsl:value-of
select="if ($this/value[lang(current())])
then $this/value[lang(current())]
else (key('k1',
concat($this/value[1]/#xml:lang, $sep, $this/value[1]),
$main-doc)/../value[lang(current())])[1]"/>
</value>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
That way the output is as you asked for:
<values>
<group>
<value xml:lang="en">Some English Content</value>
<value xml:lang="fr">Some French Content</value>
<value xml:lang="de">Some German Content</value>
</group>
<group>
<value xml:lang="en">Some Other English Content</value>
<value xml:lang="fr">Some Other French Content</value>
<value xml:lang="de">Some Other German Content</value>
</group>
</values>

Spring OAuth2 with implicit and password flows

I am trying to setup a project with Spring OAuth 2 using implicit, password and authorization flows.
The problem I have appears when I use the same token endpoint for implicit and the other two, password and authorization needs the basic authentication for client validation while implicit doesn't validate the client secret and I want to use a more clasical login/password authentication for user authorization.
So depending on the configuration one or two flows work.
Having 2 endpoints seems to be the easiest solution, but I can not find how to achieve that.
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:oauth="http://www.springframework.org/schema/security/oauth2"
xmlns:sec="http://www.springframework.org/schema/security"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/security/oauth2 http://www.springframework.org/schema/security/spring-security-oauth2-1.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<!--
<sec:http pattern="/external/oauth/token" create-session="stateless" authentication-manager-ref="clientAuthenticationManager"
xmlns="http://www.springframework.org/schema/security" entry-point-ref="authenticationEntryPoint">
<sec:intercept-url pattern="/external/oauth/token" access="IS_AUTHENTICATED_FULLY" />
<sec:anonymous enabled="false" />
<sec:access-denied-handler ref="oauthAccessDeniedHandler" />
</sec:http>
-->
<sec:http pattern="/external/oauth/token" create-session="stateless" authentication-manager-ref="clientAuthenticationManager"
xmlns="http://www.springframework.org/schema/security">
<sec:intercept-url pattern="/external/oauth/token" access="IS_AUTHENTICATED_FULLY" />
<sec:anonymous enabled="false" />
<sec:http-basic entry-point-ref="clientAuthenticationEntryPoint" />
<sec:access-denied-handler ref="oauthAccessDeniedHandler" />
</sec:http>
<bean id="clientAuthenticationEntryPoint" class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint">
<property name="realmName" value="blablabla" />
<property name="typeName" value="Basic" />
</bean>
<bean id="oauthAccessDeniedHandler" class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler" />
<authentication-manager id="clientAuthenticationManager" xmlns="http://www.springframework.org/schema/security">
<authentication-provider user-service-ref="clientDetailsUserService" />
</authentication-manager>
<bean id="clientDetailsUserService" class="org.springframework.security.oauth2.provider.client.ClientDetailsUserDetailsService">
<constructor-arg ref="clientDetails" />
</bean>
<bean id="tokenStore" class="com.proton.oauthprovider.service.ProtOnTokenStore" />
<bean id="clientDetails" class="com.proton.oauthprovider.service.ProtOnClientDetailsService" />
<bean id="oauthCodeDetails" class="com.proton.oauthprovider.service.ProtOnAuthorizationCodeServices" />
<bean id="tokenServices" class="org.springframework.security.oauth2.provider.token.DefaultTokenServices">
<property name="tokenStore" ref="tokenStore" />
<property name="supportRefreshToken" value="true" />
<property name="clientDetailsService" ref="clientDetails" />
</bean>
<bean id="userApprovalHandler" class="com.proton.oauthprovider.service.OAuthUserApprovalHandler">
<property name="autoApproveClients">
<set>
<!-- <value>rest-client</value> -->
</set>
</property>
<property name="tokenServices" ref="tokenServices" />
</bean>
<oauth:authorization-server client-details-service-ref="clientDetails"
token-services-ref="tokenServices"
user-approval-handler-ref="userApprovalHandler" authorization-endpoint-url="/external/oauth/authorize"
user-approval-page="forward:/external/oauth/confirm_access"
error-page="forward:/external/oauth/error"
token-endpoint-url="/external/oauth/token" >
<oauth:authorization-code authorization-code-services-ref="oauthCodeDetails"/>
<oauth:implicit/>
<oauth:refresh-token />
<oauth:password authentication-manager-ref="authenticationManager"/>
</oauth:authorization-server>
<oauth:web-expression-handler id="oauthWebExpressionHandler" />
<!-- Override the default mappings for approval and error pages -->
<bean id="accessConfirmationController" class="com.proton.oauthprovider.controller.AccessConfirmationController">
<property name="clientDetailsService" ref="clientDetails" />
</bean>
</beans>
authenticationEntryPoint is the login form entry point, and the custom classes are more or less the same from sparklr and tonr just using DB backend for storing client and token data.
Ok I got everything wrong, implicit flow does not use token endpoint, it uses authorize one.
So the previous config is ok and I only needed to point implicit flow to /oauth/authorize/ and it works as expected.

Resources