]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-30 hello.xsd schema changed (made it flat) to accommodate requirements of...
authorSanjay Dalal <sanjay.dalal@berkeley.edu>
Thu, 26 Mar 2009 18:58:01 +0000 (18:58 +0000)
committerSanjay Dalal <sanjay.dalal@berkeley.edu>
Thu, 26 Mar 2009 18:58:01 +0000 (18:58 +0000)
M    services/trunk/3rdparty/nuxeo/nuxeo-platform-cs/src/main/resources/schemas/hello.xsd
M    services/trunk/3rdparty/nuxeo/nuxeo-platform-cs/src/main/resources/OSGI-INF/ecm-types-contrib.xml
M    services/trunk/3rdparty/nuxeo/nuxeo-platform-cs/src/main/resources/OSGI-INF/layouts-contrib.xml
M    services/trunk/HelloWorld/HelloWorldJaxb/src/main/resources/hello.xsd
D    services/trunk/HelloWorld/HelloWorldDocService
M    services/trunk/HelloWorld/HelloWorldClient/nbactions.xml
AM + services/trunk/HelloWorld/HelloWorldNuxeoService
D    services/trunk/HelloWorld/HelloWorldNuxeoService/pom.all.xml
D    services/trunk/HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/PersonDocResource.java
D    services/trunk/HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/HelloworldDocApplication.java
AM + services/trunk/HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/PersonNuxeoResource.java
AM + services/trunk/HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/HelloworldNuxeoApplication.java
M    services/trunk/HelloWorld/HelloWorldNuxeoService/src/main/webapp/WEB-INF/web.xml
M    services/trunk/HelloWorld/HelloWorldNuxeoService/pom.xml
A  + services/trunk/HelloWorld/HelloWorldNuxeoService/README.txt

22 files changed:
3rdparty/nuxeo/nuxeo-platform-cs/src/main/resources/OSGI-INF/ecm-types-contrib.xml
3rdparty/nuxeo/nuxeo-platform-cs/src/main/resources/OSGI-INF/layouts-contrib.xml
3rdparty/nuxeo/nuxeo-platform-cs/src/main/resources/schemas/hello.xsd
HelloWorld/HelloWorldClient/nbactions.xml
HelloWorld/HelloWorldDocService/src/main/java/org/collectionspace/hello/services/PersonDocResource.java [deleted file]
HelloWorld/HelloWorldJaxb/src/main/resources/hello.xsd
HelloWorld/HelloWorldNuxeoService/README.txt [moved from HelloWorld/HelloWorldDocService/README.txt with 100% similarity]
HelloWorld/HelloWorldNuxeoService/build.properties [moved from HelloWorld/HelloWorldDocService/build.properties with 100% similarity]
HelloWorld/HelloWorldNuxeoService/nb-configuration.xml [moved from HelloWorld/HelloWorldDocService/nb-configuration.xml with 100% similarity]
HelloWorld/HelloWorldNuxeoService/nbactions.xml [moved from HelloWorld/HelloWorldDocService/nbactions.xml with 100% similarity]
HelloWorld/HelloWorldNuxeoService/pom.xml [moved from HelloWorld/HelloWorldDocService/pom.xml with 96% similarity]
HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/HelloworldNuxeoApplication.java [moved from HelloWorld/HelloWorldDocService/src/main/java/org/collectionspace/hello/services/HelloworldDocApplication.java with 73% similarity]
HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/PersonNuxeoResource.java [new file with mode: 0644]
HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/nuxeo/NuxeoCallback.java [moved from HelloWorld/HelloWorldDocService/src/main/java/org/collectionspace/hello/services/nuxeo/NuxeoCallback.java with 100% similarity]
HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/nuxeo/NuxeoCallbackHandler.java [moved from HelloWorld/HelloWorldDocService/src/main/java/org/collectionspace/hello/services/nuxeo/NuxeoCallbackHandler.java with 100% similarity]
HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/nuxeo/NuxeoLoginConfiguration.java [moved from HelloWorld/HelloWorldDocService/src/main/java/org/collectionspace/hello/services/nuxeo/NuxeoLoginConfiguration.java with 100% similarity]
HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/nuxeo/NuxeoLoginContextFactory.java [moved from HelloWorld/HelloWorldDocService/src/main/java/org/collectionspace/hello/services/nuxeo/NuxeoLoginContextFactory.java with 100% similarity]
HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/nuxeo/NuxeoRESTClient.java [moved from HelloWorld/HelloWorldDocService/src/main/java/org/collectionspace/hello/services/nuxeo/NuxeoRESTClient.java with 100% similarity]
HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/nuxeo/PortalSSOAuthenticationProvider.java [moved from HelloWorld/HelloWorldDocService/src/main/java/org/collectionspace/hello/services/nuxeo/PortalSSOAuthenticationProvider.java with 100% similarity]
HelloWorld/HelloWorldNuxeoService/src/main/resources/jndi.properties [moved from HelloWorld/HelloWorldDocService/src/main/resources/jndi.properties with 100% similarity]
HelloWorld/HelloWorldNuxeoService/src/main/resources/nuxeo.properties [moved from HelloWorld/HelloWorldDocService/src/main/resources/nuxeo.properties with 100% similarity]
HelloWorld/HelloWorldNuxeoService/src/main/webapp/WEB-INF/web.xml [moved from HelloWorld/HelloWorldDocService/src/main/webapp/WEB-INF/web.xml with 80% similarity]

index 04790db463ce6aa88b7d83f665ca32c577c21f5d..02347959aa876dba697e5c4799f06365e49646ae 100644 (file)
@@ -8,7 +8,7 @@
 
       <layouts mode="any">
         <layout>heading</layout>
-        <layout>person</layout>
+        <layout>hello</layout>
       </layouts>
       <!--layout>
         <widget jsfcomponent="h:inputText"
index e9449766d163b90062cde49cb62703384987ba42..3cf9ff7cd68e85594d810f152e871cb9267f0a4d 100644 (file)
@@ -5,7 +5,7 @@
   <extension target="org.nuxeo.ecm.platform.forms.layout.WebLayoutManager"
     point="layouts">
 
-    <layout name="person">
+    <layout name="hello">
       <templates>
         <template mode="any">/layouts/layout_default_template.xhtml</template>
       </templates>
@@ -26,7 +26,7 @@
         </labels>
         <translated>true</translated>
         <fields>
-          <field schema="hello">person.cid</field>
+          <field schema="hello">cid</field>
         </fields>
         <widgetModes>
           <!-- not shown in create mode -->
@@ -47,7 +47,7 @@
         </labels>
         <translated>true</translated>
         <fields>
-          <field schema="hello">person.cversion</field>
+          <field schema="hello">cversion</field>
         </fields>
         <properties widgetMode="edit">
           <property name="styleClass">dataInputText</property>
@@ -61,7 +61,7 @@
         </labels>
         <translated>true</translated>
         <fields>
-          <field schema="hello">person.firstName</field>
+          <field schema="hello">firstName</field>
         </fields>
         <properties widgetMode="edit">
           <property name="styleClass">dataInputText</property>
@@ -74,7 +74,7 @@
         </labels>
         <translated>true</translated>
         <fields>
-          <field schema="hello">person.lastName</field>
+          <field schema="hello">lastName</field>
         </fields>
         <properties widgetMode="edit">
           <property name="styleClass">dataInputText</property>
@@ -87,7 +87,7 @@
         </labels>
         <translated>true</translated>
         <fields>
-          <field schema="hello">person.street</field>
+          <field schema="hello">street</field>
         </fields>
         <properties widgetMode="edit">
           <property name="styleClass">dataInputText</property>
         </labels>
         <translated>true</translated>
         <fields>
-          <field schema="hello">person.city</field>
+          <field schema="hello">city</field>
         </fields>
         <properties widgetMode="edit">
           <property name="styleClass">dataInputText</property>
         </labels>
         <translated>true</translated>
         <fields>
-          <field schema="hello">person.state</field>
+          <field schema="hello">state</field>
         </fields>
         <properties widgetMode="edit">
           <property name="styleClass">dataInputText</property>
         </labels>
         <translated>true</translated>
         <fields>
-          <field schema="hello">person.zip</field>
+          <field schema="hello">zip</field>
         </fields>
         <properties widgetMode="edit">
           <property name="styleClass">dataInputText</property>
         </labels>
         <translated>true</translated>
         <fields>
-          <field schema="hello">person.country</field>
+          <field schema="hello">country</field>
         </fields>
         <properties widgetMode="edit">
           <property name="styleClass">dataInputText</property>
index f8109a7e4098c4192e94f814135d6615a042e87f..df2ec990f0c1eacea7f19d68337a81f3f7e5f24e 100644 (file)
@@ -6,30 +6,35 @@
   targetNamespace="http://collectionspace.org/hello/"
   version="0.1"
 >
-    <xs:element name="person">
+    <!--xs:element name="person">
         <xs:complexType>
 
-            <xs:sequence>
-                <xs:element name="firstName" type="xs:string"
+            <xs:sequence-->
+    <xs:element name="firstName" type="xs:string"
                                                minOccurs="1" />
-                <xs:element name="lastName" type="xs:string"
+    <xs:element name="lastName" type="xs:string"
                                                minOccurs="1" />
-                <xs:element name="street" type="xs:string"
+    <xs:element name="street" type="xs:string"
                                                minOccurs="1" />
-                <xs:element name="city" type="xs:string"
+    <xs:element name="city" type="xs:string"
                                                minOccurs="1" />
-                <xs:element name="state" type="xs:string"
+    <xs:element name="state" type="xs:string"
                                                minOccurs="1" />
-                <xs:element name="zip" type="xs:string"
+    <xs:element name="zip" type="xs:string"
                                                minOccurs="1" />
-                <xs:element name="country" type="xs:string"
+    <xs:element name="country" type="xs:string"
                                                minOccurs="1" />
-            </xs:sequence>
+                        
+    <xs:element name="cid" type="xs:string"
+                                               minOccurs="1" />
+    <xs:element name="cversion" type="xs:string"
+                                               minOccurs="1" />
+            <!--/xs:sequence>
             <xs:attribute name="cid" type="xs:long" />
             <xs:attribute name="cversion" type="xs:int" />
 
         </xs:complexType>
-    </xs:element>
+    </xs:element-->
 
 
 </xs:schema>
index 458dbd0969b74487ee893682e8132829ae6efd7e..047c73d4e1cb26af331644b8995c97b9da0b89e7 100644 (file)
@@ -13,4 +13,5 @@
                 <maven.test.skip>true</maven.test.skip>\r
             </properties>\r
         </action>\r
+        \r
     </actions>\r
diff --git a/HelloWorld/HelloWorldDocService/src/main/java/org/collectionspace/hello/services/PersonDocResource.java b/HelloWorld/HelloWorldDocService/src/main/java/org/collectionspace/hello/services/PersonDocResource.java
deleted file mode 100644 (file)
index ecad948..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-package org.collectionspace.hello.services;
-
-import org.collectionspace.hello.services.nuxeo.NuxeoRESTClient;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.Produces;
-import java.util.Map;
-import javax.ws.rs.core.Context;
-import javax.ws.rs.core.UriInfo;
-import org.collectionspace.hello.*;
-
-
-import org.collectionspace.hello.People.PeopleItem;
-import org.dom4j.Document;
-import org.dom4j.Element;
-import org.dom4j.io.SAXReader;
-import org.restlet.resource.Representation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Path("/persons")
-@Consumes("application/xml")
-@Produces("application/xml")
-public class PersonDocResource {
-
-    final Logger logger = LoggerFactory.getLogger(PersonDocResource.class);
-
-    public PersonDocResource() {
-    }
-
-    @GET
-    public People getPeople(@Context UriInfo ui) {
-        People p = new People();
-        try {
-            List<People.PeopleItem> list = p.getPeopleItem();
-            NuxeoRESTClient nxClient = getClient();
-
-            List<String> pathParams = new ArrayList<String>();
-            Map<String, String> queryParams = new HashMap<String, String>();
-            //browse default repository for People
-            //For sanjay, People repository id is f084243e-4b81-42a1-9a05-518e974facbd
-            pathParams = Arrays.asList("default", "f084243e-4b81-42a1-9a05-518e974facbd", "browse");
-            Representation res = nxClient.get(pathParams, queryParams);
-            SAXReader reader = new SAXReader();
-            Document document = reader.read(res.getStream());
-            Element root = document.getRootElement();
-            for (Iterator i = root.elementIterator(); i.hasNext();) {
-                Element element = (Element) i.next();
-                PeopleItem pli = new PeopleItem();
-                pli.setTitle(element.attributeValue("title"));
-                pli.setUri(element.attributeValue("url"));
-                pli.setId(element.attributeValue("id"));
-                list.add(pli);
-            }
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return p;
-    }
-
-
-//    private void getQueryModel() throws IOException {
-//        NuxeoRESTClient nxClient = getClient();
-//
-//        List<String> pathParams = new ArrayList<String>();
-//        Map<String, String> queryParams = new HashMap<String, String>();
-//
-//        //query model for user documents
-//        pathParams = Arrays.asList("execQueryModel", "USER_DOCUMENTS");
-//        queryParams.put("QP1", "Administrator");
-//        queryParams.put("format", "XML");
-//
-//
-//        Representation res = nxClient.get(pathParams, queryParams);
-//        String resStr = res.getText();
-//        verbose("getQueryModel:" + resStr);
-//
-//    }
-//
-//    private void getVocabulary() throws IOException {
-//        NuxeoRESTClient nxClient = getClient();
-//
-//        List<String> pathParams = new ArrayList<String>();
-//        Map<String, String> queryParams = new HashMap<String, String>();
-//        //get vocabulary
-//        pathParams = Arrays.asList("vocabulary", "continent_country");
-//        queryParams.put("lang", "en");
-//
-//        Representation res = nxClient.get(pathParams, queryParams);
-//        String resStr = res.getText();
-//        verbose("getVocabulary:" + resStr);
-//
-//    }
-    private NuxeoRESTClient getClient() {
-        NuxeoRESTClient nxClient = new NuxeoRESTClient("http://127.0.0.1:8080/nuxeo");
-        nxClient.setAuthType(NuxeoRESTClient.AUTH_TYPE_BASIC);
-        nxClient.setBasicAuthentication("Administrator", "Administrator");
-        return nxClient;
-    }
-
-    private void verbose(String msg) {
-        System.out.println("PersonDocResource: " + msg);
-    }
-}
index 6d202933f83958e0d995c7761169a85c25df267c..64a6b43b4c3a5740901fe4be8a85fd07bbaa710e 100644 (file)
         </xs:complexType>
     </xs:element>
 
+<!-- person-nuxeo uses both id and version as string -->
+    <xs:element name="person-nuxeo">
+        <xs:complexType>
+
+            <xs:sequence>
+                <xs:element name="id" type="xs:string" minOccurs="1" />
+                <xs:element name="version" type="xs:string" minOccurs="1" />
+                <xs:element name="firstName" type="xs:string" minOccurs="1" />
+                <xs:element name="lastName" type="xs:string" minOccurs="1" />
+                <xs:element name="street" type="xs:string" minOccurs="1" />
+                <xs:element name="city" type="xs:string" minOccurs="1" />
+                <xs:element name="state" type="xs:string" minOccurs="1" />
+                <xs:element name="zip" type="xs:string" minOccurs="1" />
+                <xs:element name="country" type="xs:string" minOccurs="1" />
+            </xs:sequence>
+
+        </xs:complexType>
+    </xs:element>
+
+
     <!-- people as in nuxeo repository -->
     <xs:element name="people">
         <xs:complexType>
             <xs:sequence>
 
-                 <xs:element name="people-item" maxOccurs="unbounded">
+                <xs:element name="people-item" maxOccurs="unbounded">
                     <xs:complexType>
                         <xs:sequence>
                             <xs:element name="title" type="xs:string"
similarity index 96%
rename from HelloWorld/HelloWorldDocService/pom.xml
rename to HelloWorld/HelloWorldNuxeoService/pom.xml
index 41b3e6279037a30079a07807ae660eea848123a0..f2fcee7693dccea057320b1d3c82eb1f1ab47f8f 100644 (file)
@@ -7,10 +7,10 @@
     </parent>\r
     <modelVersion>4.0.0</modelVersion>\r
     <groupId>org.collectionspace.hello.services</groupId>\r
-    <artifactId>helloworld-doc-service</artifactId>\r
+    <artifactId>helloworld-nuxeo-service</artifactId>\r
     <packaging>war</packaging>\r
     <version>0.1</version>\r
-    <name>Helloworld Document Service</name>\r
+    <name>Helloworld Nuxeo Service</name>\r
 \r
     <repositories>\r
         <repository>\r
@@ -4,13 +4,13 @@ import javax.ws.rs.core.Application;
 import java.util.HashSet;
 import java.util.Set;
 
-public class HelloworldDocApplication extends Application {
+public class HelloworldNuxeoApplication extends Application {
 
     private Set<Object> singletons = new HashSet<Object>();
     private Set<Class<?>> empty = new HashSet<Class<?>>();
 
-    public HelloworldDocApplication() {
-        singletons.add(new PersonDocResource());
+    public HelloworldNuxeoApplication() {
+        singletons.add(new PersonNuxeoResource());
     }
 
     @Override
diff --git a/HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/PersonNuxeoResource.java b/HelloWorld/HelloWorldNuxeoService/src/main/java/org/collectionspace/hello/services/PersonNuxeoResource.java
new file mode 100644 (file)
index 0000000..a4f3974
--- /dev/null
@@ -0,0 +1,292 @@
+package org.collectionspace.hello.services;
+
+import java.io.ByteArrayInputStream;
+import org.collectionspace.hello.services.nuxeo.NuxeoRESTClient;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import java.util.Map;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.WebApplicationException;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriBuilder;
+import javax.ws.rs.core.UriInfo;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import org.collectionspace.hello.*;
+
+
+import org.collectionspace.hello.People.PeopleItem;
+import org.dom4j.Document;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.restlet.resource.Representation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Path("/persons")
+@Consumes("application/xml")
+@Produces("application/xml")
+public class PersonNuxeoResource {
+
+    final Logger logger = LoggerFactory.getLogger(PersonNuxeoResource.class);
+
+    public PersonNuxeoResource() {
+    }
+
+    @GET
+    public People getPeople(@Context UriInfo ui) {
+        People p = new People();
+        try{
+            List<People.PeopleItem> list = p.getPeopleItem();
+            NuxeoRESTClient nxClient = getClient();
+
+            List<String> pathParams = new ArrayList<String>();
+            Map<String, String> queryParams = new HashMap<String, String>();
+            //browse default repository for People
+            //For sanjay, People repository id is f084243e-4b81-42a1-9a05-518e974facbd
+            pathParams = Arrays.asList("default", "f084243e-4b81-42a1-9a05-518e974facbd", "browse");
+            Representation res = nxClient.get(pathParams, queryParams);
+            SAXReader reader = new SAXReader();
+            Document document = reader.read(res.getStream());
+            Element root = document.getRootElement();
+            for(Iterator i = root.elementIterator(); i.hasNext();){
+                Element element = (Element) i.next();
+                PeopleItem pli = new PeopleItem();
+                pli.setTitle(element.attributeValue("title"));
+                pli.setUri(element.attributeValue("url"));
+                pli.setId(element.attributeValue("id"));
+                list.add(pli);
+            }
+
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+        return p;
+    }
+
+    @POST
+    public Response createPerson(PersonNuxeo p) {
+
+        NuxeoRESTClient nxClient = getClient();
+
+        List<String> pathParams = new ArrayList<String>();
+        Map<String, String> queryParams = new HashMap<String, String>();
+        pathParams.add("default");
+        pathParams.add("f084243e-4b81-42a1-9a05-518e974facbd");
+        pathParams.add("createDocument");
+        queryParams.put("docType", "Hello");
+        queryParams.put("dublincore:title", p.getFirstName() + " " + p.getLastName());
+        queryParams.put("hello:cversion", p.getVersion());
+        queryParams.put("hello:firstName", p.getFirstName());
+        queryParams.put("hello:lastName", p.getLastName());
+        queryParams.put("hello:street", p.getStreet());
+        queryParams.put("hello:city", p.getCity());
+        queryParams.put("hello:state", p.getState());
+        queryParams.put("hello:zip", p.getZip());
+        queryParams.put("hello:country", p.getCountry());
+        ByteArrayInputStream bais = new ByteArrayInputStream(new byte[0]);
+        Representation res = nxClient.post(pathParams, queryParams, bais);
+
+        SAXReader reader = new SAXReader();
+        try{
+            Document document = reader.read(res.getStream());
+            Element root = document.getRootElement();
+            for(Iterator i = root.elementIterator(); i.hasNext();){
+                Element element = (Element) i.next();
+                if("docRef".equals(element.getName())){
+                    String id = (String) element.getData();
+                    p.setId(id);
+                }
+            }
+        }catch(Exception e){
+            Response response = Response.status(Response.Status.NOT_FOUND).entity(
+                    "Create failed").type("text/plain").build();
+            throw new WebApplicationException(response);
+        }
+
+        verbose("created person", p);
+        UriBuilder path = UriBuilder.fromResource(PersonNuxeoResource.class);
+        path.path("" + p.getId());
+        Response response = Response.created(path.build()).build();
+        return response;
+    }
+
+    @GET
+    @Path("{id}")
+    public PersonNuxeo getPerson(@PathParam("id") String id) {
+        PersonNuxeo p = null;
+        if(p == null){
+            Response response = Response.status(Response.Status.NOT_FOUND).entity(
+                    "Get failed, the requested person ID:" + id + ": was not found.").type("text/plain").build();
+            throw new WebApplicationException(response);
+        }
+        verbose("get person", p);
+        return p;
+    }
+
+    @PUT
+    @Path("{id}")
+    public PersonNuxeo updatePerson(@PathParam("id") String id, PersonNuxeo update) {
+
+        verbose("updating person input", update);
+
+        NuxeoRESTClient nxClient = getClient();
+
+        List<String> pathParams = new ArrayList<String>();
+        Map<String, String> queryParams = new HashMap<String, String>();
+        pathParams.add("default");
+        pathParams.add(update.getId());
+        pathParams.add("updateDocumentRestlet");
+        queryParams.put("dublincore:title", "change title");
+        //todo: intelligent merge needed
+        if(update.getFirstName() != null){
+            queryParams.put("hello:firstName", update.getFirstName());
+        }
+        if(update.getLastName() != null){
+            queryParams.put("hello:lastName", update.getLastName());
+        }
+        if(update.getFirstName() != null && update.getLastName() != null){
+            queryParams.put("dublincore:title", update.getFirstName() + " " + update.getLastName());
+        }
+        if(update.getStreet() != null){
+            queryParams.put("hello:street", update.getStreet());
+        }
+        if(update.getCity() != null){
+            queryParams.put("hello:city", update.getCity());
+        }
+        if(update.getState() != null){
+            queryParams.put("hello:state", update.getState());
+        }
+        if(update.getZip() != null){
+            queryParams.put("hello:zip", update.getZip());
+        }
+        if(update.getCountry() != null){
+            queryParams.put("hello:country", update.getCountry());
+        }
+
+        Representation res = nxClient.get(pathParams, queryParams);
+        SAXReader reader = new SAXReader();
+        String status = "";
+        try{
+            Document document = reader.read(res.getStream());
+            Element root = document.getRootElement();
+            for(Iterator i = root.elementIterator(); i.hasNext();){
+                Element element = (Element) i.next();
+                if("docRef".equals(element.getName())){
+                    status = (String) element.getData();
+                    verbose("updatePerson: response=" + status);
+                }
+
+            }
+        }catch(Exception e){
+            //FIXME: NOT_FOUND?
+            Response response = Response.status(Response.Status.NOT_FOUND).entity(
+                    "Update failed ").type("text/plain").build();
+            throw new WebApplicationException(response);
+        }
+        //returning the same? ... for now
+        return update;
+    }
+
+    @DELETE
+    @Path("{id}")
+    public void deletePerson(@PathParam("id") String id) {
+        verbose("deleting person with id=" + id);
+        NuxeoRESTClient nxClient = getClient();
+        List<String> pathParams = new ArrayList<String>();
+        Map<String, String> queryParams = new HashMap<String, String>();
+        pathParams.add("default");
+        pathParams.add(id);
+        pathParams.add("deleteDocumentRestlet");
+        Representation res = nxClient.get(pathParams, queryParams);
+        SAXReader reader = new SAXReader();
+        String status = "";
+        try{
+            Document document = reader.read(res.getStream());
+            Element root = document.getRootElement();
+            for(Iterator i = root.elementIterator(); i.hasNext();){
+                Element element = (Element) i.next();
+                if("docRef".equals(element.getName())){
+                    status = (String) element.getData();
+                    verbose("deletePerson: response=" + status);
+                }
+
+            }
+        }catch(Exception e){
+            //FIXME: NOT_FOUND?
+            Response response = Response.status(Response.Status.NOT_FOUND).entity(
+                    "Delete failed ").type("text/plain").build();
+            throw new WebApplicationException(response);
+        }
+    }
+
+    private void verbose(String msg, PersonNuxeo p) {
+        try{
+            verbose(msg);
+            JAXBContext jc = JAXBContext.newInstance(
+                    PersonNuxeo.class);
+
+            Marshaller m = jc.createMarshaller();
+            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
+                    Boolean.TRUE);
+            m.marshal(p, System.out);
+        }catch(Exception e){
+            e.printStackTrace();
+        }
+
+    }
+
+//    private void getQueryModel() throws IOException {
+//        NuxeoRESTClient nxClient = getClient();
+//
+//        List<String> pathParams = new ArrayList<String>();
+//        Map<String, String> queryParams = new HashMap<String, String>();
+//
+//        //query model for user documents
+//        pathParams = Arrays.asList("execQueryModel", "USER_DOCUMENTS");
+//        queryParams.put("QP1", "Administrator");
+//        queryParams.put("format", "XML");
+//
+//
+//        Representation res = nxClient.get(pathParams, queryParams);
+//        String resStr = res.getText();
+//        verbose("getQueryModel:" + resStr);
+//
+//    }
+//
+//    private void getVocabulary() throws IOException {
+//        NuxeoRESTClient nxClient = getClient();
+//
+//        List<String> pathParams = new ArrayList<String>();
+//        Map<String, String> queryParams = new HashMap<String, String>();
+//        //get vocabulary
+//        pathParams = Arrays.asList("vocabulary", "continent_country");
+//        queryParams.put("lang", "en");
+//
+//        Representation res = nxClient.get(pathParams, queryParams);
+//        String resStr = res.getText();
+//        verbose("getVocabulary:" + resStr);
+//
+//    }
+    private NuxeoRESTClient getClient() {
+        NuxeoRESTClient nxClient = new NuxeoRESTClient("http://127.0.0.1:8080/nuxeo");
+        nxClient.setAuthType(NuxeoRESTClient.AUTH_TYPE_BASIC);
+        nxClient.setBasicAuthentication("Administrator", "Administrator");
+        return nxClient;
+    }
+
+    private void verbose(String msg) {
+        System.out.println("PersonNuxeoResource: " + msg);
+    }
+}
similarity index 80%
rename from HelloWorld/HelloWorldDocService/src/main/webapp/WEB-INF/web.xml
rename to HelloWorld/HelloWorldNuxeoService/src/main/webapp/WEB-INF/web.xml
index d6187fc0deaf6c9dfc22f06c5740207c66ec7f94..0c188a4fb9ee0e5729c6dafb6fa2d15ded5e02e4 100644 (file)
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">\r
 <web-app>\r
-    <display-name>HelloworldDoc</display-name>\r
+    <display-name>HelloworldNuxeo</display-name>\r
 \r
     <context-param>\r
         <param-name>javax.ws.rs.Application</param-name>\r
-        <param-value>org.collectionspace.hello.services.HelloworldDocApplication</param-value>\r
+        <param-value>org.collectionspace.hello.services.HelloworldNuxeoApplication</param-value>\r
     </context-param>\r
 \r
     <context-param>\r
         <param-name>resteasy.servlet.mapping.prefix</param-name>\r
-        <param-value>/cspace-doc</param-value>\r
+        <param-value>/cspace-nuxeo</param-value>\r
     </context-param>\r
 \r
     <listener>\r
@@ -28,7 +28,7 @@
 \r
     <servlet-mapping>\r
         <servlet-name>Resteasy</servlet-name>\r
-        <url-pattern>/cspace-doc/*</url-pattern>\r
+        <url-pattern>/cspace-nuxeo/*</url-pattern>\r
     </servlet-mapping>\r
 \r
 </web-app>\r