I opened a case (Case-00750395) on it, but Interwoven representative suggested I posted on Dev Net. So here is my issue:
Requirement:
Move asset from one MediaBin container into another MediaBin container where asset with the same name already exist. Metadata should be updated accordingly from new asset.
Issue:
Using moveAsset method
(getMyStub().moveAsset(maApprovedAsset.getMID(),destinationContainer.get
MID(),maApprovedAsset.getMName())

will throw error if asset with the same name already exists in the destination directory.
Using reviseAsset is designed for bringing an external asset and will not carry any metadata if asset is already in MediaBin. Our case: both assets are in MediaBin.
Using reviseAssetMetadata will update metadata but not the asset itself.
Current Resolution:
1. Retrieve file (asset in starting container) in MediaBin's temp
directory:
getMyStub().retrieveFile_URL(assetInStartingDir.getMID(),-1,null,rtpPrim
itives,true);
2. CheckIn Asset:
getMyStub().lockAsset(assetInDestiantionDir.getMID(),false);
3. Revise Assset with new Asset (just the file itself, not
metadata):
getMyStub().reviseAsset_URL(jobUrl,assetInDestiantionDir.getMID(),
null, rtpPrimitives, 850, "Checked In By Cat Job", true);
4. Copy Metadata of new asset (which is still in starting
container).
5. ReviseAssetMetadata in destination container with new asset's
metadata.
6. Delete asset from starting container.
Now, you see why we have many issues with our current work around.