Changing the IContentManager interface to favor ContentItem values instead of IContent

--HG--
extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4042075
This commit is contained in:
loudej
2009-11-24 18:14:56 +00:00
parent 0b22b16672
commit 1f762da0ec
5 changed files with 32 additions and 33 deletions

View File

@@ -43,17 +43,17 @@ namespace Orchard.Tests.Packages.Users.Controllers {
var manager = _container.Resolve<IContentManager>();
var userOne = manager.New("user").As<User>();
var userOne = manager.New<User>("user");
userOne.Record = new UserRecord { UserName = "one" };
manager.Create(userOne);
manager.Create(userOne.ContentItem);
var userTwo = manager.New("user").As<User>();
var userTwo = manager.New<User>("user");
userTwo.Record = new UserRecord { UserName = "two" };
manager.Create(userTwo);
manager.Create(userTwo.ContentItem);
var userThree = manager.New("user").As<User>();
var userThree = manager.New<User>("user");
userThree.Record = new UserRecord { UserName = "three" };
manager.Create(userThree);
manager.Create(userThree.ContentItem);
_controller = _container.Resolve<AdminController>();

View File

@@ -102,7 +102,7 @@ namespace Orchard.Tests.Models {
public void GetByIdShouldDetermineTypeAndLoadParts() {
var modelRecord = CreateModelRecord("alpha");
var contentItem = _manager.Get(modelRecord.Id).ContentItem;
var contentItem = _manager.Get(modelRecord.Id);
Assert.That(contentItem.ContentType, Is.EqualTo("alpha"));
Assert.That(contentItem.Id, Is.EqualTo(modelRecord.Id));
}
@@ -119,7 +119,7 @@ namespace Orchard.Tests.Models {
// create a gamma record
var gamma = new GammaRecord {
ContentItem = _container.Resolve<IRepository<ContentItemRecord>>().Get(model.ContentItem.Id),
ContentItem = _container.Resolve<IRepository<ContentItemRecord>>().Get(model.Id),
Frap = "foo"
};
@@ -130,11 +130,11 @@ namespace Orchard.Tests.Models {
// re-fetch from database
model = _manager.Get(modelRecord.Id);
Assert.That(model.ContentItem.ContentType, Is.EqualTo("gamma"));
Assert.That(model.ContentItem.Id, Is.EqualTo(modelRecord.Id));
Assert.That(model.ContentType, Is.EqualTo("gamma"));
Assert.That(model.Id, Is.EqualTo(modelRecord.Id));
Assert.That(model.Is<Gamma>(), Is.True);
Assert.That(model.As<Gamma>().Record, Is.Not.Null);
Assert.That(model.As<Gamma>().Record.ContentItem.Id, Is.EqualTo(model.ContentItem.Id));
Assert.That(model.As<Gamma>().Record.ContentItem.Id, Is.EqualTo(model.Id));
}
@@ -143,7 +143,7 @@ namespace Orchard.Tests.Models {
var beta = _manager.New("beta");
_manager.Create(beta);
var modelRecord = _container.Resolve<IRepository<ContentItemRecord>>().Get(beta.ContentItem.Id);
var modelRecord = _container.Resolve<IRepository<ContentItemRecord>>().Get(beta.Id);
Assert.That(modelRecord, Is.Not.Null);
Assert.That(modelRecord.ContentType.Name, Is.EqualTo("beta"));
}

View File

@@ -21,7 +21,7 @@ namespace Orchard.Models {
return null;
initialize(content);
manager.Create(content);
manager.Create(content.ContentItem);
return content;
}

View File

@@ -31,7 +31,7 @@ namespace Orchard.Models {
}
}
public virtual IContent New(string contentType) {
public virtual ContentItem New(string contentType) {
// create a new kernel for the model instance
var context = new ActivatingContentContext {
@@ -55,29 +55,27 @@ namespace Orchard.Models {
return context2.ContentItem;
}
public virtual IContent Get(int id) {
public virtual ContentItem Get(int id) {
// obtain root record to determine the model type
var contentItemRecord = _contentItemRepository.Get(id);
var record = _contentItemRepository.Get(id);
// no record of that id means content item doesn't exist
if (contentItemRecord == null)
if (record == null)
return null;
// allocate instance and set record property
var content = New(contentItemRecord.ContentType.Name);
content.ContentItem.Record = contentItemRecord;
var contentItem = New(record.ContentType.Name);
contentItem.Id = record.Id;
contentItem.Record = record;
// create a context with a new instance to load
var context = new LoadContentContext {
Id = contentItemRecord.Id,
ContentType = contentItemRecord.ContentType.Name,
ContentItemRecord = contentItemRecord,
ContentItem = content.ContentItem
Id = contentItem.Id,
ContentType = contentItem.ContentType,
ContentItemRecord = record,
ContentItem = contentItem,
};
// set the id
context.ContentItem.Id = context.Id;
// invoke drivers to acquire state, or at least establish lazy loading callbacks
foreach (var driver in Drivers) {
driver.Loading(context);
@@ -89,18 +87,18 @@ namespace Orchard.Models {
return context.ContentItem;
}
public void Create(IContent content) {
public void Create(ContentItem contentItem) {
// produce root record to determine the model id
var modelRecord = new ContentItemRecord { ContentType = AcquireContentTypeRecord(content.ContentItem.ContentType) };
var modelRecord = new ContentItemRecord { ContentType = AcquireContentTypeRecord(contentItem.ContentType) };
_contentItemRepository.Create(modelRecord);
content.ContentItem.Record = modelRecord;
contentItem.Record = modelRecord;
// build a context with the initialized instance to create
var context = new CreateContentContext {
Id = modelRecord.Id,
ContentType = modelRecord.ContentType.Name,
ContentItemRecord = modelRecord,
ContentItem = content.ContentItem
ContentItem = contentItem
};
// set the id

View File

@@ -4,9 +4,10 @@ using Orchard.UI.Models;
namespace Orchard.Models {
public interface IContentManager : IDependency {
IContent New(string contentType);
IContent Get(int id);
void Create(IContent contentItem);
ContentItem New(string contentType);
void Create(ContentItem contentItem);
ContentItem Get(int id);
IEnumerable<ModelTemplate> GetDisplays(IContent contentItem);
IEnumerable<ModelTemplate> GetEditors(IContent contentItem);