Skip to content

Commit

Permalink
Updates to support Sharing Rules
Browse files Browse the repository at this point in the history
- Read Sharing Rules example working
- Create and Delete still having some issues
  • Loading branch information
afawcettffdc committed Apr 8, 2015
1 parent c562be8 commit b95574b
Show file tree
Hide file tree
Showing 6 changed files with 307 additions and 37 deletions.
7 changes: 5 additions & 2 deletions apex-mdapi/src/classes/MetadataDataController.cls
Expand Up @@ -26,6 +26,9 @@

public with sharing class MetadataDataController
{
private static final Integer METADATA_API_VERSION =
Integer.valueOf(new MetadataService.MetadataPort().endpoint_x.substringAfterLast('/'));

public String Data {get; set;}

public PageReference constructResponse()
Expand All @@ -36,7 +39,7 @@ public with sharing class MetadataDataController
{
// List available Metadata Types via the 'describeMetadata' API call
MetadataService.MetadataPort service = MetadataServiceExamples.createService();
MetadataService.DescribeMetadataResult describeResult = service.describeMetadata(26);
MetadataService.DescribeMetadataResult describeResult = service.describeMetadata(METADATA_API_VERSION);
for(MetadataService.DescribeMetadataObject metadataObject : describeResult.metadataObjects)
{
nodes.add(new FolderNode(metadataObject.xmlName, metadataObject.xmlName, false, null));
Expand All @@ -55,7 +58,7 @@ public with sharing class MetadataDataController
MetadataService.ListMetadataQuery query = new MetadataService.ListMetadataQuery();
query.type_x = node;
queries.add(query);
MetadataService.FileProperties[] fileProperties = service.listMetadata(queries, 26);
MetadataService.FileProperties[] fileProperties = service.listMetadata(queries, METADATA_API_VERSION);

// Emit leaf nodes (ensure unique IDs)
Integer index = 0;
Expand Down
12 changes: 8 additions & 4 deletions apex-mdapi/src/classes/MetadataRetrieveController.cls
Expand Up @@ -29,6 +29,9 @@
**/
public with sharing class MetadataRetrieveController
{
private static final Integer METADATA_API_VERSION =
Integer.valueOf(new MetadataService.MetadataPort().endpoint_x.substringAfterLast('/'));

public List<SelectOption> MetaDataTypes {get; set;}
public String MetaDataType {get; set;}
public List<SelectOption> MetaDataItems {get; set;}
Expand All @@ -44,7 +47,7 @@ public with sharing class MetadataRetrieveController
{
// List available Metadata Types via the 'describeMetadata' API call
MetadataService.MetadataPort service = createService();
MetadataService.DescribeMetadataResult describeResult = service.describeMetadata(26);
MetadataService.DescribeMetadataResult describeResult = service.describeMetadata(METADATA_API_VERSION);
List<String> metadataTypeNames = new List<String>();
for(MetadataService.DescribeMetadataObject metadataObject : describeResult.metadataObjects)
{
Expand Down Expand Up @@ -76,10 +79,11 @@ public with sharing class MetadataRetrieveController
MetadataService.MetadataPort service = createService();
List<MetadataService.ListMetadataQuery> queries = new List<MetadataService.ListMetadataQuery>();
MetadataService.ListMetadataQuery queryLayout = new MetadataService.ListMetadataQuery();
queryLayout.folder = MetaDataFolder;
if(MetaDataFolder!=null && MetaDataFolder.length()>0)
queryLayout.folder = MetaDataFolder;
queryLayout.type_x = MetaDataType;
queries.add(queryLayout);
MetadataService.FileProperties[] fileProperties = service.listMetadata(queries, 25);
MetadataService.FileProperties[] fileProperties = service.listMetadata(queries, METADATA_API_VERSION);

// Sort
List<String> fullNames = new List<String>();
Expand All @@ -106,7 +110,7 @@ public with sharing class MetadataRetrieveController
// Construct unmanaged package with list of desired components to retrieve in zip
MetadataService.MetadataPort service = createService();
MetadataService.RetrieveRequest retrieveRequest = new MetadataService.RetrieveRequest();
retrieveRequest.apiVersion = 25;
retrieveRequest.apiVersion = METADATA_API_VERSION;
retrieveRequest.packageNames = null;
retrieveRequest.singlePackage = true;
retrieveRequest.specificFiles = null;
Expand Down
86 changes: 78 additions & 8 deletions apex-mdapi/src/classes/MetadataService.cls
Expand Up @@ -24,7 +24,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**/

//Patched by MetadataServicePatcher v33.0 2015-04-02 00:00:00
//Patched by MetadataServicePatcher v33.0 2015-04-08 00:00:00

//Generated by wsdl2apex

Expand Down Expand Up @@ -934,14 +934,24 @@ public class MetadataService {
public class SharingCriteriaRule extends SharingBaseRule {
public String type = 'SharingCriteriaRule';
public String fullName;
public String accessLevel;
public MetadataService.AccountSharingRuleSettings accountSettings;
public String description;
public String label;
public MetadataService.SharedTo sharedTo;
private String[] accessLevel_type_info = new String[]{'accessLevel','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] accountSettings_type_info = new String[]{'accountSettings','http://soap.sforce.com/2006/04/metadata',null,'0','1','false'};
private String[] description_type_info = new String[]{'description','http://soap.sforce.com/2006/04/metadata',null,'0','1','false'};
private String[] label_type_info = new String[]{'label','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] sharedTo_type_info = new String[]{'sharedTo','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
public String booleanFilter;
public MetadataService.FilterItem[] criteriaItems;
private String[] booleanFilter_type_info = new String[]{'booleanFilter','http://soap.sforce.com/2006/04/metadata',null,'0','1','false'};
private String[] criteriaItems_type_info = new String[]{'criteriaItems','http://soap.sforce.com/2006/04/metadata',null,'0','-1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] type_att_info = new String[]{'xsi:type'};
private String[] fullName_type_info = new String[]{'fullName','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
private String[] field_order_type_info = new String[]{'fullName', 'booleanFilter','criteriaItems'};
private String[] field_order_type_info = new String[]{'fullName','accessLevel','accountSettings','description','label','sharedTo', 'booleanFilter','criteriaItems'};
}
public class NetworkAccess {
public MetadataService.IpRange[] ipRanges;
Expand Down Expand Up @@ -3559,7 +3569,9 @@ public class MetadataService {
private String[] fullName_type_info = new String[]{'fullName','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
private String[] field_order_type_info = new String[]{'fullName', 'answers','cases','defaultLanguage','enableChatterQuestionKBDeflection','enableCreateEditOnArticlesTab','enableExternalMediaContent','enableKnowledge','languages','showArticleSummariesCustomerPortal','showArticleSummariesInternalApp','showArticleSummariesPartnerPortal','showValidationStatusField'};
}
public virtual class SharingBaseRule extends Metadata{
public virtual class SharingBaseRule extends Metadata {
public String type = 'SharingBaseRule';
public String fullName;
public String accessLevel;
public MetadataService.AccountSharingRuleSettings accountSettings;
public String description;
Expand All @@ -3571,7 +3583,9 @@ public class MetadataService {
private String[] label_type_info = new String[]{'label','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] sharedTo_type_info = new String[]{'sharedTo','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{'accessLevel','accountSettings','description','label','sharedTo'};
private String[] type_att_info = new String[]{'xsi:type'};
private String[] fullName_type_info = new String[]{'fullName','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
private String[] field_order_type_info = new String[]{'fullName', 'accessLevel','accountSettings','description','label','sharedTo'};
}
public class StandardFieldTranslation {
public String label;
Expand Down Expand Up @@ -3955,9 +3969,23 @@ public class MetadataService {
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{'enablePersonList'};
}
public class SharingTerritoryRule {
public class SharingTerritoryRule extends SharingBaseRule {
public String type = 'SharingTerritoryRule';
public String fullName;
public String accessLevel;
public MetadataService.AccountSharingRuleSettings accountSettings;
public String description;
public String label;
public MetadataService.SharedTo sharedTo;
private String[] accessLevel_type_info = new String[]{'accessLevel','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] accountSettings_type_info = new String[]{'accountSettings','http://soap.sforce.com/2006/04/metadata',null,'0','1','false'};
private String[] description_type_info = new String[]{'description','http://soap.sforce.com/2006/04/metadata',null,'0','1','false'};
private String[] label_type_info = new String[]{'label','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] sharedTo_type_info = new String[]{'sharedTo','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{};
private String[] type_att_info = new String[]{'xsi:type'};
private String[] fullName_type_info = new String[]{'fullName','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
private String[] field_order_type_info = new String[]{'fullName','accessLevel','accountSettings','description','label','sharedTo'};
}
public class FlowFormula {
public String dataType;
Expand Down Expand Up @@ -5225,6 +5253,20 @@ public class MetadataService {
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{'result'};
}
public class ReadSharingTerritoryRuleResult implements IReadResult {
public MetadataService.SharingTerritoryRule[] records;
public MetadataService.Metadata[] getRecords() { return records; }
private String[] records_type_info = new String[]{'records','http://soap.sforce.com/2006/04/metadata',null,'0','-1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{'records'};
}
public class readSharingTerritoryRuleResponse_element implements IReadResponseElement {
public MetadataService.ReadSharingTerritoryRuleResult result;
public IReadResult getResult() { return result; }
private String[] result_type_info = new String[]{'result','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{'result'};
}
public class ReadEscalationRulesResult implements IReadResult {
public MetadataService.EscalationRules[] records;
public MetadataService.Metadata[] getRecords() { return records; }
Expand Down Expand Up @@ -6429,6 +6471,20 @@ public class MetadataService {
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{'result'};
}
public class ReadSharingOwnerRuleResult implements IReadResult {
public MetadataService.SharingOwnerRule[] records;
public MetadataService.Metadata[] getRecords() { return records; }
private String[] records_type_info = new String[]{'records','http://soap.sforce.com/2006/04/metadata',null,'0','-1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{'records'};
}
public class readSharingOwnerRuleResponse_element implements IReadResponseElement {
public MetadataService.ReadSharingOwnerRuleResult result;
public IReadResult getResult() { return result; }
private String[] result_type_info = new String[]{'result','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{'result'};
}
public class ReadApprovalProcessResult implements IReadResult {
public MetadataService.ApprovalProcess[] records;
public MetadataService.Metadata[] getRecords() { return records; }
Expand Down Expand Up @@ -8787,11 +8843,25 @@ public class MetadataService {
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{'editable','field','readable'};
}
public class SharingOwnerRule {
public class SharingOwnerRule extends SharingBaseRule {
public String type = 'SharingOwnerRule';
public String fullName;
public String accessLevel;
public MetadataService.AccountSharingRuleSettings accountSettings;
public String description;
public String label;
public MetadataService.SharedTo sharedTo;
private String[] accessLevel_type_info = new String[]{'accessLevel','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] accountSettings_type_info = new String[]{'accountSettings','http://soap.sforce.com/2006/04/metadata',null,'0','1','false'};
private String[] description_type_info = new String[]{'description','http://soap.sforce.com/2006/04/metadata',null,'0','1','false'};
private String[] label_type_info = new String[]{'label','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] sharedTo_type_info = new String[]{'sharedTo','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
public MetadataService.SharedTo sharedFrom;
private String[] sharedFrom_type_info = new String[]{'sharedFrom','http://soap.sforce.com/2006/04/metadata',null,'1','1','false'};
private String[] apex_schema_type_info = new String[]{'http://soap.sforce.com/2006/04/metadata','true','false'};
private String[] field_order_type_info = new String[]{'sharedFrom'};
private String[] type_att_info = new String[]{'xsi:type'};
private String[] fullName_type_info = new String[]{'fullName','http://www.w3.org/2001/XMLSchema','string','0','1','false'};
private String[] field_order_type_info = new String[]{'fullName','accessLevel','accountSettings','description','label','sharedTo', 'sharedFrom'};
}
public class CompactLayout extends Metadata {
public String type = 'CompactLayout';
Expand Down
59 changes: 58 additions & 1 deletion apex-mdapi/src/classes/MetadataServiceExamples.cls
Expand Up @@ -172,7 +172,8 @@ public with sharing class MetadataServiceExamples

public static void updateTabVisibility()
{
MetadataService.MetadataPort service = createService(); MetadataService.Profile admin = (MetadataService.Profile) service.readMetadata('Profile', new String[] { 'Admin' }).getRecords()[0];
MetadataService.MetadataPort service = createService();
MetadataService.Profile admin = (MetadataService.Profile) service.readMetadata('Profile', new String[] { 'Admin' }).getRecords()[0];
MetadataService.ProfileTabVisibility tabVis = new MetadataService.ProfileTabVisibility();
tabVis.tab = 'Test_Tab__c';
tabVis.visibility = 'Hidden';
Expand Down Expand Up @@ -1057,6 +1058,62 @@ public with sharing class MetadataServiceExamples
handleUpsertResults(results[0]);
}

public static void createSharingRule()
{
// Create Sharing Rule
MetadataService.MetadataPort service = createService();
MetadataService.SharingRules testSharingRule = new MetadataService.SharingRules();
testSharingRule.fullName = 'Test__c';
testSharingRule.sharingCriteriaRules = new List<MetadataService.SharingCriteriaRule>();
MetadataService.SharingCriteriaRule sharingCriteriaRule = new MetadataService.SharingCriteriaRule();
sharingCriteriaRule.fullName = 'TestCriteria';
sharingCriteriaRule.accessLevel = 'Read';
sharingCriteriaRule.label = 'Test';
sharingCriteriaRule.sharedTo = new MetadataService.SharedTo();
sharingCriteriaRule.sharedTo.allPartnerUsers = '';
sharingCriteriaRule.criteriaItems = new List<MetadataService.FilterItem>();
MetadataService.FilterItem cirteriaFilterItem = new MetadataService.FilterItem();
cirteriaFilterItem.field = 'RecordTypeId';
cirteriaFilterItem.operation = 'equals';
cirteriaFilterItem.value = 'Record Type A';
sharingCriteriaRule.criteriaItems.add(cirteriaFilterItem);
testSharingRule.sharingCriteriaRules.add(sharingCriteriaRule);
testSharingRule.sharingOwnerRules = new List<MetadataService.SharingOwnerRule>();
MetadataService.SharingOwnerRule sharingOwnerRule = new MetadataService.SharingOwnerRule();
sharingOwnerRule.fullName = 'TestOwner';
sharingOwnerRule.accessLevel = 'Read';
sharingOwnerRule.label = 'Test';
sharingOwnerRule.sharedTo = new MetadataService.SharedTo();
sharingOwnerRule.sharedTo.allPartnerUsers = '';
sharingOwnerRule.sharedFrom = new MetadataService.SharedTo();
sharingOwnerRule.sharedFrom.allInternalUsers = '';
testSharingRule.sharingOwnerRules.add(sharingOwnerRule);
List<MetadataService.SaveResult> results =
service.createMetadata(
new MetadataService.Metadata[] { testSharingRule });
handleSaveResults(results[0]);
}

public static void readSharingRule()
{
// Read Sharing Rule
MetadataService.MetadataPort service = createService();
MetadataService.SharingRules sharingRules =
(MetadataService.SharingRules) service.readMetadata('SharingRules',
new String[] { 'Test__c' }).getRecords()[0];
System.debug(sharingRules.sharingOwnerRules[0].fullName);
}

public static void deleteSharingRule()
{
// Delete Sharing Rule
MetadataService.MetadataPort service = createService();
List<MetadataService.DeleteResult> results =
service.deleteMetadata(
'SharingRules', new String[] { 'Test__c' });
handleDeleteResults(results[0]);
}

public class MetadataServiceExamplesException extends Exception { }

public static MetadataService.MetadataPort createService()
Expand Down

0 comments on commit b95574b

Please sign in to comment.