RESTful IDEAS: Integrated Documentation Environment for Aircraft Support‏ Originally presented at the XML 2007 Conference by: Joel Amoussou, Founder & CEO, Efasoft [email_address]
Agenda Security 5 IDEAS Use Cases 1 S1000D 2 AtomPub and OpenSearch 3 Getting Started 4
How Information is Distributed Today? Shipping of Physical Products Paper, CD-ROM, DVD Four revisions a year Temporary Revisions Online Access Hosted by manufacturers Boeing MPT Airbus|World
Current Digital File Formats S1000D Military Specifications (CALS)‏ ATA iSpec 2200 PDF and Proprietary Formats S1000D
Beyond S1000D: IDEAS IDEAS AtomPub OpenSearch Syndication Federated Search Ex- change Library Services
Maintenance and Flight Operations Airframe Manufacturer Engine Manufacturer Component  Manufacturer FAA/Transport Canada Airline Policies &  Procedures Feeds Reader Aggregator OpenSearch Client
Distributed Aircraft Manufacturing AtomPub Server Airframer (Systems Integrator)‏ AtomPub Client Partner/Supplier Create content with HTTP POST Get content with HTTP GET Update content with HTTP PUT Delete content with HTTP DELETE
Airline Originated Changes AtomPub Server Airframer/FAA/Suppliers AtomPub Client Airline's Content Repository Create content with HTTP POST Get content with HTTP GET Update content with HTTP PUT Delete content with HTTP DELETE
Syndication-Oriented Architecture (SynOA)‏ ROA and SynOA REST Atom AtomPub OpenSearch SOA XML Schema SOAP WSDL UDDI WS-* Web Services
What is S1000D? ASD, AIA, and ATA Military and Civil Aviation Open standards (RDF, Dublin Core, XLink, WebCGM, XML Schema)‏ Common Source DataBase (CSDB) and Reuse Metadata Data Module S1000D
S1000D Data Module Identification and Status  (data module code, applicability, issue number, etc.)‏ Content (actual maintenance or operation procedure)‏
Sample S1000D Data Module Metadata <dmodule xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;    xmlns:dc=&quot;http://www.purl.org/dc/elements/1.1/&quot;> <rdf:Description> <dc:title>Hydraulic Tank - Clean by ultrasonic</dc:title> <dc:creator>U8234</dc:creator> <dc:subject>Hydraulic Tank - Clean by ultrasonic </dc:subject> <dc:publisher>U8234</dc:publisher> <dc:contributor>U8234</dc:contributor> <dc:date>2007-07-31</dc:date> <dc:type>text</dc:type> <dc:format>text/xml</dc:format> <dc:identifier>8H-A-29-10-05-01A-253B-C</dc:identifier> <dc:language>en-GB</dc:language> <dc:rights>01</dc:rights> </rdf:Description> ... </dmodule>
Sample S1000D Data Module Content <mainfunc> <step1> <para>Clean by ultrasonic.</para> <step2> <para>Press ON to start.</para> </step2> <step2> <para>Monitor the cleaner during operation.<para> </step2> <step2> <para> The cleaner will stop automatically after running for  the specified time. <para> </step2> </step1> <mainfunc>
Data Module Code 8H: Model Identification Code A: System Difference Code 29: System (Hydraulic Power)‏ 10: Subsystem (Main Hydraulic Power)‏ 05: Unit or Component (Hydraulic Tank)‏ 01: Disassembly Code (first assembly removed from the tank)‏ A: Disassembly Code Variant 253: Information Code (clean by ultrasonic with equipment X)‏ B: Information Code Variant (clean by ultrasonic with equipment Y)‏ C: Item Location Code (C = Maintenance on the bench)‏ 8H-A-29-10-05-01A-253B-C
S1000D Publication Module (PM)‏ DM Reference DM Reference DM Reference DM Reference DM Reference
S1000D Information Life Cycle DMRL Presentation CSDB Common Source Database Browser-based Interactive Electronic Technical Publication (IETP)‏ Data Modules Requirement List
Sample Atom Feed for S1000D CSDB <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;> <title>Example S1000D Feed</title> <link rel=&quot;self&quot; type=&quot;application/atom+xml&quot; href=&quot;http://xyz-aero.com/csdb/feed.atom&quot;/> <updated>2007-11-20T19:30:02Z</updated> <author> <name>XYZ Aero</name> </author> <id>http://xyz-aero.com/csdb</id> <entry> <title>Hydraulic Tank - Clean by ultrasonic with equipment X</title> <link rel=&quot;enclosure&quot; type=&quot;image/png&quot; length=&quot;1337&quot; href=&quot;http://xyz-aero.com/csdb/illustration/icn.png&quot;/> <id>http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C</id> <updated>2007-11-20T19:30:02Z</updated> <content  src=&quot;http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C.xml&quot;  type=&quot;text/xml&quot;/> <summary> Hydraulic Tank – Clean by ultrasonic with equipment X  </summary> </entry> ... </feed>
AtomPub Service Document for a CSDB <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <service xmlns=&quot;http://www.w3.org/2007/app&quot;  xmlns:atom=&quot;http://www.w3.org/2005/Atom&quot;> <workspace> <atom:title>S1000D CSDB</atom:title> <collection href=&quot;http://xyz-aero.com/csdb/dm&quot; > <atom:title>S1000D Data Modules<title> <categories href=&quot;http://www.s1000d.org/cats/dm.cats&quot; /> </collection> <collection href=&quot;http://xyz-aero.com/csdb/illustration&quot; > <atom:title>S1000D Illustrations</atom:title> <accept>image/png</accept> <accept>image/jpeg</accept> <accept>image/gif</accept> <accept>image/tif</accept> <accept>image/cg4</accept> <accept>image/cgm</accept> </collection> </workspace> </service
Listing Atom Collection <feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;> <link rel=&quot;first&quot; href=&quot;http://xyz-aero.com/csdb/dm/amm&quot; /> <link rel=&quot;next&quot; href=&quot;http://xyz-aero.com/csdb/dm/fim&quot; /> <link rel=&quot;last&quot; href=&quot;http://xyz-aero.com/csdb/dm/aipc&quot; /> ... </feed>
Posting a Data Module to an Atom Server POST /csdb/dm HTTP/1.1 Host: xyz-aero.com Authorization: XYZAeroLogin auth={auth token} Content-Type: application/atom+xml;type=entry Content-Length: nnn Slug: First Post <?xml version=&quot;1.0&quot; ?> <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot;> <title>Hydraulic Tank - Clean by ultrasonic with equipment X</title> <id>http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C</id> <updated>2007-11-20T19:30:02Z</updated> <author> <name>XYZ Aero</name> </author> <content type=&quot;text/xml&quot;> <dmodule>..</dmodule> </content>   <summary> Hydraulic Tank – Clean by ultrasonic with equipment X </summary> </entry>
Data Module Created by an Atom Server HTTP/1.1 201 Created Date: Sun, 11 Nov 2007 19:01:11 GMT Content-Length: nnn Content-Type: application/atom+xml;type=entry;charset=&quot;utf-8&quot; Location: http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C.atom ETag: &quot;cj373d8762369g&quot; <?xml version=&quot;1.0&quot; ?> <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot;> <title>Hydraulic Tank - Clean by ultrasonic with equipment X</title> <id>http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C</id> <updated>2007-11-20T19:30:02Z</updated> <author> <name>Aero Tanks</name> </author> <content type=&quot;text/xml&quot;> <dmodule>..</dmodule> </content>   <summary> Hydraulic Tank – Clean by ultrasonic with equipment X </summary> </entry>
OpenSearch Description Document <?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <OpenSearchDescription  xmlns=&quot;http://a9.com/-/spec/opensearch/1.1/&quot;> <ShortName>FAA's ADs Search</ShortName> <Description> Use to search FAA airworthiness directives. </Description> <Tags>airworthiness directives</Tags> <Contact>opensearch.admin@faa.gov</Contact> <Url type=&quot;application/atom+xml&quot;  template=&quot;http://faa.gov/ads/ ?q={searchTerms}&amp;p={startPage?}&amp;format=atom &quot;/> </OpenSearchDescription>
OpenSearch Atom Search Result <feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;  xmlns:opensearch=&quot;http://a9.com/-/spec/opensearch/1.1/&quot;> <title>FAA ADs Search: hydraulic tank</title>  <updated>2007-11-20T15:20:02Z</updated> <id>http://faa.gov/ads/hydraulic+tank</id> <opensearch:totalResults>1</opensearch:totalResults> <opensearch:startIndex>1</opensearch:startIndex> <opensearch:itemsPerPage>20</opensearch:itemsPerPage> <opensearch:Query role=&quot;request&quot; searchTerms=&quot;hydraulic tank&quot; startPage=&quot;1&quot; /> <link rel=&quot;alternate&quot;  href=&quot;http://faa.gov/ads/hydraulic+tank?p=1&quot; type=&quot;text/html&quot;/> <link rel=&quot;self&quot;  href=&quot;http://faa.gov/ads/hydraulic+tank?p=1&amp;format=atom&quot;  type=&quot;application/atom+xml&quot;/> <link  rel=&quot;search&quot;  type=&quot;application/opensearchdescription+xml&quot;  href=&quot;http://faa.gov/ads/opensearchdescription.xml&quot;/> <entry>... </entry> </feed>
Getting Started IETP Benefits Integrate feeds reader Add OpenSearch provider to browser  Configure feeds aggregator Users search multiple repositories  Users subscribe to feeds Up-to-date content is always available CSDB Generate and serve Atom feeds from your CSDB (XSLT, Abdera)‏ Turn your search engine into an OpenSearch provider
S1000D Publication Module (PM)‏ <pm xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;> <idstatus>...</idstatus> <content> <pmentry> <title> Hydraulic Tank - Clean by ultrasonic with equipment X </title> <refdm> <xlink:locator xlink:label=&quot;Clean&quot;  xlink:href=&quot;DMC-8H-A-29-10-05-01A-253A-C.xml&quot;/> </refdm> </pmentry> <pmentry> <title> Hydraulic Tank - Clean by ultrasonic with equipment Y </title> <refdm> <xlink:locator xlink:label=&quot;Clean&quot;  xlink:href=&quot;DMC-8H-A-29-10-05-01A-253B-C.xml&quot;/> </refdm> </pmentry> </content> </pm>
From S1000D PM to Atom Feed with XSLT <xsl:for-each select=&quot;s:pmentry&quot;> <xsl:variable name=&quot;dmc&quot;    select=&quot;s:refdm/xlink:locator/@xlink:href&quot;/> <entry> <title><xsl:value-of select=&quot;s:title&quot;/></title> <id> <xsl:value-of select=&quot;concat ('http://xyz-aero.com/csdb/dm/',  substring-before($dmc, '.'))&quot;/> </id> <updated> <xsl:value-of select=&quot;current-dateTime()&quot;/> </updated> <content src=&quot;{$dmc}&quot; type=&quot;text/xml&quot;/> <summary> <xsl:value-of select=&quot;s:title&quot;/> </summary> </entry> </xsl:for-each>
Posting to an Atom Server with Abdera String csdb = &quot;http://xyz-aero.com/csdb&quot;;  ... Document<Service> serviceDoc = client.get(csdb).getDocument(); Service service = serviceDoc.getRoot(); Collection collection =  service.getWorkspaces().get(0)‏ .getCollections().get(0); String uri = collection.getHref().toString(); Response response = client. post (uri, entry); if (response.getStatus() == 201)  System.out.println(&quot;Data module successfully uploaded!&quot;); else System.out.println(&quot;Data module upload failed!&quot;);
AtomPub Security SSL HTTP Authentication WSSE XML Signature /Encryption Others Security
Signing an Atom Feed with Apache Abdera Abdera abdera = new Abdera(); AbderaSecurity abderaSecurity = new AbderaSecurity(abdera); URL url = new  URL(&quot;http://xyz-aero.com/csdb/DMC-8H-A-29-10-05-01A-253A-C.atom&quot;); Document<Feed> doc = parser.parse(url.openStream(),url); Feed feed = doc.getRoot(); PrivateKey privateKey = ... X509Certificate certificate = ... Signature signature = abderaSecurity.getNewSignature(); SignatureOptions options = signature.getDefaultSignatureOptions(); options.setSigningKey(privateKey); options.setCertificate(certificate); feed = signature. sign (feed, options);
Verifying a Signature with Apache Abdera ByteArrayInputStream feed = ... Document<Entry> doc = abdera.getParser().parse(feed); entry = doc.getRoot(); System.out.println(&quot;Valid signature?: &quot; + signature. verify (entry, null));
Standardization with CMIS 1 AtomPub and SOAP bindings Not all deployed CMS will support CMIS. 2 Vanilla AtomPub client and server can be implemented easily with existing tools (e.g. Apache Abdera). 3 Interoperability issues between Vanilla AtomPub client and CMIS AtomPub server.
Thank You ! [email_address]

RESTFul IDEAS

  • 1.
    RESTful IDEAS: IntegratedDocumentation Environment for Aircraft Support‏ Originally presented at the XML 2007 Conference by: Joel Amoussou, Founder & CEO, Efasoft [email_address]
  • 2.
    Agenda Security 5IDEAS Use Cases 1 S1000D 2 AtomPub and OpenSearch 3 Getting Started 4
  • 3.
    How Information isDistributed Today? Shipping of Physical Products Paper, CD-ROM, DVD Four revisions a year Temporary Revisions Online Access Hosted by manufacturers Boeing MPT Airbus|World
  • 4.
    Current Digital FileFormats S1000D Military Specifications (CALS)‏ ATA iSpec 2200 PDF and Proprietary Formats S1000D
  • 5.
    Beyond S1000D: IDEASIDEAS AtomPub OpenSearch Syndication Federated Search Ex- change Library Services
  • 6.
    Maintenance and FlightOperations Airframe Manufacturer Engine Manufacturer Component Manufacturer FAA/Transport Canada Airline Policies & Procedures Feeds Reader Aggregator OpenSearch Client
  • 7.
    Distributed Aircraft ManufacturingAtomPub Server Airframer (Systems Integrator)‏ AtomPub Client Partner/Supplier Create content with HTTP POST Get content with HTTP GET Update content with HTTP PUT Delete content with HTTP DELETE
  • 8.
    Airline Originated ChangesAtomPub Server Airframer/FAA/Suppliers AtomPub Client Airline's Content Repository Create content with HTTP POST Get content with HTTP GET Update content with HTTP PUT Delete content with HTTP DELETE
  • 9.
    Syndication-Oriented Architecture (SynOA)‏ROA and SynOA REST Atom AtomPub OpenSearch SOA XML Schema SOAP WSDL UDDI WS-* Web Services
  • 10.
    What is S1000D?ASD, AIA, and ATA Military and Civil Aviation Open standards (RDF, Dublin Core, XLink, WebCGM, XML Schema)‏ Common Source DataBase (CSDB) and Reuse Metadata Data Module S1000D
  • 11.
    S1000D Data ModuleIdentification and Status (data module code, applicability, issue number, etc.)‏ Content (actual maintenance or operation procedure)‏
  • 12.
    Sample S1000D DataModule Metadata <dmodule xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot; xmlns:dc=&quot;http://www.purl.org/dc/elements/1.1/&quot;> <rdf:Description> <dc:title>Hydraulic Tank - Clean by ultrasonic</dc:title> <dc:creator>U8234</dc:creator> <dc:subject>Hydraulic Tank - Clean by ultrasonic </dc:subject> <dc:publisher>U8234</dc:publisher> <dc:contributor>U8234</dc:contributor> <dc:date>2007-07-31</dc:date> <dc:type>text</dc:type> <dc:format>text/xml</dc:format> <dc:identifier>8H-A-29-10-05-01A-253B-C</dc:identifier> <dc:language>en-GB</dc:language> <dc:rights>01</dc:rights> </rdf:Description> ... </dmodule>
  • 13.
    Sample S1000D DataModule Content <mainfunc> <step1> <para>Clean by ultrasonic.</para> <step2> <para>Press ON to start.</para> </step2> <step2> <para>Monitor the cleaner during operation.<para> </step2> <step2> <para> The cleaner will stop automatically after running for the specified time. <para> </step2> </step1> <mainfunc>
  • 14.
    Data Module Code8H: Model Identification Code A: System Difference Code 29: System (Hydraulic Power)‏ 10: Subsystem (Main Hydraulic Power)‏ 05: Unit or Component (Hydraulic Tank)‏ 01: Disassembly Code (first assembly removed from the tank)‏ A: Disassembly Code Variant 253: Information Code (clean by ultrasonic with equipment X)‏ B: Information Code Variant (clean by ultrasonic with equipment Y)‏ C: Item Location Code (C = Maintenance on the bench)‏ 8H-A-29-10-05-01A-253B-C
  • 15.
    S1000D Publication Module(PM)‏ DM Reference DM Reference DM Reference DM Reference DM Reference
  • 16.
    S1000D Information LifeCycle DMRL Presentation CSDB Common Source Database Browser-based Interactive Electronic Technical Publication (IETP)‏ Data Modules Requirement List
  • 17.
    Sample Atom Feedfor S1000D CSDB <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;> <title>Example S1000D Feed</title> <link rel=&quot;self&quot; type=&quot;application/atom+xml&quot; href=&quot;http://xyz-aero.com/csdb/feed.atom&quot;/> <updated>2007-11-20T19:30:02Z</updated> <author> <name>XYZ Aero</name> </author> <id>http://xyz-aero.com/csdb</id> <entry> <title>Hydraulic Tank - Clean by ultrasonic with equipment X</title> <link rel=&quot;enclosure&quot; type=&quot;image/png&quot; length=&quot;1337&quot; href=&quot;http://xyz-aero.com/csdb/illustration/icn.png&quot;/> <id>http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C</id> <updated>2007-11-20T19:30:02Z</updated> <content src=&quot;http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C.xml&quot; type=&quot;text/xml&quot;/> <summary> Hydraulic Tank – Clean by ultrasonic with equipment X </summary> </entry> ... </feed>
  • 18.
    AtomPub Service Documentfor a CSDB <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <service xmlns=&quot;http://www.w3.org/2007/app&quot; xmlns:atom=&quot;http://www.w3.org/2005/Atom&quot;> <workspace> <atom:title>S1000D CSDB</atom:title> <collection href=&quot;http://xyz-aero.com/csdb/dm&quot; > <atom:title>S1000D Data Modules<title> <categories href=&quot;http://www.s1000d.org/cats/dm.cats&quot; /> </collection> <collection href=&quot;http://xyz-aero.com/csdb/illustration&quot; > <atom:title>S1000D Illustrations</atom:title> <accept>image/png</accept> <accept>image/jpeg</accept> <accept>image/gif</accept> <accept>image/tif</accept> <accept>image/cg4</accept> <accept>image/cgm</accept> </collection> </workspace> </service
  • 19.
    Listing Atom Collection<feed xmlns=&quot;http://www.w3.org/2005/Atom&quot;> <link rel=&quot;first&quot; href=&quot;http://xyz-aero.com/csdb/dm/amm&quot; /> <link rel=&quot;next&quot; href=&quot;http://xyz-aero.com/csdb/dm/fim&quot; /> <link rel=&quot;last&quot; href=&quot;http://xyz-aero.com/csdb/dm/aipc&quot; /> ... </feed>
  • 20.
    Posting a DataModule to an Atom Server POST /csdb/dm HTTP/1.1 Host: xyz-aero.com Authorization: XYZAeroLogin auth={auth token} Content-Type: application/atom+xml;type=entry Content-Length: nnn Slug: First Post <?xml version=&quot;1.0&quot; ?> <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot;> <title>Hydraulic Tank - Clean by ultrasonic with equipment X</title> <id>http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C</id> <updated>2007-11-20T19:30:02Z</updated> <author> <name>XYZ Aero</name> </author> <content type=&quot;text/xml&quot;> <dmodule>..</dmodule> </content> <summary> Hydraulic Tank – Clean by ultrasonic with equipment X </summary> </entry>
  • 21.
    Data Module Createdby an Atom Server HTTP/1.1 201 Created Date: Sun, 11 Nov 2007 19:01:11 GMT Content-Length: nnn Content-Type: application/atom+xml;type=entry;charset=&quot;utf-8&quot; Location: http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C.atom ETag: &quot;cj373d8762369g&quot; <?xml version=&quot;1.0&quot; ?> <entry xmlns=&quot;http://www.w3.org/2005/Atom&quot;> <title>Hydraulic Tank - Clean by ultrasonic with equipment X</title> <id>http://xyz-aero.com/csdb/dm/DMC-8H-A-29-10-05-01A-253A-C</id> <updated>2007-11-20T19:30:02Z</updated> <author> <name>Aero Tanks</name> </author> <content type=&quot;text/xml&quot;> <dmodule>..</dmodule> </content> <summary> Hydraulic Tank – Clean by ultrasonic with equipment X </summary> </entry>
  • 22.
    OpenSearch Description Document<?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> <OpenSearchDescription xmlns=&quot;http://a9.com/-/spec/opensearch/1.1/&quot;> <ShortName>FAA's ADs Search</ShortName> <Description> Use to search FAA airworthiness directives. </Description> <Tags>airworthiness directives</Tags> <Contact>opensearch.admin@faa.gov</Contact> <Url type=&quot;application/atom+xml&quot; template=&quot;http://faa.gov/ads/ ?q={searchTerms}&amp;p={startPage?}&amp;format=atom &quot;/> </OpenSearchDescription>
  • 23.
    OpenSearch Atom SearchResult <feed xmlns=&quot;http://www.w3.org/2005/Atom&quot; xmlns:opensearch=&quot;http://a9.com/-/spec/opensearch/1.1/&quot;> <title>FAA ADs Search: hydraulic tank</title> <updated>2007-11-20T15:20:02Z</updated> <id>http://faa.gov/ads/hydraulic+tank</id> <opensearch:totalResults>1</opensearch:totalResults> <opensearch:startIndex>1</opensearch:startIndex> <opensearch:itemsPerPage>20</opensearch:itemsPerPage> <opensearch:Query role=&quot;request&quot; searchTerms=&quot;hydraulic tank&quot; startPage=&quot;1&quot; /> <link rel=&quot;alternate&quot; href=&quot;http://faa.gov/ads/hydraulic+tank?p=1&quot; type=&quot;text/html&quot;/> <link rel=&quot;self&quot; href=&quot;http://faa.gov/ads/hydraulic+tank?p=1&amp;format=atom&quot; type=&quot;application/atom+xml&quot;/> <link rel=&quot;search&quot; type=&quot;application/opensearchdescription+xml&quot; href=&quot;http://faa.gov/ads/opensearchdescription.xml&quot;/> <entry>... </entry> </feed>
  • 24.
    Getting Started IETPBenefits Integrate feeds reader Add OpenSearch provider to browser Configure feeds aggregator Users search multiple repositories Users subscribe to feeds Up-to-date content is always available CSDB Generate and serve Atom feeds from your CSDB (XSLT, Abdera)‏ Turn your search engine into an OpenSearch provider
  • 25.
    S1000D Publication Module(PM)‏ <pm xmlns:xlink=&quot;http://www.w3.org/1999/xlink&quot;> <idstatus>...</idstatus> <content> <pmentry> <title> Hydraulic Tank - Clean by ultrasonic with equipment X </title> <refdm> <xlink:locator xlink:label=&quot;Clean&quot; xlink:href=&quot;DMC-8H-A-29-10-05-01A-253A-C.xml&quot;/> </refdm> </pmentry> <pmentry> <title> Hydraulic Tank - Clean by ultrasonic with equipment Y </title> <refdm> <xlink:locator xlink:label=&quot;Clean&quot; xlink:href=&quot;DMC-8H-A-29-10-05-01A-253B-C.xml&quot;/> </refdm> </pmentry> </content> </pm>
  • 26.
    From S1000D PMto Atom Feed with XSLT <xsl:for-each select=&quot;s:pmentry&quot;> <xsl:variable name=&quot;dmc&quot; select=&quot;s:refdm/xlink:locator/@xlink:href&quot;/> <entry> <title><xsl:value-of select=&quot;s:title&quot;/></title> <id> <xsl:value-of select=&quot;concat ('http://xyz-aero.com/csdb/dm/', substring-before($dmc, '.'))&quot;/> </id> <updated> <xsl:value-of select=&quot;current-dateTime()&quot;/> </updated> <content src=&quot;{$dmc}&quot; type=&quot;text/xml&quot;/> <summary> <xsl:value-of select=&quot;s:title&quot;/> </summary> </entry> </xsl:for-each>
  • 27.
    Posting to anAtom Server with Abdera String csdb = &quot;http://xyz-aero.com/csdb&quot;; ... Document<Service> serviceDoc = client.get(csdb).getDocument(); Service service = serviceDoc.getRoot(); Collection collection = service.getWorkspaces().get(0)‏ .getCollections().get(0); String uri = collection.getHref().toString(); Response response = client. post (uri, entry); if (response.getStatus() == 201) System.out.println(&quot;Data module successfully uploaded!&quot;); else System.out.println(&quot;Data module upload failed!&quot;);
  • 28.
    AtomPub Security SSLHTTP Authentication WSSE XML Signature /Encryption Others Security
  • 29.
    Signing an AtomFeed with Apache Abdera Abdera abdera = new Abdera(); AbderaSecurity abderaSecurity = new AbderaSecurity(abdera); URL url = new URL(&quot;http://xyz-aero.com/csdb/DMC-8H-A-29-10-05-01A-253A-C.atom&quot;); Document<Feed> doc = parser.parse(url.openStream(),url); Feed feed = doc.getRoot(); PrivateKey privateKey = ... X509Certificate certificate = ... Signature signature = abderaSecurity.getNewSignature(); SignatureOptions options = signature.getDefaultSignatureOptions(); options.setSigningKey(privateKey); options.setCertificate(certificate); feed = signature. sign (feed, options);
  • 30.
    Verifying a Signaturewith Apache Abdera ByteArrayInputStream feed = ... Document<Entry> doc = abdera.getParser().parse(feed); entry = doc.getRoot(); System.out.println(&quot;Valid signature?: &quot; + signature. verify (entry, null));
  • 31.
    Standardization with CMIS1 AtomPub and SOAP bindings Not all deployed CMS will support CMIS. 2 Vanilla AtomPub client and server can be implemented easily with existing tools (e.g. Apache Abdera). 3 Interoperability issues between Vanilla AtomPub client and CMIS AtomPub server.
  • 32.
    Thank You ![email_address]