Your SlideShare is downloading. ×
Custom EOAdaptors and ERSolr
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Custom EOAdaptors and ERSolr


Published on

EOF is a powerful object graph management framework that is often, but not always, used with a relational data store. Learn how to write custom EOAdaptors to talk to non-SQL data sources. We will …

EOF is a powerful object graph management framework that is often, but not always, used with a relational data store. Learn how to write custom EOAdaptors to talk to non-SQL data sources. We will cover handling transactions, query generation, and integration with Entity Modeler.

Learn also about ERSolr, a new EOAdaptor to talk to Apache's Solr.

Published in: Technology

  • Be the first to comment

  • Be the first to like this

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. MONTREAL 1/3 JULY 2011Custom EOAdaptors (Plus ERSolr!)Travis BrittmDimension Technology
  • 2. Custom EOAdaptors• EOAdaptors connect EOF to a data store• SQL stores most common• Used to need an adaptor per database• JDBC made this a lot easier - Plugins
  • 3. Why Build a Custom EOAdaptor?• You have to.• You’re insane.
  • 4. No SQL?• Voldemort• Neo4J• Lucene• Solr• Cassandra• That other thing...
  • 5. Basic Requirements• Schema support• Query language (EOQualifiers)
  • 6. Here Be Dragons• WebObjects wiki has a high level overview:• Create new Wonder framework• EOAdaptor subclass: set up connection and adaptor context• EOAdaptorContext subclass: set up transactions and adaptor channel• EOAdaptorChannel subclass: where you actually do stuff
  • 7. EOAdaptorChannel• Delete• Insert• Update• Select
  • 8. ERSolr• Custom EOAdaptor• Allows you to use Solr with EOF• Entity Modeler, EOQualifiers, etc.
  • 9. What is Solr?• Apache project, part of Apache Lucene• Uses Lucene index• Adds support for schemas, facet querying, sharding, replication, superset of Lucene Query Language• Deploys in any servlet container, comes with Jetty• JSON “resty” interface / Java API• Scales like crazy
  • 10. WTH is a facet?
  • 11. ERSolr• Allows you model Solr schema with Entity Modeler (including multi-value fields)• Solr specific prototypes• Use EOQualifiers to query Solr, true batching• EOSortOrderings• ERXSolrFetchSpecification: support for facets, other Solr features
  • 12. Entity Modeler
  • 13. ERXSolrFetchSpecificationERXSolrFetchSpecification fetchSpecification = new ERXSolrFetchSpecification<Inventory>(Inventory.ENTITY_NAME);fetchSpecification.setBatchSize(5);// Field FacetsfetchSpecification.addFacet(SolrFacet.newSolrFacet(Inventory.IN_STOCK_KEY));// Query FacetsSolrFacet priceQueryFacet = SolrFacet.newSolrFacet(Inventory.PRICE_KEY);priceQueryFacet.addQualifierForKey(Inventory.PRICE.lessThanOrEqualTo(100), "Low Price");priceQueryFacet.addQualifierForKey(Inventory.PRICE.greaterThan(100), "High Price");fetchSpecification.addFacet(priceQueryFacet);// Put results in a display groupERXDisplayGroup displayGroup = new ERXDisplayGroup<Inventory>();displayGroup.setObjectArray(fetchSpecification.result().objects());
  • 14. Get Facet Resultsfor (SolrFacet facet : fetchSpecification.facets()) { NSArray<FacetItem> facetItems = fetchSpecification.result().itemCounts(facet.key()); for (FacetItem facetItem : facetItems) { String displayValue = facetItem.key(); Number count = facetItem.count(); }}
  • 15. ERXSolrFetchSpecification• ERXSolrFetchSpecification.queryTime()• ERXSolrFetchSpecification.maxTime()• ERXSolrFetchSpecification.batchNumber()• ERXSolrFetchSpecification.defaultFacetLimit()• ERXSolrFetchSpecification.defaultMinFacetSize()
  • 16. Other Stuff• Result Scoring• Field statistics• Facet pivoting
  • 17. DEMO(get ready to live!)
  • 18. Where is this thing?• If you’re watching this presentation in the future, it’s probably in Wonder.• Right now it’s here:
  • 19. MONTREAL 1/3 JULY 2011Q&A