added userGroup.getUserLoginNameFromEmail support

This commit is contained in:
jomu
2015-02-06 16:41:22 +00:00
parent 316bbcfede
commit d6f0e6cb8b
5 changed files with 77 additions and 21 deletions

View File

@ -21,28 +21,46 @@ public class SPUser extends SPJaxbObject<User> {
schemaList.add("/xsd/usergroup.xsd");
return schemaList;
}
public String getUserID() {
return getValue().id.toString();
}
public String getUserName() {
return getValue().name;
}
public String getUserLoginName() {
return getValue().loginName;
String returnValue = null;
if (getValue().loginName != null) {
returnValue = getValue().loginName;
} else if (getValue().login != null) {
returnValue = getValue().login;
}
if (returnValue == null) {
return null;
} else {
return returnValue.substring(7); // drop [i:0#.w|
}
}
public String getUserEmail() {
return getValue().email;
}
public String getUserNotes() {
return getValue().notes;
}
public String getDisplayName() {
return getValue().displayName;
}
public String getEmail() {
return getValue().email;
}
}
/**

View File

@ -2,9 +2,13 @@ package de.muehlencord.shared.sharepoint.api.usergroup;
import com.microsoft.schemas.sharepoint.soap.usergroup.GetUserCollectionFromGroupResponse;
import com.microsoft.schemas.sharepoint.soap.usergroup.GetUserInfoResponse;
import com.microsoft.schemas.sharepoint.soap.usergroup.GetUserLoginFromEmail;
import com.microsoft.schemas.sharepoint.soap.usergroup.GetUserLoginFromEmail.EmailXml;
import com.microsoft.schemas.sharepoint.soap.usergroup.GetUserLoginFromEmailResponse;
import com.microsoft.schemas.sharepoint.soap.usergroup.UserGroup;
import com.microsoft.schemas.sharepoint.soap.usergroup.UserGroupSoap;
import de.muehlencord.shared.sharepoint.api.SPContext;
import de.muehlencord.shared.sharepoint.api.SPJaxbObject;
import de.muehlencord.shared.sharepoint.api.SPObject;
import de.muehlencord.shared.sharepoint.api.ServiceLogHandler;
import java.io.IOException;
@ -92,6 +96,27 @@ public class SPUserGroup extends SPObject {
}
}
public SPUser getUserFromEmail(String emailAddress) throws JAXBException, ParserConfigurationException, SAXException, IOException,
NoSuchAlgorithmException, KeyManagementException {
String xml = "<Users><User Email=\"" + emailAddress + "\"/></Users>";
EmailXml emailXml = new GetUserLoginFromEmail.EmailXml();
emailXml.getContent().add(SPJaxbObject.createSharePointCAMLNode(xml));
// Node userNode = user.createSharePointCAMLNode();
GetUserLoginFromEmailResponse.GetUserLoginFromEmailResult result = getUserGroupPort().getUserLoginFromEmail(emailXml);
if ((result != null) && (!result.getContent().isEmpty())) {
Object content = result.getContent().get(0);
if (content instanceof Element) {
Element rootElement = (Element) content;
SPUser user = new SPUser(getContext());
user.setValue(SPJaxbObject.xmlToString(rootElement.getFirstChild()));
return user;
}
}
return null;
}
private SPUser getUser(String userLoginName) throws NoSuchAlgorithmException, KeyManagementException, MalformedURLException, JAXBException, SAXException {
GetUserInfoResponse.GetUserInfoResult result = getUserGroupPort().getUserInfo("i:0#.w|" + userLoginName);
// TODO why is i:0#.w| in front?

View File

@ -96,7 +96,7 @@
<s:element minOccurs="0" maxOccurs="1" name="userLoginNamesXml">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
<s:any processContents='skip' />
</s:sequence>
</s:complexType>
</s:element>
@ -109,7 +109,7 @@
<s:element minOccurs="0" maxOccurs="1" name="GetUserCollectionResult">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
<s:any processContents='skip' />
</s:sequence>
</s:complexType>
</s:element>
@ -129,7 +129,7 @@
<s:element minOccurs="0" maxOccurs="1" name="GetUserInfoResult">
<s:complexType mixed="true">
<s:sequence>
<s:any processContents='skip' />
<s:any processContents='skip' />
</s:sequence>
</s:complexType>
</s:element>
@ -662,7 +662,7 @@
<s:element minOccurs="0" maxOccurs="1" name="GetUserLoginFromEmailResult">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
<s:any processContents='skip' />
</s:sequence>
</s:complexType>
</s:element>

View File

@ -9,15 +9,18 @@
</xs:element>
<xs:element name="User">
<xs:complexType>
<xs:attribute name="Email" use="required"/>
<xs:attribute name="Flags" use="required" type="xs:integer"/>
<xs:attribute name="ID" use="required" type="xs:integer"/>
<xs:attribute name="IsDomainGroup" use="required" type="xs:NCName"/>
<xs:attribute name="IsSiteAdmin" use="required" type="xs:NCName"/>
<xs:attribute name="LoginName" use="required"/>
<xs:attribute name="Name" use="required"/>
<xs:attribute name="Notes" use="required"/>
<xs:attribute name="Sid" use="required"/>
<xs:attribute name="Email" use="optional"/>
<xs:attribute name="Flags" use="optional" type="xs:integer"/>
<xs:attribute name="ID" use="optional" type="xs:integer"/>
<xs:attribute name="IsDomainGroup" use="optional" type="xs:NCName"/>
<xs:attribute name="IsSiteAdmin" use="optional" type="xs:NCName"/>
<xs:attribute name="LoginName" use="optional"/>
<xs:attribute name="Name" use="optional"/>
<xs:attribute name="Notes" use="optional"/>
<xs:attribute name="Sid" use="optional"/>
<xs:attribute name="DisplayName" use="optional"/>
<xs:attribute name="Login" use="optional"/>
<xs:attribute name="SiteUser" use="optional"/>
</xs:complexType>
</xs:element>
</xs:schema>

View File

@ -37,11 +37,21 @@ public class SPUserGroupTest extends BaseTest {
}
@Test
@Ignore // Depends on available sharepoint currently
public void testIsUserMemberOfGroup() throws Exception {
SPUserGroup ug = new SPUserGroup(context);
boolean result = ug.isUserMemberOfGroup("wincor-nixdorf\\joern.muehlencord", "HQ All Members");
assertEquals ("HQ All membership", true, result);
}
@Test
@Ignore // Depends on available sharepoint currently
public void getUserLoginNameFromEmail() throws Exception {
SPUserGroup ug = new SPUserGroup(context);
SPUser user = ug.getUserFromEmail("joern.muehlencord@wincor-nixdorf.com");
assertEquals ("UserLogin", "wincor-nixdorf\\joern.muehlencord", user.getUserLoginName());
}
}