| <%@ WebHandler Class="JayrockWeb.PhoneBook" Language="C#" %> | |
| using System; | |
| using System.Collections; | |
| using System.Configuration; | |
| using Agility.Extras.Spring; | |
| using Jayrock.JsonRpc; | |
| using Jayrock.JsonRpc.Web; | |
| using Nexus.Core; | |
| using Nexus.Core.Helpers; | |
| using PhoneBook.Core; | |
| using Spring.Context; | |
| namespace JayrockWeb | |
| { | |
| public class PhoneBook : JsonRpcHandler | |
| { | |
| private IRequestCatalog catalog = null; | |
| private IRequestCatalog GetCatalog() | |
| { | |
| if (catalog == null) | |
| { | |
| IApplicationContext factory = Objects.Factory(); | |
| catalog = factory.GetObject(App.CATALOG_KEY) as IRequestCatalog; | |
| if (catalog == null) | |
| throw new ConfigurationErrorsException("PhoneBook: GetCatalog()==null"); | |
| } | |
| return catalog; | |
| } | |
| private RequestContext Execute(string command) | |
| { | |
| return (RequestContext) GetCatalog().ExecuteRequest(command); | |
| } | |
| [JsonRpcMethod(App.LAST_NAME_LIST, Idempotent = true)] | |
| [JsonRpcHelp("Returns Last Name List as an array.")] | |
| public string[] last_name_list() | |
| { | |
| RequestContext context = Execute(App.LAST_NAME_LIST); | |
| KeyValueList list = context.Outcome as KeyValueList; | |
| if (list == null) return null; // FIXME: Better error handling | |
| ArrayList names = new ArrayList(list.Count); | |
| foreach (KeyValue k in list) | |
| { | |
| names.Add(k.Value); | |
| } | |
| return (string[]) names.ToArray(typeof (String)); | |
| } | |
| [JsonRpcMethod(App.ENTRY_LIST, Idempotent = true)] | |
| [JsonRpcHelp("Returns the complete directory as an array of formatted IDictionary objects.")] | |
| public AppEntryList entry_list() | |
| { | |
| IViewHelper helper = GetCatalog().GetHelperFor(App.ENTRY_LIST); | |
| helper.Execute(); | |
| // if helper.IsNominal ... // FIXME: Better error handling | |
| AppEntryList list = helper.Outcome as AppEntryList; | |
| return list; | |
| } | |
| [JsonRpcMethod(App.ENTRY, Idempotent = true)] | |
| [JsonRpcHelp("Returns an entry by key.")] | |
| public AppEntry entry(string key) | |
| { | |
| IViewHelper helper = GetCatalog().GetHelperFor(App.ENTRY); | |
| helper.Criteria[App.ENTRY_KEY] = key; | |
| helper.Execute(); | |
| // if helper.IsNominal ... // FIXME: Better error handling | |
| AppEntry entry = new AppEntry(helper.Criteria); | |
| return entry; | |
| } | |
| [JsonRpcMethod(App.ENTRY_SAVE, Idempotent = true)] | |
| [JsonRpcHelp("Saves the entry, insert or updating as appropriate.")] | |
| public AppEntry entry_save(IDictionary input) | |
| { | |
| IViewHelper helper = GetCatalog().GetHelperFor(App.ENTRY_SAVE); | |
| helper.Read(input,true); | |
| helper.Execute(); | |
| // if helper.IsNominal ... // FIXME: Better error handling | |
| AppEntry entry = new AppEntry(helper.Criteria); | |
| return entry; | |
| } | |
| [JsonRpcMethod(App.ENTRY_DELETE, Idempotent = true)] | |
| [JsonRpcHelp("Deletes an entry by key.")] | |
| public AppEntry entry_delete(string key) | |
| { | |
| IViewHelper helper = GetCatalog().GetHelperFor(App.ENTRY_DELETE); | |
| helper.Criteria[App.ENTRY_KEY] = key; | |
| helper.Execute(); | |
| // if helper.IsNominal ... // FIXME: Better error handling | |
| AppEntry entry = new AppEntry(helper.Criteria); | |
| return entry; | |
| } | |
| } | |
| } |