
http://www.salesforce.com/us/developer/docs/api_meta/index.htm
http://www.salesforce.com/us/developer/docs/api_meta/Content/meta_update.htm
If any body has any idea how to implement this pl's help me it's very importent. I am getting errors and unable to find any good examples to do this..
Code:
----------------------------------------------------------
import com.sforce.soap.metadata.*;
import com.sforce.soap.partner.PartnerConnection;
import com.sforce.ws.ConnectionException;
import com.sforce.ws.ConnectorConfig;
public class SfdcUpdateMetadata
{
static final String USERNAME = "username";
static final String PASSWORD = "password";
static PartnerConnection connection;
public MetadataConnection metadataConnection;
public void updateCustomObject(String MyCustomObject) {
try {
CustomObject co = new CustomObject();
String name = MyCustomObject;
co.setFullName(name + "__c");
co.setDeploymentStatus(DeploymentStatus.Deployed);
co.setDescription("Created by the Metadata API");
co.setEnableActivities(true);
co.setLabel(name + " Object");
co.setPluralLabel(co.getLabel() + "s");
co.setSharingModel(SharingModel.ReadWrite);
Picklist expenseStatus = new Picklist();
PicklistValue newpicklistval = new PicklistValue();
newpicklistval.setFullName("NewPickListValue");
expenseStatus.setPicklistValues(new PicklistValue[]{newpicklistval});
CustomField expenseStatusField = new CustomField();
expenseStatusField.setFullName("WSCCustomObject__c.ExpenseStatus__c");
//expenseStatusField.setLabel("Expense Report Status");
expenseStatusField.setType(FieldType.Picklist);
expenseStatusField.setPicklist(expenseStatus);
co.setNameField(expenseStatusField);
UpdateMetadata updateMetadata = new UpdateMetadata();
updateMetadata.setMetadata(co);
//updateMetadata.setCurrentName("TheCurrentName");
AsyncResult[] ars = metadataConnection.update(new UpdateMetadata[] { updateMetadata });
AsyncResult asyncResult = ars[0];
// set initial wait time to one second in milliseconds
long waitTimeMilliSecs = 1000;
while (!asyncResult.isDone()) {
Thread.sleep(waitTimeMilliSecs);
// double the wait time for the next iteration
waitTimeMilliSecs *= 2;
asyncResult = metadataConnection.checkStatus(
new String[] {asyncResult.getId()})[0];
System.out.println("Status is: " + asyncResult.getState());
}
if (asyncResult.getState() != AsyncRequestState.Completed) {
System.out.println(asyncResult.getStatusCode() + " msg: " +
asyncResult.getMessage());
}
} catch (InterruptedException ie) {
ie.printStackTrace();
} catch (ConnectionException ce) {
ce.printStackTrace();
}
}
public static void main(String[] args) throws ConnectionException
{
ConnectorConfig partnerConfig = new ConnectorConfig();
ConnectorConfig metadataConfig = new ConnectorConfig();
SfdcUpdateMetadata sum=new SfdcUpdateMetadata();
partnerConfig.setUsername(USERNAME);
partnerConfig.setPassword(PASSWORD);
//partnerConfig.setTraceMessage(true);
@SuppressWarnings("unused")
PartnerConnection partnerConnection = com.sforce.soap.partner.Connector.newConnection(partnerConfig);
// show the partner's session id into the metadata configuration then connect
metadataConfig.setSessionId(partnerConnection.getSessionHeader().getSessionId());
sum.metadataConnection = com.sforce.soap.metadata.Connector.newConnection(metadataConfig);
sum.updateCustomObject("WSCCustomObject");
//-----------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------
}
}
----------------------------------------------------------
KMAN, you may want to post this on the developers page. You will probably get a quicker answer.
http://boards.developerforce.com/sforce?category.id=developers