Walkthrough of Java APIs Presented By Tracy Engwirda 28 September, 2005.

Slides:



Advertisements
Similar presentations
June, 2007 Petr Hamernik Extending Instant JChem 2.0 Architecture & API.
Advertisements

Different Approaches to Single-Sign-On Jeff Kahn, Verbena Consulting.
Data Management Expert Panel - WP2. WP2 Overview.
Unit Testing in the OO Context(Chapter 19-Roger P)
New Release Announcements and Product Roadmap Chris DiPierro, Director of Software Development April 9-11, 2014
Designing, Deploying and Managing Workflow in SharePoint Sites Steve Heaney Product Development Manager OBS
A Blackboard Building Block™ Crash Course for Web Developers
© Blackboard, Inc. All rights reserved. B2 APIs in Detail Tracy Engwirda Principal Consultant Blackboard Inc. July 19 th.
My First Building Block Presented By Tracy Engwirda 28 September, 2005.
Fast Track to ColdFusion 9. Getting Started with ColdFusion Understanding Dynamic Web Pages ColdFusion Benchmark Introducing the ColdFusion Language Introducing.
Peoplesoft: Building and Consuming Web Services
Curation Tool June 11, Curation Tool Overview Architecture Implementation Dependencies Futures 2.
Blackboard Look and Feel through Tag Libraries Presented By Tracy Engwirda 29 September, 2005.
UNIT-V The MVC architecture and Struts Framework.
Towards Bboogle 3.0.0: a Technical Walkthrough Patricia Goldweic Sr. Software Engineer AR&T, Northwestern University Brian Nielsen Manager, Faculty Support.
JDBC Session 5 Tonight: Data Access Patterns 1.J2EE Architecture & Design Patterns 2.The Data Access Tier 3.Data Access Patterns –DataAccessObject (DAO)
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
© Blackboard, Inc. All rights reserved. My First Building Block as a Content Type Heather Natour Senior Lead Engineer Blackboard Inc. July 18 th 1:30pm.
Java Beans.
CIS 375—Web App Dev II ASP.NET 2 Introducing Web Forms.
Denise Luther Senior IT Consultant Practical Technology Enablement with Enterprise Integrator.
ASP.NET + Ajax Jesper Tørresø ITNET2 F08. Ajax Ajax (Asynchronous JavaScript and XML) A group of interrelated web development techniques used for creating.
@2011 Mihail L. Sichitiu1 Android Introduction Platform Overview.
Copyright © 2012 Accenture All Rights Reserved.Copyright © 2012 Accenture All Rights Reserved. Accenture, its logo, and High Performance Delivered are.
© D. Wong  Indexes  JDBC  JDBC in J2EE (Java 2 Enterprise Edition)
Using JavaBeans and Custom Tags in JSP Lesson 3B / Slide 1 of 37 J2EE Web Components Pre-assessment Questions 1.The _____________ attribute of a JSP page.
HTML+JavaScript M2M Applications Viewbiquity Public hybrid cloud platform for automating and visualizing everything.
Extending Vista The PowerLinks WebServices SDK John Hallett Senior Product Manager WebCT, Inc
J2EE Structure & Definitions Catie Welsh CSE 432
® IBM Software Group © 2007 IBM Corporation J2EE Web Component Introduction
Blackboard Building Blocks Introduction to Building Blocks Saturday, October 10, 2015 Bob Alcorn, Director, Platform Architecture.
JSF Introduction Copyright © Liferay, Inc. All Rights Reserved. No material may be reproduced electronically or in print without written permission.
© Blackboard, Inc. All rights reserved. Java APIs in Depth: Blackboard Learning System and Community System David Ashman Senior Software Architect, Product.
CHEF II / Sakai Architecture. CHEF II Changes uPortal replaces Jetspeed –jsr 168 portlet, servlet compliant Spring replaces Turbine component framework.
Source: Peter Eeles, Kelli Houston, and Wojtek Kozaczynsky, Building J2EE Applicationa with the Rational Unified Process, Addison Wesley, 2003 Prepared.
WEB BASED DATA TRANSFORMATION USING XML, JAVA Group members: Darius Balarashti & Matt Smith.
CaDSR Freestyle Search June 11, caDSR Freestyle Search Overview Architecture Implementation Dependencies Futures 2.
Ch 2 – Application Assembly and Deployment COSC 617 Jeff Schmitt September 14, 2006.
Chapter 6 Server-side Programming: Java Servlets
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Blackboard Building Blocks Portal Modules and Module Types Monday, November 16, 2015 Tom Joyce, Product Manager, Product Development.
Blackboard Building Blocks APIs, Framework and Security Sunday, November 22, 2015 Bob Alcorn, Director, Platform Architecture.
Blackboard and Content Types John Knight Blackboard Inc.
3 Copyright © 2004, Oracle. All rights reserved. Working in the Forms Developer Environment.
Blackboard Building Blocks Looking Ahead Thursday, December 03, 2015 Dan McFadyen, Tracy Engwirda, Tom Joyce.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Spring MVC Essentials Getting started.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
Preface IIntroduction Objectives I-2 Course Overview I-3 1Oracle Application Development Framework Objectives 1-2 J2EE Platform 1-3 Benefits of the J2EE.
CentralCampus Group: May13-26 – William Van Walbeek & Paul Wilson Client: Google, Muthu Muthusrinivasan Advisor: Manimaran Govindarasu Abstract Introduction.
The Sakai Architecture
Blackboard Building Blocks™: Data Integration and Administration Raymond Peterson, Blackboard, Inc.
1 Java Server Pages A Java Server Page is a file consisting of HTML or XML markup into which special tags and code blocks are inserted When the page is.
Java Programming: Advanced Topics 1 Enterprise JavaBeans Chapter 14.
Module 6: Administering Reporting Services. Overview Server Administration Performance and Reliability Monitoring Database Administration Security Administration.
Portal Modules & Module Types Heather Natour Senior Software Engineer, Blackboard Community System.
Java Programming: Advanced Topics 1 Building Web Applications Chapter 13.
10 Copyright © 2004, Oracle. All rights reserved. Building ADF View Components.
Apache Struts Technology A MVC Framework for Java Web Applications.
CHAPTER 9 File Storage Shared Preferences SQLite.
Building KFS using KNS Presented by James SmithJustin Beltran University of ArizonaUniversity of California, Irvine.
Java Servlets By: Tejashri Udavant..
Web Software Model CS 4640 Programming Languages for Web Applications
Creating Novell Portal Services Gadgets: An Architectural Overview
The Model Layer What is Model?
Enterprise Java Beans.
TN19-TCI: Integration and API management using TIBCO Cloud™ Integration
Session Abstract This session will provide an overview of the latest improvements and enhancements made to the Ed-Fi ODS/API in 2016, as well as a preview.
Plug-In Architecture Pattern
SDMX IT Tools SDMX Registry
Presentation transcript:

Walkthrough of Java APIs Presented By Tracy Engwirda 28 September, 2005

Overview Background Walk through of Java APIs –High level review of packages, patterns Building Block Overview

Audience Knowledge of Java programming People who want an overview of the entire range of functionality exposed –(without resorting to reading the docs) Thinking of building, don’t know what to look at first…

Design Goals – High Level Decouple persistence from data objects –XML and Database –Originally targeted for import/export –Database abstraction Iterative functionality –Start with simple objects, mapped to the legacy schema Managed extensibility –System extensions and deployment model

A Little History… Import/Export R6 Portal R6 Gradebook R6 Assessment Module Developer Kit Building Blocks

Building Blocks Architecture Core Services Data Objects Business Layer (JSP, Servlet, Struts) View Layer (JSP, Servlet, Tag Library) Log Security ConfigPersistence Session I18NVXI ContextPlug-ins

Road Map Data objects and packages –What data can I see? Persistence objects and packages –How do I get to the data? Service objects and packages –How do I log it, authenticate it, etc.?

blackboard.*Building Block API blackboard.admin.* Release 6 Admin API com.blackboard.event.*Bb 5.5 Event API (deprecated) Which API is that?

Building Block API Packages blackboard.data. blackboard.persist. gradebook calendar announcement content user role navigation course gradebook calendar announcement content user role navigation course

Building Block API Packages blackboard.platform. session context persistence blackboard.base. blackboard.portal. log filesystem plugin blackboard.util.

Data Objects blackboard.data Object view of the schema Typed to wrap legacy database constructs –Type-safe enumerations for constrained database columns User.Role.SYSTEM_ADMIN

Data Objects – BbObject Base object for all data objects –Common attributes – Primary Key (Id), dates, etc. “Smart” attributes –Properties stored in an internal map, instead of member variables –Smart load, dirty flag Id attribute helps define lifecycle –Id.UNSET_ID – default id for new objects

Data Objects – Content blackboard.data.content Content is the root object that can be used in the “content” areas of a course –All other objects are simple subclasses of Content that over-ride specific values Custom content types should create and manipulate Content objects; not CourseDocument objects. –CourseDocument can be used to manipulate the base “Item” type

Data Objects – Content ContentHandler –Ties content to URI-based “handlers” –This is really the B2 “glue” for custom content IsFolder –Can the object contain other objects IsLesson –Should the contents be displayed sequentially Plus many more added in Bb 6.3

Data Objects – Content

Data Objects – Course blackboard.data.course Course and Organization –Organization overrides course for specific attributes Course Enrolment –CourseMembership –Enumerated roles CourseMembership.Role.INSTRUCTOR Course Groups and Group Enrolment

Data Objects – Gradebook blackboard.data.gradebook LineItem –Defines the “columns” in a course gradebook Score –Wraps the actual outcome for a given line item

Data Objects – Misc. Announcement –Wraps announcements –Can be system or course level Calendar –Wrap entries in the calendar –Course and System level

Persistence Objects Intended to be decoupled from data objects Interfaces allow replaceable persistence implementations –Currently proprietary to Blackboard BbPersistenceManager –Ties together different aspects of persistence –Loader/Persister broker –Container

Persistence Objects – Id Used to encapsulate the unique identifier for each data object Primary key, and more… –Data type –Container (database) –GUIDs are not used, so keys can collide

Persistence Objects – Loaders Base interface to get at data –Roughly one-to-one correspondence to data objects All type-specific loaders are geared towards known predicates –loadById() –loadByUserIdandType() –Performance. Ad hoc queries can kill the system… –Schema stability

Persistence Objects – Persisters Perform any action that manipulates data –Again, one-to-one correspondence with data objects “Smart” update –Id object state determines insert vs. update

Accessing Persisters and Loaders They’re interfaces, not directly instantiated by callers BbPersistenceManager is the broker Most have a Default object for direct access ContentDbLoader loader = ContentDbLoader.Default.getInstance()

Putting It Together Content content = new Content(); content.setTitle(); // etc... ContentDbPersister contentPersister = ContentDbPersister.Default.getInstance(); contentPersister.persist( content );

Putting It Together – v2 Content content = new Content(); content.setTitle(); // etc... // new reflection-based persistence methods content.persist();

Services Infrastructure for common utility functions Exposed as interfaces (mostly) Lookup via BbServiceManager

Service Lookups LogService logService = BbServiceManager.getLogService(); LocaleManager locMgr = BbServiceManager.getLocaleManager(); ContextManager ctxMgr = (ContextManager)BbServiceManager.lookupService( ContextManager.class );

Services – Context blackboard.platform.context Critical entry point that all code must call Context wraps information about current request to get the correct database connection Interact via ContextManager.setContext() and ContextManager.releaseContext()

Services – Session blackboard.platform.session State for the current browser-based client –Stores authentication status Cookie-based session management –Database persistent to share between Perl and Java processes –Some assembly required Not all HTTP-clients (e.g., media plugins for browsers) honor the host browser’s cookies

Services – Filesystem blackboard.platform.filesystem FileSystemService - Broker different file system locations –Course and content –E.g., getContentDirectory()

Services – Log blackboard.platform.log Simple write-only log implementation Supports configurable levels Written before log4j and JDK 1.4

Services – Security blackboard.platform.security Authentication and Authorization –AccessManagerService

Package Base Mix of utility objects List functionality –BbList – should use List instead though –GenericFieldFilter –GenericFieldComparator Comparator implementation that can sort based on arbitrary properties Works with String, Boolean, Dates, and Comparable

Package Base BbEnum – base class for all type-safe enumerations FormattedText – encapsulation of text data entered via standard Text boxes –Defines enumeration for Smart, Plain, and HTML text NestedRuntimeException/NestedException – pre-JDK 1.4 facility for chaining exceptions

Portal blackboard.portal.external CustomData is all you’ll need… –getModuleData() –getModulePersonalizationData() Store name/value –Value can be string, or binary object

Administrative API Packages blackboard.admin.data. blackboard.admin.persist. datasource course user category datasource course user category

Administrative APIs blackboard.admin.* APIs geared towards data integration –Formerly called the “Event” APIs –Repackaged to be more consistent with B2 APIs –Compatibility layer supported Base classes used in Snapshot

Administrative APIs Follows IMS Data Model Person, Course (Group), and Membership Additional objects for Blackboard usage –Category –Data Source Defines logically related entities that can be managed independently via Snapshot

Beyond APIs – UI Integration Tag Libraries Encapsulate re-usable UI components to capture the Blackboard look and feel Tag Library Descriptors –Re-use within individual web applications –.tld files

Beyond APIs - Deployment Not an API, per se Critical aspect of extension development –XML manifest used to generate records in the database that define navigation, content brokering

Tying It All Together A Building Block may require touching several different APIs 1.Set context 2.Authorize current User 3.Load content object 4.Access Gradebook data 5.Perform custom calculation 6.Log result 7.Render results (bracketed via tags) 8.Release context

Thoughts There are a lot of classes to look at… –Focus on the type of Building Block you need to build –Take it methodically, iteratively. What’s your first goal? Second goal? Think of combining functions –What can I do using Content with Gradebook?

Questions?