* Adds CreatorID to asset metadata. This is just the plumbing to support CreatorID, it doesn't modify database backends or OAR files to support storing/loading it

This commit is contained in:
John Hurliman
2010-02-22 13:27:17 -08:00
parent 845a390e93
commit 7665aad002
34 changed files with 74 additions and 78 deletions

View File

@@ -197,7 +197,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
private void Initialise(UUID fileID, string fileName)
{
m_asset = new AssetBase(fileID, fileName, type);
m_asset = new AssetBase(fileID, fileName, type, UUID.Zero);
m_asset.Data = new byte[0];
m_asset.Description = "empty";
m_asset.Local = true;
@@ -212,6 +212,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void RequestStartXfer(IClientAPI pRemoteClient)
{
m_asset.Metadata.CreatorID = pRemoteClient.AgentId;
if (!String.IsNullOrEmpty(m_asset.Name))
{
pRemoteClient.SendXferRequest(mXferID, m_asset.Type, m_asset.FullID, 0, Utils.StringToBytes(m_asset.Name));

View File

@@ -112,7 +112,7 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
bool storeLocal, bool tempFile)
{
ourClient = remoteClient;
m_asset = new AssetBase(assetID, "blank", type);
m_asset = new AssetBase(assetID, "blank", type, remoteClient.AgentId);
m_asset.Data = data;
m_asset.Description = "empty";
m_asset.Local = storeLocal;

View File

@@ -240,7 +240,7 @@ namespace OpenSim.Region.CoreModules.Agent.TextureSender
{
string assetID = "j2kCache_" + AssetId.ToString();
AssetBase layerDecodeAsset = new AssetBase(assetID, assetID, (sbyte)AssetType.Notecard);
AssetBase layerDecodeAsset = new AssetBase(assetID, assetID, (sbyte)AssetType.Notecard, m_scene.RegionInfo.RegionID);
layerDecodeAsset.Local = true;
layerDecodeAsset.Temporary = true;

View File

@@ -416,7 +416,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
//m_log.DebugFormat("[INVENTORY ARCHIVER]: Importing asset {0}, type {1}", uuid, assetType);
AssetBase asset = new AssetBase(new UUID(uuid), "RandomName", assetType);
AssetBase asset = new AssetBase(new UUID(uuid), "RandomName", assetType, UUID.Zero);
asset.Data = data;
m_scene.AssetService.Store(asset);

View File

@@ -90,7 +90,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
// HGAssetService dispatches it to the remote grid.
// It's not pretty, but the best that can be done while
// not having a global naming infrastructure
AssetBase asset1 = new AssetBase(asset.FullID, asset.Name, asset.Type);
AssetBase asset1 = new AssetBase(asset.FullID, asset.Name, asset.Type, asset.Metadata.CreatorID);
Copy(asset, asset1);
try
{

View File

@@ -161,7 +161,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
}
AssetBase asset =
CreateAsset(item.Name, item.Description, (sbyte)item.AssetType, data);
CreateAsset(item.Name, item.Description, (sbyte)item.AssetType, data, remoteClient.AgentId);
item.AssetID = asset.FullID;
m_Scene.AssetService.Store(asset);
@@ -339,7 +339,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
objectGroup.GetPartName(objectGroup.RootPart.LocalId),
objectGroup.GetPartDescription(objectGroup.RootPart.LocalId),
(sbyte)AssetType.Object,
Utils.StringToBytes(sceneObjectXml));
Utils.StringToBytes(sceneObjectXml),
objectGroup.OwnerID);
m_Scene.AssetService.Store(asset);
assetID = asset.FullID;
@@ -640,9 +641,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
/// <param name="assetType"></param>
/// <param name="data"></param>
/// <returns></returns>
private AssetBase CreateAsset(string name, string description, sbyte assetType, byte[] data)
private AssetBase CreateAsset(string name, string description, sbyte assetType, byte[] data, UUID creatorID)
{
AssetBase asset = new AssetBase(UUID.Random(), name, assetType);
AssetBase asset = new AssetBase(UUID.Random(), name, assetType, creatorID);
asset.Description = description;
asset.Data = (data == null) ? new byte[1] : data;

View File

@@ -309,7 +309,8 @@ namespace OpenSim.Region.CoreModules.Scripting.DynamicTexture
}
// Create a new asset for user
AssetBase asset = new AssetBase(UUID.Random(), "DynamicImage" + Util.RandomClass.Next(1, 10000), (sbyte)AssetType.Texture);
AssetBase asset = new AssetBase(UUID.Random(), "DynamicImage" + Util.RandomClass.Next(1, 10000), (sbyte)AssetType.Texture,
scene.RegionInfo.RegionID);
asset.Data = assetData;
asset.Description = String.Format("URL image : {0}", Url);
asset.Local = false;

View File

@@ -335,7 +335,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
//m_log.DebugFormat("[ARCHIVER]: Importing asset {0}, type {1}", uuid, assetType);
AssetBase asset = new AssetBase(new UUID(uuid), String.Empty, assetType);
AssetBase asset = new AssetBase(new UUID(uuid), String.Empty, assetType, UUID.Zero);
asset.Data = data;
// We're relying on the asset service to do the sensible thing and not store the asset if it already

View File

@@ -158,7 +158,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
m_log.DebugFormat("[ARCHIVER]: Importing asset {0}", filename);
AssetBase asset = new AssetBase(new UUID(filename), metadata.Name, metadata.AssetType);
AssetBase asset = new AssetBase(new UUID(filename), metadata.Name, metadata.AssetType, UUID.Zero);
asset.Description = metadata.Description;
asset.Data = data;

View File

@@ -52,7 +52,7 @@ namespace OpenSim.Region.CoreModules.World.Estate
public EstateTerrainXferHandler(IClientAPI pRemoteClient, string pClientFilename)
{
m_asset = new AssetBase(UUID.Zero, pClientFilename, type);
m_asset = new AssetBase(UUID.Zero, pClientFilename, type, pRemoteClient.AgentId);
m_asset.Data = new byte[0];
m_asset.Description = "empty";
m_asset.Local = true;

View File

@@ -1080,7 +1080,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
AssetBase asset = new AssetBase(
m_scene.RegionInfo.RegionSettings.TerrainImageID,
"terrainImage_" + m_scene.RegionInfo.RegionID.ToString() + "_" + lastMapRefresh.ToString(),
(sbyte)AssetType.Texture);
(sbyte)AssetType.Texture,
m_scene.RegionInfo.RegionID);
asset.Data = data;
asset.Description = m_scene.RegionInfo.RegionName;
asset.Temporary = temporary;

View File

@@ -384,7 +384,7 @@ namespace OpenSim.Region.Framework.Scenes.Animation
}
}
AssetBase Animasset = new AssetBase(UUID.Random(), "Random Animation", (sbyte)AssetType.Animation);
AssetBase Animasset = new AssetBase(UUID.Random(), "Random Animation", (sbyte)AssetType.Animation, m_scenePresence.UUID);
Animasset.Data = anim.ToBytes();
Animasset.Temporary = true;
Animasset.Local = true;

View File

@@ -192,7 +192,7 @@ namespace OpenSim.Region.Framework.Scenes
return new ArrayList();
}
AssetBase asset = CreateAsset(item.Name, item.Description, (sbyte)AssetType.LSLText, data);
AssetBase asset = CreateAsset(item.Name, item.Description, (sbyte)AssetType.LSLText, data, remoteClient.AgentId);
AssetService.Store(asset);
if (isScriptRunning)
@@ -570,15 +570,9 @@ namespace OpenSim.Region.Framework.Scenes
/// <summary>
/// Create a new asset data structure.
/// </summary>
/// <param name="name"></param>
/// <param name="description"></param>
/// <param name="invType"></param>
/// <param name="assetType"></param>
/// <param name="data"></param>
/// <returns></returns>
private AssetBase CreateAsset(string name, string description, sbyte assetType, byte[] data)
private AssetBase CreateAsset(string name, string description, sbyte assetType, byte[] data, UUID creatorID)
{
AssetBase asset = new AssetBase(UUID.Random(), name, assetType);
AssetBase asset = new AssetBase(UUID.Random(), name, assetType, creatorID);
asset.Description = description;
asset.Data = (data == null) ? new byte[1] : data;
@@ -704,7 +698,7 @@ namespace OpenSim.Region.Framework.Scenes
data = Encoding.ASCII.GetBytes(strdata);
}
AssetBase asset = CreateAsset(name, description, assetType, data);
AssetBase asset = CreateAsset(name, description, assetType, data, remoteClient.AgentId);
AssetService.Store(asset);
CreateNewInventoryItem(remoteClient, remoteClient.AgentId.ToString(), folderID, asset.Name, 0, callbackID, asset, invType, nextOwnerMask, creationDate);
@@ -1289,7 +1283,9 @@ namespace OpenSim.Region.Framework.Scenes
itemBase.InvType, part.UUID, remoteClient.AgentId))
return;
AssetBase asset = CreateAsset(itemBase.Name, itemBase.Description, (sbyte)itemBase.AssetType, Encoding.ASCII.GetBytes("default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}"));
AssetBase asset = CreateAsset(itemBase.Name, itemBase.Description, (sbyte)itemBase.AssetType,
Encoding.ASCII.GetBytes("default\n{\n state_entry()\n {\n llSay(0, \"Script running\");\n }\n}"),
remoteClient.AgentId);
AssetService.Store(asset);
TaskInventoryItem taskItem = new TaskInventoryItem();
@@ -1583,7 +1579,8 @@ namespace OpenSim.Region.Framework.Scenes
objectGroup.GetPartName(objectGroup.LocalId),
objectGroup.GetPartDescription(objectGroup.LocalId),
(sbyte)AssetType.Object,
Utils.StringToBytes(sceneObjectXml));
Utils.StringToBytes(sceneObjectXml),
remoteClient.AgentId);
AssetService.Store(asset);
item.AssetID = asset.FullID;
@@ -1630,7 +1627,8 @@ namespace OpenSim.Region.Framework.Scenes
grp.GetPartName(grp.LocalId),
grp.GetPartDescription(grp.LocalId),
(sbyte)AssetType.Object,
Utils.StringToBytes(sceneObjectXml));
Utils.StringToBytes(sceneObjectXml),
remoteClient.AgentId);
AssetService.Store(asset);
InventoryItemBase item = new InventoryItemBase();

View File

@@ -4389,7 +4389,8 @@ namespace OpenSim.Region.Framework.Scenes
group.GetPartName(localID),
group.GetPartDescription(localID),
(sbyte)AssetType.Object,
Utils.StringToBytes(sceneObjectXml));
Utils.StringToBytes(sceneObjectXml),
group.OwnerID);
AssetService.Store(asset);
InventoryItemBase item = new InventoryItemBase();

View File

@@ -58,7 +58,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
TestHelper.InMethod();
UUID corruptAssetUuid = UUID.Parse("00000000-0000-0000-0000-000000000666");
AssetBase corruptAsset = AssetHelpers.CreateAsset(corruptAssetUuid, "CORRUPT ASSET");
AssetBase corruptAsset = AssetHelpers.CreateAsset(corruptAssetUuid, "CORRUPT ASSET", UUID.Zero);
m_assetService.Store(corruptAsset);
IDictionary<UUID, int> foundAssetUuids = new Dictionary<UUID, int>();

View File

@@ -49,7 +49,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.Minimodule
public UUID SaveBitmap(Bitmap data, bool lossless, bool temporary)
{
AssetBase asset = new AssetBase(UUID.Random(), "MRMDynamicImage", (sbyte)AssetType.Texture);
AssetBase asset = new AssetBase(UUID.Random(), "MRMDynamicImage", (sbyte)AssetType.Texture, m_scene.RegionInfo.RegionID);
asset.Data = OpenJPEG.EncodeFromImage(data, lossless);
asset.Description = "MRM Image";
asset.Local = false;

View File

@@ -1474,7 +1474,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
m_host.AddScriptLPS(1);
// Create new asset
AssetBase asset = new AssetBase(UUID.Random(), notecardName, (sbyte)AssetType.Notecard);
AssetBase asset = new AssetBase(UUID.Random(), notecardName, (sbyte)AssetType.Notecard, m_host.OwnerID);
asset.Description = "Script Generated Notecard";
string notecardData = String.Empty;