3

I have the following problem: my code uses ConnectApi.ChatterFeeds.postFeedElement and ConnectApi.ChatterFeeds.postFeedElementBatch methods to operate feed items. That works properly is Chatter is enabled for the org, but ... if it's disabled I can't even install my package because of Invalid class ChatterFeeds exception coming from my unit tests. I realize that some Chatter object aren't accessible when Chatter is disabled (for example FeedItem), but you can always write

SObjectType token = Schema.getGlobalDescribe().get('FeedItem');
SObject objPost = token.newSObject();

instead of

FeedItem f = new FeedItem();

Does anyone know if there is a workaround like that for ChatterFeeds class methods? Or I have to get rid of ConnectApi and rewrite my Chatter logic somehow else?

UPDATE (Sep 29 2015)

Salesforce team just confirmed it is a known behavior: ConnectApi expects Chatter to be enabled and that's a runtime check which can't be avoided.

UPDATE (Nov 10 2015)

Fixed by Salesforce in Winter'16 Patch 11.0 (already deployed to the most org). Details are here

1

You can use Connect API to detect the features your org is enabled

if(ConnectApi.Organization.getSettings().features.chatter) {
     //Logic here
 }

Reference links

https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_connectapi_output_features.htm

| improve this answer | |
  • That won't help because it's a compilation problem, not a runtime. This class is not supported when Chatter is disabled. – Mike Raven Sep 28 '15 at 21:00
  • Other would be add try and catch around this and handle the catch ?Try and catch will work on all scenarios – Mohith Shrivastava Sep 28 '15 at 21:02
  • Again, seems like that is a compilation error, so try catch doesn't help. – Mike Raven Sep 28 '15 at 21:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.