Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application

Looking through the list of new features for JDeveloper 10.1.3.2 yesterday I suddenly noticed a feature that was not new at all, but that had so far escaped my notice: the URL Service Data Control, that allows us to define a ADF Model Data Control for URL Services, such as files (CSV, XML, etc.) that can accessed through a URL and also Servlets and JSPs that return simple, textual data such as XML. In this article, I take this feature for brief spin. My objective: publish in a web page in a table layout the contents of a CSV file that I know lives somewhere on the internet (actually, my own laptop) behind a URL.

This demonstration proves once again how the ADF Model Data Controls allow us to develop a web page on top of Data Controls without any knowledge of the underlying Data Control implementation. Developing the webpage is no different for this URL Service Data Control from what it is like with a Database Data Control.

Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc csvfile

 

The result when we run the web application looks like this:

Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc runapp

....
I have created a new JDeveloper Application, Technology Template of JSF and ADF BC (although I will not actually create any Business Components, it creates a Model project for me, which is handy).

In the Model project I go to the New Gallery to select the option:
 

 Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc newgallery

 

The wizard opens where I can name the Data Control. This name will appear later on in the Data Control palette.
 

 Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc newdc

 Now the underlying Http Connection details: since the file is not secure in any sense, all I need is the URL where file is available. (for development ease, I have included the file in the Public_Html directory of the ViewController project in this very application). 

Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc urlendpoint

Navigate to the last step in the wizard, where we confirm that this is indeed a Comma Separated Values file.

 Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc wizlast

 The new DataControl is automatically added to the Data Controls palette:
 

 Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc dcpalette

 I have created new JSF JSP page. Now I drag & drop the Employees data control’s Return collection onto my JSF page, as a read only table:

Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc dragastable 

The JSP editor now looks like this: 

Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc injspeditor 

When we run the web application, here is what we see: 

Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc runapp

 

The contents of the emps.csv file is read  by the Data Control’s underlying Http Adapter and served to the ADF Table in the proper, file/url/http independent data format. Note that the sort operation, a feature of the ADF Table, is also available for this data collection read from the url. Here I sort by City:

 Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc aftersort

I was very curious as to how the configuration of this Data Control takes place. Especially for when it comes to deployment, one should know how to configure these Data Controls. The first stop is the DataControls.dcx file where the DataControl is specified as an AdapterDataControl, based on the CSVDCDEF class, returning the Employees BeanClass and based on the Connection EmployeeFromFile. Now where the hack is that Connection defined? I could not find it anywhere in JDeveloper, not even through a Search in All Files.

Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc datacontrols 

Inspecting the file system quickly made things clear: the connections.xml file in the .adf \meta-inf directory contained the connection definition, complete with the URL. So that is where I can configure this particular DataControl:

Creating an ADF URL Service DataControl for binding a File or Servlet/JSP service and using it in an ADF Faces Web Application urldc adfconnections