[teiid-commits] teiid SVN: r3456 - branches/7.4.x/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce.
teiid-commits at lists.jboss.org
teiid-commits at lists.jboss.org
Wed Sep 7 16:04:39 EDT 2011
Author: mdrillin
Date: 2011-09-07 16:04:39 -0400 (Wed, 07 Sep 2011)
New Revision: 3456
Added:
branches/7.4.x/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceHandlerResolver.java
Modified:
branches/7.4.x/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java
Log:
TEIID-1733 - Update of the salesforce connector to api v22
Modified: branches/7.4.x/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java
===================================================================
--- branches/7.4.x/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java 2011-09-07 20:03:56 UTC (rev 3455)
+++ branches/7.4.x/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceConnectionImpl.java 2011-09-07 20:04:39 UTC (rev 3456)
@@ -29,6 +29,9 @@
import javax.resource.ResourceException;
import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.ws.BindingProvider;
+import javax.xml.ws.handler.Handler;
+import javax.xml.ws.handler.HandlerResolver;
+import javax.xml.ws.handler.PortInfo;
import org.apache.cxf.Bus;
import org.apache.cxf.BusFactory;
@@ -82,7 +85,7 @@
String getUserName() throws ResourceException {
try {
- return sfSoap.getUserInfo(sh).getUserName();
+ return sfSoap.getUserInfo().getUserName();
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
throw new ResourceException(e);
}
@@ -110,9 +113,17 @@
BusFactory.setThreadDefaultBus(mcf.getBus());
try {
sfService = new SforceService();
+ sh = new SessionHeader();
+
+ // Session Id must be passed in soapHeader - add the handler
+ sfService.setHandlerResolver(new SalesforceHandlerResolver(sh));
+
sfSoap = sfService.getSoap();
((BindingProvider)sfSoap).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url.toExternalForm());
loginResult = sfSoap.login(username, password);
+
+ // Set the SessionId after login, for subsequent calls
+ sh.setSessionId(loginResult.getSessionId());
} catch (LoginFault e) {
throw new ResourceException(e);
} catch (InvalidIdFault e) {
@@ -123,9 +134,7 @@
BusFactory.setThreadDefaultBus(bus);
}
LogManager.logTrace(LogConstants.CTX_CONNECTOR, "Login was successful for username " + username); //$NON-NLS-1$
-
- sh = new SessionHeader();
- sh.setSessionId(loginResult.getSessionId());
+
// Reset the SOAP endpoint to the returned server URL
((BindingProvider)sfSoap).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,loginResult.getServerUrl());
// or maybe org.apache.cxf.message.Message.ENDPOINT_ADDRESS
@@ -136,7 +145,7 @@
// Test the connection.
try {
- sfSoap.getUserInfo(sh);
+ sfSoap.getUserInfo();
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
throw new ResourceException(e);
}
@@ -150,7 +159,7 @@
result = false;
} else {
try {
- sfSoap.getServerTimestamp(sh);
+ sfSoap.getServerTimestamp();
} catch (Throwable t) {
LogManager.logTrace(LogConstants.CTX_CONNECTOR, "Caught Throwable in isAlive", t); //$NON-NLS-1$
result = false;
@@ -171,12 +180,12 @@
qo.setBatchSize(batchSize);
try {
if(queryAll != null && queryAll) {
- qr = sfSoap.queryAll(queryString, sh);
+ qr = sfSoap.queryAll(queryString);
} else {
MruHeader mruHeader = partnerFactory.createMruHeader();
mruHeader.setUpdateMru(false);
- qr = sfSoap.query(queryString, sh);
+ qr = sfSoap.query(queryString);
}
} catch (InvalidFieldFault e) {
throw new ResourceException(e);
@@ -198,7 +207,7 @@
QueryOptions qo = partnerFactory.createQueryOptions();
qo.setBatchSize(batchSize);
try {
- return sfSoap.queryMore(queryLocator, sh);
+ return sfSoap.queryMore(queryLocator);
} catch (InvalidFieldFault e) {
throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
@@ -212,7 +221,7 @@
public int delete(String[] ids) throws ResourceException {
List<DeleteResult> results = null;
try {
- results = sfSoap.delete(Arrays.asList(ids), sh);
+ results = sfSoap.delete(Arrays.asList(ids));
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
throw new ResourceException(e);
}
@@ -250,7 +259,7 @@
objects.add(toCreate);
List<SaveResult> result;
try {
- result = sfSoap.create(objects, sh);
+ result = sfSoap.create(objects);
} catch (InvalidFieldFault e) {
throw new ResourceException(e);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
@@ -275,7 +284,7 @@
}
List<SaveResult> result;
try {
- result = sfSoap.update(params, sh);
+ result = sfSoap.update(params);
} catch (InvalidFieldFault e) {
throw new ResourceException(e);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
@@ -300,7 +309,7 @@
public UpdatedResult getUpdated(String objectType, XMLGregorianCalendar startDate, XMLGregorianCalendar endDate) throws ResourceException {
GetUpdatedResult updated;
try {
- updated = sfSoap.getUpdated(objectType, startDate, endDate, sh);
+ updated = sfSoap.getUpdated(objectType, startDate, endDate);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
@@ -316,7 +325,7 @@
XMLGregorianCalendar endCalendar) throws ResourceException {
GetDeletedResult deleted;
try {
- deleted = sfSoap.getDeleted(objectName, startCalendar, endCalendar, sh);
+ deleted = sfSoap.getDeleted(objectName, startCalendar, endCalendar);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
@@ -342,7 +351,7 @@
public QueryResult retrieve(String fieldList, String sObjectType, List<String> ids) throws ResourceException {
try {
- List<SObject> objects = sfSoap.retrieve(fieldList, sObjectType, ids, sh);
+ List<SObject> objects = sfSoap.retrieve(fieldList, sObjectType, ids);
QueryResult result = new QueryResult();
for (SObject sObject : objects) {
if (sObject != null) {
@@ -368,7 +377,7 @@
public DescribeGlobalResult getObjects() throws ResourceException {
try {
- return sfSoap.describeGlobal(sh);
+ return sfSoap.describeGlobal();
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
throw new ResourceException(e);
}
@@ -376,7 +385,7 @@
public DescribeSObjectResult getObjectMetaData(String objectName) throws ResourceException {
try {
- return sfSoap.describeSObject(objectName, sh);
+ return sfSoap.describeSObject(objectName);
} catch (com.sforce.soap.partner.InvalidSObjectFault e) {
throw new ResourceException(e);
} catch (com.sforce.soap.partner.UnexpectedErrorFault e) {
@@ -392,6 +401,5 @@
@Override
public boolean isAlive() {
return isValid();
- }
-
+ }
}
Added: branches/7.4.x/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceHandlerResolver.java
===================================================================
--- branches/7.4.x/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceHandlerResolver.java (rev 0)
+++ branches/7.4.x/connectors/connector-salesforce/src/main/java/org/teiid/resource/adapter/salesforce/SalesforceHandlerResolver.java 2011-09-07 20:04:39 UTC (rev 3456)
@@ -0,0 +1,85 @@
+package org.teiid.resource.adapter.salesforce;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
+import javax.xml.soap.SOAPElement;
+import javax.xml.soap.SOAPEnvelope;
+import javax.xml.soap.SOAPException;
+import javax.xml.soap.SOAPHeader;
+import javax.xml.soap.SOAPHeaderElement;
+import javax.xml.soap.SOAPMessage;
+import javax.xml.soap.SOAPPart;
+import javax.xml.ws.handler.Handler;
+import javax.xml.ws.handler.HandlerResolver;
+import javax.xml.ws.handler.MessageContext;
+import javax.xml.ws.handler.PortInfo;
+import javax.xml.ws.handler.soap.SOAPHandler;
+import javax.xml.ws.handler.soap.SOAPMessageContext;
+
+import com.sforce.soap.partner.SessionHeader;
+
+/* Handler which adds the SessionId info to the SOAP Header
+ *
+ */
+class SalesforceHandlerResolver implements HandlerResolver {
+
+ private SalesforceHeaderHandler headerHandler = null;
+
+ public SalesforceHandlerResolver(SessionHeader sh) {
+ this.headerHandler = new SalesforceHeaderHandler(sh);
+ }
+
+ public List<Handler> getHandlerChain(PortInfo portInfo) {
+ List<Handler> handlerChain = new ArrayList<Handler>();
+
+ handlerChain.add(this.headerHandler);
+
+ return handlerChain;
+ }
+
+ class SalesforceHeaderHandler implements SOAPHandler<SOAPMessageContext> {
+
+ SessionHeader sh = null;
+
+ public SalesforceHeaderHandler(SessionHeader sh) {
+ this.sh = sh;
+ }
+
+ public boolean handleMessage(SOAPMessageContext smc) {
+ QName sessionHeader = new QName("urn:partner.soap.sforce.com", "SessionHeader"); //$NON-NLS-1$ //$NON-NLS-2$
+ QName sessionId = new QName("urn:partner.soap.sforce.com", "sessionId");
+ try {
+ // If the SessionHeader is null, or the session id is null - do nothing.
+ if (sh!=null && sh.getSessionId()!=null) {
+ SOAPMessage message = smc.getMessage();
+ SOAPPart part = message.getSOAPPart();
+ SOAPEnvelope envelope = part.getEnvelope();
+ SOAPHeader header = envelope.getHeader();
+ if (header == null) header = envelope.addHeader();
+ SOAPHeaderElement sessionHeaderElement = header.addHeaderElement(sessionHeader);
+ SOAPElement sessionIdElement = sessionHeaderElement.addChildElement(sessionId);
+ sessionIdElement.addTextNode(sh.getSessionId());
+ }
+
+ } catch (SOAPException e) {
+ e.printStackTrace();
+ return false;
+ }
+ return true;
+ }
+
+ public Set getHeaders() {
+ return null;
+ }
+
+ public boolean handleFault(SOAPMessageContext context) {
+ return true;
+ }
+
+ public void close(MessageContext context) {
+ }
+ }
+}
More information about the teiid-commits
mailing list