1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.mylutece.modules.oauth.authentication;
35
36 import fr.paris.lutece.portal.service.security.LuteceUser;
37 import fr.paris.lutece.portal.service.util.AppLogService;
38
39 import org.apache.http.HttpResponse;
40
41 import org.w3c.dom.Document;
42 import org.w3c.dom.NodeList;
43
44 import org.xml.sax.SAXException;
45
46 import java.io.IOException;
47
48 import java.util.Map.Entry;
49
50 import javax.xml.parsers.DocumentBuilder;
51 import javax.xml.parsers.DocumentBuilderFactory;
52 import javax.xml.parsers.ParserConfigurationException;
53
54
55
56
57
58
59
60
61
62
63
64 public class XMLCredentialRetriever extends AbstractOAuthCredentialsRetriever
65 {
66
67
68
69
70 public void doRetrieveUserInfo( HttpResponse httpResponse, OAuthUser user )
71 {
72 try
73 {
74 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance( );
75 DocumentBuilder builder = factory.newDocumentBuilder( );
76 Document doc = builder.parse( httpResponse.getEntity( ).getContent( ) );
77
78 for ( Entry<String, String[]> entry : getTags( ).entrySet( ) )
79 {
80 for ( String strTag : entry.getValue( ) )
81 {
82 NodeList nodeList = doc.getElementsByTagName( strTag );
83
84 if ( ( nodeList != null ) && ( nodeList.getLength( ) > 0 ) )
85 {
86 String strValue = nodeList.item( 0 ).getFirstChild( ).getNodeValue( );
87
88 if ( AppLogService.isDebugEnabled( ) )
89 {
90 AppLogService.debug( "Retrieved " + strValue + " for " + entry.getKey( ) );
91 }
92
93 user.setUserInfo( entry.getKey( ), strValue );
94
95 if ( entry.getKey( ).equals( LuteceUser.NAME_FAMILY ) )
96 {
97 user.setName( strValue );
98 }
99
100 break;
101 }
102 }
103 }
104 }
105 catch ( SAXException e )
106 {
107 AppLogService.error( e.getMessage( ), e );
108 }
109 catch ( ParserConfigurationException e )
110 {
111 AppLogService.error( e.getMessage( ), e );
112 }
113 catch ( IllegalStateException e )
114 {
115 AppLogService.error( e.getMessage( ), e );
116 }
117 catch ( IOException e )
118 {
119 AppLogService.error( e.getMessage( ), e );
120 }
121 }
122 }