diff options
author | Melanie | 2011-04-17 18:48:53 +0100 |
---|---|---|
committer | Melanie | 2011-04-17 18:48:53 +0100 |
commit | 474910c9d624b53c010232ddb32b4002f58f1de0 (patch) | |
tree | 45ddab37c6afa0b095ffa0503640b9fe235bc400 | |
parent | Merge branch 'master' into careminster-presence-refactor (diff) | |
parent | More descriptive debug msg for ServiceOSDRequest failures. (diff) | |
download | opensim-SC_OLD-474910c9d624b53c010232ddb32b4002f58f1de0.zip opensim-SC_OLD-474910c9d624b53c010232ddb32b4002f58f1de0.tar.gz opensim-SC_OLD-474910c9d624b53c010232ddb32b4002f58f1de0.tar.bz2 opensim-SC_OLD-474910c9d624b53c010232ddb32b4002f58f1de0.tar.xz |
Merge branch 'master' into careminster-presence-refactor
74 files changed, 1426 insertions, 1079 deletions
diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 9659883..10cd3d5 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | |||
@@ -94,7 +94,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
94 | 94 | ||
95 | public void Initialise() | 95 | public void Initialise() |
96 | { | 96 | { |
97 | m_log.Info("[RADMIN]: " + Name + " cannot be default-initialized!"); | 97 | m_log.Error("[RADMIN]: " + Name + " cannot be default-initialized!"); |
98 | throw new PluginNotInitialisedException(Name); | 98 | throw new PluginNotInitialisedException(Name); |
99 | } | 99 | } |
100 | 100 | ||
@@ -111,7 +111,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
111 | else | 111 | else |
112 | { | 112 | { |
113 | m_config = m_configSource.Configs["RemoteAdmin"]; | 113 | m_config = m_configSource.Configs["RemoteAdmin"]; |
114 | m_log.Info("[RADMIN]: Remote Admin Plugin Enabled"); | 114 | m_log.Debug("[RADMIN]: Remote Admin Plugin Enabled"); |
115 | m_requiredPassword = m_config.GetString("access_password", String.Empty); | 115 | m_requiredPassword = m_config.GetString("access_password", String.Empty); |
116 | int port = m_config.GetInt("port", 0); | 116 | int port = m_config.GetInt("port", 0); |
117 | 117 | ||
@@ -266,8 +266,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
266 | } | 266 | } |
267 | catch (Exception e) | 267 | catch (Exception e) |
268 | { | 268 | { |
269 | m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0}", e.Message); | 269 | m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0} {1}", e.Message, e.StackTrace); |
270 | m_log.DebugFormat("[RADMIN]: Restart region: failed: {0}", e.ToString()); | ||
271 | responseData["accepted"] = false; | 270 | responseData["accepted"] = false; |
272 | responseData["success"] = false; | 271 | responseData["success"] = false; |
273 | responseData["rebooting"] = false; | 272 | responseData["rebooting"] = false; |
@@ -313,8 +312,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
313 | } | 312 | } |
314 | catch (Exception e) | 313 | catch (Exception e) |
315 | { | 314 | { |
316 | m_log.ErrorFormat("[RADMIN]: Broadcasting: failed: {0}", e.Message); | 315 | m_log.ErrorFormat("[RADMIN]: Broadcasting: failed: {0}", e.Message, e.StackTrace); |
317 | m_log.DebugFormat("[RADMIN]: Broadcasting: failed: {0}", e.ToString()); | ||
318 | 316 | ||
319 | responseData["accepted"] = false; | 317 | responseData["accepted"] = false; |
320 | responseData["success"] = false; | 318 | responseData["success"] = false; |
@@ -384,7 +382,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
384 | { | 382 | { |
385 | Hashtable requestData = (Hashtable) request.Params[0]; | 383 | Hashtable requestData = (Hashtable) request.Params[0]; |
386 | 384 | ||
387 | m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}", request.ToString()); | 385 | m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}", request); |
388 | // foreach (string k in requestData.Keys) | 386 | // foreach (string k in requestData.Keys) |
389 | // { | 387 | // { |
390 | // m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}: >{1}< {2}", | 388 | // m_log.DebugFormat("[RADMIN]: Load Terrain: XmlRpc {0}: >{1}< {2}", |
@@ -431,8 +429,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
431 | } | 429 | } |
432 | catch (Exception e) | 430 | catch (Exception e) |
433 | { | 431 | { |
434 | m_log.ErrorFormat("[RADMIN]: Terrain Loading: failed: {0}", e.Message); | 432 | m_log.ErrorFormat("[RADMIN]: Terrain Loading: failed: {0} {1}", e.Message, e.StackTrace); |
435 | m_log.DebugFormat("[RADMIN]: Terrain Loading: failed: {0}", e.ToString()); | ||
436 | 433 | ||
437 | responseData["success"] = false; | 434 | responseData["success"] = false; |
438 | responseData["error"] = e.Message; | 435 | responseData["error"] = e.Message; |
@@ -520,14 +517,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
520 | } | 517 | } |
521 | catch (Exception e) | 518 | catch (Exception e) |
522 | { | 519 | { |
523 | m_log.ErrorFormat("[RADMIN] Shutdown: failed: {0}", e.Message); | 520 | m_log.ErrorFormat("[RADMIN]: Shutdown: failed: {0} {1}", e.Message, e.StackTrace); |
524 | m_log.DebugFormat("[RADMIN] Shutdown: failed: {0}", e.ToString()); | ||
525 | 521 | ||
526 | responseData["accepted"] = false; | 522 | responseData["accepted"] = false; |
527 | responseData["error"] = e.Message; | 523 | responseData["error"] = e.Message; |
528 | 524 | ||
529 | response.Value = responseData; | 525 | response.Value = responseData; |
530 | } | 526 | } |
527 | |||
531 | m_log.Info("[RADMIN]: Shutdown Administrator Request complete"); | 528 | m_log.Info("[RADMIN]: Shutdown Administrator Request complete"); |
532 | return response; | 529 | return response; |
533 | } | 530 | } |
@@ -828,8 +825,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
828 | } | 825 | } |
829 | catch (Exception e) | 826 | catch (Exception e) |
830 | { | 827 | { |
831 | m_log.ErrorFormat("[RADMIN] CreateRegion: failed {0}", e.Message); | 828 | m_log.ErrorFormat("[RADMIN] CreateRegion: failed {0} {1}", e.Message, e.StackTrace); |
832 | m_log.DebugFormat("[RADMIN] CreateRegion: failed {0}", e.ToString()); | ||
833 | 829 | ||
834 | responseData["success"] = false; | 830 | responseData["success"] = false; |
835 | responseData["error"] = e.Message; | 831 | responseData["error"] = e.Message; |
@@ -895,8 +891,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
895 | } | 891 | } |
896 | catch (Exception e) | 892 | catch (Exception e) |
897 | { | 893 | { |
898 | m_log.ErrorFormat("[RADMIN] DeleteRegion: failed {0}", e.Message); | 894 | m_log.ErrorFormat("[RADMIN] DeleteRegion: failed {0} {1}", e.Message, e.StackTrace); |
899 | m_log.DebugFormat("[RADMIN] DeleteRegion: failed {0}", e.ToString()); | ||
900 | 895 | ||
901 | responseData["success"] = false; | 896 | responseData["success"] = false; |
902 | responseData["error"] = e.Message; | 897 | responseData["error"] = e.Message; |
@@ -987,8 +982,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
987 | } | 982 | } |
988 | catch (Exception e) | 983 | catch (Exception e) |
989 | { | 984 | { |
990 | m_log.ErrorFormat("[RADMIN] CloseRegion: failed {0}", e.Message); | 985 | m_log.ErrorFormat("[RADMIN]: CloseRegion: failed {0} {1}", e.Message, e.StackTrace); |
991 | m_log.DebugFormat("[RADMIN] CloseRegion: failed {0}", e.ToString()); | ||
992 | 986 | ||
993 | responseData["success"] = false; | 987 | responseData["success"] = false; |
994 | responseData["error"] = e.Message; | 988 | responseData["error"] = e.Message; |
@@ -1085,8 +1079,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1085 | } | 1079 | } |
1086 | catch (Exception e) | 1080 | catch (Exception e) |
1087 | { | 1081 | { |
1088 | m_log.ErrorFormat("[RADMIN] ModifyRegion: failed {0}", e.Message); | 1082 | m_log.ErrorFormat("[RADMIN] ModifyRegion: failed {0} {1}", e.Message, e.StackTrace); |
1089 | m_log.DebugFormat("[RADMIN] ModifyRegion: failed {0}", e.ToString()); | ||
1090 | 1083 | ||
1091 | responseData["success"] = false; | 1084 | responseData["success"] = false; |
1092 | responseData["error"] = e.Message; | 1085 | responseData["error"] = e.Message; |
@@ -1209,8 +1202,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1209 | } | 1202 | } |
1210 | catch (Exception e) | 1203 | catch (Exception e) |
1211 | { | 1204 | { |
1212 | m_log.ErrorFormat("[RADMIN] CreateUser: failed: {0}", e.Message); | 1205 | m_log.ErrorFormat("[RADMIN]: CreateUser: failed: {0} {1}", e.Message, e.StackTrace); |
1213 | m_log.DebugFormat("[RADMIN] CreateUser: failed: {0}", e.ToString()); | ||
1214 | 1206 | ||
1215 | responseData["success"] = false; | 1207 | responseData["success"] = false; |
1216 | responseData["avatar_uuid"] = UUID.Zero.ToString(); | 1208 | responseData["avatar_uuid"] = UUID.Zero.ToString(); |
@@ -1301,8 +1293,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1301 | } | 1293 | } |
1302 | catch (Exception e) | 1294 | catch (Exception e) |
1303 | { | 1295 | { |
1304 | m_log.ErrorFormat("[RADMIN] UserExists: failed: {0}", e.Message); | 1296 | m_log.ErrorFormat("[RADMIN]: UserExists: failed: {0} {1}", e.Message, e.StackTrace); |
1305 | m_log.DebugFormat("[RADMIN] UserExists: failed: {0}", e.ToString()); | ||
1306 | 1297 | ||
1307 | responseData["success"] = false; | 1298 | responseData["success"] = false; |
1308 | responseData["error"] = e.Message; | 1299 | responseData["error"] = e.Message; |
@@ -1475,9 +1466,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1475 | } | 1466 | } |
1476 | catch (Exception e) | 1467 | catch (Exception e) |
1477 | { | 1468 | { |
1478 | 1469 | m_log.ErrorFormat("[RADMIN] UpdateUserAccount: failed: {0} {1}", e.Message, e.StackTrace); | |
1479 | m_log.ErrorFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.Message); | ||
1480 | m_log.DebugFormat("[RADMIN] UpdateUserAccount: failed: {0}", e.ToString()); | ||
1481 | 1470 | ||
1482 | responseData["success"] = false; | 1471 | responseData["success"] = false; |
1483 | responseData["avatar_uuid"] = UUID.Zero.ToString(); | 1472 | responseData["avatar_uuid"] = UUID.Zero.ToString(); |
@@ -1485,6 +1474,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1485 | 1474 | ||
1486 | response.Value = responseData; | 1475 | response.Value = responseData; |
1487 | } | 1476 | } |
1477 | |||
1488 | m_log.Info("[RADMIN]: UpdateUserAccount: request complete"); | 1478 | m_log.Info("[RADMIN]: UpdateUserAccount: request complete"); |
1489 | return response; | 1479 | return response; |
1490 | } | 1480 | } |
@@ -1500,7 +1490,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1500 | 1490 | ||
1501 | private void UpdateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid) | 1491 | private void UpdateUserAppearance(Hashtable responseData, Hashtable requestData, UUID userid) |
1502 | { | 1492 | { |
1503 | m_log.DebugFormat("[RADMIN] updateUserAppearance"); | 1493 | m_log.DebugFormat("[RADMIN]: updateUserAppearance"); |
1504 | 1494 | ||
1505 | string defaultMale = m_config.GetString("default_male", "Default Male"); | 1495 | string defaultMale = m_config.GetString("default_male", "Default Male"); |
1506 | string defaultFemale = m_config.GetString("default_female", "Default Female"); | 1496 | string defaultFemale = m_config.GetString("default_female", "Default Female"); |
@@ -1540,16 +1530,16 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1540 | 1530 | ||
1541 | if (String.IsNullOrEmpty(model)) | 1531 | if (String.IsNullOrEmpty(model)) |
1542 | { | 1532 | { |
1543 | m_log.DebugFormat("[RADMIN] Appearance update not requested"); | 1533 | m_log.DebugFormat("[RADMIN]: Appearance update not requested"); |
1544 | return; | 1534 | return; |
1545 | } | 1535 | } |
1546 | 1536 | ||
1547 | m_log.DebugFormat("[RADMIN] Setting appearance for avatar {0}, using model <{1}>", userid, model); | 1537 | m_log.DebugFormat("[RADMIN]: Setting appearance for avatar {0}, using model <{1}>", userid, model); |
1548 | 1538 | ||
1549 | string[] modelSpecifiers = model.Split(); | 1539 | string[] modelSpecifiers = model.Split(); |
1550 | if (modelSpecifiers.Length != 2) | 1540 | if (modelSpecifiers.Length != 2) |
1551 | { | 1541 | { |
1552 | m_log.WarnFormat("[RADMIN] User appearance not set for {0}. Invalid model name : <{1}>", userid, model); | 1542 | m_log.WarnFormat("[RADMIN]: User appearance not set for {0}. Invalid model name : <{1}>", userid, model); |
1553 | // modelSpecifiers = dmodel.Split(); | 1543 | // modelSpecifiers = dmodel.Split(); |
1554 | return; | 1544 | return; |
1555 | } | 1545 | } |
@@ -1560,7 +1550,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1560 | 1550 | ||
1561 | if (modelProfile == null) | 1551 | if (modelProfile == null) |
1562 | { | 1552 | { |
1563 | m_log.WarnFormat("[RADMIN] Requested model ({0}) not found. Appearance unchanged", model); | 1553 | m_log.WarnFormat("[RADMIN]: Requested model ({0}) not found. Appearance unchanged", model); |
1564 | return; | 1554 | return; |
1565 | } | 1555 | } |
1566 | 1556 | ||
@@ -1570,7 +1560,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1570 | 1560 | ||
1571 | EstablishAppearance(userid, modelProfile.PrincipalID); | 1561 | EstablishAppearance(userid, modelProfile.PrincipalID); |
1572 | 1562 | ||
1573 | m_log.DebugFormat("[RADMIN] Finished setting appearance for avatar {0}, using model {1}", | 1563 | m_log.DebugFormat("[RADMIN]: Finished setting appearance for avatar {0}, using model {1}", |
1574 | userid, model); | 1564 | userid, model); |
1575 | } | 1565 | } |
1576 | 1566 | ||
@@ -1582,7 +1572,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1582 | 1572 | ||
1583 | private void EstablishAppearance(UUID destination, UUID source) | 1573 | private void EstablishAppearance(UUID destination, UUID source) |
1584 | { | 1574 | { |
1585 | m_log.DebugFormat("[RADMIN] Initializing inventory for {0} from {1}", destination, source); | 1575 | m_log.DebugFormat("[RADMIN]: Initializing inventory for {0} from {1}", destination, source); |
1586 | Scene scene = m_application.SceneManager.CurrentOrFirstScene; | 1576 | Scene scene = m_application.SceneManager.CurrentOrFirstScene; |
1587 | 1577 | ||
1588 | // If the model has no associated appearance we're done. | 1578 | // If the model has no associated appearance we're done. |
@@ -1604,7 +1594,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1604 | } | 1594 | } |
1605 | catch (Exception e) | 1595 | catch (Exception e) |
1606 | { | 1596 | { |
1607 | m_log.WarnFormat("[RADMIN] Error transferring appearance for {0} : {1}", | 1597 | m_log.WarnFormat("[RADMIN]: Error transferring appearance for {0} : {1}", |
1608 | destination, e.Message); | 1598 | destination, e.Message); |
1609 | } | 1599 | } |
1610 | 1600 | ||
@@ -1635,7 +1625,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1635 | } | 1625 | } |
1636 | catch (Exception e) | 1626 | catch (Exception e) |
1637 | { | 1627 | { |
1638 | m_log.WarnFormat("[RADMIN] Error transferring appearance for {0} : {1}", | 1628 | m_log.WarnFormat("[RADMIN]: Error transferring appearance for {0} : {1}", |
1639 | destination, e.Message); | 1629 | destination, e.Message); |
1640 | } | 1630 | } |
1641 | 1631 | ||
@@ -1670,7 +1660,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1670 | destinationFolder.ParentID = inventoryService.GetRootFolder(destination).ID; | 1660 | destinationFolder.ParentID = inventoryService.GetRootFolder(destination).ID; |
1671 | destinationFolder.Version = 1; | 1661 | destinationFolder.Version = 1; |
1672 | inventoryService.AddFolder(destinationFolder); // store base record | 1662 | inventoryService.AddFolder(destinationFolder); // store base record |
1673 | m_log.ErrorFormat("[RADMIN] Created folder for destination {0}", source); | 1663 | m_log.ErrorFormat("[RADMIN]: Created folder for destination {0}", source); |
1674 | } | 1664 | } |
1675 | 1665 | ||
1676 | // Wearables | 1666 | // Wearables |
@@ -1690,6 +1680,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1690 | { | 1680 | { |
1691 | InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination); | 1681 | InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination); |
1692 | destinationItem.Name = item.Name; | 1682 | destinationItem.Name = item.Name; |
1683 | destinationItem.Owner = destination; | ||
1693 | destinationItem.Description = item.Description; | 1684 | destinationItem.Description = item.Description; |
1694 | destinationItem.InvType = item.InvType; | 1685 | destinationItem.InvType = item.InvType; |
1695 | destinationItem.CreatorId = item.CreatorId; | 1686 | destinationItem.CreatorId = item.CreatorId; |
@@ -1709,6 +1700,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1709 | destinationItem.Flags = item.Flags; | 1700 | destinationItem.Flags = item.Flags; |
1710 | destinationItem.CreationDate = item.CreationDate; | 1701 | destinationItem.CreationDate = item.CreationDate; |
1711 | destinationItem.Folder = destinationFolder.ID; | 1702 | destinationItem.Folder = destinationFolder.ID; |
1703 | ApplyNextOwnerPermissions(destinationItem); | ||
1712 | 1704 | ||
1713 | m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem); | 1705 | m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem); |
1714 | m_log.DebugFormat("[RADMIN]: Added item {0} to folder {1}", destinationItem.ID, destinationFolder.ID); | 1706 | m_log.DebugFormat("[RADMIN]: Added item {0} to folder {1}", destinationItem.ID, destinationFolder.ID); |
@@ -1743,6 +1735,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1743 | { | 1735 | { |
1744 | InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination); | 1736 | InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination); |
1745 | destinationItem.Name = item.Name; | 1737 | destinationItem.Name = item.Name; |
1738 | destinationItem.Owner = destination; | ||
1746 | destinationItem.Description = item.Description; | 1739 | destinationItem.Description = item.Description; |
1747 | destinationItem.InvType = item.InvType; | 1740 | destinationItem.InvType = item.InvType; |
1748 | destinationItem.CreatorId = item.CreatorId; | 1741 | destinationItem.CreatorId = item.CreatorId; |
@@ -1762,6 +1755,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1762 | destinationItem.Flags = item.Flags; | 1755 | destinationItem.Flags = item.Flags; |
1763 | destinationItem.CreationDate = item.CreationDate; | 1756 | destinationItem.CreationDate = item.CreationDate; |
1764 | destinationItem.Folder = destinationFolder.ID; | 1757 | destinationItem.Folder = destinationFolder.ID; |
1758 | ApplyNextOwnerPermissions(destinationItem); | ||
1765 | 1759 | ||
1766 | m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem); | 1760 | m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem); |
1767 | m_log.DebugFormat("[RADMIN]: Added item {0} to folder {1}", destinationItem.ID, destinationFolder.ID); | 1761 | m_log.DebugFormat("[RADMIN]: Added item {0} to folder {1}", destinationItem.ID, destinationFolder.ID); |
@@ -1819,13 +1813,17 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1819 | { | 1813 | { |
1820 | destinationFolder = new InventoryFolderBase(); | 1814 | destinationFolder = new InventoryFolderBase(); |
1821 | destinationFolder.ID = UUID.Random(); | 1815 | destinationFolder.ID = UUID.Random(); |
1822 | destinationFolder.Name = assetType.ToString(); | 1816 | if (assetType == AssetType.Clothing) { |
1817 | destinationFolder.Name = "Clothing"; | ||
1818 | } else { | ||
1819 | destinationFolder.Name = "Body Parts"; | ||
1820 | } | ||
1823 | destinationFolder.Owner = destination; | 1821 | destinationFolder.Owner = destination; |
1824 | destinationFolder.Type = (short)assetType; | 1822 | destinationFolder.Type = (short)assetType; |
1825 | destinationFolder.ParentID = inventoryService.GetRootFolder(destination).ID; | 1823 | destinationFolder.ParentID = inventoryService.GetRootFolder(destination).ID; |
1826 | destinationFolder.Version = 1; | 1824 | destinationFolder.Version = 1; |
1827 | inventoryService.AddFolder(destinationFolder); // store base record | 1825 | inventoryService.AddFolder(destinationFolder); // store base record |
1828 | m_log.ErrorFormat("[RADMIN] Created folder for destination {0}", source); | 1826 | m_log.ErrorFormat("[RADMIN]: Created folder for destination {0}", source); |
1829 | } | 1827 | } |
1830 | 1828 | ||
1831 | InventoryFolderBase extraFolder; | 1829 | InventoryFolderBase extraFolder; |
@@ -1843,7 +1841,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1843 | extraFolder.ParentID = destinationFolder.ID; | 1841 | extraFolder.ParentID = destinationFolder.ID; |
1844 | inventoryService.AddFolder(extraFolder); | 1842 | inventoryService.AddFolder(extraFolder); |
1845 | 1843 | ||
1846 | m_log.DebugFormat("[RADMIN] Added folder {0} to folder {1}", extraFolder.ID, sourceFolder.ID); | 1844 | m_log.DebugFormat("[RADMIN]: Added folder {0} to folder {1}", extraFolder.ID, sourceFolder.ID); |
1847 | 1845 | ||
1848 | List<InventoryItemBase> items = inventoryService.GetFolderContent(source, folder.ID).Items; | 1846 | List<InventoryItemBase> items = inventoryService.GetFolderContent(source, folder.ID).Items; |
1849 | 1847 | ||
@@ -1851,6 +1849,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1851 | { | 1849 | { |
1852 | InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination); | 1850 | InventoryItemBase destinationItem = new InventoryItemBase(UUID.Random(), destination); |
1853 | destinationItem.Name = item.Name; | 1851 | destinationItem.Name = item.Name; |
1852 | destinationItem.Owner = destination; | ||
1854 | destinationItem.Description = item.Description; | 1853 | destinationItem.Description = item.Description; |
1855 | destinationItem.InvType = item.InvType; | 1854 | destinationItem.InvType = item.InvType; |
1856 | destinationItem.CreatorId = item.CreatorId; | 1855 | destinationItem.CreatorId = item.CreatorId; |
@@ -1870,6 +1869,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1870 | destinationItem.Flags = item.Flags; | 1869 | destinationItem.Flags = item.Flags; |
1871 | destinationItem.CreationDate = item.CreationDate; | 1870 | destinationItem.CreationDate = item.CreationDate; |
1872 | destinationItem.Folder = extraFolder.ID; | 1871 | destinationItem.Folder = extraFolder.ID; |
1872 | ApplyNextOwnerPermissions(destinationItem); | ||
1873 | 1873 | ||
1874 | m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem); | 1874 | m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(destinationItem); |
1875 | inventoryMap.Add(item.ID, destinationItem.ID); | 1875 | inventoryMap.Add(item.ID, destinationItem.ID); |
@@ -1887,6 +1887,29 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1887 | } | 1887 | } |
1888 | 1888 | ||
1889 | /// <summary> | 1889 | /// <summary> |
1890 | /// Apply next owner permissions. | ||
1891 | /// </summary> | ||
1892 | |||
1893 | private void ApplyNextOwnerPermissions(InventoryItemBase item) | ||
1894 | { | ||
1895 | if (item.InvType == (int)InventoryType.Object && (item.CurrentPermissions & 7) != 0) | ||
1896 | { | ||
1897 | if ((item.CurrentPermissions & ((uint)PermissionMask.Copy >> 13)) == 0) | ||
1898 | item.CurrentPermissions &= ~(uint)PermissionMask.Copy; | ||
1899 | if ((item.CurrentPermissions & ((uint)PermissionMask.Transfer >> 13)) == 0) | ||
1900 | item.CurrentPermissions &= ~(uint)PermissionMask.Transfer; | ||
1901 | if ((item.CurrentPermissions & ((uint)PermissionMask.Modify >> 13)) == 0) | ||
1902 | item.CurrentPermissions &= ~(uint)PermissionMask.Modify; | ||
1903 | } | ||
1904 | item.CurrentPermissions &= item.NextPermissions; | ||
1905 | item.BasePermissions &= item.NextPermissions; | ||
1906 | item.EveryOnePermissions &= item.NextPermissions; | ||
1907 | // item.OwnerChanged = true; | ||
1908 | // item.PermsMask = 0; | ||
1909 | // item.PermsGranter = UUID.Zero; | ||
1910 | } | ||
1911 | |||
1912 | /// <summary> | ||
1890 | /// This method is called if a given model avatar name can not be found. If the external | 1913 | /// This method is called if a given model avatar name can not be found. If the external |
1891 | /// file has already been loaded once, then control returns immediately. If not, then it | 1914 | /// file has already been loaded once, then control returns immediately. If not, then it |
1892 | /// looks for a default appearance file. This file contains XML definitions of zero or more named | 1915 | /// looks for a default appearance file. This file contains XML definitions of zero or more named |
@@ -1895,7 +1918,6 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1895 | /// indicate which outfit is the default, and this outfit will be automatically worn. The | 1918 | /// indicate which outfit is the default, and this outfit will be automatically worn. The |
1896 | /// other outfits are provided to allow "real" avatars a way to easily change their outfits. | 1919 | /// other outfits are provided to allow "real" avatars a way to easily change their outfits. |
1897 | /// </summary> | 1920 | /// </summary> |
1898 | |||
1899 | private bool CreateDefaultAvatars() | 1921 | private bool CreateDefaultAvatars() |
1900 | { | 1922 | { |
1901 | // Only load once | 1923 | // Only load once |
@@ -1904,7 +1926,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1904 | return false; | 1926 | return false; |
1905 | } | 1927 | } |
1906 | 1928 | ||
1907 | m_log.DebugFormat("[RADMIN] Creating default avatar entries"); | 1929 | m_log.DebugFormat("[RADMIN]: Creating default avatar entries"); |
1908 | 1930 | ||
1909 | m_defaultAvatarsLoaded = true; | 1931 | m_defaultAvatarsLoaded = true; |
1910 | 1932 | ||
@@ -1960,7 +1982,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1960 | 1982 | ||
1961 | foreach (XmlElement avatar in avatars) | 1983 | foreach (XmlElement avatar in avatars) |
1962 | { | 1984 | { |
1963 | m_log.DebugFormat("[RADMIN] Loading appearance for {0}, gender = {1}", | 1985 | m_log.DebugFormat("[RADMIN]: Loading appearance for {0}, gender = {1}", |
1964 | GetStringAttribute(avatar,"name","?"), GetStringAttribute(avatar,"gender","?")); | 1986 | GetStringAttribute(avatar,"name","?"), GetStringAttribute(avatar,"gender","?")); |
1965 | 1987 | ||
1966 | // Create the user identified by the avatar entry | 1988 | // Create the user identified by the avatar entry |
@@ -1982,7 +2004,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
1982 | account = CreateUser(scopeID, names[0], names[1], password, email); | 2004 | account = CreateUser(scopeID, names[0], names[1], password, email); |
1983 | if (null == account) | 2005 | if (null == account) |
1984 | { | 2006 | { |
1985 | m_log.ErrorFormat("[RADMIN] Avatar {0} {1} was not created", names[0], names[1]); | 2007 | m_log.ErrorFormat("[RADMIN]: Avatar {0} {1} was not created", names[0], names[1]); |
1986 | return false; | 2008 | return false; |
1987 | } | 2009 | } |
1988 | } | 2010 | } |
@@ -2000,12 +2022,12 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2000 | 2022 | ||
2001 | ID = account.PrincipalID; | 2023 | ID = account.PrincipalID; |
2002 | 2024 | ||
2003 | m_log.DebugFormat("[RADMIN] User {0}[{1}] created or retrieved", name, ID); | 2025 | m_log.DebugFormat("[RADMIN]: User {0}[{1}] created or retrieved", name, ID); |
2004 | include = true; | 2026 | include = true; |
2005 | } | 2027 | } |
2006 | catch (Exception e) | 2028 | catch (Exception e) |
2007 | { | 2029 | { |
2008 | m_log.DebugFormat("[RADMIN] Error creating user {0} : {1}", name, e.Message); | 2030 | m_log.DebugFormat("[RADMIN]: Error creating user {0} : {1}", name, e.Message); |
2009 | include = false; | 2031 | include = false; |
2010 | } | 2032 | } |
2011 | 2033 | ||
@@ -2045,7 +2067,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2045 | clothingFolder.ParentID = inventoryService.GetRootFolder(ID).ID; | 2067 | clothingFolder.ParentID = inventoryService.GetRootFolder(ID).ID; |
2046 | clothingFolder.Version = 1; | 2068 | clothingFolder.Version = 1; |
2047 | inventoryService.AddFolder(clothingFolder); // store base record | 2069 | inventoryService.AddFolder(clothingFolder); // store base record |
2048 | m_log.ErrorFormat("[RADMIN] Created clothing folder for {0}/{1}", name, ID); | 2070 | m_log.ErrorFormat("[RADMIN]: Created clothing folder for {0}/{1}", name, ID); |
2049 | } | 2071 | } |
2050 | 2072 | ||
2051 | // OK, now we have an inventory for the user, read in the outfits from the | 2073 | // OK, now we have an inventory for the user, read in the outfits from the |
@@ -2058,7 +2080,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2058 | 2080 | ||
2059 | foreach (XmlElement outfit in outfits) | 2081 | foreach (XmlElement outfit in outfits) |
2060 | { | 2082 | { |
2061 | m_log.DebugFormat("[RADMIN] Loading outfit {0} for {1}", | 2083 | m_log.DebugFormat("[RADMIN]: Loading outfit {0} for {1}", |
2062 | GetStringAttribute(outfit,"name","?"), GetStringAttribute(avatar,"name","?")); | 2084 | GetStringAttribute(outfit,"name","?"), GetStringAttribute(avatar,"name","?")); |
2063 | 2085 | ||
2064 | outfitName = GetStringAttribute(outfit,"name",""); | 2086 | outfitName = GetStringAttribute(outfit,"name",""); |
@@ -2082,7 +2104,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2082 | // Otherwise, we must create the folder. | 2104 | // Otherwise, we must create the folder. |
2083 | if (extraFolder == null) | 2105 | if (extraFolder == null) |
2084 | { | 2106 | { |
2085 | m_log.DebugFormat("[RADMIN] Creating outfit folder {0} for {1}", outfitName, name); | 2107 | m_log.DebugFormat("[RADMIN]: Creating outfit folder {0} for {1}", outfitName, name); |
2086 | extraFolder = new InventoryFolderBase(); | 2108 | extraFolder = new InventoryFolderBase(); |
2087 | extraFolder.ID = UUID.Random(); | 2109 | extraFolder.ID = UUID.Random(); |
2088 | extraFolder.Name = outfitName; | 2110 | extraFolder.Name = outfitName; |
@@ -2091,7 +2113,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2091 | extraFolder.Version = 1; | 2113 | extraFolder.Version = 1; |
2092 | extraFolder.ParentID = clothingFolder.ID; | 2114 | extraFolder.ParentID = clothingFolder.ID; |
2093 | inventoryService.AddFolder(extraFolder); | 2115 | inventoryService.AddFolder(extraFolder); |
2094 | m_log.DebugFormat("[RADMIN] Adding outfile folder {0} to folder {1}", extraFolder.ID, clothingFolder.ID); | 2116 | m_log.DebugFormat("[RADMIN]: Adding outfile folder {0} to folder {1}", extraFolder.ID, clothingFolder.ID); |
2095 | } | 2117 | } |
2096 | 2118 | ||
2097 | // Now get the pieces that make up the outfit | 2119 | // Now get the pieces that make up the outfit |
@@ -2106,7 +2128,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2106 | switch (child.Name) | 2128 | switch (child.Name) |
2107 | { | 2129 | { |
2108 | case "Permissions" : | 2130 | case "Permissions" : |
2109 | m_log.DebugFormat("[RADMIN] Permissions specified"); | 2131 | m_log.DebugFormat("[RADMIN]: Permissions specified"); |
2110 | perms = child; | 2132 | perms = child; |
2111 | break; | 2133 | break; |
2112 | case "Asset" : | 2134 | case "Asset" : |
@@ -2156,7 +2178,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2156 | inventoryItem.Folder = extraFolder.ID; // Parent folder | 2178 | inventoryItem.Folder = extraFolder.ID; // Parent folder |
2157 | 2179 | ||
2158 | m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(inventoryItem); | 2180 | m_application.SceneManager.CurrentOrFirstScene.AddInventoryItem(inventoryItem); |
2159 | m_log.DebugFormat("[RADMIN] Added item {0} to folder {1}", inventoryItem.ID, extraFolder.ID); | 2181 | m_log.DebugFormat("[RADMIN]: Added item {0} to folder {1}", inventoryItem.ID, extraFolder.ID); |
2160 | } | 2182 | } |
2161 | 2183 | ||
2162 | // Attach item, if attachpoint is specified | 2184 | // Attach item, if attachpoint is specified |
@@ -2164,7 +2186,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2164 | if (attachpoint != 0) | 2186 | if (attachpoint != 0) |
2165 | { | 2187 | { |
2166 | avatarAppearance.SetAttachment(attachpoint, inventoryItem.ID, inventoryItem.AssetID); | 2188 | avatarAppearance.SetAttachment(attachpoint, inventoryItem.ID, inventoryItem.AssetID); |
2167 | m_log.DebugFormat("[RADMIN] Attached {0}", inventoryItem.ID); | 2189 | m_log.DebugFormat("[RADMIN]: Attached {0}", inventoryItem.ID); |
2168 | } | 2190 | } |
2169 | 2191 | ||
2170 | // Record whether or not the item is to be initially worn | 2192 | // Record whether or not the item is to be initially worn |
@@ -2177,32 +2199,32 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2177 | } | 2199 | } |
2178 | catch (Exception e) | 2200 | catch (Exception e) |
2179 | { | 2201 | { |
2180 | m_log.WarnFormat("[RADMIN] Error wearing item {0} : {1}", inventoryItem.ID, e.Message); | 2202 | m_log.WarnFormat("[RADMIN]: Error wearing item {0} : {1}", inventoryItem.ID, e.Message); |
2181 | } | 2203 | } |
2182 | } // foreach item in outfit | 2204 | } // foreach item in outfit |
2183 | m_log.DebugFormat("[RADMIN] Outfit {0} load completed", outfitName); | 2205 | m_log.DebugFormat("[RADMIN]: Outfit {0} load completed", outfitName); |
2184 | } // foreach outfit | 2206 | } // foreach outfit |
2185 | m_log.DebugFormat("[RADMIN] Inventory update complete for {0}", name); | 2207 | m_log.DebugFormat("[RADMIN]: Inventory update complete for {0}", name); |
2186 | scene.AvatarService.SetAppearance(ID, avatarAppearance); | 2208 | scene.AvatarService.SetAppearance(ID, avatarAppearance); |
2187 | } | 2209 | } |
2188 | catch (Exception e) | 2210 | catch (Exception e) |
2189 | { | 2211 | { |
2190 | m_log.WarnFormat("[RADMIN] Inventory processing incomplete for user {0} : {1}", | 2212 | m_log.WarnFormat("[RADMIN]: Inventory processing incomplete for user {0} : {1}", |
2191 | name, e.Message); | 2213 | name, e.Message); |
2192 | } | 2214 | } |
2193 | } // End of include | 2215 | } // End of include |
2194 | } | 2216 | } |
2195 | m_log.DebugFormat("[RADMIN] Default avatar loading complete"); | 2217 | m_log.DebugFormat("[RADMIN]: Default avatar loading complete"); |
2196 | } | 2218 | } |
2197 | else | 2219 | else |
2198 | { | 2220 | { |
2199 | m_log.DebugFormat("[RADMIN] No default avatar information available"); | 2221 | m_log.DebugFormat("[RADMIN]: No default avatar information available"); |
2200 | return false; | 2222 | return false; |
2201 | } | 2223 | } |
2202 | } | 2224 | } |
2203 | catch (Exception e) | 2225 | catch (Exception e) |
2204 | { | 2226 | { |
2205 | m_log.WarnFormat("[RADMIN] Exception whilst loading default avatars ; {0}", e.Message); | 2227 | m_log.WarnFormat("[RADMIN]: Exception whilst loading default avatars ; {0}", e.Message); |
2206 | return false; | 2228 | return false; |
2207 | } | 2229 | } |
2208 | 2230 | ||
@@ -2297,8 +2319,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2297 | } | 2319 | } |
2298 | catch (Exception e) | 2320 | catch (Exception e) |
2299 | { | 2321 | { |
2300 | m_log.InfoFormat("[RADMIN] LoadOAR: {0}", e.Message); | 2322 | m_log.ErrorFormat("[RADMIN]: LoadOAR: {0} {1}", e.Message, e.StackTrace); |
2301 | m_log.DebugFormat("[RADMIN] LoadOAR: {0}", e.ToString()); | ||
2302 | 2323 | ||
2303 | responseData["loaded"] = false; | 2324 | responseData["loaded"] = false; |
2304 | responseData["error"] = e.Message; | 2325 | responseData["error"] = e.Message; |
@@ -2403,8 +2424,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2403 | } | 2424 | } |
2404 | catch (Exception e) | 2425 | catch (Exception e) |
2405 | { | 2426 | { |
2406 | m_log.InfoFormat("[RADMIN] SaveOAR: {0}", e.Message); | 2427 | m_log.ErrorFormat("[RADMIN]: SaveOAR: {0} {1}", e.Message, e.StackTrace); |
2407 | m_log.DebugFormat("[RADMIN] SaveOAR: {0}", e.ToString()); | ||
2408 | 2428 | ||
2409 | responseData["saved"] = false; | 2429 | responseData["saved"] = false; |
2410 | responseData["error"] = e.Message; | 2430 | responseData["error"] = e.Message; |
@@ -2418,7 +2438,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2418 | 2438 | ||
2419 | private void RemoteAdminOarSaveCompleted(Guid uuid, string name) | 2439 | private void RemoteAdminOarSaveCompleted(Guid uuid, string name) |
2420 | { | 2440 | { |
2421 | m_log.DebugFormat("[RADMIN] File processing complete for {0}", name); | 2441 | m_log.DebugFormat("[RADMIN]: File processing complete for {0}", name); |
2422 | lock (m_saveOarLock) Monitor.Pulse(m_saveOarLock); | 2442 | lock (m_saveOarLock) Monitor.Pulse(m_saveOarLock); |
2423 | } | 2443 | } |
2424 | 2444 | ||
@@ -2456,14 +2476,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2456 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 2476 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; |
2457 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | 2477 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) |
2458 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | 2478 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); |
2459 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); | 2479 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); |
2460 | } | 2480 | } |
2461 | else if (requestData.Contains("region_name")) | 2481 | else if (requestData.Contains("region_name")) |
2462 | { | 2482 | { |
2463 | string region_name = (string) requestData["region_name"]; | 2483 | string region_name = (string) requestData["region_name"]; |
2464 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | 2484 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) |
2465 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | 2485 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); |
2466 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); | 2486 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); |
2467 | } | 2487 | } |
2468 | else throw new Exception("neither region_name nor region_uuid given"); | 2488 | else throw new Exception("neither region_name nor region_uuid given"); |
2469 | 2489 | ||
@@ -2494,8 +2514,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2494 | } | 2514 | } |
2495 | catch (Exception e) | 2515 | catch (Exception e) |
2496 | { | 2516 | { |
2497 | m_log.InfoFormat("[RADMIN] LoadXml: {0}", e.Message); | 2517 | m_log.ErrorFormat("[RADMIN] LoadXml: {0} {1}", e.Message, e.StackTrace); |
2498 | m_log.DebugFormat("[RADMIN] LoadXml: {0}", e.ToString()); | ||
2499 | 2518 | ||
2500 | responseData["loaded"] = false; | 2519 | responseData["loaded"] = false; |
2501 | responseData["switched"] = false; | 2520 | responseData["switched"] = false; |
@@ -2541,14 +2560,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2541 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 2560 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; |
2542 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | 2561 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) |
2543 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | 2562 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); |
2544 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); | 2563 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); |
2545 | } | 2564 | } |
2546 | else if (requestData.Contains("region_name")) | 2565 | else if (requestData.Contains("region_name")) |
2547 | { | 2566 | { |
2548 | string region_name = (string) requestData["region_name"]; | 2567 | string region_name = (string) requestData["region_name"]; |
2549 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | 2568 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) |
2550 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | 2569 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); |
2551 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); | 2570 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); |
2552 | } | 2571 | } |
2553 | else throw new Exception("neither region_name nor region_uuid given"); | 2572 | else throw new Exception("neither region_name nor region_uuid given"); |
2554 | 2573 | ||
@@ -2580,8 +2599,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2580 | } | 2599 | } |
2581 | catch (Exception e) | 2600 | catch (Exception e) |
2582 | { | 2601 | { |
2583 | m_log.InfoFormat("[RADMIN] SaveXml: {0}", e.Message); | 2602 | m_log.ErrorFormat("[RADMIN]: SaveXml: {0} {1}", e.Message, e.StackTrace); |
2584 | m_log.DebugFormat("[RADMIN] SaveXml: {0}", e.ToString()); | ||
2585 | 2603 | ||
2586 | responseData["saved"] = false; | 2604 | responseData["saved"] = false; |
2587 | responseData["switched"] = false; | 2605 | responseData["switched"] = false; |
@@ -2620,14 +2638,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2620 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 2638 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; |
2621 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | 2639 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) |
2622 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | 2640 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); |
2623 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); | 2641 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); |
2624 | } | 2642 | } |
2625 | else if (requestData.Contains("region_name")) | 2643 | else if (requestData.Contains("region_name")) |
2626 | { | 2644 | { |
2627 | string region_name = (string) requestData["region_name"]; | 2645 | string region_name = (string) requestData["region_name"]; |
2628 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | 2646 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) |
2629 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | 2647 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); |
2630 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); | 2648 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); |
2631 | } | 2649 | } |
2632 | else throw new Exception("neither region_name nor region_uuid given"); | 2650 | else throw new Exception("neither region_name nor region_uuid given"); |
2633 | 2651 | ||
@@ -2643,7 +2661,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2643 | } | 2661 | } |
2644 | catch (Exception e) | 2662 | catch (Exception e) |
2645 | { | 2663 | { |
2646 | m_log.InfoFormat("[RADMIN] RegionQuery: {0}", e.Message); | 2664 | m_log.InfoFormat("[RADMIN]: RegionQuery: {0}", e.Message); |
2647 | 2665 | ||
2648 | responseData["success"] = false; | 2666 | responseData["success"] = false; |
2649 | responseData["error"] = e.Message; | 2667 | responseData["error"] = e.Message; |
@@ -2684,7 +2702,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2684 | } | 2702 | } |
2685 | catch (Exception e) | 2703 | catch (Exception e) |
2686 | { | 2704 | { |
2687 | m_log.InfoFormat("[RADMIN] ConsoleCommand: {0}", e.Message); | 2705 | m_log.InfoFormat("[RADMIN]: ConsoleCommand: {0}", e.Message); |
2688 | 2706 | ||
2689 | responseData["success"] = false; | 2707 | responseData["success"] = false; |
2690 | responseData["error"] = e.Message; | 2708 | responseData["error"] = e.Message; |
@@ -2721,14 +2739,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2721 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 2739 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; |
2722 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | 2740 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) |
2723 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | 2741 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); |
2724 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); | 2742 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); |
2725 | } | 2743 | } |
2726 | else if (requestData.Contains("region_name")) | 2744 | else if (requestData.Contains("region_name")) |
2727 | { | 2745 | { |
2728 | string region_name = (string) requestData["region_name"]; | 2746 | string region_name = (string) requestData["region_name"]; |
2729 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | 2747 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) |
2730 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | 2748 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); |
2731 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); | 2749 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); |
2732 | } | 2750 | } |
2733 | else throw new Exception("neither region_name nor region_uuid given"); | 2751 | else throw new Exception("neither region_name nor region_uuid given"); |
2734 | 2752 | ||
@@ -2739,7 +2757,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2739 | } | 2757 | } |
2740 | catch (Exception e) | 2758 | catch (Exception e) |
2741 | { | 2759 | { |
2742 | m_log.InfoFormat("[RADMIN] Access List Clear Request: {0}", e.Message); | 2760 | m_log.ErrorFormat("[RADMIN]: Access List Clear Request: {0} {1}", e.Message, e.StackTrace); |
2743 | 2761 | ||
2744 | responseData["success"] = false; | 2762 | responseData["success"] = false; |
2745 | responseData["error"] = e.Message; | 2763 | responseData["error"] = e.Message; |
@@ -2778,14 +2796,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2778 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 2796 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; |
2779 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | 2797 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) |
2780 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | 2798 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); |
2781 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); | 2799 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); |
2782 | } | 2800 | } |
2783 | else if (requestData.Contains("region_name")) | 2801 | else if (requestData.Contains("region_name")) |
2784 | { | 2802 | { |
2785 | string region_name = (string) requestData["region_name"]; | 2803 | string region_name = (string) requestData["region_name"]; |
2786 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | 2804 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) |
2787 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | 2805 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); |
2788 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); | 2806 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); |
2789 | } | 2807 | } |
2790 | else throw new Exception("neither region_name nor region_uuid given"); | 2808 | else throw new Exception("neither region_name nor region_uuid given"); |
2791 | 2809 | ||
@@ -2805,7 +2823,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2805 | if (account != null) | 2823 | if (account != null) |
2806 | { | 2824 | { |
2807 | uuids.Add(account.PrincipalID); | 2825 | uuids.Add(account.PrincipalID); |
2808 | m_log.DebugFormat("[RADMIN] adding \"{0}\" to ACL for \"{1}\"", name, scene.RegionInfo.RegionName); | 2826 | m_log.DebugFormat("[RADMIN]: adding \"{0}\" to ACL for \"{1}\"", name, scene.RegionInfo.RegionName); |
2809 | } | 2827 | } |
2810 | } | 2828 | } |
2811 | List<UUID> accessControlList = new List<UUID>(scene.RegionInfo.EstateSettings.EstateAccess); | 2829 | List<UUID> accessControlList = new List<UUID>(scene.RegionInfo.EstateSettings.EstateAccess); |
@@ -2826,7 +2844,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2826 | } | 2844 | } |
2827 | catch (Exception e) | 2845 | catch (Exception e) |
2828 | { | 2846 | { |
2829 | m_log.InfoFormat("[RADMIN] Access List Add Request: {0}", e.Message); | 2847 | m_log.ErrorFormat("[RADMIN]: Access List Add Request: {0} {1}", e.Message, e.StackTrace); |
2830 | 2848 | ||
2831 | responseData["success"] = false; | 2849 | responseData["success"] = false; |
2832 | responseData["error"] = e.Message; | 2850 | responseData["error"] = e.Message; |
@@ -2865,14 +2883,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2865 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 2883 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; |
2866 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | 2884 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) |
2867 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | 2885 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); |
2868 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); | 2886 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); |
2869 | } | 2887 | } |
2870 | else if (requestData.Contains("region_name")) | 2888 | else if (requestData.Contains("region_name")) |
2871 | { | 2889 | { |
2872 | string region_name = (string) requestData["region_name"]; | 2890 | string region_name = (string) requestData["region_name"]; |
2873 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | 2891 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) |
2874 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | 2892 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); |
2875 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); | 2893 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); |
2876 | } | 2894 | } |
2877 | else throw new Exception("neither region_name nor region_uuid given"); | 2895 | else throw new Exception("neither region_name nor region_uuid given"); |
2878 | 2896 | ||
@@ -2913,7 +2931,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2913 | } | 2931 | } |
2914 | catch (Exception e) | 2932 | catch (Exception e) |
2915 | { | 2933 | { |
2916 | m_log.InfoFormat("[RADMIN] Access List Remove Request: {0}", e.Message); | 2934 | m_log.ErrorFormat("[RADMIN]: Access List Remove Request: {0} {1}", e.Message, e.StackTrace); |
2917 | 2935 | ||
2918 | responseData["success"] = false; | 2936 | responseData["success"] = false; |
2919 | responseData["error"] = e.Message; | 2937 | responseData["error"] = e.Message; |
@@ -2952,14 +2970,14 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2952 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; | 2970 | UUID region_uuid = (UUID) (string) requestData["region_uuid"]; |
2953 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) | 2971 | if (!m_application.SceneManager.TrySetCurrentScene(region_uuid)) |
2954 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); | 2972 | throw new Exception(String.Format("failed to switch to region {0}", region_uuid.ToString())); |
2955 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_uuid.ToString()); | 2973 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_uuid.ToString()); |
2956 | } | 2974 | } |
2957 | else if (requestData.Contains("region_name")) | 2975 | else if (requestData.Contains("region_name")) |
2958 | { | 2976 | { |
2959 | string region_name = (string) requestData["region_name"]; | 2977 | string region_name = (string) requestData["region_name"]; |
2960 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) | 2978 | if (!m_application.SceneManager.TrySetCurrentScene(region_name)) |
2961 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); | 2979 | throw new Exception(String.Format("failed to switch to region {0}", region_name)); |
2962 | m_log.InfoFormat("[RADMIN] Switched to region {0}", region_name); | 2980 | m_log.InfoFormat("[RADMIN]: Switched to region {0}", region_name); |
2963 | } | 2981 | } |
2964 | else throw new Exception("neither region_name nor region_uuid given"); | 2982 | else throw new Exception("neither region_name nor region_uuid given"); |
2965 | 2983 | ||
@@ -2981,7 +2999,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController | |||
2981 | } | 2999 | } |
2982 | catch (Exception e) | 3000 | catch (Exception e) |
2983 | { | 3001 | { |
2984 | m_log.InfoFormat("[RADMIN] Acces List List: {0}", e.Message); | 3002 | m_log.ErrorFormat("[RADMIN]: Access List List: {0} {1}", e.Message, e.StackTrace); |
2985 | 3003 | ||
2986 | responseData["success"] = false; | 3004 | responseData["success"] = false; |
2987 | responseData["error"] = e.Message; | 3005 | responseData["error"] = e.Message; |
diff --git a/OpenSim/Data/Null/NullEstateData.cs b/OpenSim/Data/Null/NullEstateData.cs index 0cebff5..8db8064 100755 --- a/OpenSim/Data/Null/NullEstateData.cs +++ b/OpenSim/Data/Null/NullEstateData.cs | |||
@@ -38,9 +38,9 @@ namespace OpenSim.Data.Null | |||
38 | { | 38 | { |
39 | public class NullEstateStore : IEstateDataStore | 39 | public class NullEstateStore : IEstateDataStore |
40 | { | 40 | { |
41 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 41 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
42 | 42 | ||
43 | private string m_connectionString; | 43 | // private string m_connectionString; |
44 | 44 | ||
45 | protected virtual Assembly Assembly | 45 | protected virtual Assembly Assembly |
46 | { | 46 | { |
@@ -58,7 +58,7 @@ namespace OpenSim.Data.Null | |||
58 | 58 | ||
59 | public void Initialise(string connectionString) | 59 | public void Initialise(string connectionString) |
60 | { | 60 | { |
61 | m_connectionString = connectionString; | 61 | // m_connectionString = connectionString; |
62 | } | 62 | } |
63 | 63 | ||
64 | private string[] FieldList | 64 | private string[] FieldList |
diff --git a/OpenSim/Framework/Servers/HttpServer/AsynchronousRestObjectRequester.cs b/OpenSim/Framework/Servers/HttpServer/AsynchronousRestObjectRequester.cs deleted file mode 100644 index 03c12dd..0000000 --- a/OpenSim/Framework/Servers/HttpServer/AsynchronousRestObjectRequester.cs +++ /dev/null | |||
@@ -1,192 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.IO; | ||
30 | using System.Net; | ||
31 | using System.Reflection; | ||
32 | using System.Text; | ||
33 | using System.Xml; | ||
34 | using System.Xml.Serialization; | ||
35 | using log4net; | ||
36 | |||
37 | namespace OpenSim.Framework.Servers.HttpServer | ||
38 | { | ||
39 | public class AsynchronousRestObjectRequester | ||
40 | { | ||
41 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
42 | |||
43 | /// <summary> | ||
44 | /// Perform an asynchronous REST request. | ||
45 | /// </summary> | ||
46 | /// <param name="verb">GET or POST</param> | ||
47 | /// <param name="requestUrl"></param> | ||
48 | /// <param name="obj"></param> | ||
49 | /// <param name="action"></param> | ||
50 | /// <returns></returns> | ||
51 | /// | ||
52 | /// <exception cref="System.Net.WebException">Thrown if we encounter a | ||
53 | /// network issue while posting the request. You'll want to make | ||
54 | /// sure you deal with this as they're not uncommon</exception> | ||
55 | // | ||
56 | public static void MakeRequest<TRequest, TResponse>(string verb, | ||
57 | string requestUrl, TRequest obj, Action<TResponse> action) | ||
58 | { | ||
59 | // m_log.DebugFormat("[ASYNC REQUEST]: Starting {0} {1}", verb, requestUrl); | ||
60 | |||
61 | Type type = typeof (TRequest); | ||
62 | |||
63 | WebRequest request = WebRequest.Create(requestUrl); | ||
64 | WebResponse response = null; | ||
65 | TResponse deserial = default(TResponse); | ||
66 | XmlSerializer deserializer = new XmlSerializer(typeof (TResponse)); | ||
67 | |||
68 | request.Method = verb; | ||
69 | |||
70 | if (verb == "POST") | ||
71 | { | ||
72 | request.ContentType = "text/xml"; | ||
73 | |||
74 | MemoryStream buffer = new MemoryStream(); | ||
75 | |||
76 | XmlWriterSettings settings = new XmlWriterSettings(); | ||
77 | settings.Encoding = Encoding.UTF8; | ||
78 | |||
79 | using (XmlWriter writer = XmlWriter.Create(buffer, settings)) | ||
80 | { | ||
81 | XmlSerializer serializer = new XmlSerializer(type); | ||
82 | serializer.Serialize(writer, obj); | ||
83 | writer.Flush(); | ||
84 | } | ||
85 | |||
86 | int length = (int) buffer.Length; | ||
87 | request.ContentLength = length; | ||
88 | |||
89 | request.BeginGetRequestStream(delegate(IAsyncResult res) | ||
90 | { | ||
91 | Stream requestStream = request.EndGetRequestStream(res); | ||
92 | |||
93 | requestStream.Write(buffer.ToArray(), 0, length); | ||
94 | requestStream.Close(); | ||
95 | |||
96 | request.BeginGetResponse(delegate(IAsyncResult ar) | ||
97 | { | ||
98 | response = request.EndGetResponse(ar); | ||
99 | Stream respStream = null; | ||
100 | try | ||
101 | { | ||
102 | respStream = response.GetResponseStream(); | ||
103 | deserial = (TResponse)deserializer.Deserialize( | ||
104 | respStream); | ||
105 | } | ||
106 | catch (System.InvalidOperationException) | ||
107 | { | ||
108 | } | ||
109 | finally | ||
110 | { | ||
111 | // Let's not close this | ||
112 | //buffer.Close(); | ||
113 | respStream.Close(); | ||
114 | response.Close(); | ||
115 | } | ||
116 | |||
117 | action(deserial); | ||
118 | |||
119 | }, null); | ||
120 | }, null); | ||
121 | |||
122 | |||
123 | return; | ||
124 | } | ||
125 | |||
126 | request.BeginGetResponse(delegate(IAsyncResult res2) | ||
127 | { | ||
128 | try | ||
129 | { | ||
130 | // If the server returns a 404, this appears to trigger a System.Net.WebException even though that isn't | ||
131 | // documented in MSDN | ||
132 | response = request.EndGetResponse(res2); | ||
133 | |||
134 | Stream respStream = null; | ||
135 | try | ||
136 | { | ||
137 | respStream = response.GetResponseStream(); | ||
138 | deserial = (TResponse)deserializer.Deserialize(respStream); | ||
139 | } | ||
140 | catch (System.InvalidOperationException) | ||
141 | { | ||
142 | } | ||
143 | finally | ||
144 | { | ||
145 | respStream.Close(); | ||
146 | response.Close(); | ||
147 | } | ||
148 | } | ||
149 | catch (WebException e) | ||
150 | { | ||
151 | if (e.Status == WebExceptionStatus.ProtocolError) | ||
152 | { | ||
153 | if (e.Response is HttpWebResponse) | ||
154 | { | ||
155 | HttpWebResponse httpResponse = (HttpWebResponse)e.Response; | ||
156 | |||
157 | if (httpResponse.StatusCode != HttpStatusCode.NotFound) | ||
158 | { | ||
159 | // We don't appear to be handling any other status codes, so log these feailures to that | ||
160 | // people don't spend unnecessary hours hunting phantom bugs. | ||
161 | m_log.DebugFormat( | ||
162 | "[ASYNC REQUEST]: Request {0} {1} failed with unexpected status code {2}", | ||
163 | verb, requestUrl, httpResponse.StatusCode); | ||
164 | } | ||
165 | } | ||
166 | } | ||
167 | else | ||
168 | { | ||
169 | m_log.ErrorFormat("[ASYNC REQUEST]: Request {0} {1} failed with status {2} and message {3}", verb, requestUrl, e.Status, e.Message); | ||
170 | } | ||
171 | } | ||
172 | catch (Exception e) | ||
173 | { | ||
174 | m_log.ErrorFormat("[ASYNC REQUEST]: Request {0} {1} failed with exception {2}", verb, requestUrl, e); | ||
175 | } | ||
176 | |||
177 | // m_log.DebugFormat("[ASYNC REQUEST]: Received {0}", deserial.ToString()); | ||
178 | |||
179 | try | ||
180 | { | ||
181 | action(deserial); | ||
182 | } | ||
183 | catch (Exception e) | ||
184 | { | ||
185 | m_log.ErrorFormat( | ||
186 | "[ASYNC REQUEST]: Request {0} {1} callback failed with exception {2}", verb, requestUrl, e); | ||
187 | } | ||
188 | |||
189 | }, null); | ||
190 | } | ||
191 | } | ||
192 | } | ||
diff --git a/OpenSim/Framework/Servers/HttpServer/SynchronousRestFormsRequester.cs b/OpenSim/Framework/Servers/HttpServer/SynchronousRestFormsRequester.cs deleted file mode 100644 index d5646d0..0000000 --- a/OpenSim/Framework/Servers/HttpServer/SynchronousRestFormsRequester.cs +++ /dev/null | |||
@@ -1,131 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.IO; | ||
30 | using System.Net; | ||
31 | using System.Reflection; | ||
32 | using System.Text; | ||
33 | using System.Xml; | ||
34 | using System.Xml.Serialization; | ||
35 | |||
36 | using log4net; | ||
37 | |||
38 | namespace OpenSim.Framework.Servers.HttpServer | ||
39 | { | ||
40 | public class SynchronousRestFormsRequester | ||
41 | { | ||
42 | private static readonly ILog m_log = | ||
43 | LogManager.GetLogger( | ||
44 | MethodBase.GetCurrentMethod().DeclaringType); | ||
45 | |||
46 | /// <summary> | ||
47 | /// Perform a synchronous REST request. | ||
48 | /// </summary> | ||
49 | /// <param name="verb"></param> | ||
50 | /// <param name="requestUrl"></param> | ||
51 | /// <param name="obj"> </param> | ||
52 | /// <returns></returns> | ||
53 | /// | ||
54 | /// <exception cref="System.Net.WebException">Thrown if we encounter a network issue while posting | ||
55 | /// the request. You'll want to make sure you deal with this as they're not uncommon</exception> | ||
56 | public static string MakeRequest(string verb, string requestUrl, string obj) | ||
57 | { | ||
58 | WebRequest request = WebRequest.Create(requestUrl); | ||
59 | request.Method = verb; | ||
60 | string respstring = String.Empty; | ||
61 | |||
62 | using (MemoryStream buffer = new MemoryStream()) | ||
63 | { | ||
64 | if ((verb == "POST") || (verb == "PUT")) | ||
65 | { | ||
66 | request.ContentType = "text/www-form-urlencoded"; | ||
67 | |||
68 | int length = 0; | ||
69 | using (StreamWriter writer = new StreamWriter(buffer)) | ||
70 | { | ||
71 | writer.Write(obj); | ||
72 | writer.Flush(); | ||
73 | } | ||
74 | |||
75 | length = (int)obj.Length; | ||
76 | request.ContentLength = length; | ||
77 | |||
78 | Stream requestStream = null; | ||
79 | try | ||
80 | { | ||
81 | requestStream = request.GetRequestStream(); | ||
82 | requestStream.Write(buffer.ToArray(), 0, length); | ||
83 | } | ||
84 | catch (Exception e) | ||
85 | { | ||
86 | m_log.DebugFormat("[FORMS]: exception occured on sending request to {0}: with {1} " + e.ToString(), requestUrl,obj); | ||
87 | } | ||
88 | finally | ||
89 | { | ||
90 | if (requestStream != null) | ||
91 | requestStream.Close(); | ||
92 | } | ||
93 | } | ||
94 | |||
95 | try | ||
96 | { | ||
97 | using (WebResponse resp = request.GetResponse()) | ||
98 | { | ||
99 | if (resp.ContentLength != 0) | ||
100 | { | ||
101 | Stream respStream = null; | ||
102 | try | ||
103 | { | ||
104 | respStream = resp.GetResponseStream(); | ||
105 | using (StreamReader reader = new StreamReader(respStream)) | ||
106 | { | ||
107 | respstring = reader.ReadToEnd(); | ||
108 | } | ||
109 | } | ||
110 | catch (Exception e) | ||
111 | { | ||
112 | m_log.DebugFormat("[FORMS]: exception occured on receiving reply " + e.ToString()); | ||
113 | } | ||
114 | finally | ||
115 | { | ||
116 | if (respStream != null) | ||
117 | respStream.Close(); | ||
118 | } | ||
119 | } | ||
120 | } | ||
121 | } | ||
122 | catch (System.InvalidOperationException) | ||
123 | { | ||
124 | // This is what happens when there is invalid XML | ||
125 | m_log.DebugFormat("[FORMS]: InvalidOperationException on receiving request"); | ||
126 | } | ||
127 | } | ||
128 | return respstring; | ||
129 | } | ||
130 | } | ||
131 | } | ||
diff --git a/OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs b/OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs deleted file mode 100644 index 077a1e8..0000000 --- a/OpenSim/Framework/Servers/HttpServer/SynchronousRestObjectRequester.cs +++ /dev/null | |||
@@ -1,137 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.IO; | ||
30 | using System.Net; | ||
31 | using System.Text; | ||
32 | using System.Xml; | ||
33 | using System.Xml.Serialization; | ||
34 | |||
35 | namespace OpenSim.Framework.Servers.HttpServer | ||
36 | { | ||
37 | public class SynchronousRestObjectPoster | ||
38 | { | ||
39 | [Obsolete] | ||
40 | public static TResponse BeginPostObject<TRequest, TResponse>(string verb, string requestUrl, TRequest obj) | ||
41 | { | ||
42 | return SynchronousRestObjectRequester.MakeRequest<TRequest, TResponse>(verb, requestUrl, obj); | ||
43 | } | ||
44 | } | ||
45 | |||
46 | public class SynchronousRestObjectRequester | ||
47 | { | ||
48 | /// <summary> | ||
49 | /// Perform a synchronous REST request. | ||
50 | /// </summary> | ||
51 | /// <param name="verb"></param> | ||
52 | /// <param name="requestUrl"></param> | ||
53 | /// <param name="obj"> </param> | ||
54 | /// <returns></returns> | ||
55 | /// | ||
56 | /// <exception cref="System.Net.WebException">Thrown if we encounter a network issue while posting | ||
57 | /// the request. You'll want to make sure you deal with this as they're not uncommon</exception> | ||
58 | public static TResponse MakeRequest<TRequest, TResponse>(string verb, string requestUrl, TRequest obj) | ||
59 | { | ||
60 | return MakeRequest<TRequest, TResponse>(verb, requestUrl, obj, 100); | ||
61 | } | ||
62 | /// <summary> | ||
63 | /// Perform a synchronous REST request. | ||
64 | /// </summary> | ||
65 | /// <param name="verb"></param> | ||
66 | /// <param name="requestUrl"></param> | ||
67 | /// <param name="obj"> </param> | ||
68 | /// <param name="timeout"> </param> | ||
69 | /// <returns></returns> | ||
70 | /// | ||
71 | /// <exception cref="System.Net.WebException">Thrown if we encounter a network issue while posting | ||
72 | /// the request. You'll want to make sure you deal with this as they're not uncommon</exception> | ||
73 | public static TResponse MakeRequest<TRequest, TResponse>(string verb, string requestUrl, TRequest obj, int pTimeout) | ||
74 | { | ||
75 | Type type = typeof (TRequest); | ||
76 | TResponse deserial = default(TResponse); | ||
77 | |||
78 | WebRequest request = WebRequest.Create(requestUrl); | ||
79 | request.Method = verb; | ||
80 | request.Timeout = pTimeout * 1000; | ||
81 | |||
82 | if ((verb == "POST") || (verb == "PUT")) | ||
83 | { | ||
84 | request.ContentType = "text/xml"; | ||
85 | |||
86 | MemoryStream buffer = new MemoryStream(); | ||
87 | |||
88 | XmlWriterSettings settings = new XmlWriterSettings(); | ||
89 | settings.Encoding = Encoding.UTF8; | ||
90 | |||
91 | using (XmlWriter writer = XmlWriter.Create(buffer, settings)) | ||
92 | { | ||
93 | XmlSerializer serializer = new XmlSerializer(type); | ||
94 | serializer.Serialize(writer, obj); | ||
95 | writer.Flush(); | ||
96 | } | ||
97 | |||
98 | int length = (int) buffer.Length; | ||
99 | request.ContentLength = length; | ||
100 | Stream requestStream = null; | ||
101 | try | ||
102 | { | ||
103 | requestStream = request.GetRequestStream(); | ||
104 | requestStream.Write(buffer.ToArray(), 0, length); | ||
105 | } | ||
106 | catch (Exception) | ||
107 | { | ||
108 | return deserial; | ||
109 | } | ||
110 | finally | ||
111 | { | ||
112 | if (requestStream != null) | ||
113 | requestStream.Close(); | ||
114 | } | ||
115 | } | ||
116 | |||
117 | try | ||
118 | { | ||
119 | using (WebResponse resp = request.GetResponse()) | ||
120 | { | ||
121 | if (resp.ContentLength != 0) | ||
122 | { | ||
123 | Stream respStream = resp.GetResponseStream(); | ||
124 | XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); | ||
125 | deserial = (TResponse)deserializer.Deserialize(respStream); | ||
126 | respStream.Close(); | ||
127 | } | ||
128 | } | ||
129 | } | ||
130 | catch (System.InvalidOperationException) | ||
131 | { | ||
132 | // This is what happens when there is invalid XML | ||
133 | } | ||
134 | return deserial; | ||
135 | } | ||
136 | } | ||
137 | } | ||
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index f59c8f8..d04a3df 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs | |||
@@ -36,6 +36,9 @@ using System.Net.Security; | |||
36 | using System.Reflection; | 36 | using System.Reflection; |
37 | using System.Text; | 37 | using System.Text; |
38 | using System.Web; | 38 | using System.Web; |
39 | using System.Xml; | ||
40 | using System.Xml.Serialization; | ||
41 | |||
39 | using log4net; | 42 | using log4net; |
40 | using OpenSim.Framework.Servers.HttpServer; | 43 | using OpenSim.Framework.Servers.HttpServer; |
41 | using OpenMetaverse.StructuredData; | 44 | using OpenMetaverse.StructuredData; |
@@ -224,8 +227,8 @@ namespace OpenSim.Framework | |||
224 | m_log.InfoFormat("[WEB UTIL]: osd request <{0}> (URI:{1}, METHOD:{2}) took {3}ms overall, {4}ms writing", | 227 | m_log.InfoFormat("[WEB UTIL]: osd request <{0}> (URI:{1}, METHOD:{2}) took {3}ms overall, {4}ms writing", |
225 | reqnum,url,method,tickdiff,tickdata); | 228 | reqnum,url,method,tickdiff,tickdata); |
226 | } | 229 | } |
227 | 230 | ||
228 | m_log.WarnFormat("[WEB UTIL] <{0}> osd request failed: {1}",reqnum,errorMessage); | 231 | m_log.WarnFormat("[WEB UTIL]: <{0}> osd request for {1}, method {2} FAILED: {3}", reqnum, url, method, errorMessage); |
229 | return ErrorResponseMap(errorMessage); | 232 | return ErrorResponseMap(errorMessage); |
230 | } | 233 | } |
231 | 234 | ||
@@ -630,4 +633,343 @@ namespace OpenSim.Framework | |||
630 | 633 | ||
631 | 634 | ||
632 | } | 635 | } |
636 | |||
637 | public static class AsynchronousRestObjectRequester | ||
638 | { | ||
639 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
640 | |||
641 | /// <summary> | ||
642 | /// Perform an asynchronous REST request. | ||
643 | /// </summary> | ||
644 | /// <param name="verb">GET or POST</param> | ||
645 | /// <param name="requestUrl"></param> | ||
646 | /// <param name="obj"></param> | ||
647 | /// <param name="action"></param> | ||
648 | /// <returns></returns> | ||
649 | /// | ||
650 | /// <exception cref="System.Net.WebException">Thrown if we encounter a | ||
651 | /// network issue while posting the request. You'll want to make | ||
652 | /// sure you deal with this as they're not uncommon</exception> | ||
653 | // | ||
654 | public static void MakeRequest<TRequest, TResponse>(string verb, | ||
655 | string requestUrl, TRequest obj, Action<TResponse> action) | ||
656 | { | ||
657 | // m_log.DebugFormat("[ASYNC REQUEST]: Starting {0} {1}", verb, requestUrl); | ||
658 | |||
659 | Type type = typeof(TRequest); | ||
660 | |||
661 | WebRequest request = WebRequest.Create(requestUrl); | ||
662 | WebResponse response = null; | ||
663 | TResponse deserial = default(TResponse); | ||
664 | XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); | ||
665 | |||
666 | request.Method = verb; | ||
667 | |||
668 | if (verb == "POST") | ||
669 | { | ||
670 | request.ContentType = "text/xml"; | ||
671 | |||
672 | MemoryStream buffer = new MemoryStream(); | ||
673 | |||
674 | XmlWriterSettings settings = new XmlWriterSettings(); | ||
675 | settings.Encoding = Encoding.UTF8; | ||
676 | |||
677 | using (XmlWriter writer = XmlWriter.Create(buffer, settings)) | ||
678 | { | ||
679 | XmlSerializer serializer = new XmlSerializer(type); | ||
680 | serializer.Serialize(writer, obj); | ||
681 | writer.Flush(); | ||
682 | } | ||
683 | |||
684 | int length = (int)buffer.Length; | ||
685 | request.ContentLength = length; | ||
686 | |||
687 | request.BeginGetRequestStream(delegate(IAsyncResult res) | ||
688 | { | ||
689 | Stream requestStream = request.EndGetRequestStream(res); | ||
690 | |||
691 | requestStream.Write(buffer.ToArray(), 0, length); | ||
692 | requestStream.Close(); | ||
693 | |||
694 | request.BeginGetResponse(delegate(IAsyncResult ar) | ||
695 | { | ||
696 | response = request.EndGetResponse(ar); | ||
697 | Stream respStream = null; | ||
698 | try | ||
699 | { | ||
700 | respStream = response.GetResponseStream(); | ||
701 | deserial = (TResponse)deserializer.Deserialize( | ||
702 | respStream); | ||
703 | } | ||
704 | catch (System.InvalidOperationException) | ||
705 | { | ||
706 | } | ||
707 | finally | ||
708 | { | ||
709 | // Let's not close this | ||
710 | //buffer.Close(); | ||
711 | respStream.Close(); | ||
712 | response.Close(); | ||
713 | } | ||
714 | |||
715 | action(deserial); | ||
716 | |||
717 | }, null); | ||
718 | }, null); | ||
719 | |||
720 | |||
721 | return; | ||
722 | } | ||
723 | |||
724 | request.BeginGetResponse(delegate(IAsyncResult res2) | ||
725 | { | ||
726 | try | ||
727 | { | ||
728 | // If the server returns a 404, this appears to trigger a System.Net.WebException even though that isn't | ||
729 | // documented in MSDN | ||
730 | response = request.EndGetResponse(res2); | ||
731 | |||
732 | Stream respStream = null; | ||
733 | try | ||
734 | { | ||
735 | respStream = response.GetResponseStream(); | ||
736 | deserial = (TResponse)deserializer.Deserialize(respStream); | ||
737 | } | ||
738 | catch (System.InvalidOperationException) | ||
739 | { | ||
740 | } | ||
741 | finally | ||
742 | { | ||
743 | respStream.Close(); | ||
744 | response.Close(); | ||
745 | } | ||
746 | } | ||
747 | catch (WebException e) | ||
748 | { | ||
749 | if (e.Status == WebExceptionStatus.ProtocolError) | ||
750 | { | ||
751 | if (e.Response is HttpWebResponse) | ||
752 | { | ||
753 | HttpWebResponse httpResponse = (HttpWebResponse)e.Response; | ||
754 | |||
755 | if (httpResponse.StatusCode != HttpStatusCode.NotFound) | ||
756 | { | ||
757 | // We don't appear to be handling any other status codes, so log these feailures to that | ||
758 | // people don't spend unnecessary hours hunting phantom bugs. | ||
759 | m_log.DebugFormat( | ||
760 | "[ASYNC REQUEST]: Request {0} {1} failed with unexpected status code {2}", | ||
761 | verb, requestUrl, httpResponse.StatusCode); | ||
762 | } | ||
763 | } | ||
764 | } | ||
765 | else | ||
766 | { | ||
767 | m_log.ErrorFormat("[ASYNC REQUEST]: Request {0} {1} failed with status {2} and message {3}", verb, requestUrl, e.Status, e.Message); | ||
768 | } | ||
769 | } | ||
770 | catch (Exception e) | ||
771 | { | ||
772 | m_log.ErrorFormat("[ASYNC REQUEST]: Request {0} {1} failed with exception {2}", verb, requestUrl, e); | ||
773 | } | ||
774 | |||
775 | // m_log.DebugFormat("[ASYNC REQUEST]: Received {0}", deserial.ToString()); | ||
776 | |||
777 | try | ||
778 | { | ||
779 | action(deserial); | ||
780 | } | ||
781 | catch (Exception e) | ||
782 | { | ||
783 | m_log.ErrorFormat( | ||
784 | "[ASYNC REQUEST]: Request {0} {1} callback failed with exception {2}", verb, requestUrl, e); | ||
785 | } | ||
786 | |||
787 | }, null); | ||
788 | } | ||
789 | } | ||
790 | |||
791 | public static class SynchronousRestFormsRequester | ||
792 | { | ||
793 | private static readonly ILog m_log = | ||
794 | LogManager.GetLogger( | ||
795 | MethodBase.GetCurrentMethod().DeclaringType); | ||
796 | |||
797 | /// <summary> | ||
798 | /// Perform a synchronous REST request. | ||
799 | /// </summary> | ||
800 | /// <param name="verb"></param> | ||
801 | /// <param name="requestUrl"></param> | ||
802 | /// <param name="obj"> </param> | ||
803 | /// <returns></returns> | ||
804 | /// | ||
805 | /// <exception cref="System.Net.WebException">Thrown if we encounter a network issue while posting | ||
806 | /// the request. You'll want to make sure you deal with this as they're not uncommon</exception> | ||
807 | public static string MakeRequest(string verb, string requestUrl, string obj) | ||
808 | { | ||
809 | WebRequest request = WebRequest.Create(requestUrl); | ||
810 | request.Method = verb; | ||
811 | string respstring = String.Empty; | ||
812 | |||
813 | using (MemoryStream buffer = new MemoryStream()) | ||
814 | { | ||
815 | if ((verb == "POST") || (verb == "PUT")) | ||
816 | { | ||
817 | request.ContentType = "text/www-form-urlencoded"; | ||
818 | |||
819 | int length = 0; | ||
820 | using (StreamWriter writer = new StreamWriter(buffer)) | ||
821 | { | ||
822 | writer.Write(obj); | ||
823 | writer.Flush(); | ||
824 | } | ||
825 | |||
826 | length = (int)obj.Length; | ||
827 | request.ContentLength = length; | ||
828 | |||
829 | Stream requestStream = null; | ||
830 | try | ||
831 | { | ||
832 | requestStream = request.GetRequestStream(); | ||
833 | requestStream.Write(buffer.ToArray(), 0, length); | ||
834 | } | ||
835 | catch (Exception e) | ||
836 | { | ||
837 | m_log.DebugFormat("[FORMS]: exception occured on sending request to {0}: " + e.ToString(), requestUrl); | ||
838 | } | ||
839 | finally | ||
840 | { | ||
841 | if (requestStream != null) | ||
842 | requestStream.Close(); | ||
843 | } | ||
844 | } | ||
845 | |||
846 | try | ||
847 | { | ||
848 | using (WebResponse resp = request.GetResponse()) | ||
849 | { | ||
850 | if (resp.ContentLength != 0) | ||
851 | { | ||
852 | Stream respStream = null; | ||
853 | try | ||
854 | { | ||
855 | respStream = resp.GetResponseStream(); | ||
856 | using (StreamReader reader = new StreamReader(respStream)) | ||
857 | { | ||
858 | respstring = reader.ReadToEnd(); | ||
859 | } | ||
860 | } | ||
861 | catch (Exception e) | ||
862 | { | ||
863 | m_log.DebugFormat("[FORMS]: exception occured on receiving reply " + e.ToString()); | ||
864 | } | ||
865 | finally | ||
866 | { | ||
867 | if (respStream != null) | ||
868 | respStream.Close(); | ||
869 | } | ||
870 | } | ||
871 | } | ||
872 | } | ||
873 | catch (System.InvalidOperationException) | ||
874 | { | ||
875 | // This is what happens when there is invalid XML | ||
876 | m_log.DebugFormat("[FORMS]: InvalidOperationException on receiving request"); | ||
877 | } | ||
878 | } | ||
879 | return respstring; | ||
880 | } | ||
881 | } | ||
882 | |||
883 | public class SynchronousRestObjectPoster | ||
884 | { | ||
885 | [Obsolete] | ||
886 | public static TResponse BeginPostObject<TRequest, TResponse>(string verb, string requestUrl, TRequest obj) | ||
887 | { | ||
888 | return SynchronousRestObjectRequester.MakeRequest<TRequest, TResponse>(verb, requestUrl, obj); | ||
889 | } | ||
890 | } | ||
891 | |||
892 | public class SynchronousRestObjectRequester | ||
893 | { | ||
894 | /// <summary> | ||
895 | /// Perform a synchronous REST request. | ||
896 | /// </summary> | ||
897 | /// <param name="verb"></param> | ||
898 | /// <param name="requestUrl"></param> | ||
899 | /// <param name="obj"> </param> | ||
900 | /// <returns></returns> | ||
901 | /// | ||
902 | /// <exception cref="System.Net.WebException">Thrown if we encounter a network issue while posting | ||
903 | /// the request. You'll want to make sure you deal with this as they're not uncommon</exception> | ||
904 | public static TResponse MakeRequest<TRequest, TResponse>(string verb, string requestUrl, TRequest obj) | ||
905 | { | ||
906 | return MakeRequest<TRequest, TResponse>(verb, requestUrl, obj, 0); | ||
907 | } | ||
908 | |||
909 | public static TResponse MakeRequest<TRequest, TResponse>(string verb, string requestUrl, TRequest obj, int pTimeout) | ||
910 | { | ||
911 | Type type = typeof(TRequest); | ||
912 | TResponse deserial = default(TResponse); | ||
913 | |||
914 | WebRequest request = WebRequest.Create(requestUrl); | ||
915 | request.Method = verb; | ||
916 | if (pTimeout != 0) | ||
917 | request.Timeout = pTimeout * 1000; | ||
918 | |||
919 | if ((verb == "POST") || (verb == "PUT")) | ||
920 | { | ||
921 | request.ContentType = "text/xml"; | ||
922 | |||
923 | MemoryStream buffer = new MemoryStream(); | ||
924 | |||
925 | XmlWriterSettings settings = new XmlWriterSettings(); | ||
926 | settings.Encoding = Encoding.UTF8; | ||
927 | |||
928 | using (XmlWriter writer = XmlWriter.Create(buffer, settings)) | ||
929 | { | ||
930 | XmlSerializer serializer = new XmlSerializer(type); | ||
931 | serializer.Serialize(writer, obj); | ||
932 | writer.Flush(); | ||
933 | } | ||
934 | |||
935 | int length = (int)buffer.Length; | ||
936 | request.ContentLength = length; | ||
937 | |||
938 | Stream requestStream = null; | ||
939 | try | ||
940 | { | ||
941 | requestStream = request.GetRequestStream(); | ||
942 | requestStream.Write(buffer.ToArray(), 0, length); | ||
943 | } | ||
944 | catch (Exception) | ||
945 | { | ||
946 | return deserial; | ||
947 | } | ||
948 | finally | ||
949 | { | ||
950 | if (requestStream != null) | ||
951 | requestStream.Close(); | ||
952 | } | ||
953 | } | ||
954 | |||
955 | try | ||
956 | { | ||
957 | using (WebResponse resp = request.GetResponse()) | ||
958 | { | ||
959 | if (resp.ContentLength > 0) | ||
960 | { | ||
961 | Stream respStream = resp.GetResponseStream(); | ||
962 | XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); | ||
963 | deserial = (TResponse)deserializer.Deserialize(respStream); | ||
964 | respStream.Close(); | ||
965 | } | ||
966 | } | ||
967 | } | ||
968 | catch (System.InvalidOperationException) | ||
969 | { | ||
970 | // This is what happens when there is invalid XML | ||
971 | } | ||
972 | return deserial; | ||
973 | } | ||
974 | } | ||
633 | } | 975 | } |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 5b2484d..bdb73ad 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -4394,6 +4394,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4394 | 4394 | ||
4395 | public void SendEstateCovenantInformation(UUID covenant) | 4395 | public void SendEstateCovenantInformation(UUID covenant) |
4396 | { | 4396 | { |
4397 | // m_log.DebugFormat("[LLCLIENTVIEW]: Sending estate covenant asset id of {0} to {1}", covenant, Name); | ||
4398 | |||
4397 | EstateCovenantReplyPacket einfopack = new EstateCovenantReplyPacket(); | 4399 | EstateCovenantReplyPacket einfopack = new EstateCovenantReplyPacket(); |
4398 | EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock(); | 4400 | EstateCovenantReplyPacket.DataBlock edata = new EstateCovenantReplyPacket.DataBlock(); |
4399 | edata.CovenantID = covenant; | 4401 | edata.CovenantID = covenant; |
@@ -4404,8 +4406,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4404 | OutPacket(einfopack, ThrottleOutPacketType.Task); | 4406 | OutPacket(einfopack, ThrottleOutPacketType.Task); |
4405 | } | 4407 | } |
4406 | 4408 | ||
4407 | public void SendDetailedEstateData(UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, UUID covenant, string abuseEmail, UUID estateOwner) | 4409 | public void SendDetailedEstateData( |
4410 | UUID invoice, string estateName, uint estateID, uint parentEstate, uint estateFlags, uint sunPosition, | ||
4411 | UUID covenant, string abuseEmail, UUID estateOwner) | ||
4408 | { | 4412 | { |
4413 | // m_log.DebugFormat( | ||
4414 | // "[LLCLIENTVIEW]: Sending detailed estate data to {0} with covenant asset id {1}", Name, covenant); | ||
4415 | |||
4409 | EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); | 4416 | EstateOwnerMessagePacket packet = new EstateOwnerMessagePacket(); |
4410 | packet.MethodData.Invoice = invoice; | 4417 | packet.MethodData.Invoice = invoice; |
4411 | packet.AgentData.TransactionID = UUID.Random(); | 4418 | packet.AgentData.TransactionID = UUID.Random(); |
diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs index 878242a..d2278bc 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetMeshModule.cs | |||
@@ -54,6 +54,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets | |||
54 | 54 | ||
55 | private Scene m_scene; | 55 | private Scene m_scene; |
56 | private IAssetService m_assetService; | 56 | private IAssetService m_assetService; |
57 | private bool m_enabled = true; | ||
57 | 58 | ||
58 | #region IRegionModuleBase Members | 59 | #region IRegionModuleBase Members |
59 | 60 | ||
@@ -65,7 +66,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets | |||
65 | 66 | ||
66 | public void Initialise(IConfigSource source) | 67 | public void Initialise(IConfigSource source) |
67 | { | 68 | { |
68 | 69 | IConfig startupConfig = source.Configs["Startup"]; | |
70 | if (startupConfig == null) | ||
71 | return; | ||
72 | |||
73 | if (!startupConfig.GetBoolean("ColladaMesh",true)) | ||
74 | m_enabled = false; | ||
69 | } | 75 | } |
70 | 76 | ||
71 | public void AddRegion(Scene pScene) | 77 | public void AddRegion(Scene pScene) |
@@ -101,16 +107,19 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets | |||
101 | 107 | ||
102 | public void RegisterCaps(UUID agentID, Caps caps) | 108 | public void RegisterCaps(UUID agentID, Caps caps) |
103 | { | 109 | { |
110 | if(!m_enabled) | ||
111 | return; | ||
112 | |||
104 | UUID capID = UUID.Random(); | 113 | UUID capID = UUID.Random(); |
105 | 114 | ||
106 | // m_log.Info("[GETMESH]: /CAPS/" + capID); | 115 | // m_log.Info("[GETMESH]: /CAPS/" + capID); |
116 | |||
107 | caps.RegisterHandler("GetMesh", | 117 | caps.RegisterHandler("GetMesh", |
108 | new RestHTTPHandler("GET", "/CAPS/" + capID, | 118 | new RestHTTPHandler("GET", "/CAPS/" + capID, |
109 | delegate(Hashtable m_dhttpMethod) | 119 | delegate(Hashtable m_dhttpMethod) |
110 | { | 120 | { |
111 | return ProcessGetMesh(m_dhttpMethod, agentID, caps); | 121 | return ProcessGetMesh(m_dhttpMethod, agentID, caps); |
112 | })); | 122 | })); |
113 | |||
114 | } | 123 | } |
115 | 124 | ||
116 | #endregion | 125 | #endregion |
diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs index 4a42c93..fb07cc9 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/NewFileAgentInventoryVariablePriceModule.cs | |||
@@ -56,6 +56,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets | |||
56 | private Scene m_scene; | 56 | private Scene m_scene; |
57 | // private IAssetService m_assetService; | 57 | // private IAssetService m_assetService; |
58 | private bool m_dumpAssetsToFile = false; | 58 | private bool m_dumpAssetsToFile = false; |
59 | private bool m_enabled = true; | ||
59 | 60 | ||
60 | #region IRegionModuleBase Members | 61 | #region IRegionModuleBase Members |
61 | 62 | ||
@@ -67,7 +68,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets | |||
67 | 68 | ||
68 | public void Initialise(IConfigSource source) | 69 | public void Initialise(IConfigSource source) |
69 | { | 70 | { |
70 | 71 | IConfig startupConfig = source.Configs["Startup"]; | |
72 | if (startupConfig == null) | ||
73 | return; | ||
74 | |||
75 | if (!startupConfig.GetBoolean("ColladaMesh",true)) | ||
76 | m_enabled = false; | ||
71 | } | 77 | } |
72 | 78 | ||
73 | public void AddRegion(Scene pScene) | 79 | public void AddRegion(Scene pScene) |
@@ -103,6 +109,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Assets | |||
103 | 109 | ||
104 | public void RegisterCaps(UUID agentID, Caps caps) | 110 | public void RegisterCaps(UUID agentID, Caps caps) |
105 | { | 111 | { |
112 | if(!m_enabled) | ||
113 | return; | ||
114 | |||
106 | UUID capID = UUID.Random(); | 115 | UUID capID = UUID.Random(); |
107 | 116 | ||
108 | // m_log.Debug("[NEW FILE AGENT INVENTORY VARIABLE PRICE]: /CAPS/" + capID); | 117 | // m_log.Debug("[NEW FILE AGENT INVENTORY VARIABLE PRICE]: /CAPS/" + capID); |
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs index 3148871..0cd05e3 100644 --- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs | |||
@@ -34,13 +34,13 @@ using Nini.Config; | |||
34 | using Nwc.XmlRpc; | 34 | using Nwc.XmlRpc; |
35 | using OpenMetaverse; | 35 | using OpenMetaverse; |
36 | using OpenSim.Framework; | 36 | using OpenSim.Framework; |
37 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Framework.Communications; | 38 | using OpenSim.Framework.Communications; |
38 | using OpenSim.Region.Framework.Interfaces; | 39 | using OpenSim.Region.Framework.Interfaces; |
39 | using OpenSim.Region.Framework.Scenes; | 40 | using OpenSim.Region.Framework.Scenes; |
40 | using OpenSim.Services.Interfaces; | 41 | using OpenSim.Services.Interfaces; |
41 | using OpenSim.Services.Connectors.Friends; | 42 | using OpenSim.Services.Connectors.Friends; |
42 | using OpenSim.Server.Base; | 43 | using OpenSim.Server.Base; |
43 | using OpenSim.Framework.Servers.HttpServer; | ||
44 | using FriendInfo = OpenSim.Services.Interfaces.FriendInfo; | 44 | using FriendInfo = OpenSim.Services.Interfaces.FriendInfo; |
45 | using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo; | 45 | using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo; |
46 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 46 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs index 164ae50..1a0b914 100644 --- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/OfflineMessageModule.cs | |||
@@ -33,7 +33,6 @@ using OpenMetaverse; | |||
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Communications; | 34 | using OpenSim.Framework.Communications; |
35 | using OpenSim.Framework.Servers; | 35 | using OpenSim.Framework.Servers; |
36 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Framework.Client; | 36 | using OpenSim.Framework.Client; |
38 | using OpenSim.Region.Framework.Interfaces; | 37 | using OpenSim.Region.Framework.Interfaces; |
39 | using OpenSim.Region.Framework.Scenes; | 38 | using OpenSim.Region.Framework.Scenes; |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs index 9b98de3..2fff533 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs | |||
@@ -466,16 +466,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver | |||
466 | if (m_creatorIdForAssetId.ContainsKey(assetId)) | 466 | if (m_creatorIdForAssetId.ContainsKey(assetId)) |
467 | { | 467 | { |
468 | string xmlData = Utils.BytesToString(data); | 468 | string xmlData = Utils.BytesToString(data); |
469 | SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(xmlData); | 469 | List<SceneObjectGroup> sceneObjects = new List<SceneObjectGroup>(); |
470 | foreach (SceneObjectPart sop in sog.Parts) | 470 | |
471 | CoalescedSceneObjects coa = null; | ||
472 | if (CoalescedSceneObjectsSerializer.TryFromXml(xmlData, out coa)) | ||
473 | { | ||
474 | // m_log.DebugFormat( | ||
475 | // "[INVENTORY ARCHIVER]: Loaded coalescence {0} has {1} objects", assetId, coa.Count); | ||
476 | |||
477 | sceneObjects.AddRange(coa.Objects); | ||
478 | } | ||
479 | else | ||
471 | { | 480 | { |
472 | if (sop.CreatorData == null || sop.CreatorData == "") | 481 | sceneObjects.Add(SceneObjectSerializer.FromOriginalXmlFormat(xmlData)); |
473 | { | ||
474 | sop.CreatorID = m_creatorIdForAssetId[assetId]; | ||
475 | } | ||
476 | } | 482 | } |
477 | 483 | ||
478 | data = Utils.StringToBytes(SceneObjectSerializer.ToOriginalXmlFormat(sog)); | 484 | foreach (SceneObjectGroup sog in sceneObjects) |
485 | foreach (SceneObjectPart sop in sog.Parts) | ||
486 | if (sop.CreatorData == null || sop.CreatorData == "") | ||
487 | sop.CreatorID = m_creatorIdForAssetId[assetId]; | ||
488 | |||
489 | if (coa != null) | ||
490 | data = Utils.StringToBytes(CoalescedSceneObjectsSerializer.ToXml(coa)); | ||
491 | else | ||
492 | data = Utils.StringToBytes(SceneObjectSerializer.ToOriginalXmlFormat(sceneObjects[0])); | ||
479 | } | 493 | } |
480 | } | 494 | } |
481 | 495 | ||
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs index e5127a0..5ba08ee 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiveTestCase.cs | |||
@@ -68,17 +68,21 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
68 | PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000555"), | 68 | PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000555"), |
69 | FirstName = "Mr", | 69 | FirstName = "Mr", |
70 | LastName = "Tiddles" }; | 70 | LastName = "Tiddles" }; |
71 | |||
71 | protected UserAccount m_uaLL1 | 72 | protected UserAccount m_uaLL1 |
72 | = new UserAccount { | 73 | = new UserAccount { |
73 | PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000666"), | 74 | PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000666"), |
74 | FirstName = "Lord", | 75 | FirstName = "Lord", |
75 | LastName = "Lucan" }; | 76 | LastName = "Lucan" }; |
77 | |||
76 | protected UserAccount m_uaLL2 | 78 | protected UserAccount m_uaLL2 |
77 | = new UserAccount { | 79 | = new UserAccount { |
78 | PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000777"), | 80 | PrincipalID = UUID.Parse("00000000-0000-0000-0000-000000000777"), |
79 | FirstName = "Lord", | 81 | FirstName = "Lord", |
80 | LastName = "Lucan" }; | 82 | LastName = "Lucan" }; |
83 | |||
81 | protected string m_item1Name = "Ray Gun Item"; | 84 | protected string m_item1Name = "Ray Gun Item"; |
85 | protected string m_coaItemName = "Coalesced Item"; | ||
82 | 86 | ||
83 | [SetUp] | 87 | [SetUp] |
84 | public virtual void SetUp() | 88 | public virtual void SetUp() |
@@ -97,38 +101,22 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
97 | // log4net.Config.XmlConfigurator.Configure(); | 101 | // log4net.Config.XmlConfigurator.Configure(); |
98 | 102 | ||
99 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); | 103 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); |
100 | Scene scene = SceneSetupHelpers.SetupScene("Inventory"); | 104 | Scene scene = SceneSetupHelpers.SetupScene(); |
101 | SceneSetupHelpers.SetupSceneModules(scene, archiverModule); | 105 | SceneSetupHelpers.SetupSceneModules(scene, archiverModule); |
102 | 106 | ||
103 | UserProfileTestUtils.CreateUserWithInventory(scene, m_uaLL1, "hampshire"); | 107 | UserProfileTestUtils.CreateUserWithInventory(scene, m_uaLL1, "hampshire"); |
104 | 108 | ||
105 | MemoryStream archiveWriteStream = new MemoryStream(); | 109 | MemoryStream archiveWriteStream = new MemoryStream(); |
106 | 110 | ||
107 | // Create asset | 111 | // Create scene object asset |
108 | SceneObjectGroup object1; | 112 | UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); |
109 | SceneObjectPart part1; | 113 | SceneObjectGroup object1 = SceneSetupHelpers.CreateSceneObject(1, ownerId, "Ray Gun Object", 0x50); |
110 | { | ||
111 | string partName = "Ray Gun Object"; | ||
112 | UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); | ||
113 | PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); | ||
114 | Vector3 groupPosition = new Vector3(10, 20, 30); | ||
115 | Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); | ||
116 | Vector3 offsetPosition = new Vector3(5, 10, 15); | ||
117 | |||
118 | part1 | ||
119 | = new SceneObjectPart( | ||
120 | ownerId, shape, groupPosition, rotationOffset, offsetPosition); | ||
121 | part1.Name = partName; | ||
122 | |||
123 | object1 = new SceneObjectGroup(part1); | ||
124 | scene.AddNewSceneObject(object1, false); | ||
125 | } | ||
126 | 114 | ||
127 | UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); | 115 | UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); |
128 | AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); | 116 | AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); |
129 | scene.AssetService.Store(asset1); | 117 | scene.AssetService.Store(asset1); |
130 | 118 | ||
131 | // Create item | 119 | // Create scene object item |
132 | InventoryItemBase item1 = new InventoryItemBase(); | 120 | InventoryItemBase item1 = new InventoryItemBase(); |
133 | item1.Name = m_item1Name; | 121 | item1.Name = m_item1Name; |
134 | item1.ID = UUID.Parse("00000000-0000-0000-0000-000000000020"); | 122 | item1.ID = UUID.Parse("00000000-0000-0000-0000-000000000020"); |
@@ -139,8 +127,31 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
139 | item1.Folder = scene.InventoryService.GetRootFolder(m_uaLL1.PrincipalID).ID; | 127 | item1.Folder = scene.InventoryService.GetRootFolder(m_uaLL1.PrincipalID).ID; |
140 | scene.AddInventoryItem(item1); | 128 | scene.AddInventoryItem(item1); |
141 | 129 | ||
130 | // Create coalesced objects asset | ||
131 | SceneObjectGroup cobj1 = SceneSetupHelpers.CreateSceneObject(1, m_uaLL1.PrincipalID, "Object1", 0x120); | ||
132 | cobj1.AbsolutePosition = new Vector3(15, 30, 45); | ||
133 | |||
134 | SceneObjectGroup cobj2 = SceneSetupHelpers.CreateSceneObject(1, m_uaLL1.PrincipalID, "Object2", 0x140); | ||
135 | cobj2.AbsolutePosition = new Vector3(25, 50, 75); | ||
136 | |||
137 | CoalescedSceneObjects coa = new CoalescedSceneObjects(m_uaLL1.PrincipalID, cobj1, cobj2); | ||
138 | |||
139 | AssetBase coaAsset = AssetHelpers.CreateAsset(0x160, coa); | ||
140 | scene.AssetService.Store(coaAsset); | ||
141 | |||
142 | // Create coalesced objects inventory item | ||
143 | InventoryItemBase coaItem = new InventoryItemBase(); | ||
144 | coaItem.Name = m_coaItemName; | ||
145 | coaItem.ID = UUID.Parse("00000000-0000-0000-0000-000000000180"); | ||
146 | coaItem.AssetID = coaAsset.FullID; | ||
147 | coaItem.GroupID = UUID.Random(); | ||
148 | coaItem.CreatorIdAsUuid = m_uaLL1.PrincipalID; | ||
149 | coaItem.Owner = m_uaLL1.PrincipalID; | ||
150 | coaItem.Folder = scene.InventoryService.GetRootFolder(m_uaLL1.PrincipalID).ID; | ||
151 | scene.AddInventoryItem(coaItem); | ||
152 | |||
142 | archiverModule.ArchiveInventory( | 153 | archiverModule.ArchiveInventory( |
143 | Guid.NewGuid(), m_uaLL1.FirstName, m_uaLL1.LastName, m_item1Name, "hampshire", archiveWriteStream); | 154 | Guid.NewGuid(), m_uaLL1.FirstName, m_uaLL1.LastName, "/*", "hampshire", archiveWriteStream); |
144 | 155 | ||
145 | m_iarStreamBytes = archiveWriteStream.ToArray(); | 156 | m_iarStreamBytes = archiveWriteStream.ToArray(); |
146 | } | 157 | } |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs index 7f156f8..d03f6da 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs | |||
@@ -62,9 +62,39 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
62 | SerialiserModule serialiserModule = new SerialiserModule(); | 62 | SerialiserModule serialiserModule = new SerialiserModule(); |
63 | m_archiverModule = new InventoryArchiverModule(); | 63 | m_archiverModule = new InventoryArchiverModule(); |
64 | 64 | ||
65 | m_scene = SceneSetupHelpers.SetupScene("Inventory"); | 65 | m_scene = SceneSetupHelpers.SetupScene(); |
66 | SceneSetupHelpers.SetupSceneModules(m_scene, serialiserModule, m_archiverModule); | 66 | SceneSetupHelpers.SetupSceneModules(m_scene, serialiserModule, m_archiverModule); |
67 | } | 67 | } |
68 | |||
69 | [Test] | ||
70 | public void TestLoadCoalesecedItem() | ||
71 | { | ||
72 | TestHelper.InMethod(); | ||
73 | // log4net.Config.XmlConfigurator.Configure(); | ||
74 | |||
75 | UserProfileTestUtils.CreateUserWithInventory(m_scene, m_uaLL1, "password"); | ||
76 | m_archiverModule.DearchiveInventory(m_uaLL1.FirstName, m_uaLL1.LastName, "/", "password", m_iarStream); | ||
77 | |||
78 | InventoryItemBase coaItem | ||
79 | = InventoryArchiveUtils.FindItemByPath(m_scene.InventoryService, m_uaLL1.PrincipalID, m_coaItemName); | ||
80 | |||
81 | Assert.That(coaItem, Is.Not.Null, "Didn't find loaded item 1"); | ||
82 | |||
83 | string assetXml = AssetHelpers.ReadAssetAsString(m_scene.AssetService, coaItem.AssetID); | ||
84 | |||
85 | CoalescedSceneObjects coa; | ||
86 | bool readResult = CoalescedSceneObjectsSerializer.TryFromXml(assetXml, out coa); | ||
87 | |||
88 | Assert.That(readResult, Is.True); | ||
89 | Assert.That(coa.Count, Is.EqualTo(2)); | ||
90 | |||
91 | List<SceneObjectGroup> coaObjects = coa.Objects; | ||
92 | Assert.That(coaObjects[0].UUID, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000120"))); | ||
93 | Assert.That(coaObjects[0].AbsolutePosition, Is.EqualTo(new Vector3(15, 30, 45))); | ||
94 | |||
95 | Assert.That(coaObjects[1].UUID, Is.EqualTo(UUID.Parse("00000000-0000-0000-0000-000000000140"))); | ||
96 | Assert.That(coaObjects[1].AbsolutePosition, Is.EqualTo(new Vector3(25, 50, 75))); | ||
97 | } | ||
68 | 98 | ||
69 | /// <summary> | 99 | /// <summary> |
70 | /// Test saving a single inventory item to a V0.1 OpenSim Inventory Archive | 100 | /// Test saving a single inventory item to a V0.1 OpenSim Inventory Archive |
@@ -84,24 +114,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
84 | UserProfileTestUtils.CreateUserWithInventory(m_scene, userFirstName, userLastName, userId, userPassword); | 114 | UserProfileTestUtils.CreateUserWithInventory(m_scene, userFirstName, userLastName, userId, userPassword); |
85 | 115 | ||
86 | // Create asset | 116 | // Create asset |
87 | SceneObjectGroup object1; | 117 | UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); |
88 | SceneObjectPart part1; | 118 | SceneObjectGroup object1 = SceneSetupHelpers.CreateSceneObject(1, ownerId, "My Little Dog Object", 0x50); |
89 | { | ||
90 | string partName = "My Little Dog Object"; | ||
91 | UUID ownerId = UUID.Parse("00000000-0000-0000-0000-000000000040"); | ||
92 | PrimitiveBaseShape shape = PrimitiveBaseShape.CreateSphere(); | ||
93 | Vector3 groupPosition = new Vector3(10, 20, 30); | ||
94 | Quaternion rotationOffset = new Quaternion(20, 30, 40, 50); | ||
95 | Vector3 offsetPosition = new Vector3(5, 10, 15); | ||
96 | |||
97 | part1 | ||
98 | = new SceneObjectPart( | ||
99 | ownerId, shape, groupPosition, rotationOffset, offsetPosition); | ||
100 | part1.Name = partName; | ||
101 | |||
102 | object1 = new SceneObjectGroup(part1); | ||
103 | m_scene.AddNewSceneObject(object1, false); | ||
104 | } | ||
105 | 119 | ||
106 | UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); | 120 | UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); |
107 | AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); | 121 | AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); |
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs index 0e8f647..c7dae52 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/PathTests.cs | |||
@@ -63,7 +63,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
63 | 63 | ||
64 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); | 64 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); |
65 | 65 | ||
66 | Scene scene = SceneSetupHelpers.SetupScene("Inventory"); | 66 | Scene scene = SceneSetupHelpers.SetupScene(); |
67 | SceneSetupHelpers.SetupSceneModules(scene, archiverModule); | 67 | SceneSetupHelpers.SetupSceneModules(scene, archiverModule); |
68 | 68 | ||
69 | // Create user | 69 | // Create user |
@@ -180,7 +180,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
180 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); | 180 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); |
181 | 181 | ||
182 | // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene | 182 | // Annoyingly, we have to set up a scene even though inventory loading has nothing to do with a scene |
183 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 183 | Scene scene = SceneSetupHelpers.SetupScene(); |
184 | 184 | ||
185 | SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); | 185 | SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); |
186 | 186 | ||
@@ -223,7 +223,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
223 | 223 | ||
224 | SerialiserModule serialiserModule = new SerialiserModule(); | 224 | SerialiserModule serialiserModule = new SerialiserModule(); |
225 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); | 225 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); |
226 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 226 | Scene scene = SceneSetupHelpers.SetupScene(); |
227 | SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); | 227 | SceneSetupHelpers.SetupSceneModules(scene, serialiserModule, archiverModule); |
228 | 228 | ||
229 | UserProfileTestUtils.CreateUserWithInventory(scene, m_uaMT, "password"); | 229 | UserProfileTestUtils.CreateUserWithInventory(scene, m_uaMT, "password"); |
@@ -248,7 +248,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
248 | 248 | ||
249 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); | 249 | InventoryArchiverModule archiverModule = new InventoryArchiverModule(); |
250 | 250 | ||
251 | Scene scene = SceneSetupHelpers.SetupScene("Inventory"); | 251 | Scene scene = SceneSetupHelpers.SetupScene(); |
252 | SceneSetupHelpers.SetupSceneModules(scene, archiverModule); | 252 | SceneSetupHelpers.SetupSceneModules(scene, archiverModule); |
253 | 253 | ||
254 | // Create user | 254 | // Create user |
@@ -327,7 +327,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
327 | TestHelper.InMethod(); | 327 | TestHelper.InMethod(); |
328 | // log4net.Config.XmlConfigurator.Configure(); | 328 | // log4net.Config.XmlConfigurator.Configure(); |
329 | 329 | ||
330 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 330 | Scene scene = SceneSetupHelpers.SetupScene(); |
331 | UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); | 331 | UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); |
332 | 332 | ||
333 | Dictionary <string, InventoryFolderBase> foldersCreated = new Dictionary<string, InventoryFolderBase>(); | 333 | Dictionary <string, InventoryFolderBase> foldersCreated = new Dictionary<string, InventoryFolderBase>(); |
@@ -394,7 +394,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
394 | TestHelper.InMethod(); | 394 | TestHelper.InMethod(); |
395 | //log4net.Config.XmlConfigurator.Configure(); | 395 | //log4net.Config.XmlConfigurator.Configure(); |
396 | 396 | ||
397 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 397 | Scene scene = SceneSetupHelpers.SetupScene(); |
398 | UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); | 398 | UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); |
399 | 399 | ||
400 | string folder1ExistingName = "a"; | 400 | string folder1ExistingName = "a"; |
@@ -445,7 +445,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests | |||
445 | TestHelper.InMethod(); | 445 | TestHelper.InMethod(); |
446 | // log4net.Config.XmlConfigurator.Configure(); | 446 | // log4net.Config.XmlConfigurator.Configure(); |
447 | 447 | ||
448 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 448 | Scene scene = SceneSetupHelpers.SetupScene(); |
449 | UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); | 449 | UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene); |
450 | 450 | ||
451 | string folder1ExistingName = "a"; | 451 | string folder1ExistingName = "a"; |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 4565d10..8c99983 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs | |||
@@ -129,35 +129,14 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
129 | } | 129 | } |
130 | 130 | ||
131 | /// | 131 | /// |
132 | /// DeleteToInventory | 132 | /// Used in DeleteToInventory |
133 | /// | 133 | /// |
134 | public override UUID DeleteToInventory(DeRezAction action, UUID folderID, List<SceneObjectGroup> objectGroups, IClientAPI remoteClient) | 134 | protected override void ExportAsset(UUID agentID, UUID assetID) |
135 | { | 135 | { |
136 | UUID ret = UUID.Zero; | ||
137 | |||
138 | // HACK: Only works for lists of length one. | ||
139 | // Intermediate version, just to make things compile | ||
140 | foreach (SceneObjectGroup g in objectGroups) | ||
141 | ret = DeleteToInventory(action, folderID, g, remoteClient); | ||
142 | |||
143 | return ret; | ||
144 | } | ||
145 | |||
146 | // DO NOT OVERRIDE THE BASE METHOD | ||
147 | public new virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, | ||
148 | SceneObjectGroup objectGroup, IClientAPI remoteClient) | ||
149 | { | ||
150 | UUID assetID = base.DeleteToInventory(action, folderID, new List<SceneObjectGroup>() {objectGroup}, remoteClient); | ||
151 | |||
152 | if (!assetID.Equals(UUID.Zero)) | 136 | if (!assetID.Equals(UUID.Zero)) |
153 | { | 137 | UploadInventoryItem(agentID, assetID, "", 0); |
154 | if (remoteClient != null) | ||
155 | UploadInventoryItem(remoteClient.AgentId, assetID, "", 0); | ||
156 | } | ||
157 | else | 138 | else |
158 | m_log.Debug("[HGScene]: Scene.Inventory did not create asset"); | 139 | m_log.Debug("[HGScene]: Scene.Inventory did not create asset"); |
159 | |||
160 | return assetID; | ||
161 | } | 140 | } |
162 | 141 | ||
163 | /// | 142 | /// |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 0fbd5e7..c91c0b2 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -279,7 +279,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
279 | float minX, minY, minZ; | 279 | float minX, minY, minZ; |
280 | float maxX, maxY, maxZ; | 280 | float maxX, maxY, maxZ; |
281 | 281 | ||
282 | Vector3[] offsets = m_Scene.GetCombinedBoundingBox(objlist, | 282 | Vector3[] offsets = Scene.GetCombinedBoundingBox(objlist, |
283 | out minX, out maxX, out minY, out maxY, | 283 | out minX, out maxX, out minY, out maxY, |
284 | out minZ, out maxZ); | 284 | out minZ, out maxZ); |
285 | 285 | ||
@@ -785,8 +785,8 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
785 | // affect the name stored in the serialization, transfer | 785 | // affect the name stored in the serialization, transfer |
786 | // the correct name from the inventory to the | 786 | // the correct name from the inventory to the |
787 | // object itself before we rez. | 787 | // object itself before we rez. |
788 | // On coalesced objects, this has no effect. | 788 | // On coalesced objects, do the first one |
789 | if ((item.Flags & (uint)InventoryItemFlags.ObjectHasMultipleItems) == 0) | 789 | if (((item.Flags & (uint)InventoryItemFlags.ObjectHasMultipleItems) == 0) || i == 0) |
790 | { | 790 | { |
791 | rootPart.Name = item.Name; | 791 | rootPart.Name = item.Name; |
792 | rootPart.Description = item.Description; | 792 | rootPart.Description = item.Description; |
@@ -984,5 +984,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
984 | } | 984 | } |
985 | 985 | ||
986 | #endregion | 986 | #endregion |
987 | |||
988 | protected virtual void ExportAsset(UUID agentID, UUID assetID) | ||
989 | { | ||
990 | } | ||
987 | } | 991 | } |
988 | } | 992 | } |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs new file mode 100644 index 0000000..8d53cf1 --- /dev/null +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/Tests/InventoryAccessModuleTests.cs | |||
@@ -0,0 +1,174 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.IO; | ||
31 | using System.Reflection; | ||
32 | using System.Threading; | ||
33 | using Nini.Config; | ||
34 | using NUnit.Framework; | ||
35 | using OpenMetaverse; | ||
36 | using OpenSim.Data; | ||
37 | using OpenSim.Framework; | ||
38 | using OpenSim.Framework.Serialization; | ||
39 | using OpenSim.Framework.Serialization.External; | ||
40 | using OpenSim.Framework.Communications; | ||
41 | using OpenSim.Region.CoreModules.Avatar.Inventory.Archiver; | ||
42 | using OpenSim.Region.CoreModules.Framework.InventoryAccess; | ||
43 | using OpenSim.Region.Framework.Scenes; | ||
44 | using OpenSim.Region.Framework.Scenes.Serialization; | ||
45 | using OpenSim.Services.Interfaces; | ||
46 | using OpenSim.Tests.Common; | ||
47 | using OpenSim.Tests.Common.Mock; | ||
48 | using OpenSim.Tests.Common.Setup; | ||
49 | |||
50 | namespace OpenSim.Region.CoreModules.Framework.InventoryAccess.Tests | ||
51 | { | ||
52 | [TestFixture] | ||
53 | public class InventoryAccessModuleTests | ||
54 | { | ||
55 | protected TestScene m_scene; | ||
56 | protected BasicInventoryAccessModule m_iam; | ||
57 | protected UUID m_userId = UUID.Parse("00000000-0000-0000-0000-000000000020"); | ||
58 | protected TestClient m_tc; | ||
59 | |||
60 | [SetUp] | ||
61 | public void SetUp() | ||
62 | { | ||
63 | m_iam = new BasicInventoryAccessModule(); | ||
64 | |||
65 | IConfigSource config = new IniConfigSource(); | ||
66 | config.AddConfig("Modules"); | ||
67 | config.Configs["Modules"].Set("InventoryAccessModule", "BasicInventoryAccessModule"); | ||
68 | |||
69 | m_scene = SceneSetupHelpers.SetupScene(); | ||
70 | SceneSetupHelpers.SetupSceneModules(m_scene, config, m_iam); | ||
71 | |||
72 | // Create user | ||
73 | string userFirstName = "Jock"; | ||
74 | string userLastName = "Stirrup"; | ||
75 | string userPassword = "troll"; | ||
76 | UserProfileTestUtils.CreateUserWithInventory(m_scene, userFirstName, userLastName, m_userId, userPassword); | ||
77 | |||
78 | AgentCircuitData acd = new AgentCircuitData(); | ||
79 | acd.AgentID = m_userId; | ||
80 | m_tc = new TestClient(acd, m_scene); | ||
81 | } | ||
82 | |||
83 | [Test] | ||
84 | public void TestRezCoalescedObject() | ||
85 | { | ||
86 | TestHelper.InMethod(); | ||
87 | // log4net.Config.XmlConfigurator.Configure(); | ||
88 | |||
89 | // Create asset | ||
90 | SceneObjectGroup object1 = SceneSetupHelpers.CreateSceneObject(1, m_userId, "Object1", 0x20); | ||
91 | object1.AbsolutePosition = new Vector3(15, 30, 45); | ||
92 | |||
93 | SceneObjectGroup object2 = SceneSetupHelpers.CreateSceneObject(1, m_userId, "Object2", 0x40); | ||
94 | object2.AbsolutePosition = new Vector3(25, 50, 75); | ||
95 | |||
96 | CoalescedSceneObjects coa = new CoalescedSceneObjects(m_userId, object1, object2); | ||
97 | |||
98 | UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); | ||
99 | AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, coa); | ||
100 | m_scene.AssetService.Store(asset1); | ||
101 | |||
102 | // Create item | ||
103 | UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); | ||
104 | string item1Name = "My Little Dog"; | ||
105 | InventoryItemBase item1 = new InventoryItemBase(); | ||
106 | item1.Name = item1Name; | ||
107 | item1.AssetID = asset1.FullID; | ||
108 | item1.ID = item1Id; | ||
109 | InventoryFolderBase objsFolder | ||
110 | = InventoryArchiveUtils.FindFolderByPath(m_scene.InventoryService, m_userId, "Objects")[0]; | ||
111 | item1.Folder = objsFolder.ID; | ||
112 | m_scene.AddInventoryItem(item1); | ||
113 | |||
114 | SceneObjectGroup so | ||
115 | = m_iam.RezObject( | ||
116 | m_tc, item1Id, new Vector3(100, 100, 100), Vector3.Zero, UUID.Zero, 1, false, false, false, UUID.Zero, false); | ||
117 | |||
118 | Assert.That(so, Is.Not.Null); | ||
119 | |||
120 | Assert.That(m_scene.SceneGraph.GetTotalObjectsCount(), Is.EqualTo(2)); | ||
121 | |||
122 | SceneObjectPart retrievedObj1Part = m_scene.GetSceneObjectPart(object1.Name); | ||
123 | Assert.That(retrievedObj1Part, Is.Null); | ||
124 | |||
125 | retrievedObj1Part = m_scene.GetSceneObjectPart(item1.Name); | ||
126 | Assert.That(retrievedObj1Part, Is.Not.Null); | ||
127 | Assert.That(retrievedObj1Part.Name, Is.EqualTo(item1.Name)); | ||
128 | |||
129 | // Bottom of coalescence is placed on ground, hence we end up with 100.5 rather than 85 since the bottom | ||
130 | // object is unit square. | ||
131 | Assert.That(retrievedObj1Part.AbsolutePosition, Is.EqualTo(new Vector3(95, 90, 100.5f))); | ||
132 | |||
133 | SceneObjectPart retrievedObj2Part = m_scene.GetSceneObjectPart(object2.Name); | ||
134 | Assert.That(retrievedObj2Part, Is.Not.Null); | ||
135 | Assert.That(retrievedObj2Part.Name, Is.EqualTo(object2.Name)); | ||
136 | Assert.That(retrievedObj2Part.AbsolutePosition, Is.EqualTo(new Vector3(105, 110, 130.5f))); | ||
137 | } | ||
138 | |||
139 | [Test] | ||
140 | public void TestRezObject() | ||
141 | { | ||
142 | TestHelper.InMethod(); | ||
143 | // log4net.Config.XmlConfigurator.Configure(); | ||
144 | |||
145 | // Create asset | ||
146 | SceneObjectGroup object1 = SceneSetupHelpers.CreateSceneObject(1, m_userId, "My Little Dog Object", 0x40); | ||
147 | |||
148 | UUID asset1Id = UUID.Parse("00000000-0000-0000-0000-000000000060"); | ||
149 | AssetBase asset1 = AssetHelpers.CreateAsset(asset1Id, object1); | ||
150 | m_scene.AssetService.Store(asset1); | ||
151 | |||
152 | // Create item | ||
153 | UUID item1Id = UUID.Parse("00000000-0000-0000-0000-000000000080"); | ||
154 | string item1Name = "My Little Dog"; | ||
155 | InventoryItemBase item1 = new InventoryItemBase(); | ||
156 | item1.Name = item1Name; | ||
157 | item1.AssetID = asset1.FullID; | ||
158 | item1.ID = item1Id; | ||
159 | InventoryFolderBase objsFolder | ||
160 | = InventoryArchiveUtils.FindFolderByPath(m_scene.InventoryService, m_userId, "Objects")[0]; | ||
161 | item1.Folder = objsFolder.ID; | ||
162 | m_scene.AddInventoryItem(item1); | ||
163 | |||
164 | SceneObjectGroup so | ||
165 | = m_iam.RezObject( | ||
166 | m_tc, item1Id, Vector3.Zero, Vector3.Zero, UUID.Zero, 1, false, false, false, UUID.Zero, false); | ||
167 | |||
168 | Assert.That(so, Is.Not.Null); | ||
169 | |||
170 | SceneObjectPart retrievedPart = m_scene.GetSceneObjectPart(so.UUID); | ||
171 | Assert.That(retrievedPart, Is.Not.Null); | ||
172 | } | ||
173 | } | ||
174 | } \ No newline at end of file | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs index e25700d..422f394 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs | |||
@@ -31,7 +31,6 @@ using System.Collections.Generic; | |||
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Servers.HttpServer; | ||
35 | using OpenSim.Region.Framework.Scenes; | 34 | using OpenSim.Region.Framework.Scenes; |
36 | using OpenSim.Region.Framework.Interfaces; | 35 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Server.Base; | 36 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs index 02acddc..2b5beba 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs | |||
@@ -31,7 +31,6 @@ using System.Collections.Generic; | |||
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Servers.HttpServer; | ||
35 | using OpenSim.Region.Framework.Scenes; | 34 | using OpenSim.Region.Framework.Scenes; |
36 | using OpenSim.Region.Framework.Interfaces; | 35 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Server.Base; | 36 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs index 6d975af..f29c074 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs | |||
@@ -31,7 +31,6 @@ using System.Collections.Generic; | |||
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Servers.HttpServer; | ||
35 | using OpenSim.Region.Framework.Scenes; | 34 | using OpenSim.Region.Framework.Scenes; |
36 | using OpenSim.Region.Framework.Interfaces; | 35 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Server.Base; | 36 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs index 2f96bcb..d2343c9 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs | |||
@@ -31,7 +31,6 @@ using System.Collections.Generic; | |||
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Servers.HttpServer; | ||
35 | using OpenSim.Region.Framework.Scenes; | 34 | using OpenSim.Region.Framework.Scenes; |
36 | using OpenSim.Region.Framework.Interfaces; | 35 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Server.Base; | 36 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs index 209cf0d..53a8ace 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs | |||
@@ -31,9 +31,8 @@ using System.Collections.Generic; | |||
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Servers.HttpServer; | ||
35 | using OpenSim.Region.Framework.Scenes; | ||
36 | using OpenSim.Region.Framework.Interfaces; | 34 | using OpenSim.Region.Framework.Interfaces; |
35 | using OpenSim.Region.Framework.Scenes; | ||
37 | using OpenSim.Server.Base; | 36 | using OpenSim.Server.Base; |
38 | using OpenSim.Server.Handlers.Base; | 37 | using OpenSim.Server.Handlers.Base; |
39 | 38 | ||
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs index fcc69e9..fc64203 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs | |||
@@ -31,7 +31,6 @@ using System.Collections.Generic; | |||
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Servers.HttpServer; | ||
35 | using OpenSim.Region.Framework.Scenes; | 34 | using OpenSim.Region.Framework.Scenes; |
36 | using OpenSim.Region.Framework.Interfaces; | 35 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Server.Base; | 36 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs index 2a9366c..f759470 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs | |||
@@ -31,7 +31,6 @@ using System.Collections.Generic; | |||
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Servers.HttpServer; | ||
35 | using OpenSim.Region.Framework.Scenes; | 34 | using OpenSim.Region.Framework.Scenes; |
36 | using OpenSim.Region.Framework.Interfaces; | 35 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Server.Base; | 36 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs index 35518d5..5c32632 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs | |||
@@ -31,7 +31,6 @@ using System.Collections.Generic; | |||
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Servers.HttpServer; | ||
35 | using OpenSim.Region.Framework.Scenes; | 34 | using OpenSim.Region.Framework.Scenes; |
36 | using OpenSim.Region.Framework.Interfaces; | 35 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Server.Base; | 36 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs index 5ee1c97..86b4926 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs | |||
@@ -31,7 +31,6 @@ using System.Collections.Generic; | |||
31 | using log4net; | 31 | using log4net; |
32 | using Nini.Config; | 32 | using Nini.Config; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using OpenSim.Framework.Servers.HttpServer; | ||
35 | using OpenSim.Region.Framework.Scenes; | 34 | using OpenSim.Region.Framework.Scenes; |
36 | using OpenSim.Region.Framework.Interfaces; | 35 | using OpenSim.Region.Framework.Interfaces; |
37 | using OpenSim.Server.Base; | 36 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs index 1b3419d..51d1d59 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs | |||
@@ -195,6 +195,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset | |||
195 | 195 | ||
196 | public byte[] GetData(string id) | 196 | public byte[] GetData(string id) |
197 | { | 197 | { |
198 | // m_log.DebugFormat("[LOCAL ASSET SERVICES CONNECTOR]: Requesting data for asset {0}", id); | ||
199 | |||
198 | AssetBase asset = m_Cache.Get(id); | 200 | AssetBase asset = m_Cache.Get(id); |
199 | 201 | ||
200 | if (asset != null) | 202 | if (asset != null) |
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 6d9cb7f..598948a 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs | |||
@@ -261,6 +261,10 @@ namespace OpenSim.Region.CoreModules.World.Estate | |||
261 | 261 | ||
262 | private void handleChangeEstateCovenantRequest(IClientAPI remoteClient, UUID estateCovenantID) | 262 | private void handleChangeEstateCovenantRequest(IClientAPI remoteClient, UUID estateCovenantID) |
263 | { | 263 | { |
264 | // m_log.DebugFormat( | ||
265 | // "[ESTATE MANAGEMENT MODULE]: Handling request from {0} to change estate covenant to {1}", | ||
266 | // remoteClient.Name, estateCovenantID); | ||
267 | |||
264 | Scene.RegionInfo.RegionSettings.Covenant = estateCovenantID; | 268 | Scene.RegionInfo.RegionSettings.Covenant = estateCovenantID; |
265 | Scene.RegionInfo.RegionSettings.Save(); | 269 | Scene.RegionInfo.RegionSettings.Save(); |
266 | TriggerRegionInfoChange(); | 270 | TriggerRegionInfoChange(); |
diff --git a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs index dafaa0c..a866fd9 100644 --- a/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs +++ b/OpenSim/Region/CoreModules/World/Serialiser/Tests/SerialiserTests.cs | |||
@@ -237,7 +237,7 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests | |||
237 | public void Init() | 237 | public void Init() |
238 | { | 238 | { |
239 | m_serialiserModule = new SerialiserModule(); | 239 | m_serialiserModule = new SerialiserModule(); |
240 | m_scene = SceneSetupHelpers.SetupScene(""); | 240 | m_scene = SceneSetupHelpers.SetupScene(); |
241 | SceneSetupHelpers.SetupSceneModules(m_scene, m_serialiserModule); | 241 | SceneSetupHelpers.SetupSceneModules(m_scene, m_serialiserModule); |
242 | } | 242 | } |
243 | 243 | ||
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs index d6fa093..21a9999 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/GenericSystemDrawing.cs | |||
@@ -124,6 +124,52 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
124 | colours.Save(stream, ImageFormat.Png); | 124 | colours.Save(stream, ImageFormat.Png); |
125 | } | 125 | } |
126 | 126 | ||
127 | public virtual void SaveFile(ITerrainChannel m_channel, string filename, | ||
128 | int offsetX, int offsetY, | ||
129 | int fileWidth, int fileHeight, | ||
130 | int regionSizeX, int regionSizeY) | ||
131 | |||
132 | { | ||
133 | // We need to do this because: | ||
134 | // "Saving the image to the same file it was constructed from is not allowed and throws an exception." | ||
135 | string tempName = offsetX + "_ " + offsetY + "_" + filename; | ||
136 | |||
137 | Bitmap entireBitmap = null; | ||
138 | Bitmap thisBitmap = null; | ||
139 | if (File.Exists(filename)) | ||
140 | { | ||
141 | File.Copy(filename, tempName); | ||
142 | entireBitmap = new Bitmap(tempName); | ||
143 | if (entireBitmap.Width != fileWidth * regionSizeX || entireBitmap.Height != fileHeight * regionSizeY) | ||
144 | { | ||
145 | // old file, let's overwrite it | ||
146 | entireBitmap = new Bitmap(fileWidth * regionSizeX, fileHeight * regionSizeY); | ||
147 | } | ||
148 | } | ||
149 | else | ||
150 | { | ||
151 | entireBitmap = new Bitmap(fileWidth * regionSizeX, fileHeight * regionSizeY); | ||
152 | } | ||
153 | |||
154 | thisBitmap = CreateGrayscaleBitmapFromMap(m_channel); | ||
155 | Console.WriteLine("offsetX=" + offsetX + " offsetY=" + offsetY); | ||
156 | for (int x = 0; x < regionSizeX; x++) | ||
157 | for (int y = 0; y < regionSizeY; y++) | ||
158 | entireBitmap.SetPixel(x + offsetX * regionSizeX, y + (fileHeight - 1 - offsetY) * regionSizeY, thisBitmap.GetPixel(x, y)); | ||
159 | |||
160 | Save(entireBitmap, filename); | ||
161 | thisBitmap.Dispose(); | ||
162 | entireBitmap.Dispose(); | ||
163 | |||
164 | if (File.Exists(tempName)) | ||
165 | File.Delete(tempName); | ||
166 | } | ||
167 | |||
168 | protected virtual void Save(Bitmap bmp, string filename) | ||
169 | { | ||
170 | bmp.Save(filename, ImageFormat.Png); | ||
171 | } | ||
172 | |||
127 | #endregion | 173 | #endregion |
128 | 174 | ||
129 | public override string ToString() | 175 | public override string ToString() |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs index 8667607..1a0d8ec 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/JPEG.cs | |||
@@ -76,6 +76,14 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
76 | colours.Save(stream, ImageFormat.Jpeg); | 76 | colours.Save(stream, ImageFormat.Jpeg); |
77 | } | 77 | } |
78 | 78 | ||
79 | public virtual void SaveFile(ITerrainChannel m_channel, string filename, | ||
80 | int offsetX, int offsetY, | ||
81 | int fileWidth, int fileHeight, | ||
82 | int regionSizeX, int regionSizeY) | ||
83 | { | ||
84 | throw new System.Exception("Not Implemented"); | ||
85 | } | ||
86 | |||
79 | #endregion | 87 | #endregion |
80 | 88 | ||
81 | public override string ToString() | 89 | public override string ToString() |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs index a70ef13..fad7641 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/LLRAW.cs | |||
@@ -240,6 +240,14 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
240 | get { return ".raw"; } | 240 | get { return ".raw"; } |
241 | } | 241 | } |
242 | 242 | ||
243 | public virtual void SaveFile(ITerrainChannel m_channel, string filename, | ||
244 | int offsetX, int offsetY, | ||
245 | int fileWidth, int fileHeight, | ||
246 | int regionSizeX, int regionSizeY) | ||
247 | { | ||
248 | throw new System.Exception("Not Implemented"); | ||
249 | } | ||
250 | |||
243 | #endregion | 251 | #endregion |
244 | 252 | ||
245 | public override string ToString() | 253 | public override string ToString() |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs index 3c76665..ba073ca 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/RAW32.cs | |||
@@ -160,6 +160,13 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
160 | bs.Close(); | 160 | bs.Close(); |
161 | } | 161 | } |
162 | 162 | ||
163 | public virtual void SaveFile(ITerrainChannel m_channel, string filename, | ||
164 | int offsetX, int offsetY, | ||
165 | int fileWidth, int fileHeight, | ||
166 | int regionSizeX, int regionSizeY) | ||
167 | { | ||
168 | throw new System.Exception("Not Implemented"); | ||
169 | } | ||
163 | #endregion | 170 | #endregion |
164 | 171 | ||
165 | public override string ToString() | 172 | public override string ToString() |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs index 2919897..2f37d9d 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/FileLoaders/Terragen.cs | |||
@@ -308,6 +308,14 @@ namespace OpenSim.Region.CoreModules.World.Terrain.FileLoaders | |||
308 | get { return ".ter"; } | 308 | get { return ".ter"; } |
309 | } | 309 | } |
310 | 310 | ||
311 | public virtual void SaveFile(ITerrainChannel m_channel, string filename, | ||
312 | int offsetX, int offsetY, | ||
313 | int fileWidth, int fileHeight, | ||
314 | int regionSizeX, int regionSizeY) | ||
315 | { | ||
316 | throw new System.Exception("Not Implemented"); | ||
317 | } | ||
318 | |||
311 | #endregion | 319 | #endregion |
312 | 320 | ||
313 | public override string ToString() | 321 | public override string ToString() |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs b/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs index 7403281..7237f90 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/ITerrainLoader.cs | |||
@@ -38,5 +38,6 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
38 | ITerrainChannel LoadStream(Stream stream); | 38 | ITerrainChannel LoadStream(Stream stream); |
39 | void SaveFile(string filename, ITerrainChannel map); | 39 | void SaveFile(string filename, ITerrainChannel map); |
40 | void SaveStream(Stream stream, ITerrainChannel map); | 40 | void SaveStream(Stream stream, ITerrainChannel map); |
41 | void SaveFile(ITerrainChannel map, string filename, int offsetX, int offsetY, int fileWidth, int fileHeight, int regionSizeX, int regionSizeY); | ||
41 | } | 42 | } |
42 | } \ No newline at end of file | 43 | } \ No newline at end of file |
diff --git a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs index 9d968e7..2da6458 100644 --- a/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs +++ b/OpenSim/Region/CoreModules/World/Terrain/TerrainModule.cs | |||
@@ -541,6 +541,39 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
541 | } | 541 | } |
542 | 542 | ||
543 | /// <summary> | 543 | /// <summary> |
544 | /// Saves the terrain to a larger terrain file. | ||
545 | /// </summary> | ||
546 | /// <param name="filename">The terrain file to save</param> | ||
547 | /// <param name="fileWidth">The width of the file in units</param> | ||
548 | /// <param name="fileHeight">The height of the file in units</param> | ||
549 | /// <param name="fileStartX">Where to begin our slice</param> | ||
550 | /// <param name="fileStartY">Where to begin our slice</param> | ||
551 | public void SaveToFile(string filename, int fileWidth, int fileHeight, int fileStartX, int fileStartY) | ||
552 | { | ||
553 | int offsetX = (int)m_scene.RegionInfo.RegionLocX - fileStartX; | ||
554 | int offsetY = (int)m_scene.RegionInfo.RegionLocY - fileStartY; | ||
555 | |||
556 | if (offsetX >= 0 && offsetX < fileWidth && offsetY >= 0 && offsetY < fileHeight) | ||
557 | { | ||
558 | // this region is included in the tile request | ||
559 | foreach (KeyValuePair<string, ITerrainLoader> loader in m_loaders) | ||
560 | { | ||
561 | if (filename.EndsWith(loader.Key)) | ||
562 | { | ||
563 | lock (m_scene) | ||
564 | { | ||
565 | loader.Value.SaveFile(m_channel, filename, offsetX, offsetY, | ||
566 | fileWidth, fileHeight, | ||
567 | (int)Constants.RegionSize, | ||
568 | (int)Constants.RegionSize); | ||
569 | } | ||
570 | return; | ||
571 | } | ||
572 | } | ||
573 | } | ||
574 | } | ||
575 | |||
576 | /// <summary> | ||
544 | /// Performs updates to the region periodically, synchronising physics and other heightmap aware sections | 577 | /// Performs updates to the region periodically, synchronising physics and other heightmap aware sections |
545 | /// </summary> | 578 | /// </summary> |
546 | private void EventManager_OnTerrainTick() | 579 | private void EventManager_OnTerrainTick() |
@@ -862,6 +895,15 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
862 | SaveToFile((string) args[0]); | 895 | SaveToFile((string) args[0]); |
863 | } | 896 | } |
864 | 897 | ||
898 | private void InterfaceSaveTileFile(Object[] args) | ||
899 | { | ||
900 | SaveToFile((string)args[0], | ||
901 | (int)args[1], | ||
902 | (int)args[2], | ||
903 | (int)args[3], | ||
904 | (int)args[4]); | ||
905 | } | ||
906 | |||
865 | private void InterfaceBakeTerrain(Object[] args) | 907 | private void InterfaceBakeTerrain(Object[] args) |
866 | { | 908 | { |
867 | UpdateRevertMap(); | 909 | UpdateRevertMap(); |
@@ -1117,6 +1159,17 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
1117 | loadFromTileCommand.AddArgument("minimum Y tile", "The Y region coordinate of the first section on the file", | 1159 | loadFromTileCommand.AddArgument("minimum Y tile", "The Y region coordinate of the first section on the file", |
1118 | "Integer"); | 1160 | "Integer"); |
1119 | 1161 | ||
1162 | Command saveToTileCommand = | ||
1163 | new Command("save-tile", CommandIntentions.COMMAND_HAZARDOUS, InterfaceSaveTileFile, "Saves the current heightmap to the larger file."); | ||
1164 | saveToTileCommand.AddArgument("filename", | ||
1165 | "The file you wish to save to, the file extension determines the loader to be used. Supported extensions include: " + | ||
1166 | supportedFileExtensions, "String"); | ||
1167 | saveToTileCommand.AddArgument("file width", "The width of the file in tiles", "Integer"); | ||
1168 | saveToTileCommand.AddArgument("file height", "The height of the file in tiles", "Integer"); | ||
1169 | saveToTileCommand.AddArgument("minimum X tile", "The X region coordinate of the first section on the file", | ||
1170 | "Integer"); | ||
1171 | saveToTileCommand.AddArgument("minimum Y tile", "The Y region coordinate of the first section on the file", | ||
1172 | "Integer"); | ||
1120 | // Terrain adjustments | 1173 | // Terrain adjustments |
1121 | Command fillRegionCommand = | 1174 | Command fillRegionCommand = |
1122 | new Command("fill", CommandIntentions.COMMAND_HAZARDOUS, InterfaceFillTerrain, "Fills the current heightmap with a specified value."); | 1175 | new Command("fill", CommandIntentions.COMMAND_HAZARDOUS, InterfaceFillTerrain, "Fills the current heightmap with a specified value."); |
@@ -1168,6 +1221,7 @@ namespace OpenSim.Region.CoreModules.World.Terrain | |||
1168 | m_commander.RegisterCommand("load", loadFromFileCommand); | 1221 | m_commander.RegisterCommand("load", loadFromFileCommand); |
1169 | m_commander.RegisterCommand("load-tile", loadFromTileCommand); | 1222 | m_commander.RegisterCommand("load-tile", loadFromTileCommand); |
1170 | m_commander.RegisterCommand("save", saveToFileCommand); | 1223 | m_commander.RegisterCommand("save", saveToFileCommand); |
1224 | m_commander.RegisterCommand("save-tile", saveToTileCommand); | ||
1171 | m_commander.RegisterCommand("fill", fillRegionCommand); | 1225 | m_commander.RegisterCommand("fill", fillRegionCommand); |
1172 | m_commander.RegisterCommand("elevate", elevateCommand); | 1226 | m_commander.RegisterCommand("elevate", elevateCommand); |
1173 | m_commander.RegisterCommand("lower", lowerCommand); | 1227 | m_commander.RegisterCommand("lower", lowerCommand); |
diff --git a/OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs b/OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs new file mode 100644 index 0000000..af8ccda --- /dev/null +++ b/OpenSim/Region/Framework/Scenes/CoalescedSceneObjects.cs | |||
@@ -0,0 +1,154 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Linq; | ||
31 | using OpenMetaverse; | ||
32 | |||
33 | namespace OpenSim.Region.Framework.Scenes | ||
34 | { | ||
35 | /// <summary> | ||
36 | /// Represents a coalescene of scene objects. A coalescence occurs when objects that are not in the same linkset | ||
37 | /// are grouped together. | ||
38 | /// </summary> | ||
39 | public class CoalescedSceneObjects | ||
40 | { | ||
41 | /// <summary> | ||
42 | /// The creator of this coalesence, though not necessarily the objects within it. | ||
43 | /// </summary> | ||
44 | public UUID CreatorId { get; set; } | ||
45 | |||
46 | /// <summary> | ||
47 | /// The number of objects in this coalesence | ||
48 | /// </summary> | ||
49 | public int Count | ||
50 | { | ||
51 | get | ||
52 | { | ||
53 | lock (m_memberObjects) | ||
54 | return m_memberObjects.Count; | ||
55 | } | ||
56 | } | ||
57 | |||
58 | /// <summary> | ||
59 | /// Does this coalesence have any member objects? | ||
60 | /// </summary> | ||
61 | public bool HasObjects { get { return Count > 0; } } | ||
62 | |||
63 | /// <summary> | ||
64 | /// Get the objects currently in this coalescence | ||
65 | /// </summary> | ||
66 | public List<SceneObjectGroup> Objects | ||
67 | { | ||
68 | get | ||
69 | { | ||
70 | lock (m_memberObjects) | ||
71 | return new List<SceneObjectGroup>(m_memberObjects); | ||
72 | } | ||
73 | } | ||
74 | |||
75 | /// <summary> | ||
76 | /// Get the scene that contains the objects in this coalescence. If there are no objects then null is returned. | ||
77 | /// </summary> | ||
78 | public Scene Scene | ||
79 | { | ||
80 | get | ||
81 | { | ||
82 | if (!HasObjects) | ||
83 | return null; | ||
84 | else | ||
85 | return Objects[0].Scene; | ||
86 | } | ||
87 | } | ||
88 | |||
89 | /// <summary> | ||
90 | /// At this point, we need to preserve the order of objects added to the coalescence, since the first | ||
91 | /// one will end up matching the item name when rerezzed. | ||
92 | /// </summary> | ||
93 | protected List<SceneObjectGroup> m_memberObjects = new List<SceneObjectGroup>(); | ||
94 | |||
95 | public CoalescedSceneObjects(UUID creatorId) | ||
96 | { | ||
97 | CreatorId = creatorId; | ||
98 | } | ||
99 | |||
100 | public CoalescedSceneObjects(UUID creatorId, params SceneObjectGroup[] objs) : this(creatorId) | ||
101 | { | ||
102 | foreach (SceneObjectGroup obj in objs) | ||
103 | Add(obj); | ||
104 | } | ||
105 | |||
106 | /// <summary> | ||
107 | /// Add an object to the coalescence. | ||
108 | /// </summary> | ||
109 | /// <param name="obj"></param> | ||
110 | /// <param name="offset">The offset of the object within the group</param> | ||
111 | public void Add(SceneObjectGroup obj) | ||
112 | { | ||
113 | lock (m_memberObjects) | ||
114 | m_memberObjects.Add(obj); | ||
115 | } | ||
116 | |||
117 | /// <summary> | ||
118 | /// Removes a scene object from the coalescene | ||
119 | /// </summary> | ||
120 | /// <param name="sceneObjectId"></param> | ||
121 | /// <returns>true if the object was there to be removed, false if not.</returns> | ||
122 | public bool Remove(SceneObjectGroup obj) | ||
123 | { | ||
124 | lock (m_memberObjects) | ||
125 | return m_memberObjects.Remove(obj); | ||
126 | } | ||
127 | |||
128 | /// <summary> | ||
129 | /// Get the total size of the coalescence (the size required to cover all the objects within it) and the | ||
130 | /// offsets of each of those objects. | ||
131 | /// </summary> | ||
132 | /// <param name="size"></param> | ||
133 | /// <returns> | ||
134 | /// An array of offsets. The order of objects is the same as returned from the Objects property | ||
135 | /// </returns> | ||
136 | public Vector3[] GetSizeAndOffsets(out Vector3 size) | ||
137 | { | ||
138 | float minX, minY, minZ; | ||
139 | float maxX, maxY, maxZ; | ||
140 | |||
141 | Vector3[] offsets | ||
142 | = Scene.GetCombinedBoundingBox( | ||
143 | Objects, out minX, out maxX, out minY, out maxY, out minZ, out maxZ); | ||
144 | |||
145 | float sizeX = maxX - minX; | ||
146 | float sizeY = maxY - minY; | ||
147 | float sizeZ = maxZ - minZ; | ||
148 | |||
149 | size = new Vector3(sizeX, sizeY, sizeZ); | ||
150 | |||
151 | return offsets; | ||
152 | } | ||
153 | } | ||
154 | } \ No newline at end of file | ||
diff --git a/OpenSim/Region/Framework/Scenes/Prioritizer.cs b/OpenSim/Region/Framework/Scenes/Prioritizer.cs index cd6dc95..e4b0323 100644 --- a/OpenSim/Region/Framework/Scenes/Prioritizer.cs +++ b/OpenSim/Region/Framework/Scenes/Prioritizer.cs | |||
@@ -174,7 +174,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
174 | ScenePresence presence = m_scene.GetScenePresence(client.AgentId); | 174 | ScenePresence presence = m_scene.GetScenePresence(client.AgentId); |
175 | if (presence == null) | 175 | if (presence == null) |
176 | { | 176 | { |
177 | m_log.WarnFormat("[PRIORITIZER] attempt to use agent {0} not in the scene",client.AgentId); | 177 | // this shouldn't happen, it basically means that we are prioritizing |
178 | // updates to send to a client that doesn't have a presence in the scene | ||
179 | // seems like there's race condition here... | ||
180 | |||
181 | // m_log.WarnFormat("[PRIORITIZER] attempt to use agent {0} not in the scene",client.AgentId); | ||
178 | // throw new InvalidOperationException("Prioritization agent not defined"); | 182 | // throw new InvalidOperationException("Prioritization agent not defined"); |
179 | return Int32.MaxValue; | 183 | return Int32.MaxValue; |
180 | } | 184 | } |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 0748954..f41c6b9 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -2005,11 +2005,49 @@ namespace OpenSim.Region.Framework.Scenes | |||
2005 | UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, | 2005 | UUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection, |
2006 | bool RezSelected, bool RemoveItem, UUID fromTaskID) | 2006 | bool RezSelected, bool RemoveItem, UUID fromTaskID) |
2007 | { | 2007 | { |
2008 | IInventoryAccessModule invAccess = RequestModuleInterface<IInventoryAccessModule>(); | 2008 | // m_log.DebugFormat( |
2009 | if (invAccess != null) | 2009 | // "[PRIM INVENTORY]: RezObject from {0} for item {1} from task id {2}", |
2010 | invAccess.RezObject( | 2010 | // remoteClient.Name, itemID, fromTaskID); |
2011 | remoteClient, itemID, RayEnd, RayStart, RayTargetID, BypassRayCast, RayEndIsIntersection, | 2011 | |
2012 | RezSelected, RemoveItem, fromTaskID, false); | 2012 | if (fromTaskID == UUID.Zero) |
2013 | { | ||
2014 | IInventoryAccessModule invAccess = RequestModuleInterface<IInventoryAccessModule>(); | ||
2015 | if (invAccess != null) | ||
2016 | invAccess.RezObject( | ||
2017 | remoteClient, itemID, RayEnd, RayStart, RayTargetID, BypassRayCast, RayEndIsIntersection, | ||
2018 | RezSelected, RemoveItem, fromTaskID, false); | ||
2019 | } | ||
2020 | else | ||
2021 | { | ||
2022 | SceneObjectPart part = GetSceneObjectPart(fromTaskID); | ||
2023 | if (part == null) | ||
2024 | { | ||
2025 | m_log.ErrorFormat( | ||
2026 | "[TASK INVENTORY]: {0} tried to rez item id {1} from object id {2} but there is no such scene object", | ||
2027 | remoteClient.Name, itemID, fromTaskID); | ||
2028 | |||
2029 | return; | ||
2030 | } | ||
2031 | |||
2032 | TaskInventoryItem item = part.Inventory.GetInventoryItem(itemID); | ||
2033 | if (item == null) | ||
2034 | { | ||
2035 | m_log.ErrorFormat( | ||
2036 | "[TASK INVENTORY]: {0} tried to rez item id {1} from object id {2} but there is no such item", | ||
2037 | remoteClient.Name, itemID, fromTaskID); | ||
2038 | |||
2039 | return; | ||
2040 | } | ||
2041 | |||
2042 | byte bRayEndIsIntersection = (byte)(RayEndIsIntersection ? 1 : 0); | ||
2043 | Vector3 scale = new Vector3(0.5f, 0.5f, 0.5f); | ||
2044 | Vector3 pos | ||
2045 | = GetNewRezLocation( | ||
2046 | RayStart, RayEnd, RayTargetID, Quaternion.Identity, | ||
2047 | BypassRayCast, bRayEndIsIntersection, true, scale, false); | ||
2048 | |||
2049 | RezObject(part, item, pos, null, Vector3.Zero, 0); | ||
2050 | } | ||
2013 | } | 2051 | } |
2014 | 2052 | ||
2015 | /// <summary> | 2053 | /// <summary> |
@@ -2017,14 +2055,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
2017 | /// </summary> | 2055 | /// </summary> |
2018 | /// <param name="sourcePart"></param> | 2056 | /// <param name="sourcePart"></param> |
2019 | /// <param name="item"></param> | 2057 | /// <param name="item"></param> |
2020 | /// <param name="pos"></param> | 2058 | /// <param name="pos">The position of the rezzed object.</param> |
2021 | /// <param name="rot"></param> | 2059 | /// <param name="rot">The rotation of the rezzed object. If null, then the rotation stored with the object |
2022 | /// <param name="vel"></param> | 2060 | /// will be used if it exists.</param> |
2061 | /// <param name="vel">The velocity of the rezzed object.</param> | ||
2023 | /// <param name="param"></param> | 2062 | /// <param name="param"></param> |
2024 | /// <returns>The SceneObjectGroup rezzed or null if rez was unsuccessful</returns> | 2063 | /// <returns>The SceneObjectGroup rezzed or null if rez was unsuccessful</returns> |
2025 | public virtual SceneObjectGroup RezObject( | 2064 | public virtual SceneObjectGroup RezObject( |
2026 | SceneObjectPart sourcePart, TaskInventoryItem item, | 2065 | SceneObjectPart sourcePart, TaskInventoryItem item, Vector3 pos, Quaternion? rot, Vector3 vel, int param) |
2027 | Vector3 pos, Quaternion rot, Vector3 vel, int param) | ||
2028 | { | 2066 | { |
2029 | if (null == item) | 2067 | if (null == item) |
2030 | return null; | 2068 | return null; |
@@ -2042,8 +2080,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
2042 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) | 2080 | if ((item.CurrentPermissions & (uint)PermissionMask.Copy) == 0) |
2043 | sourcePart.Inventory.RemoveInventoryItem(item.ItemID); | 2081 | sourcePart.Inventory.RemoveInventoryItem(item.ItemID); |
2044 | } | 2082 | } |
2045 | 2083 | ||
2046 | AddNewSceneObject(group, true, pos, rot, vel); | 2084 | AddNewSceneObject(group, true); |
2085 | |||
2086 | group.AbsolutePosition = pos; | ||
2087 | group.Velocity = vel; | ||
2088 | |||
2089 | if (rot != null) | ||
2090 | group.UpdateGroupRotationR((Quaternion)rot); | ||
2047 | 2091 | ||
2048 | // We can only call this after adding the scene object, since the scene object references the scene | 2092 | // We can only call this after adding the scene object, since the scene object references the scene |
2049 | // to find out if scripts should be activated at all. | 2093 | // to find out if scripts should be activated at all. |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 0e3cffb..eed5ebc 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -5038,7 +5038,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
5038 | } | 5038 | } |
5039 | } | 5039 | } |
5040 | 5040 | ||
5041 | public Vector3[] GetCombinedBoundingBox(List<SceneObjectGroup> objects, out float minX, out float maxX, out float minY, out float maxY, out float minZ, out float maxZ) | 5041 | /// <summary> |
5042 | /// Get the volume of space that will encompass all the given objects. | ||
5043 | /// </summary> | ||
5044 | /// <param name="objects"></param> | ||
5045 | /// <param name="minX"></param> | ||
5046 | /// <param name="maxX"></param> | ||
5047 | /// <param name="minY"></param> | ||
5048 | /// <param name="maxY"></param> | ||
5049 | /// <param name="minZ"></param> | ||
5050 | /// <param name="maxZ"></param> | ||
5051 | /// <returns></returns> | ||
5052 | public static Vector3[] GetCombinedBoundingBox( | ||
5053 | List<SceneObjectGroup> objects, | ||
5054 | out float minX, out float maxX, out float minY, out float maxY, out float minZ, out float maxZ) | ||
5042 | { | 5055 | { |
5043 | minX = 256; | 5056 | minX = 256; |
5044 | maxX = -256; | 5057 | maxX = -256; |
@@ -5056,6 +5069,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
5056 | Vector3 vec = g.AbsolutePosition; | 5069 | Vector3 vec = g.AbsolutePosition; |
5057 | 5070 | ||
5058 | g.GetAxisAlignedBoundingBoxRaw(out ominX, out omaxX, out ominY, out omaxY, out ominZ, out omaxZ); | 5071 | g.GetAxisAlignedBoundingBoxRaw(out ominX, out omaxX, out ominY, out omaxY, out ominZ, out omaxZ); |
5072 | |||
5073 | // m_log.DebugFormat( | ||
5074 | // "[SCENE]: For {0} found AxisAlignedBoundingBoxRaw {1}, {2}", | ||
5075 | // g.Name, new Vector3(ominX, ominY, ominZ), new Vector3(omaxX, omaxY, omaxZ)); | ||
5059 | 5076 | ||
5060 | ominX += vec.X; | 5077 | ominX += vec.X; |
5061 | omaxX += vec.X; | 5078 | omaxX += vec.X; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 6773e08..3d6057b 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -1077,6 +1077,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1077 | { | 1077 | { |
1078 | foreach (SceneObjectPart p in ((SceneObjectGroup)entity).Parts) | 1078 | foreach (SceneObjectPart p in ((SceneObjectGroup)entity).Parts) |
1079 | { | 1079 | { |
1080 | // m_log.DebugFormat("[SCENE GRAPH]: Part {0} has name {1}", p.UUID, p.Name); | ||
1081 | |||
1080 | if (p.Name == name) | 1082 | if (p.Name == name) |
1081 | { | 1083 | { |
1082 | sop = p; | 1084 | sop = p; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 759fc23..69bfb9a 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -365,11 +365,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
365 | { | 365 | { |
366 | Vector3 val = value; | 366 | Vector3 val = value; |
367 | 367 | ||
368 | if ((m_scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || m_scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W) | 368 | if (Scene != null) |
369 | || m_scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || m_scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S)) | ||
370 | && !IsAttachmentCheckFull() && (!m_scene.LoadingPrims)) | ||
371 | { | 369 | { |
372 | m_scene.CrossPrimGroupIntoNewRegion(val, this, true); | 370 | if ((Scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || Scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W) |
371 | || Scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || Scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S)) | ||
372 | && !IsAttachmentCheckFull() && (!Scene.LoadingPrims)) | ||
373 | { | ||
374 | m_scene.CrossPrimGroupIntoNewRegion(val, this, true); | ||
375 | } | ||
373 | } | 376 | } |
374 | 377 | ||
375 | foreach (SceneObjectPart part in m_parts.GetArray()) | 378 | foreach (SceneObjectPart part in m_parts.GetArray()) |
@@ -381,8 +384,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
381 | if (Util.GetDistanceTo(RootPart.StatusSandboxPos, value) > 10) | 384 | if (Util.GetDistanceTo(RootPart.StatusSandboxPos, value) > 10) |
382 | { | 385 | { |
383 | RootPart.ScriptSetPhysicsStatus(false); | 386 | RootPart.ScriptSetPhysicsStatus(false); |
384 | Scene.SimChat(Utils.StringToBytes("Hit Sandbox Limit"), | 387 | |
385 | ChatTypeEnum.DebugChannel, 0x7FFFFFFF, RootPart.AbsolutePosition, Name, UUID, false); | 388 | if (Scene != null) |
389 | Scene.SimChat(Utils.StringToBytes("Hit Sandbox Limit"), | ||
390 | ChatTypeEnum.DebugChannel, 0x7FFFFFFF, RootPart.AbsolutePosition, Name, UUID, false); | ||
391 | |||
386 | return; | 392 | return; |
387 | } | 393 | } |
388 | } | 394 | } |
@@ -420,7 +426,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
420 | //m_scene.PhysicsScene.AddPhysicsActorTaint(m_rootPart.PhysActor); | 426 | //m_scene.PhysicsScene.AddPhysicsActorTaint(m_rootPart.PhysActor); |
421 | //} | 427 | //} |
422 | 428 | ||
423 | m_scene.EventManager.TriggerParcelPrimCountTainted(); | 429 | if (Scene != null) |
430 | Scene.EventManager.TriggerParcelPrimCountTainted(); | ||
424 | } | 431 | } |
425 | } | 432 | } |
426 | 433 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs new file mode 100644 index 0000000..babcb54 --- /dev/null +++ b/OpenSim/Region/Framework/Scenes/Serialization/CoalescedSceneObjectsSerializer.cs | |||
@@ -0,0 +1,149 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Drawing; | ||
31 | using System.IO; | ||
32 | using System.Reflection; | ||
33 | using System.Xml; | ||
34 | using log4net; | ||
35 | using OpenMetaverse; | ||
36 | using OpenSim.Framework; | ||
37 | using OpenSim.Region.Framework.Interfaces; | ||
38 | using OpenSim.Region.Framework.Scenes; | ||
39 | |||
40 | namespace OpenSim.Region.Framework.Scenes.Serialization | ||
41 | { | ||
42 | /// <summary> | ||
43 | /// Serialize and deserialize coalesced scene objects. | ||
44 | /// </summary> | ||
45 | /// <remarks> | ||
46 | /// Deserialization not yet here. | ||
47 | /// </remarks> | ||
48 | public class CoalescedSceneObjectsSerializer | ||
49 | { | ||
50 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
51 | |||
52 | /// <summary> | ||
53 | /// Serialize coalesced objects to Xml | ||
54 | /// </summary> | ||
55 | /// <param name="coa"></param> | ||
56 | /// <returns></returns> | ||
57 | public static string ToXml(CoalescedSceneObjects coa) | ||
58 | { | ||
59 | using (StringWriter sw = new StringWriter()) | ||
60 | { | ||
61 | using (XmlTextWriter writer = new XmlTextWriter(sw)) | ||
62 | { | ||
63 | Vector3 size; | ||
64 | |||
65 | List<SceneObjectGroup> coaObjects = coa.Objects; | ||
66 | |||
67 | // m_log.DebugFormat( | ||
68 | // "[COALESCED SCENE OBJECTS SERIALIZER]: Writing {0} objects for coalesced object", | ||
69 | // coaObjects.Count); | ||
70 | |||
71 | // This is weak - we're relying on the set of coalesced objects still being identical | ||
72 | Vector3[] offsets = coa.GetSizeAndOffsets(out size); | ||
73 | |||
74 | writer.WriteStartElement("CoalescedObject"); | ||
75 | |||
76 | writer.WriteAttributeString("x", size.X.ToString()); | ||
77 | writer.WriteAttributeString("y", size.Y.ToString()); | ||
78 | writer.WriteAttributeString("z", size.Z.ToString()); | ||
79 | |||
80 | // Embed the offsets into the group XML | ||
81 | for (int i = 0; i < coaObjects.Count; i++) | ||
82 | { | ||
83 | SceneObjectGroup obj = coaObjects[i]; | ||
84 | |||
85 | // m_log.DebugFormat( | ||
86 | // "[COALESCED SCENE OBJECTS SERIALIZER]: Writing offset for object {0}, {1}", | ||
87 | // i, obj.Name); | ||
88 | |||
89 | writer.WriteStartElement("SceneObjectGroup"); | ||
90 | writer.WriteAttributeString("offsetx", offsets[i].X.ToString()); | ||
91 | writer.WriteAttributeString("offsety", offsets[i].Y.ToString()); | ||
92 | writer.WriteAttributeString("offsetz", offsets[i].Z.ToString()); | ||
93 | |||
94 | SceneObjectSerializer.ToOriginalXmlFormat(obj, writer, true); | ||
95 | |||
96 | writer.WriteEndElement(); // SceneObjectGroup | ||
97 | } | ||
98 | |||
99 | writer.WriteEndElement(); // CoalescedObject | ||
100 | } | ||
101 | |||
102 | string output = sw.ToString(); | ||
103 | |||
104 | // Console.WriteLine(output); | ||
105 | |||
106 | return output; | ||
107 | } | ||
108 | } | ||
109 | |||
110 | public static bool TryFromXml(string xml, out CoalescedSceneObjects coa) | ||
111 | { | ||
112 | // m_log.DebugFormat("[COALESCED SCENE OBJECTS SERIALIZER]: TryFromXml() deserializing {0}", xml); | ||
113 | |||
114 | coa = null; | ||
115 | |||
116 | using (StringReader sr = new StringReader(xml)) | ||
117 | { | ||
118 | using (XmlTextReader reader = new XmlTextReader(sr)) | ||
119 | { | ||
120 | reader.Read(); | ||
121 | if (reader.Name != "CoalescedObject") | ||
122 | { | ||
123 | // m_log.DebugFormat( | ||
124 | // "[COALESCED SCENE OBJECTS SERIALIZER]: TryFromXml() root element was {0} so returning false", | ||
125 | // reader.Name); | ||
126 | |||
127 | return false; | ||
128 | } | ||
129 | |||
130 | coa = new CoalescedSceneObjects(UUID.Zero); | ||
131 | reader.Read(); | ||
132 | |||
133 | while (reader.NodeType != XmlNodeType.EndElement && reader.Name != "CoalescedObject") | ||
134 | { | ||
135 | if (reader.Name == "SceneObjectGroup") | ||
136 | { | ||
137 | string soXml = reader.ReadOuterXml(); | ||
138 | coa.Add(SceneObjectSerializer.FromOriginalXmlFormat(soXml)); | ||
139 | } | ||
140 | } | ||
141 | |||
142 | reader.ReadEndElement(); // CoalescedObject | ||
143 | } | ||
144 | } | ||
145 | |||
146 | return true; | ||
147 | } | ||
148 | } | ||
149 | } \ No newline at end of file | ||
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs index b2b3ad9..769d8a5 100644 --- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs +++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs | |||
@@ -139,6 +139,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
139 | return sw.ToString(); | 139 | return sw.ToString(); |
140 | } | 140 | } |
141 | } | 141 | } |
142 | |||
142 | 143 | ||
143 | /// <summary> | 144 | /// <summary> |
144 | /// Serialize a scene object to the original xml format | 145 | /// Serialize a scene object to the original xml format |
@@ -147,10 +148,24 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
147 | /// <returns></returns> | 148 | /// <returns></returns> |
148 | public static void ToOriginalXmlFormat(SceneObjectGroup sceneObject, XmlTextWriter writer) | 149 | public static void ToOriginalXmlFormat(SceneObjectGroup sceneObject, XmlTextWriter writer) |
149 | { | 150 | { |
151 | ToOriginalXmlFormat(sceneObject, writer, false); | ||
152 | } | ||
153 | |||
154 | /// <summary> | ||
155 | /// Serialize a scene object to the original xml format | ||
156 | /// </summary> | ||
157 | /// <param name="sceneObject"></param> | ||
158 | /// <param name="writer"></param> | ||
159 | /// <param name="noRootElement">If false, don't write the enclosing SceneObjectGroup element</param> | ||
160 | /// <returns></returns> | ||
161 | public static void ToOriginalXmlFormat(SceneObjectGroup sceneObject, XmlTextWriter writer, bool noRootElement) | ||
162 | { | ||
150 | //m_log.DebugFormat("[SERIALIZER]: Starting serialization of {0}", Name); | 163 | //m_log.DebugFormat("[SERIALIZER]: Starting serialization of {0}", Name); |
151 | //int time = System.Environment.TickCount; | 164 | //int time = System.Environment.TickCount; |
152 | 165 | ||
153 | writer.WriteStartElement(String.Empty, "SceneObjectGroup", String.Empty); | 166 | if (!noRootElement) |
167 | writer.WriteStartElement(String.Empty, "SceneObjectGroup", String.Empty); | ||
168 | |||
154 | writer.WriteStartElement(String.Empty, "RootPart", String.Empty); | 169 | writer.WriteStartElement(String.Empty, "RootPart", String.Empty); |
155 | ToXmlFormat(sceneObject.RootPart, writer); | 170 | ToXmlFormat(sceneObject.RootPart, writer); |
156 | writer.WriteEndElement(); | 171 | writer.WriteEndElement(); |
@@ -170,10 +185,12 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
170 | 185 | ||
171 | writer.WriteEndElement(); // OtherParts | 186 | writer.WriteEndElement(); // OtherParts |
172 | sceneObject.SaveScriptedState(writer); | 187 | sceneObject.SaveScriptedState(writer); |
173 | writer.WriteEndElement(); // SceneObjectGroup | 188 | |
189 | if (!noRootElement) | ||
190 | writer.WriteEndElement(); // SceneObjectGroup | ||
174 | 191 | ||
175 | //m_log.DebugFormat("[SERIALIZER]: Finished serialization of SOG {0}, {1}ms", Name, System.Environment.TickCount - time); | 192 | //m_log.DebugFormat("[SERIALIZER]: Finished serialization of SOG {0}, {1}ms", Name, System.Environment.TickCount - time); |
176 | } | 193 | } |
177 | 194 | ||
178 | protected static void ToXmlFormat(SceneObjectPart part, XmlTextWriter writer) | 195 | protected static void ToXmlFormat(SceneObjectPart part, XmlTextWriter writer) |
179 | { | 196 | { |
@@ -1318,7 +1335,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
1318 | writer.WriteStartElement("SculptData"); | 1335 | writer.WriteStartElement("SculptData"); |
1319 | byte[] sd; | 1336 | byte[] sd; |
1320 | if (shp.SculptData != null) | 1337 | if (shp.SculptData != null) |
1321 | sd = shp.ExtraParams; | 1338 | sd = shp.SculptData; |
1322 | else | 1339 | else |
1323 | sd = Utils.EmptyBytes; | 1340 | sd = Utils.EmptyBytes; |
1324 | writer.WriteBase64(sd, 0, sd.Length); | 1341 | writer.WriteBase64(sd, 0, sd.Length); |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs index 8588f7f..dd28416 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/StandaloneTeleportTests.cs | |||
@@ -117,11 +117,11 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
117 | ISharedRegionModule interregionComms = new LocalSimulationConnectorModule(); | 117 | ISharedRegionModule interregionComms = new LocalSimulationConnectorModule(); |
118 | 118 | ||
119 | 119 | ||
120 | Scene sceneB = SceneSetupHelpers.SetupScene("sceneB", sceneBId, 1010, 1010, "grid"); | 120 | Scene sceneB = SceneSetupHelpers.SetupScene("sceneB", sceneBId, 1010, 1010); |
121 | SceneSetupHelpers.SetupSceneModules(sceneB, new IniConfigSource(), interregionComms); | 121 | SceneSetupHelpers.SetupSceneModules(sceneB, new IniConfigSource(), interregionComms); |
122 | sceneB.RegisterRegionWithGrid(); | 122 | sceneB.RegisterRegionWithGrid(); |
123 | 123 | ||
124 | Scene sceneA = SceneSetupHelpers.SetupScene("sceneA", sceneAId, 1000, 1000, "grid"); | 124 | Scene sceneA = SceneSetupHelpers.SetupScene("sceneA", sceneAId, 1000, 1000); |
125 | SceneSetupHelpers.SetupSceneModules(sceneA, new IniConfigSource(), interregionComms); | 125 | SceneSetupHelpers.SetupSceneModules(sceneA, new IniConfigSource(), interregionComms); |
126 | sceneA.RegisterRegionWithGrid(); | 126 | sceneA.RegisterRegionWithGrid(); |
127 | 127 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs index 8138bcc..2aef4b0 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/TaskInventoryTests.cs | |||
@@ -101,7 +101,7 @@ namespace OpenSim.Region.Framework.Tests | |||
101 | TestHelper.InMethod(); | 101 | TestHelper.InMethod(); |
102 | // log4net.Config.XmlConfigurator.Configure(); | 102 | // log4net.Config.XmlConfigurator.Configure(); |
103 | 103 | ||
104 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 104 | Scene scene = SceneSetupHelpers.SetupScene(); |
105 | UserAccount user1 = CreateUser(scene); | 105 | UserAccount user1 = CreateUser(scene); |
106 | SceneObjectGroup sog1 = CreateSO1(scene, user1.PrincipalID); | 106 | SceneObjectGroup sog1 = CreateSO1(scene, user1.PrincipalID); |
107 | SceneObjectPart sop1 = sog1.RootPart; | 107 | SceneObjectPart sop1 = sog1.RootPart; |
@@ -127,7 +127,7 @@ namespace OpenSim.Region.Framework.Tests | |||
127 | TestHelper.InMethod(); | 127 | TestHelper.InMethod(); |
128 | // log4net.Config.XmlConfigurator.Configure(); | 128 | // log4net.Config.XmlConfigurator.Configure(); |
129 | 129 | ||
130 | Scene scene = SceneSetupHelpers.SetupScene("inventory"); | 130 | Scene scene = SceneSetupHelpers.SetupScene(); |
131 | UserAccount user1 = CreateUser(scene); | 131 | UserAccount user1 = CreateUser(scene); |
132 | SceneObjectGroup sog1 = CreateSO1(scene, user1.PrincipalID); | 132 | SceneObjectGroup sog1 = CreateSO1(scene, user1.PrincipalID); |
133 | SceneObjectPart sop1 = sog1.RootPart; | 133 | SceneObjectPart sop1 = sog1.RootPart; |
diff --git a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs index 6b70865..dbf9e0f 100644 --- a/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs +++ b/OpenSim/Region/Framework/Scenes/Tests/UuidGathererTests.cs | |||
@@ -47,7 +47,9 @@ namespace OpenSim.Region.Framework.Scenes.Tests | |||
47 | [SetUp] | 47 | [SetUp] |
48 | public void Init() | 48 | public void Init() |
49 | { | 49 | { |
50 | m_assetService = new MockAssetService(); | 50 | // FIXME: We don't need a full scene here - it would be enough to set up the asset service. |
51 | Scene scene = SceneSetupHelpers.SetupScene(); | ||
52 | m_assetService = scene.AssetService; | ||
51 | m_uuidGatherer = new UuidGatherer(m_assetService); | 53 | m_uuidGatherer = new UuidGatherer(m_assetService); |
52 | } | 54 | } |
53 | 55 | ||
diff --git a/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETScene.cs b/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETScene.cs index 85e34c1..6df213d 100644 --- a/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETScene.cs +++ b/OpenSim/Region/Physics/BulletDotNETPlugin/BulletDotNETScene.cs | |||
@@ -648,6 +648,9 @@ namespace OpenSim.Region.Physics.BulletDotNETPlugin | |||
648 | if (pbs.ProfileHollow != 0) | 648 | if (pbs.ProfileHollow != 0) |
649 | iPropertiesNotSupportedDefault++; | 649 | iPropertiesNotSupportedDefault++; |
650 | 650 | ||
651 | if ((pbs.PathBegin != 0) || pbs.PathEnd != 0) | ||
652 | iPropertiesNotSupportedDefault++; | ||
653 | |||
651 | if ((pbs.PathTwistBegin != 0) || (pbs.PathTwist != 0)) | 654 | if ((pbs.PathTwistBegin != 0) || (pbs.PathTwist != 0)) |
652 | iPropertiesNotSupportedDefault++; | 655 | iPropertiesNotSupportedDefault++; |
653 | 656 | ||
diff --git a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs index eb97f41..a0101af 100644 --- a/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs +++ b/OpenSim/Region/Physics/OdePlugin/OdePlugin.cs | |||
@@ -2528,6 +2528,9 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
2528 | if (pbs.ProfileHollow != 0) | 2528 | if (pbs.ProfileHollow != 0) |
2529 | iPropertiesNotSupportedDefault++; | 2529 | iPropertiesNotSupportedDefault++; |
2530 | 2530 | ||
2531 | if ((pbs.PathBegin != 0) || pbs.PathEnd != 0) | ||
2532 | iPropertiesNotSupportedDefault++; | ||
2533 | |||
2531 | if ((pbs.PathTwistBegin != 0) || (pbs.PathTwist != 0)) | 2534 | if ((pbs.PathTwistBegin != 0) || (pbs.PathTwist != 0)) |
2532 | iPropertiesNotSupportedDefault++; | 2535 | iPropertiesNotSupportedDefault++; |
2533 | 2536 | ||
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index cda8adb..f4aefac 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -8052,7 +8052,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
8052 | 8052 | ||
8053 | // This BBox is in sim coordinates, with the offset being | 8053 | // This BBox is in sim coordinates, with the offset being |
8054 | // a contained point. | 8054 | // a contained point. |
8055 | Vector3[] offsets = World.GetCombinedBoundingBox(new List<SceneObjectGroup> { part.ParentGroup }, | 8055 | Vector3[] offsets = Scene.GetCombinedBoundingBox(new List<SceneObjectGroup> { part.ParentGroup }, |
8056 | out minX, out maxX, out minY, out maxY, out minZ, out maxZ); | 8056 | out minX, out maxX, out minY, out maxY, out minZ, out maxZ); |
8057 | 8057 | ||
8058 | minX -= offsets[0].X; | 8058 | minX -= offsets[0].X; |
diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index c29bce8..acbd2b1 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs | |||
@@ -89,6 +89,8 @@ namespace OpenSim.Services.AssetService | |||
89 | 89 | ||
90 | public virtual AssetBase Get(string id) | 90 | public virtual AssetBase Get(string id) |
91 | { | 91 | { |
92 | // m_log.DebugFormat("[ASSET SERVICE]: Get asset for {0}", id); | ||
93 | |||
92 | UUID assetID; | 94 | UUID assetID; |
93 | 95 | ||
94 | if (!UUID.TryParse(id, out assetID)) | 96 | if (!UUID.TryParse(id, out assetID)) |
@@ -107,6 +109,8 @@ namespace OpenSim.Services.AssetService | |||
107 | 109 | ||
108 | public virtual AssetMetadata GetMetadata(string id) | 110 | public virtual AssetMetadata GetMetadata(string id) |
109 | { | 111 | { |
112 | // m_log.DebugFormat("[ASSET SERVICE]: Get asset metadata for {0}", id); | ||
113 | |||
110 | UUID assetID; | 114 | UUID assetID; |
111 | 115 | ||
112 | if (!UUID.TryParse(id, out assetID)) | 116 | if (!UUID.TryParse(id, out assetID)) |
@@ -121,6 +125,8 @@ namespace OpenSim.Services.AssetService | |||
121 | 125 | ||
122 | public virtual byte[] GetData(string id) | 126 | public virtual byte[] GetData(string id) |
123 | { | 127 | { |
128 | // m_log.DebugFormat("[ASSET SERVICE]: Get asset data for {0}", id); | ||
129 | |||
124 | UUID assetID; | 130 | UUID assetID; |
125 | 131 | ||
126 | if (!UUID.TryParse(id, out assetID)) | 132 | if (!UUID.TryParse(id, out assetID)) |
diff --git a/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs b/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs index ad18a23..565e4f2 100644 --- a/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs +++ b/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs | |||
@@ -35,7 +35,6 @@ using Nini.Config; | |||
35 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using OpenSim.Framework.Console; | 36 | using OpenSim.Framework.Console; |
37 | using OpenSim.Framework.Communications; | 37 | using OpenSim.Framework.Communications; |
38 | using OpenSim.Framework.Servers.HttpServer; | ||
39 | using OpenSim.Services.Interfaces; | 38 | using OpenSim.Services.Interfaces; |
40 | using OpenMetaverse; | 39 | using OpenMetaverse; |
41 | 40 | ||
diff --git a/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs b/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs index 6f77a2d..c04e7a4 100644 --- a/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Authentication/AuthenticationServiceConnector.cs | |||
@@ -33,7 +33,6 @@ using System.Reflection; | |||
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Services.Interfaces; | 36 | using OpenSim.Services.Interfaces; |
38 | using OpenSim.Server.Base; | 37 | using OpenSim.Server.Base; |
39 | using OpenMetaverse; | 38 | using OpenMetaverse; |
diff --git a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs index 4eb4bd2..35b7109 100644 --- a/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Authorization/AuthorizationServiceConnector.cs | |||
@@ -33,7 +33,6 @@ using System.Reflection; | |||
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Services.Interfaces; | 36 | using OpenSim.Services.Interfaces; |
38 | using OpenMetaverse; | 37 | using OpenMetaverse; |
39 | 38 | ||
diff --git a/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs b/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs index 1cd6bf8..1a93ae7 100644 --- a/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs +++ b/OpenSim/Services/Connectors/Avatar/AvatarServiceConnector.cs | |||
@@ -33,7 +33,6 @@ using System.Reflection; | |||
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Services.Interfaces; | 36 | using OpenSim.Services.Interfaces; |
38 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 37 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
39 | using IAvatarService = OpenSim.Services.Interfaces.IAvatarService; | 38 | using IAvatarService = OpenSim.Services.Interfaces.IAvatarService; |
diff --git a/OpenSim/Services/Connectors/Freeswitch/RemoteFreeswitchConnector.cs b/OpenSim/Services/Connectors/Freeswitch/RemoteFreeswitchConnector.cs index c9bba0b..d688299 100644 --- a/OpenSim/Services/Connectors/Freeswitch/RemoteFreeswitchConnector.cs +++ b/OpenSim/Services/Connectors/Freeswitch/RemoteFreeswitchConnector.cs | |||
@@ -33,7 +33,6 @@ using System.Reflection; | |||
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Services.Interfaces; | 36 | using OpenSim.Services.Interfaces; |
38 | using OpenSim.Server.Base; | 37 | using OpenSim.Server.Base; |
39 | using OpenMetaverse; | 38 | using OpenMetaverse; |
diff --git a/OpenSim/Services/Connectors/Friends/FriendsServiceConnector.cs b/OpenSim/Services/Connectors/Friends/FriendsServiceConnector.cs index 36b5083..861c475 100644 --- a/OpenSim/Services/Connectors/Friends/FriendsServiceConnector.cs +++ b/OpenSim/Services/Connectors/Friends/FriendsServiceConnector.cs | |||
@@ -33,7 +33,6 @@ using System.Reflection; | |||
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Services.Interfaces; | 36 | using OpenSim.Services.Interfaces; |
38 | using FriendInfo = OpenSim.Services.Interfaces.FriendInfo; | 37 | using FriendInfo = OpenSim.Services.Interfaces.FriendInfo; |
39 | using OpenSim.Server.Base; | 38 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs b/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs index 0a7b277..4ffa68c 100644 --- a/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs +++ b/OpenSim/Services/Connectors/Friends/FriendsSimConnector.cs | |||
@@ -32,7 +32,7 @@ using System.Reflection; | |||
32 | using OpenSim.Services.Interfaces; | 32 | using OpenSim.Services.Interfaces; |
33 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 33 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
34 | using OpenSim.Server.Base; | 34 | using OpenSim.Server.Base; |
35 | using OpenSim.Framework.Servers.HttpServer; | 35 | using OpenSim.Framework; |
36 | 36 | ||
37 | using OpenMetaverse; | 37 | using OpenMetaverse; |
38 | using log4net; | 38 | using log4net; |
diff --git a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs index 5092d74..e57f28b 100644 --- a/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs +++ b/OpenSim/Services/Connectors/Grid/GridServiceConnector.cs | |||
@@ -33,7 +33,6 @@ using System.Reflection; | |||
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Services.Interfaces; | 36 | using OpenSim.Services.Interfaces; |
38 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 37 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
39 | using OpenSim.Server.Base; | 38 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs b/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs index b3ea865..738cc06 100644 --- a/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs +++ b/OpenSim/Services/Connectors/GridUser/GridUserServiceConnector.cs | |||
@@ -33,7 +33,6 @@ using System.Reflection; | |||
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Services.Interfaces; | 36 | using OpenSim.Services.Interfaces; |
38 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 37 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
39 | using OpenSim.Server.Base; | 38 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs b/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs index b3bfcc2..cd9f2bf 100644 --- a/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/XInventoryConnector.cs | |||
@@ -34,7 +34,6 @@ using Nini.Config; | |||
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Console; | 35 | using OpenSim.Framework.Console; |
36 | using OpenSim.Framework.Communications; | 36 | using OpenSim.Framework.Communications; |
37 | using OpenSim.Framework.Servers.HttpServer; | ||
38 | using OpenSim.Services.Interfaces; | 37 | using OpenSim.Services.Interfaces; |
39 | using OpenSim.Server.Base; | 38 | using OpenSim.Server.Base; |
40 | using OpenMetaverse; | 39 | using OpenMetaverse; |
diff --git a/OpenSim/Services/Connectors/Land/LandServiceConnector.cs b/OpenSim/Services/Connectors/Land/LandServiceConnector.cs index ba39c99..833e22a 100644 --- a/OpenSim/Services/Connectors/Land/LandServiceConnector.cs +++ b/OpenSim/Services/Connectors/Land/LandServiceConnector.cs | |||
@@ -34,7 +34,6 @@ using System.Reflection; | |||
34 | using Nini.Config; | 34 | using Nini.Config; |
35 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using OpenSim.Framework.Communications; | 36 | using OpenSim.Framework.Communications; |
37 | using OpenSim.Framework.Servers.HttpServer; | ||
38 | using OpenSim.Services.Interfaces; | 37 | using OpenSim.Services.Interfaces; |
39 | using OpenMetaverse; | 38 | using OpenMetaverse; |
40 | using Nwc.XmlRpc; | 39 | using Nwc.XmlRpc; |
diff --git a/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs b/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs index 9e444c4..2cae02d 100644 --- a/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs +++ b/OpenSim/Services/Connectors/Neighbour/NeighbourServiceConnector.cs | |||
@@ -36,7 +36,6 @@ using System.Text; | |||
36 | using Nini.Config; | 36 | using Nini.Config; |
37 | using OpenSim.Framework; | 37 | using OpenSim.Framework; |
38 | using OpenSim.Framework.Communications; | 38 | using OpenSim.Framework.Communications; |
39 | using OpenSim.Framework.Servers.HttpServer; | ||
40 | using OpenSim.Services.Interfaces; | 39 | using OpenSim.Services.Interfaces; |
41 | using OpenMetaverse; | 40 | using OpenMetaverse; |
42 | using OpenMetaverse.StructuredData; | 41 | using OpenMetaverse.StructuredData; |
diff --git a/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs b/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs index f1c99ce..e16dc36 100644 --- a/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs +++ b/OpenSim/Services/Connectors/Presence/PresenceServiceConnector.cs | |||
@@ -33,7 +33,6 @@ using System.Reflection; | |||
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Services.Interfaces; | 36 | using OpenSim.Services.Interfaces; |
38 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; | 37 | using GridRegion = OpenSim.Services.Interfaces.GridRegion; |
39 | using OpenSim.Server.Base; | 38 | using OpenSim.Server.Base; |
diff --git a/OpenSim/Services/Connectors/UserAccounts/UserAccountServiceConnector.cs b/OpenSim/Services/Connectors/UserAccounts/UserAccountServiceConnector.cs index 205a4aa..60f3abe 100644 --- a/OpenSim/Services/Connectors/UserAccounts/UserAccountServiceConnector.cs +++ b/OpenSim/Services/Connectors/UserAccounts/UserAccountServiceConnector.cs | |||
@@ -33,7 +33,6 @@ using System.Reflection; | |||
33 | using Nini.Config; | 33 | using Nini.Config; |
34 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using OpenSim.Framework.Communications; | 35 | using OpenSim.Framework.Communications; |
36 | using OpenSim.Framework.Servers.HttpServer; | ||
37 | using OpenSim.Server.Base; | 36 | using OpenSim.Server.Base; |
38 | using OpenSim.Services.Interfaces; | 37 | using OpenSim.Services.Interfaces; |
39 | using OpenMetaverse; | 38 | using OpenMetaverse; |
diff --git a/OpenSim/Services/Interfaces/IAssetService.cs b/OpenSim/Services/Interfaces/IAssetService.cs index 3be6815..1ac1cec 100644 --- a/OpenSim/Services/Interfaces/IAssetService.cs +++ b/OpenSim/Services/Interfaces/IAssetService.cs | |||
@@ -48,6 +48,11 @@ namespace OpenSim.Services.Interfaces | |||
48 | /// <returns></returns> | 48 | /// <returns></returns> |
49 | AssetMetadata GetMetadata(string id); | 49 | AssetMetadata GetMetadata(string id); |
50 | 50 | ||
51 | /// <summary> | ||
52 | /// Get an asset's data, ignoring the metadata. | ||
53 | /// </summary> | ||
54 | /// <param name="id"></param> | ||
55 | /// <returns>null if there is no such asset</returns> | ||
51 | byte[] GetData(string id); | 56 | byte[] GetData(string id); |
52 | 57 | ||
53 | /// <summary> | 58 | /// <summary> |
diff --git a/OpenSim/Tests/Common/Mock/MockAssetService.cs b/OpenSim/Tests/Common/Mock/MockAssetService.cs deleted file mode 100644 index 4118308..0000000 --- a/OpenSim/Tests/Common/Mock/MockAssetService.cs +++ /dev/null | |||
@@ -1,109 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Reflection; | ||
31 | using log4net; | ||
32 | using OpenMetaverse; | ||
33 | using OpenSim.Framework; | ||
34 | using OpenSim.Data; | ||
35 | using OpenSim.Services.Interfaces; | ||
36 | using Nini.Config; | ||
37 | |||
38 | namespace OpenSim.Tests.Common.Mock | ||
39 | { | ||
40 | public class MockAssetService : IAssetService | ||
41 | { | ||
42 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||
43 | |||
44 | private readonly Dictionary<string, AssetBase> Assets = new Dictionary<string, AssetBase>(); | ||
45 | |||
46 | public MockAssetService() {} | ||
47 | |||
48 | /// <summary> | ||
49 | /// This constructor is required if the asset service is being created reflectively (which is the case in some | ||
50 | /// tests). | ||
51 | /// </summary> | ||
52 | /// <param name="config"></param> | ||
53 | public MockAssetService(IConfigSource config) {} | ||
54 | |||
55 | public AssetBase Get(string id) | ||
56 | { | ||
57 | m_log.DebugFormat("[MOCK ASSET SERVICE]: Getting asset with id {0}", id); | ||
58 | |||
59 | AssetBase asset; | ||
60 | if (Assets.ContainsKey(id)) | ||
61 | asset = Assets[id]; | ||
62 | else | ||
63 | asset = null; | ||
64 | |||
65 | return asset; | ||
66 | } | ||
67 | |||
68 | public AssetBase GetCached(string id) | ||
69 | { | ||
70 | return Get(id); | ||
71 | } | ||
72 | |||
73 | public AssetMetadata GetMetadata(string id) | ||
74 | { | ||
75 | throw new System.NotImplementedException(); | ||
76 | } | ||
77 | |||
78 | public byte[] GetData(string id) | ||
79 | { | ||
80 | throw new System.NotImplementedException(); | ||
81 | } | ||
82 | |||
83 | public bool Get(string id, object sender, AssetRetrieved handler) | ||
84 | { | ||
85 | handler(id, sender, Get(id)); | ||
86 | |||
87 | return true; | ||
88 | } | ||
89 | |||
90 | public string Store(AssetBase asset) | ||
91 | { | ||
92 | m_log.DebugFormat("[MOCK ASSET SERVICE]: Storing asset {0}", asset.ID); | ||
93 | |||
94 | Assets[asset.ID] = asset; | ||
95 | |||
96 | return asset.ID; | ||
97 | } | ||
98 | |||
99 | public bool UpdateContent(string id, byte[] data) | ||
100 | { | ||
101 | throw new System.NotImplementedException(); | ||
102 | } | ||
103 | |||
104 | public bool Delete(string id) | ||
105 | { | ||
106 | throw new System.NotImplementedException(); | ||
107 | } | ||
108 | } | ||
109 | } \ No newline at end of file | ||
diff --git a/OpenSim/Tests/Common/Mock/MockInventoryService.cs b/OpenSim/Tests/Common/Mock/MockInventoryService.cs deleted file mode 100644 index 4ac1078..0000000 --- a/OpenSim/Tests/Common/Mock/MockInventoryService.cs +++ /dev/null | |||
@@ -1,186 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Text; | ||
31 | using OpenSim.Framework; | ||
32 | using OpenMetaverse; | ||
33 | using OpenSim.Services.Interfaces; | ||
34 | using Nini.Config; | ||
35 | |||
36 | namespace OpenSim.Tests.Common.Mock | ||
37 | { | ||
38 | public class MockInventoryService : IInventoryService | ||
39 | { | ||
40 | public MockInventoryService() {} | ||
41 | |||
42 | public MockInventoryService(IConfigSource config) {} | ||
43 | |||
44 | /// <summary> | ||
45 | /// <see cref="OpenSim.Framework.Communications.IInterServiceInventoryServices"/> | ||
46 | /// </summary> | ||
47 | /// <param name="userId"></param> | ||
48 | /// <returns></returns> | ||
49 | public bool CreateUserInventory(UUID userId) | ||
50 | { | ||
51 | return false; | ||
52 | } | ||
53 | |||
54 | /// <summary> | ||
55 | /// <see cref="OpenSim.Framework.Communications.IInterServiceInventoryServices"/> | ||
56 | /// </summary> | ||
57 | /// <param name="userId"></param> | ||
58 | /// <returns></returns> | ||
59 | public List<InventoryFolderBase> GetInventorySkeleton(UUID userId) | ||
60 | { | ||
61 | List<InventoryFolderBase> folders = new List<InventoryFolderBase>(); | ||
62 | InventoryFolderBase folder = new InventoryFolderBase(); | ||
63 | folder.ID = UUID.Random(); | ||
64 | folder.Owner = userId; | ||
65 | folders.Add(folder); | ||
66 | return folders; | ||
67 | } | ||
68 | |||
69 | public InventoryFolderBase GetRootFolder(UUID userID) | ||
70 | { | ||
71 | return new InventoryFolderBase(); | ||
72 | } | ||
73 | |||
74 | public InventoryCollection GetFolderContent(UUID userID, UUID folderID) | ||
75 | { | ||
76 | return null; | ||
77 | } | ||
78 | |||
79 | public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) | ||
80 | { | ||
81 | return null; | ||
82 | } | ||
83 | |||
84 | /// <summary> | ||
85 | /// Returns a list of all the active gestures in a user's inventory. | ||
86 | /// </summary> | ||
87 | /// <param name="userId"> | ||
88 | /// The <see cref="UUID"/> of the user | ||
89 | /// </param> | ||
90 | /// <returns> | ||
91 | /// A flat list of the gesture items. | ||
92 | /// </returns> | ||
93 | public List<InventoryItemBase> GetActiveGestures(UUID userId) | ||
94 | { | ||
95 | return null; | ||
96 | } | ||
97 | |||
98 | public InventoryCollection GetUserInventory(UUID userID) | ||
99 | { | ||
100 | return null; | ||
101 | } | ||
102 | |||
103 | public void GetUserInventory(UUID userID, OpenSim.Services.Interfaces.InventoryReceiptCallback callback) | ||
104 | { | ||
105 | } | ||
106 | |||
107 | public List<InventoryItemBase> GetFolderItems(UUID userID, UUID folderID) | ||
108 | { | ||
109 | return null; | ||
110 | } | ||
111 | |||
112 | public bool AddFolder(InventoryFolderBase folder) | ||
113 | { | ||
114 | return false; | ||
115 | } | ||
116 | |||
117 | public bool UpdateFolder(InventoryFolderBase folder) | ||
118 | { | ||
119 | return false; | ||
120 | } | ||
121 | |||
122 | public bool MoveFolder(InventoryFolderBase folder) | ||
123 | { | ||
124 | return false; | ||
125 | } | ||
126 | |||
127 | public bool DeleteFolders(UUID ownerID, List<UUID> ids) | ||
128 | { | ||
129 | return false; | ||
130 | } | ||
131 | |||
132 | public bool PurgeFolder(InventoryFolderBase folder) | ||
133 | { | ||
134 | return false; | ||
135 | } | ||
136 | |||
137 | public bool AddItem(InventoryItemBase item) | ||
138 | { | ||
139 | return true; | ||
140 | } | ||
141 | |||
142 | public bool UpdateItem(InventoryItemBase item) | ||
143 | { | ||
144 | return false; | ||
145 | } | ||
146 | |||
147 | public bool MoveItems(UUID ownerID, List<InventoryItemBase> items) | ||
148 | { | ||
149 | return false; | ||
150 | } | ||
151 | |||
152 | public bool DeleteItems(UUID ownerID, List<UUID> itemIDs) | ||
153 | { | ||
154 | return false; | ||
155 | } | ||
156 | |||
157 | public InventoryItemBase GetItem(InventoryItemBase item) | ||
158 | { | ||
159 | return null; | ||
160 | } | ||
161 | |||
162 | public InventoryFolderBase GetFolder(InventoryFolderBase folder) | ||
163 | { | ||
164 | return null; | ||
165 | } | ||
166 | |||
167 | public bool HasInventoryForUser(UUID userID) | ||
168 | { | ||
169 | return false; | ||
170 | } | ||
171 | |||
172 | public InventoryFolderBase RequestRootFolder(UUID userID) | ||
173 | { | ||
174 | InventoryFolderBase root = new InventoryFolderBase(); | ||
175 | root.ID = UUID.Random(); | ||
176 | root.Owner = userID; | ||
177 | root.ParentID = UUID.Zero; | ||
178 | return root; | ||
179 | } | ||
180 | |||
181 | public int GetAssetPermissions(UUID userID, UUID assetID) | ||
182 | { | ||
183 | return 1; | ||
184 | } | ||
185 | } | ||
186 | } \ No newline at end of file | ||
diff --git a/OpenSim/Tests/Common/Setup/AssetHelpers.cs b/OpenSim/Tests/Common/Setup/AssetHelpers.cs index ff4423f..d572249 100644 --- a/OpenSim/Tests/Common/Setup/AssetHelpers.cs +++ b/OpenSim/Tests/Common/Setup/AssetHelpers.cs | |||
@@ -30,6 +30,7 @@ using OpenMetaverse; | |||
30 | using OpenSim.Framework; | 30 | using OpenSim.Framework; |
31 | using OpenSim.Region.Framework.Scenes; | 31 | using OpenSim.Region.Framework.Scenes; |
32 | using OpenSim.Region.Framework.Scenes.Serialization; | 32 | using OpenSim.Region.Framework.Scenes.Serialization; |
33 | using OpenSim.Services.Interfaces; | ||
33 | 34 | ||
34 | namespace OpenSim.Tests.Common | 35 | namespace OpenSim.Tests.Common |
35 | { | 36 | { |
@@ -55,7 +56,7 @@ namespace OpenSim.Tests.Common | |||
55 | AssetBase asset = CreateAsset(UUID.Random(), AssetType.Notecard, "hello", creatorId); | 56 | AssetBase asset = CreateAsset(UUID.Random(), AssetType.Notecard, "hello", creatorId); |
56 | scene.AssetService.Store(asset); | 57 | scene.AssetService.Store(asset); |
57 | return asset; | 58 | return asset; |
58 | } | 59 | } |
59 | 60 | ||
60 | /// <summary> | 61 | /// <summary> |
61 | /// Create an asset from the given scene object. | 62 | /// Create an asset from the given scene object. |
@@ -71,6 +72,35 @@ namespace OpenSim.Tests.Common | |||
71 | Encoding.ASCII.GetBytes(SceneObjectSerializer.ToOriginalXmlFormat(sog)), | 72 | Encoding.ASCII.GetBytes(SceneObjectSerializer.ToOriginalXmlFormat(sog)), |
72 | sog.OwnerID); | 73 | sog.OwnerID); |
73 | } | 74 | } |
75 | |||
76 | /// <summary> | ||
77 | /// Create an asset from the given scene object. | ||
78 | /// </summary> | ||
79 | /// <param name="assetUuidTailZ"> | ||
80 | /// The hexadecimal last part of the UUID for the asset created. A UUID of the form "00000000-0000-0000-0000-{0:XD12}" | ||
81 | /// will be used. | ||
82 | /// </param> | ||
83 | /// <param name="coa"></param> | ||
84 | /// <returns></returns> | ||
85 | public static AssetBase CreateAsset(int assetUuidTail, CoalescedSceneObjects coa) | ||
86 | { | ||
87 | return CreateAsset(new UUID(string.Format("00000000-0000-0000-0000-{0:X12}", assetUuidTail)), coa); | ||
88 | } | ||
89 | |||
90 | /// <summary> | ||
91 | /// Create an asset from the given scene object. | ||
92 | /// </summary> | ||
93 | /// <param name="assetUuid"></param> | ||
94 | /// <param name="coa"></param> | ||
95 | /// <returns></returns> | ||
96 | public static AssetBase CreateAsset(UUID assetUuid, CoalescedSceneObjects coa) | ||
97 | { | ||
98 | return CreateAsset( | ||
99 | assetUuid, | ||
100 | AssetType.Object, | ||
101 | Encoding.ASCII.GetBytes(CoalescedSceneObjectsSerializer.ToXml(coa)), | ||
102 | coa.CreatorId); | ||
103 | } | ||
74 | 104 | ||
75 | /// <summary> | 105 | /// <summary> |
76 | /// Create an asset from the given data. | 106 | /// Create an asset from the given data. |
@@ -89,5 +119,11 @@ namespace OpenSim.Tests.Common | |||
89 | asset.Data = data; | 119 | asset.Data = data; |
90 | return asset; | 120 | return asset; |
91 | } | 121 | } |
122 | |||
123 | public static string ReadAssetAsString(IAssetService assetService, UUID uuid) | ||
124 | { | ||
125 | byte[] assetData = assetService.GetData(uuid.ToString()); | ||
126 | return Encoding.ASCII.GetString(assetData); | ||
127 | } | ||
92 | } | 128 | } |
93 | } | 129 | } |
diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs index 709dd78..99517d2 100644 --- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs +++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs | |||
@@ -66,32 +66,7 @@ namespace OpenSim.Tests.Common.Setup | |||
66 | /// <returns></returns> | 66 | /// <returns></returns> |
67 | public static TestScene SetupScene() | 67 | public static TestScene SetupScene() |
68 | { | 68 | { |
69 | return SetupScene(""); | 69 | return SetupScene("Unit test region", UUID.Random(), 1000, 1000); |
70 | } | ||
71 | |||
72 | /// <summary> | ||
73 | /// Set up a test scene | ||
74 | /// </summary> | ||
75 | /// | ||
76 | /// <param name="realServices">Starts real inventory and asset services, as opposed to mock ones, if true</param> | ||
77 | /// <returns></returns> | ||
78 | public static TestScene SetupScene(String realServices) | ||
79 | { | ||
80 | return SetupScene("Unit test region", UUID.Random(), 1000, 1000, realServices); | ||
81 | } | ||
82 | |||
83 | /// <summary> | ||
84 | /// Set up a test scene | ||
85 | /// </summary> | ||
86 | /// <param name="name">Name of the region</param> | ||
87 | /// <param name="id">ID of the region</param> | ||
88 | /// <param name="x">X co-ordinate of the region</param> | ||
89 | /// <param name="y">Y co-ordinate of the region</param> | ||
90 | /// <param name="cm">This should be the same if simulating two scenes within a standalone</param> | ||
91 | /// <returns></returns> | ||
92 | public static TestScene SetupScene(string name, UUID id, uint x, uint y) | ||
93 | { | ||
94 | return SetupScene(name, id, x, y, ""); | ||
95 | } | 70 | } |
96 | 71 | ||
97 | /// <summary> | 72 | /// <summary> |
@@ -103,10 +78,8 @@ namespace OpenSim.Tests.Common.Setup | |||
103 | /// <param name="x">X co-ordinate of the region</param> | 78 | /// <param name="x">X co-ordinate of the region</param> |
104 | /// <param name="y">Y co-ordinate of the region</param> | 79 | /// <param name="y">Y co-ordinate of the region</param> |
105 | /// <param name="cm">This should be the same if simulating two scenes within a standalone</param> | 80 | /// <param name="cm">This should be the same if simulating two scenes within a standalone</param> |
106 | /// <param name="realServices">Starts real inventory and asset services, as opposed to mock ones, if true</param> | ||
107 | /// <returns></returns> | 81 | /// <returns></returns> |
108 | public static TestScene SetupScene( | 82 | public static TestScene SetupScene(string name, UUID id, uint x, uint y) |
109 | string name, UUID id, uint x, uint y, String realServices) | ||
110 | { | 83 | { |
111 | Console.WriteLine("Setting up test scene {0}", name); | 84 | Console.WriteLine("Setting up test scene {0}", name); |
112 | 85 | ||
@@ -130,15 +103,11 @@ namespace OpenSim.Tests.Common.Setup | |||
130 | IRegionModule godsModule = new GodsModule(); | 103 | IRegionModule godsModule = new GodsModule(); |
131 | godsModule.Initialise(testScene, new IniConfigSource()); | 104 | godsModule.Initialise(testScene, new IniConfigSource()); |
132 | testScene.AddModule(godsModule.Name, godsModule); | 105 | testScene.AddModule(godsModule.Name, godsModule); |
133 | realServices = realServices.ToLower(); | ||
134 | |||
135 | LocalAssetServicesConnector assetService = StartAssetService(testScene, realServices.Contains("asset")); | ||
136 | |||
137 | // For now, always started a 'real' authentication service | ||
138 | StartAuthenticationService(testScene, true); | ||
139 | 106 | ||
140 | LocalInventoryServicesConnector inventoryService = StartInventoryService(testScene, realServices.Contains("inventory")); | 107 | LocalAssetServicesConnector assetService = StartAssetService(testScene); |
141 | StartGridService(testScene, true); | 108 | StartAuthenticationService(testScene); |
109 | LocalInventoryServicesConnector inventoryService = StartInventoryService(testScene); | ||
110 | StartGridService(testScene); | ||
142 | LocalUserAccountServicesConnector userAccountService = StartUserAccountService(testScene); | 111 | LocalUserAccountServicesConnector userAccountService = StartUserAccountService(testScene); |
143 | LocalPresenceServicesConnector presenceService = StartPresenceService(testScene); | 112 | LocalPresenceServicesConnector presenceService = StartPresenceService(testScene); |
144 | 113 | ||
@@ -164,18 +133,17 @@ namespace OpenSim.Tests.Common.Setup | |||
164 | return testScene; | 133 | return testScene; |
165 | } | 134 | } |
166 | 135 | ||
167 | private static LocalAssetServicesConnector StartAssetService(Scene testScene, bool real) | 136 | private static LocalAssetServicesConnector StartAssetService(Scene testScene) |
168 | { | 137 | { |
169 | LocalAssetServicesConnector assetService = new LocalAssetServicesConnector(); | 138 | LocalAssetServicesConnector assetService = new LocalAssetServicesConnector(); |
170 | IConfigSource config = new IniConfigSource(); | 139 | IConfigSource config = new IniConfigSource(); |
171 | config.AddConfig("Modules"); | 140 | |
141 | config.AddConfig("Modules"); | ||
142 | config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); | ||
172 | config.AddConfig("AssetService"); | 143 | config.AddConfig("AssetService"); |
173 | config.Configs["Modules"].Set("AssetServices", "LocalAssetServicesConnector"); | 144 | config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); |
174 | if (real) | ||
175 | config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Services.AssetService.dll:AssetService"); | ||
176 | else | ||
177 | config.Configs["AssetService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:MockAssetService"); | ||
178 | config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); | 145 | config.Configs["AssetService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); |
146 | |||
179 | assetService.Initialise(config); | 147 | assetService.Initialise(config); |
180 | assetService.AddRegion(testScene); | 148 | assetService.AddRegion(testScene); |
181 | assetService.RegionLoaded(testScene); | 149 | assetService.RegionLoaded(testScene); |
@@ -184,20 +152,18 @@ namespace OpenSim.Tests.Common.Setup | |||
184 | return assetService; | 152 | return assetService; |
185 | } | 153 | } |
186 | 154 | ||
187 | private static void StartAuthenticationService(Scene testScene, bool real) | 155 | private static void StartAuthenticationService(Scene testScene) |
188 | { | 156 | { |
189 | ISharedRegionModule service = new LocalAuthenticationServicesConnector(); | 157 | ISharedRegionModule service = new LocalAuthenticationServicesConnector(); |
190 | IConfigSource config = new IniConfigSource(); | 158 | IConfigSource config = new IniConfigSource(); |
159 | |||
191 | config.AddConfig("Modules"); | 160 | config.AddConfig("Modules"); |
192 | config.AddConfig("AuthenticationService"); | 161 | config.AddConfig("AuthenticationService"); |
193 | config.Configs["Modules"].Set("AuthenticationServices", "LocalAuthenticationServicesConnector"); | 162 | config.Configs["Modules"].Set("AuthenticationServices", "LocalAuthenticationServicesConnector"); |
194 | if (real) | 163 | config.Configs["AuthenticationService"].Set( |
195 | config.Configs["AuthenticationService"].Set( | 164 | "LocalServiceModule", "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"); |
196 | "LocalServiceModule", "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"); | ||
197 | else | ||
198 | config.Configs["AuthenticationService"].Set( | ||
199 | "LocalServiceModule", "OpenSim.Tests.Common.dll:MockAuthenticationService"); | ||
200 | config.Configs["AuthenticationService"].Set("StorageProvider", "OpenSim.Data.Null.dll"); | 165 | config.Configs["AuthenticationService"].Set("StorageProvider", "OpenSim.Data.Null.dll"); |
166 | |||
201 | service.Initialise(config); | 167 | service.Initialise(config); |
202 | service.AddRegion(testScene); | 168 | service.AddRegion(testScene); |
203 | service.RegionLoaded(testScene); | 169 | service.RegionLoaded(testScene); |
@@ -205,24 +171,17 @@ namespace OpenSim.Tests.Common.Setup | |||
205 | //m_authenticationService = service; | 171 | //m_authenticationService = service; |
206 | } | 172 | } |
207 | 173 | ||
208 | private static LocalInventoryServicesConnector StartInventoryService(Scene testScene, bool real) | 174 | private static LocalInventoryServicesConnector StartInventoryService(Scene testScene) |
209 | { | 175 | { |
210 | LocalInventoryServicesConnector inventoryService = new LocalInventoryServicesConnector(); | 176 | LocalInventoryServicesConnector inventoryService = new LocalInventoryServicesConnector(); |
211 | IConfigSource config = new IniConfigSource(); | 177 | |
178 | IConfigSource config = new IniConfigSource(); | ||
212 | config.AddConfig("Modules"); | 179 | config.AddConfig("Modules"); |
213 | config.AddConfig("InventoryService"); | 180 | config.AddConfig("InventoryService"); |
214 | config.Configs["Modules"].Set("InventoryServices", "LocalInventoryServicesConnector"); | 181 | config.Configs["Modules"].Set("InventoryServices", "LocalInventoryServicesConnector"); |
215 | 182 | config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:InventoryService"); | |
216 | if (real) | ||
217 | { | ||
218 | config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Services.InventoryService.dll:InventoryService"); | ||
219 | } | ||
220 | else | ||
221 | { | ||
222 | config.Configs["InventoryService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:MockInventoryService"); | ||
223 | } | ||
224 | |||
225 | config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); | 183 | config.Configs["InventoryService"].Set("StorageProvider", "OpenSim.Tests.Common.dll"); |
184 | |||
226 | inventoryService.Initialise(config); | 185 | inventoryService.Initialise(config); |
227 | inventoryService.AddRegion(testScene); | 186 | inventoryService.AddRegion(testScene); |
228 | inventoryService.RegionLoaded(testScene); | 187 | inventoryService.RegionLoaded(testScene); |
@@ -231,24 +190,19 @@ namespace OpenSim.Tests.Common.Setup | |||
231 | return inventoryService; | 190 | return inventoryService; |
232 | } | 191 | } |
233 | 192 | ||
234 | private static LocalGridServicesConnector StartGridService(Scene testScene, bool real) | 193 | private static LocalGridServicesConnector StartGridService(Scene testScene) |
235 | { | 194 | { |
236 | IConfigSource config = new IniConfigSource(); | 195 | IConfigSource config = new IniConfigSource(); |
237 | config.AddConfig("Modules"); | 196 | config.AddConfig("Modules"); |
238 | config.AddConfig("GridService"); | 197 | config.AddConfig("GridService"); |
239 | config.Configs["Modules"].Set("GridServices", "LocalGridServicesConnector"); | 198 | config.Configs["Modules"].Set("GridServices", "LocalGridServicesConnector"); |
240 | config.Configs["GridService"].Set("StorageProvider", "OpenSim.Data.Null.dll:NullRegionData"); | 199 | config.Configs["GridService"].Set("StorageProvider", "OpenSim.Data.Null.dll:NullRegionData"); |
241 | if (real) | 200 | config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Services.GridService.dll:GridService"); |
242 | config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Services.GridService.dll:GridService"); | ||
243 | 201 | ||
244 | LocalGridServicesConnector gridService = new LocalGridServicesConnector(); | 202 | LocalGridServicesConnector gridService = new LocalGridServicesConnector(); |
245 | gridService.Initialise(config); | 203 | gridService.Initialise(config); |
246 | |||
247 | //else | ||
248 | // config.Configs["GridService"].Set("LocalServiceModule", "OpenSim.Tests.Common.dll:TestGridService"); | ||
249 | gridService.AddRegion(testScene); | 204 | gridService.AddRegion(testScene); |
250 | gridService.RegionLoaded(testScene); | 205 | gridService.RegionLoaded(testScene); |
251 | //testScene.AddRegionModule(m_gridService.Name, m_gridService); | ||
252 | 206 | ||
253 | return gridService; | 207 | return gridService; |
254 | } | 208 | } |
@@ -472,10 +426,10 @@ namespace OpenSim.Tests.Common.Setup | |||
472 | /// <param name="ownerId"></param> | 426 | /// <param name="ownerId"></param> |
473 | /// <returns></returns> | 427 | /// <returns></returns> |
474 | public static SceneObjectPart CreateSceneObjectPart(string name, UUID id, UUID ownerId) | 428 | public static SceneObjectPart CreateSceneObjectPart(string name, UUID id, UUID ownerId) |
475 | { | 429 | { |
476 | return new SceneObjectPart( | 430 | return new SceneObjectPart( |
477 | ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) | 431 | ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero) |
478 | { Name = name, UUID = id }; | 432 | { Name = name, UUID = id, Scale = new Vector3(1, 1, 1) }; |
479 | } | 433 | } |
480 | 434 | ||
481 | /// <summary> | 435 | /// <summary> |
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 55723d1..c05c3de 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example | |||
@@ -16,7 +16,7 @@ | |||
16 | ;; files are loaded then type "config show" on the region console command line. | 16 | ;; files are loaded then type "config show" on the region console command line. |
17 | ;; | 17 | ;; |
18 | ;; | 18 | ;; |
19 | ;; NOTES FOR DEVELOPERS REGARDING FORMAT OF TIHS FILE | 19 | ;; NOTES FOR DEVELOPERS REGARDING THE FORMAT OF THIS FILE |
20 | ;; | 20 | ;; |
21 | ;; All leading white space is ignored, but preserved. | 21 | ;; All leading white space is ignored, but preserved. |
22 | ;; | 22 | ;; |
@@ -201,6 +201,14 @@ | |||
201 | ;; If not generating maptiles, use this static texture asset ID | 201 | ;; If not generating maptiles, use this static texture asset ID |
202 | ; MaptileStaticUUID = "00000000-0000-0000-0000-000000000000" | 202 | ; MaptileStaticUUID = "00000000-0000-0000-0000-000000000000" |
203 | 203 | ||
204 | ;; Http proxy setting for llHTTPRequest and dynamic texture loading, if required | ||
205 | ; HttpProxy = "http://proxy.com:8080" | ||
206 | |||
207 | ;; If you're using HttpProxy, then you can set HttpProxyExceptions to a list of regular expressions for URLs that you don't want to go through the proxy | ||
208 | ;; For example, servers inside your firewall. | ||
209 | ;; Separate patterns with a ';' | ||
210 | ; HttpProxyExceptions = ".mydomain.com;localhost" | ||
211 | |||
204 | ;# {emailmodule} {} {Provide llEmail and llGetNextEmail functionality? (requires SMTP server)} {true false} false | 212 | ;# {emailmodule} {} {Provide llEmail and llGetNextEmail functionality? (requires SMTP server)} {true false} false |
205 | ;; The email module requires some configuration. It needs an SMTP | 213 | ;; The email module requires some configuration. It needs an SMTP |
206 | ;; server to send mail through. | 214 | ;; server to send mail through. |
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index 17bc537..3c4ceb9 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini | |||
@@ -14,15 +14,6 @@ | |||
14 | ; Place to create a PID file | 14 | ; Place to create a PID file |
15 | ; PIDFile = "/tmp/my.pid" | 15 | ; PIDFile = "/tmp/my.pid" |
16 | 16 | ||
17 | ; Http proxy support for llHTTPRequest and dynamic texture loading | ||
18 | ; Set HttpProxy to the URL for your proxy server if you would like | ||
19 | ; to proxy llHTTPRequests through a firewall | ||
20 | ; HttpProxy = "http://proxy.com" | ||
21 | ; Set HttpProxyExceptions to a list of regular expressions for | ||
22 | ; URLs that you don't want going through the proxy such as servers | ||
23 | ; inside your firewall, separate patterns with a ';' | ||
24 | ; HttpProxyExceptions = ".mydomain.com;localhost" | ||
25 | |||
26 | startup_console_commands_file = "startup_commands.txt" | 17 | startup_console_commands_file = "startup_commands.txt" |
27 | shutdown_console_commands_file = "shutdown_commands.txt" | 18 | shutdown_console_commands_file = "shutdown_commands.txt" |
28 | 19 | ||
@@ -163,7 +154,11 @@ | |||
163 | ; mesh, and use it for collisions. This is currently experimental code and enabling | 154 | ; mesh, and use it for collisions. This is currently experimental code and enabling |
164 | ; it may cause unexpected physics problems. | 155 | ; it may cause unexpected physics problems. |
165 | ;UseMeshiesPhysicsMesh = false | 156 | ;UseMeshiesPhysicsMesh = false |
166 | 157 | ||
158 | ; enable / disable Collada mesh support | ||
159 | ; default is true | ||
160 | ; ColladaMesh = true | ||
161 | |||
167 | ; Choose one of the physics engines below | 162 | ; Choose one of the physics engines below |
168 | ; OpenDynamicsEngine is by some distance the most developed physics engine | 163 | ; OpenDynamicsEngine is by some distance the most developed physics engine |
169 | ; basicphysics effectively does not model physics at all, making all objects phantom | 164 | ; basicphysics effectively does not model physics at all, making all objects phantom |
diff --git a/prebuild.xml b/prebuild.xml index ff08558..16b5bfa 100644 --- a/prebuild.xml +++ b/prebuild.xml | |||
@@ -961,7 +961,6 @@ | |||
961 | <Reference name="OpenSim.Framework"/> | 961 | <Reference name="OpenSim.Framework"/> |
962 | <Reference name="OpenSim.Framework.Communications"/> | 962 | <Reference name="OpenSim.Framework.Communications"/> |
963 | <Reference name="OpenSim.Framework.Console"/> | 963 | <Reference name="OpenSim.Framework.Console"/> |
964 | <Reference name="OpenSim.Framework.Servers.HttpServer"/> | ||
965 | <Reference name="OpenSim.Region.Framework"/> | 964 | <Reference name="OpenSim.Region.Framework"/> |
966 | <Reference name="OpenSim.Server.Base"/> | 965 | <Reference name="OpenSim.Server.Base"/> |
967 | <Reference name="OpenSim.Services.Base"/> | 966 | <Reference name="OpenSim.Services.Base"/> |
@@ -2921,6 +2920,7 @@ | |||
2921 | <!-- SADLY the way this works means you need to keep adding these paths --> | 2920 | <!-- SADLY the way this works means you need to keep adding these paths --> |
2922 | <Match path="Agent/TextureSender/Tests" pattern="*.cs" recurse="true"/> | 2921 | <Match path="Agent/TextureSender/Tests" pattern="*.cs" recurse="true"/> |
2923 | <Match path="Avatar/Inventory/Archiver/Tests" pattern="*.cs" recurse="true"/> | 2922 | <Match path="Avatar/Inventory/Archiver/Tests" pattern="*.cs" recurse="true"/> |
2923 | <Match path="Framework/InventoryAccess/Tests" pattern="*.cs" recurse="true"/> | ||
2924 | <Match path="World/Archiver/Tests" pattern="*.cs" recurse="true"/> | 2924 | <Match path="World/Archiver/Tests" pattern="*.cs" recurse="true"/> |
2925 | <Match buildAction="EmbeddedResource" path="World/Archiver/Tests/Resources" pattern="*"/> | 2925 | <Match buildAction="EmbeddedResource" path="World/Archiver/Tests/Resources" pattern="*"/> |
2926 | <Match path="World/Land/Tests" pattern="*.cs" recurse="true"/> | 2926 | <Match path="World/Land/Tests" pattern="*.cs" recurse="true"/> |