Is it possible for Apex code to determine whether it is with or without sharing?Sharing / without sharing and @RemoteActionSFDC: Understanding With Sharing, Without Sharing & Unspecified Sharing Classesare Triggers (and their delegated classes) or Batch affected by sharing?Use runAs to unit test class without 'with sharing' keywordDoes “with sharing” only apply to 1st entry point of code?Security and sharing for apex classWith sharing and without sharing in apexRole-based sharing rules for partner community usersDoes class that is being called from Process Builder also runs in system Mode?How to come to a conclusion to create a Helper class “with” or “without” Sharing

What should the arbiter and what should have I done in this case?

Was there a priest on the Titanic who stayed on the ship giving confession to as many as he could?

Winning Strategy for the Magician and his Apprentice

Should I give professor gift at the beginning of my PhD?

Why doesn’t a normal window produce an apparent rainbow?

Does an ice chest packed full of frozen food need ice?

Why would future John risk sending back a T-800 to save his younger self?

How to tell your grandparent to not come to fetch you with their car?

How did they achieve the Gunslinger's shining eye effect in Westworld?

Inconsistent behavior of compiler optimization of unused string

Why was the Sega Genesis marketed as a 16-bit console?

When conversion from Integer to Single may lose precision

What is the actual quality of machine translations?

Why only the fundamental frequency component is said to give useful power?

Movie about a boy who was born old and grew young

What makes an item an artifact?

Is open-sourcing the code of a webapp not recommended?

What does the term "railed" mean in signal processing?

Should an arbiter claim draw at a K+R vs K+R endgame?

Do simulator games use a realistic trajectory to get into orbit?

Compiling c files on ubuntu and using the executable on Windows

Is an early checkout possible at a hotel before its reception opens?

Can a user sell my software (MIT license) without modification?

Do any instruments not produce overtones?



Is it possible for Apex code to determine whether it is with or without sharing?


Sharing / without sharing and @RemoteActionSFDC: Understanding With Sharing, Without Sharing & Unspecified Sharing Classesare Triggers (and their delegated classes) or Batch affected by sharing?Use runAs to unit test class without 'with sharing' keywordDoes “with sharing” only apply to 1st entry point of code?Security and sharing for apex classWith sharing and without sharing in apexRole-based sharing rules for partner community usersDoes class that is being called from Process Builder also runs in system Mode?How to come to a conclusion to create a Helper class “with” or “without” Sharing






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








3















As an author of the code, I can, of course, know if the context is with or without sharing when I write my code into a class with either of these keywords.



But what if I am writing my code into a class with inherited sharing, which may be consumed by classes which are both with and without sharing?



Is there any way to know in which mode the code is operating so that I could add conditional logic instead of having two completely separate implementations that might be largely identical?










share|improve this question






























    3















    As an author of the code, I can, of course, know if the context is with or without sharing when I write my code into a class with either of these keywords.



    But what if I am writing my code into a class with inherited sharing, which may be consumed by classes which are both with and without sharing?



    Is there any way to know in which mode the code is operating so that I could add conditional logic instead of having two completely separate implementations that might be largely identical?










    share|improve this question


























      3












      3








      3








      As an author of the code, I can, of course, know if the context is with or without sharing when I write my code into a class with either of these keywords.



      But what if I am writing my code into a class with inherited sharing, which may be consumed by classes which are both with and without sharing?



      Is there any way to know in which mode the code is operating so that I could add conditional logic instead of having two completely separate implementations that might be largely identical?










      share|improve this question
















      As an author of the code, I can, of course, know if the context is with or without sharing when I write my code into a class with either of these keywords.



      But what if I am writing my code into a class with inherited sharing, which may be consumed by classes which are both with and without sharing?



      Is there any way to know in which mode the code is operating so that I could add conditional logic instead of having two completely separate implementations that might be largely identical?







      apex sharing executioncontext






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited May 21 at 7:57









      Oleksandr Berehovskyi

      10.6k32339




      10.6k32339










      asked May 21 at 7:55









      Brian KesslerBrian Kessler

      1,7061234




      1,7061234




















          2 Answers
          2






          active

          oldest

          votes


















          5














          This might not be the answer, but let me put my thoughts.



          When you use inherited sharing it's the responsibility of the caller class to handling the sharing settings for the code which the called class will be executing.



          Now, you say you want to add conditional logic based on sharing settings, this means you don't have trust in the caller, Thus I would say there is no point in using the inherited sharing.



          I would go by having 2 separate classes which would specify the sharing context in name, now it would be callers responsibility to call appropriate classes.
          eg. MyLogicClassWithSharing , MyLogicClassWithoutSharing



          If you worry about code duplication, I can think about putting the generic reusable code in some service method or putting it in a generic master class.






          share|improve this answer























          • The problem with this approach is that there may be some long chain of dependencies between the initial invocation of some code and the code which would contain the conditional logic, so using two classes instead would require conditional logic to determine which class to invoke which would mean passing information all the way from the beginning of the chain. And if I were to do that, I might as well use that for my conditional logic in the class itself.

            – Brian Kessler
            May 22 at 21:27


















          0














          I don't think there is. Although, Salesforce has introduced Inherited Sharing keyword, recently in their Winter 19 Release, to solve ambiguity issues associated with the with and without sharing Keywords.



          You can read more about it here :



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






          share|improve this answer























          • Cheers for the response, but the entire problem is that I want a class with inherited sharing to determine conditional logic based on the caller.

            – Brian Kessler
            May 22 at 21:24











          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "459"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f263095%2fis-it-possible-for-apex-code-to-determine-whether-it-is-with-or-without-sharing%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          5














          This might not be the answer, but let me put my thoughts.



          When you use inherited sharing it's the responsibility of the caller class to handling the sharing settings for the code which the called class will be executing.



          Now, you say you want to add conditional logic based on sharing settings, this means you don't have trust in the caller, Thus I would say there is no point in using the inherited sharing.



          I would go by having 2 separate classes which would specify the sharing context in name, now it would be callers responsibility to call appropriate classes.
          eg. MyLogicClassWithSharing , MyLogicClassWithoutSharing



          If you worry about code duplication, I can think about putting the generic reusable code in some service method or putting it in a generic master class.






          share|improve this answer























          • The problem with this approach is that there may be some long chain of dependencies between the initial invocation of some code and the code which would contain the conditional logic, so using two classes instead would require conditional logic to determine which class to invoke which would mean passing information all the way from the beginning of the chain. And if I were to do that, I might as well use that for my conditional logic in the class itself.

            – Brian Kessler
            May 22 at 21:27















          5














          This might not be the answer, but let me put my thoughts.



          When you use inherited sharing it's the responsibility of the caller class to handling the sharing settings for the code which the called class will be executing.



          Now, you say you want to add conditional logic based on sharing settings, this means you don't have trust in the caller, Thus I would say there is no point in using the inherited sharing.



          I would go by having 2 separate classes which would specify the sharing context in name, now it would be callers responsibility to call appropriate classes.
          eg. MyLogicClassWithSharing , MyLogicClassWithoutSharing



          If you worry about code duplication, I can think about putting the generic reusable code in some service method or putting it in a generic master class.






          share|improve this answer























          • The problem with this approach is that there may be some long chain of dependencies between the initial invocation of some code and the code which would contain the conditional logic, so using two classes instead would require conditional logic to determine which class to invoke which would mean passing information all the way from the beginning of the chain. And if I were to do that, I might as well use that for my conditional logic in the class itself.

            – Brian Kessler
            May 22 at 21:27













          5












          5








          5







          This might not be the answer, but let me put my thoughts.



          When you use inherited sharing it's the responsibility of the caller class to handling the sharing settings for the code which the called class will be executing.



          Now, you say you want to add conditional logic based on sharing settings, this means you don't have trust in the caller, Thus I would say there is no point in using the inherited sharing.



          I would go by having 2 separate classes which would specify the sharing context in name, now it would be callers responsibility to call appropriate classes.
          eg. MyLogicClassWithSharing , MyLogicClassWithoutSharing



          If you worry about code duplication, I can think about putting the generic reusable code in some service method or putting it in a generic master class.






          share|improve this answer













          This might not be the answer, but let me put my thoughts.



          When you use inherited sharing it's the responsibility of the caller class to handling the sharing settings for the code which the called class will be executing.



          Now, you say you want to add conditional logic based on sharing settings, this means you don't have trust in the caller, Thus I would say there is no point in using the inherited sharing.



          I would go by having 2 separate classes which would specify the sharing context in name, now it would be callers responsibility to call appropriate classes.
          eg. MyLogicClassWithSharing , MyLogicClassWithoutSharing



          If you worry about code duplication, I can think about putting the generic reusable code in some service method or putting it in a generic master class.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered May 21 at 8:35









          Pranay JaiswalPranay Jaiswal

          20k53266




          20k53266












          • The problem with this approach is that there may be some long chain of dependencies between the initial invocation of some code and the code which would contain the conditional logic, so using two classes instead would require conditional logic to determine which class to invoke which would mean passing information all the way from the beginning of the chain. And if I were to do that, I might as well use that for my conditional logic in the class itself.

            – Brian Kessler
            May 22 at 21:27

















          • The problem with this approach is that there may be some long chain of dependencies between the initial invocation of some code and the code which would contain the conditional logic, so using two classes instead would require conditional logic to determine which class to invoke which would mean passing information all the way from the beginning of the chain. And if I were to do that, I might as well use that for my conditional logic in the class itself.

            – Brian Kessler
            May 22 at 21:27
















          The problem with this approach is that there may be some long chain of dependencies between the initial invocation of some code and the code which would contain the conditional logic, so using two classes instead would require conditional logic to determine which class to invoke which would mean passing information all the way from the beginning of the chain. And if I were to do that, I might as well use that for my conditional logic in the class itself.

          – Brian Kessler
          May 22 at 21:27





          The problem with this approach is that there may be some long chain of dependencies between the initial invocation of some code and the code which would contain the conditional logic, so using two classes instead would require conditional logic to determine which class to invoke which would mean passing information all the way from the beginning of the chain. And if I were to do that, I might as well use that for my conditional logic in the class itself.

          – Brian Kessler
          May 22 at 21:27













          0














          I don't think there is. Although, Salesforce has introduced Inherited Sharing keyword, recently in their Winter 19 Release, to solve ambiguity issues associated with the with and without sharing Keywords.



          You can read more about it here :



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






          share|improve this answer























          • Cheers for the response, but the entire problem is that I want a class with inherited sharing to determine conditional logic based on the caller.

            – Brian Kessler
            May 22 at 21:24















          0














          I don't think there is. Although, Salesforce has introduced Inherited Sharing keyword, recently in their Winter 19 Release, to solve ambiguity issues associated with the with and without sharing Keywords.



          You can read more about it here :



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






          share|improve this answer























          • Cheers for the response, but the entire problem is that I want a class with inherited sharing to determine conditional logic based on the caller.

            – Brian Kessler
            May 22 at 21:24













          0












          0








          0







          I don't think there is. Although, Salesforce has introduced Inherited Sharing keyword, recently in their Winter 19 Release, to solve ambiguity issues associated with the with and without sharing Keywords.



          You can read more about it here :



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






          share|improve this answer













          I don't think there is. Although, Salesforce has introduced Inherited Sharing keyword, recently in their Winter 19 Release, to solve ambiguity issues associated with the with and without sharing Keywords.



          You can read more about it here :



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







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered May 21 at 8:29









          Ajinkya PhadnisAjinkya Phadnis

          666




          666












          • Cheers for the response, but the entire problem is that I want a class with inherited sharing to determine conditional logic based on the caller.

            – Brian Kessler
            May 22 at 21:24

















          • Cheers for the response, but the entire problem is that I want a class with inherited sharing to determine conditional logic based on the caller.

            – Brian Kessler
            May 22 at 21:24
















          Cheers for the response, but the entire problem is that I want a class with inherited sharing to determine conditional logic based on the caller.

          – Brian Kessler
          May 22 at 21:24





          Cheers for the response, but the entire problem is that I want a class with inherited sharing to determine conditional logic based on the caller.

          – Brian Kessler
          May 22 at 21:24

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Salesforce Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsalesforce.stackexchange.com%2fquestions%2f263095%2fis-it-possible-for-apex-code-to-determine-whether-it-is-with-or-without-sharing%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Club Baloncesto Breogán Índice Historia | Pavillón | Nome | O Breogán na cultura popular | Xogadores | Adestradores | Presidentes | Palmarés | Historial | Líderes | Notas | Véxase tamén | Menú de navegacióncbbreogan.galCadroGuía oficial da ACB 2009-10, páxina 201Guía oficial ACB 1992, páxina 183. Editorial DB.É de 6.500 espectadores sentados axeitándose á última normativa"Estudiantes Junior, entre as mellores canteiras"o orixinalHemeroteca El Mundo Deportivo, 16 setembro de 1970, páxina 12Historia do BreogánAlfredo Pérez, o último canoneiroHistoria C.B. BreogánHemeroteca de El Mundo DeportivoJimmy Wright, norteamericano do Breogán deixará Lugo por ameazas de morteResultados de Breogán en 1986-87Resultados de Breogán en 1990-91Ficha de Velimir Perasović en acb.comResultados de Breogán en 1994-95Breogán arrasa al Barça. "El Mundo Deportivo", 27 de setembro de 1999, páxina 58CB Breogán - FC BarcelonaA FEB invita a participar nunha nova Liga EuropeaCharlie Bell na prensa estatalMáximos anotadores 2005Tempada 2005-06 : Tódolos Xogadores da Xornada""Non quero pensar nunha man negra, mais pregúntome que está a pasar""o orixinalRaúl López, orgulloso dos xogadores, presume da boa saúde económica do BreogánJulio González confirma que cesa como presidente del BreogánHomenaxe a Lisardo GómezA tempada do rexurdimento celesteEntrevista a Lisardo GómezEl COB dinamita el Pazo para forzar el quinto (69-73)Cafés Candelas, patrocinador del CB Breogán"Suso Lázare, novo presidente do Breogán"o orixinalCafés Candelas Breogán firma el mayor triunfo de la historiaEl Breogán realizará 17 homenajes por su cincuenta aniversario"O Breogán honra ao seu fundador e primeiro presidente"o orixinalMiguel Giao recibiu a homenaxe do PazoHomenaxe aos primeiros gladiadores celestesO home que nos amosa como ver o Breo co corazónTita Franco será homenaxeada polos #50anosdeBreoJulio Vila recibirá unha homenaxe in memoriam polos #50anosdeBreo"O Breogán homenaxeará aos seus aboados máis veteráns"Pechada ovación a «Capi» Sanmartín e Ricardo «Corazón de González»Homenaxe por décadas de informaciónPaco García volve ao Pazo con motivo do 50 aniversario"Resultados y clasificaciones""O Cafés Candelas Breogán, campión da Copa Princesa""O Cafés Candelas Breogán, equipo ACB"C.B. Breogán"Proxecto social"o orixinal"Centros asociados"o orixinalFicha en imdb.comMario Camus trata la recuperación del amor en 'La vieja música', su última película"Páxina web oficial""Club Baloncesto Breogán""C. B. Breogán S.A.D."eehttp://www.fegaba.com

          Vilaño, A Laracha Índice Patrimonio | Lugares e parroquias | Véxase tamén | Menú de navegación43°14′52″N 8°36′03″O / 43.24775, -8.60070

          Cegueira Índice Epidemioloxía | Deficiencia visual | Tipos de cegueira | Principais causas de cegueira | Tratamento | Técnicas de adaptación e axudas | Vida dos cegos | Primeiros auxilios | Crenzas respecto das persoas cegas | Crenzas das persoas cegas | O neno deficiente visual | Aspectos psicolóxicos da cegueira | Notas | Véxase tamén | Menú de navegación54.054.154.436928256blindnessDicionario da Real Academia GalegaPortal das Palabras"International Standards: Visual Standards — Aspects and Ranges of Vision Loss with Emphasis on Population Surveys.""Visual impairment and blindness""Presentan un plan para previr a cegueira"o orixinalACCDV Associació Catalana de Cecs i Disminuïts Visuals - PMFTrachoma"Effect of gene therapy on visual function in Leber's congenital amaurosis"1844137110.1056/NEJMoa0802268Cans guía - os mellores amigos dos cegosArquivadoEscola de cans guía para cegos en Mortágua, PortugalArquivado"Tecnología para ciegos y deficientes visuales. Recopilación de recursos gratuitos en la Red""Colorino""‘COL.diesis’, escuchar los sonidos del color""COL.diesis: Transforming Colour into Melody and Implementing the Result in a Colour Sensor Device"o orixinal"Sistema de desarrollo de sinestesia color-sonido para invidentes utilizando un protocolo de audio""Enseñanza táctil - geometría y color. Juegos didácticos para niños ciegos y videntes""Sistema Constanz"L'ocupació laboral dels cecs a l'Estat espanyol està pràcticament equiparada a la de les persones amb visió, entrevista amb Pedro ZuritaONCE (Organización Nacional de Cegos de España)Prevención da cegueiraDescrición de deficiencias visuais (Disc@pnet)Braillín, un boneco atractivo para calquera neno, con ou sen discapacidade, que permite familiarizarse co sistema de escritura e lectura brailleAxudas Técnicas36838ID00897494007150-90057129528256DOID:1432HP:0000618D001766C10.597.751.941.162C97109C0155020