Hi All,

I am trying to update an artifact created out of my custom API rxt in greg
inside the lifecycle executor class. Inside the lifecycle executer class I
need to modify the value of the field "implement_sandboxURL". When i try to
 update it using the java API it returns as a success but the registry
asset does not get updated with the value being passed in the registry.

Am I doing something wrong in how I am updating it? Your help would be
appreciated. Below is a block of code from inside the execution class which
corresponds to the update.

{code}
Resource apiResource = requestContext.getResource();
String apiUUID = apiResource.getUUID();

PrivilegedCarbonContext.startTenantFlow();
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantDomain(carbonContext.getTenantDomain());
PrivilegedCarbonContext.getThreadLocalCarbonContext().setTenantId(carbonContext.getTenantId());

*** Registry userRegistry = getUserRegistry();*
GenericArtifactManager manager = new
GenericArtifactManager(userRegistry,"api");
GenericArtifact apiGenericArtifact = manager.getGenericArtifact(apiUUID);
apiGenericArtifact.setAttribute("implement_sandboxURL","http://test.wso2.com
");
manager.updateGenericArtifact(apiGenericArtifact);

PrivilegedCarbonContext.endTenantFlow();

{code}


*** Different methods tried to retrieve the registry instance*

Method 1

protected Registry getUserRegistry() throws RegistryException {
        CarbonContext carbonContext =
PrivilegedCarbonContext.getThreadLocalCarbonContext();
        RegistryService registryService = (RegistryService)
carbonContext.getOSGiService(RegistryService.class, null);
        return registryService.getGovernanceUserRegistry("admin",
carbonContext.getTenantId());
}

Method 2

protected Registry getUserRegistry() {
        return
(Registry)CarbonContext.getThreadLocalCarbonContext().getRegistry(RegistryType.USER_GOVERNANCE);
}

Method 3

protected Registry getUserRegistry() {

ServiceDataHolder.getInstance().getTenantRegistryLoader().loadTenantRegistry(carbonContext.getTenantId());
     return
ServiceDataHolder.getInstance().getRegistryService().getGovernanceUserRegistry("admin");

}

Am I missing something? What may be the reason the artifact does not get
updated? When i update using the edit option in the UI it works but not
through the code. Also i debugged in both cases and the flow was identical
as well.

Thanks
Shenavi

*Shenavi de Mel*
Software Engineer
WSO2 Inc: http://wso2.com
email: [email protected]
mobile: 0711644470
_______________________________________________
Dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to