diff options
Diffstat (limited to 'java/sca/modules/binding-atom-abdera/src/test')
20 files changed, 0 insertions, 2846 deletions
diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomDeleteTestCase.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomDeleteTestCase.java deleted file mode 100644 index f9ac5f9c78..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomDeleteTestCase.java +++ /dev/null @@ -1,92 +0,0 @@ -package org.apache.tuscany.sca.binding.atom; - -import java.util.UUID; - -import junit.framework.Assert; - -import org.apache.abdera.Abdera; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.tuscany.sca.binding.atom.collection.Collection; -import org.apache.tuscany.sca.host.embedded.SCADomain; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -public class AtomDeleteTestCase { - protected static SCADomain scaConsumerDomain; - protected static SCADomain scaProviderDomain; - protected static CustomerClient testService; - protected static Abdera abdera; - - @BeforeClass - public static void init() throws Exception { - System.out.println(">>>AtomDeleteTestCase.init entry"); - scaProviderDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite"); - scaConsumerDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Consumer.composite"); - testService = scaConsumerDomain.getService(CustomerClient.class, "CustomerClient"); - abdera = new Abdera(); - } - - @AfterClass - public static void destroy() throws Exception { - // System.out.println(">>>AtomDeleteTestCase.destroy entry"); - scaConsumerDomain.close(); - scaProviderDomain.close(); - } - - @Test - public void testPrelim() throws Exception { - Assert.assertNotNull(scaProviderDomain); - Assert.assertNotNull(scaConsumerDomain); - Assert.assertNotNull(testService); - Assert.assertNotNull(abdera); - } - - @Test - public void testAtomDelete() throws Exception { - Collection resourceCollection = testService.getCustomerCollection(); - Assert.assertNotNull(resourceCollection); - - Entry postEntry = postEntry("Sponge Bob"); - System.out.println(">>> post entry= " + postEntry.getTitle()); - - Entry newEntry = resourceCollection.post(postEntry); - System.out.println("<<< Entry posted for " + newEntry.getTitle()); - - System.out.println(">>> get id=" + newEntry.getId()); - - resourceCollection.delete(newEntry.getId().toString()); - - } - - @Test - public void testAtomDeleteException() throws Exception { - Collection resourceCollection = testService.getCustomerCollection(); - Assert.assertNotNull(resourceCollection); - - try { - // Generates custom ID - String id = "urn:uuid:customer-" + UUID.randomUUID().toString(); - resourceCollection.delete(id); - } catch (Exception e) { - // ID doesn't match with the existing IDs and NotFoundException is - // thrown - Assert.assertEquals("NotFoundException", e.getClass().getSimpleName()); - } - - } - - private Entry postEntry(String value) { - Entry entry = abdera.newEntry(); - entry.setTitle("customer " + value); - - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - entry.setContentElement(content); - - return entry; - } - -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomGetTestCase.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomGetTestCase.java deleted file mode 100644 index 8d78d167c3..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomGetTestCase.java +++ /dev/null @@ -1,97 +0,0 @@ -package org.apache.tuscany.sca.binding.atom; - -import junit.framework.Assert; - -import org.apache.abdera.Abdera; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.tuscany.sca.binding.atom.collection.Collection; -import org.apache.tuscany.sca.host.embedded.SCADomain; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -public class AtomGetTestCase { - protected static SCADomain scaConsumerDomain; - protected static SCADomain scaProviderDomain; - protected static CustomerClient testService; - protected static Abdera abdera; - - @BeforeClass - public static void init() throws Exception { - System.out.println(">>>AtomGetTestCase.init entry"); - scaProviderDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite"); - scaConsumerDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Consumer.composite"); - testService = scaConsumerDomain.getService(CustomerClient.class, "CustomerClient"); - abdera = new Abdera(); - } - - @AfterClass - public static void destroy() throws Exception { - // System.out.println(">>>AtomGetTestCase.destroy entry"); - scaConsumerDomain.close(); - scaProviderDomain.close(); - } - - @Test - public void testPrelim() throws Exception { - Assert.assertNotNull(scaProviderDomain); - Assert.assertNotNull(scaConsumerDomain); - Assert.assertNotNull(testService); - Assert.assertNotNull(abdera); - } - - @Test - public void testAtomGet() throws Exception { - Collection resourceCollection = testService.getCustomerCollection(); - Assert.assertNotNull(resourceCollection); - - Entry postEntry = postEntry("Sponge Bob"); - System.out.println(">>> post entry= " + postEntry.getTitle()); - - Entry newEntry = resourceCollection.post(postEntry); - System.out.println("<<< Entry posted for " + newEntry.getTitle()); - - System.out.println(">>> get id=" + newEntry.getId()); - - Entry getEntry = resourceCollection.get(newEntry.getId().toString()); - - Assert.assertEquals(newEntry.getTitle(), getEntry.getTitle()); - System.out.println("<<< get id=" + getEntry.getId() + " entry=" + getEntry.getTitle()); - } - - @Test - public void testAtomGetException() throws Exception { - Collection resourceCollection = testService.getCustomerCollection(); - Assert.assertNotNull(resourceCollection); - - Entry postEntry = postEntry("Sponge Bob"); - System.out.println(">>> post entry= " + postEntry.getTitle()); - - Entry newEntry = resourceCollection.post(postEntry); - System.out.println("<<< Entry posted for " + newEntry.getTitle()); - System.out.println(newEntry.getId()); - - // Delete the entry to force the Collection to throw NotFoundException - resourceCollection.delete(newEntry.getId().toString()); - - try { - resourceCollection.get(newEntry.getId().toString()); - } catch (Exception e) { - Assert.assertEquals("NotFoundException", e.getClass().getSimpleName()); - } - } - - private Entry postEntry(String value) { - Entry entry = abdera.newEntry(); - entry.setTitle("customer " + value); - - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - entry.setContentElement(content); - - return entry; - } - -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomPostTestCase.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomPostTestCase.java deleted file mode 100644 index ef5fe5a873..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomPostTestCase.java +++ /dev/null @@ -1,86 +0,0 @@ -package org.apache.tuscany.sca.binding.atom; - -import junit.framework.Assert; - -import org.apache.abdera.Abdera; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.tuscany.sca.binding.atom.collection.Collection; -import org.apache.tuscany.sca.host.embedded.SCADomain; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -public class AtomPostTestCase { - protected static SCADomain scaConsumerDomain; - protected static SCADomain scaProviderDomain; - protected static CustomerClient testService; - protected static Abdera abdera; - - @BeforeClass - public static void init() throws Exception { - System.out.println(">>>AtomPostTestCase.init entry"); - scaProviderDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite"); - scaConsumerDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Consumer.composite"); - testService = scaConsumerDomain.getService(CustomerClient.class, "CustomerClient"); - abdera = new Abdera(); - } - - @AfterClass - public static void destroy() throws Exception { - System.out.println(">>>AtomPostTestCase.destroy entry"); - scaConsumerDomain.close(); - scaProviderDomain.close(); - } - - @Test - public void testPrelim() throws Exception { - Assert.assertNotNull(scaProviderDomain); - Assert.assertNotNull(scaConsumerDomain); - Assert.assertNotNull(testService); - Assert.assertNotNull(abdera); - } - - @Test - public void testAtomPost() throws Exception { - Collection resourceCollection = testService.getCustomerCollection(); - Assert.assertNotNull(resourceCollection); - - Entry postEntry = postEntry("Sponge Bob"); - System.out.println(">>> post entry= " + postEntry.getTitle()); - - Entry newEntry = resourceCollection.post(postEntry); - - Assert.assertEquals(postEntry.getTitle(), newEntry.getTitle()); - - System.out.println("<<< new entry= " + newEntry.getTitle()); - - } - - @Test - public void testAtomPostException() throws Exception { - Collection resourceCollection = testService.getCustomerCollection(); - Assert.assertNotNull(resourceCollection); - - Entry postEntry = postEntry("Exception_Test"); - - try { - resourceCollection.post(postEntry); - } catch (Exception e) { - Assert.assertEquals("HTTP status code: 500", e.getMessage()); - } - } - - private Entry postEntry(String value) { - Entry entry = abdera.newEntry(); - entry.setTitle("customer " + value); - - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - entry.setContentElement(content); - - return entry; - } - -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomPutTestCase.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomPutTestCase.java deleted file mode 100644 index a5c1226780..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomPutTestCase.java +++ /dev/null @@ -1,104 +0,0 @@ -package org.apache.tuscany.sca.binding.atom; - -import java.util.UUID; - -import junit.framework.Assert; - -import org.apache.abdera.Abdera; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.tuscany.sca.binding.atom.collection.Collection; -import org.apache.tuscany.sca.host.embedded.SCADomain; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -public class AtomPutTestCase { - protected static SCADomain scaConsumerDomain; - protected static SCADomain scaProviderDomain; - protected static CustomerClient testService; - protected static Abdera abdera; - - @BeforeClass - public static void init() throws Exception { - System.out.println(">>>AtomPutTestCase.init entry"); - scaProviderDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite"); - scaConsumerDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Consumer.composite"); - testService = scaConsumerDomain.getService(CustomerClient.class, "CustomerClient"); - abdera = new Abdera(); - } - - @AfterClass - public static void destroy() throws Exception { - // System.out.println(">>>AtomPutTestCase.destroy entry"); - scaConsumerDomain.close(); - scaProviderDomain.close(); - } - - @Test - public void testPrelim() throws Exception { - Assert.assertNotNull(scaProviderDomain); - Assert.assertNotNull(scaConsumerDomain); - Assert.assertNotNull(testService); - Assert.assertNotNull(abdera); - } - - @Test - public void testAtomPut() throws Exception { - Collection resourceCollection = testService.getCustomerCollection(); - Assert.assertNotNull(resourceCollection); - - Entry postEntry = postEntry("Sponge Bob"); - System.out.println(">>> post entry= " + postEntry.getTitle()); - - Entry newEntry = resourceCollection.post(postEntry); - System.out.println("<<< Entry posted for " + newEntry.getTitle()); - System.out.println(newEntry.getId()); - - System.out.println(">>> put id=" + newEntry.getId() + " entry=" + newEntry.getTitle()); - resourceCollection.put(newEntry.getId().toString(), updateEntry(newEntry, "James Bond")); - System.out.println("<<< put id=" + newEntry.getId() + " entry=" + newEntry.getTitle()); - } - - @Test - public void testAtomPutException() throws Exception { - Collection resourceCollection = testService.getCustomerCollection(); - Assert.assertNotNull(resourceCollection); - - Entry postEntry = postEntry("Sponge Bob"); - System.out.println(">>> post entry= " + postEntry.getTitle()); - - // Generate random ID to pass as parameter in PUT() -- - String id = "urn:uuid:customer-" + UUID.randomUUID().toString(); - try { - // ID doesn't match with the existing IDs and NotFoundException is thrown - resourceCollection.put(id, updateEntry(postEntry, "James Bond")); - } catch (Exception e) { - Assert.assertEquals("NotFoundException", e.getClass().getSimpleName()); - } - } - - private Entry postEntry(String value) { - Entry entry = abdera.newEntry(); - entry.setTitle("customer " + value); - - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - entry.setContentElement(content); - - return entry; - } - - private Entry updateEntry(Entry entry, String value) { - entry.setTitle("customer " + value); - - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - entry.setContentElement(content); - - return entry; - } - -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomTestCaseUtils.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomTestCaseUtils.java deleted file mode 100644 index 6beed6881f..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/AtomTestCaseUtils.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.atom; - -import java.io.IOException; - -import org.apache.abdera.Abdera; -import org.apache.abdera.model.Base; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.abdera.protocol.client.ClientResponse; -import org.apache.abdera.protocol.client.RequestOptions; -import org.apache.abdera.writer.Writer; -import org.apache.abdera.writer.WriterFactory; - -/** - * Utilities to help print and test various aspects of entity tag support. - */ -public class AtomTestCaseUtils { - - public static void prettyPrint(Abdera abdera, Base doc) throws IOException { - WriterFactory factory = abdera.getWriterFactory(); - Writer writer = factory.getWriter("prettyxml"); - writer.writeTo(doc, System.out); - System.out.println(); - } - - public static void printRequestHeaders( String title, String indent, RequestOptions request ) { - System.out.println( title ); - if ( request == null ) { - System.out.println( indent + " request is null"); - return; - } - String [] headerNames = request.getHeaderNames(); - for ( String headerName: headerNames) { - String header = request.getHeader(headerName); - System.out.println( indent + " header name,value=" + headerName + "," + header ); - } - } - - public static void printResponseHeaders( String title, String indent, ClientResponse response ) { - System.out.println( title ); - if ( response == null ) { - System.out.println( indent + " response is null"); - return; - } - String [] headerNames = response.getHeaderNames(); - for ( String headerName: headerNames) { - String header = response.getHeader(headerName); - System.out.println( indent + " header name,value=" + headerName + "," + header ); - } - - } - - public static Entry newEntry(String value) { - Abdera abdera = new Abdera(); - Entry entry = abdera.newEntry(); - entry.setTitle("customer " + value); - - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - entry.setContentElement(content); - - return entry; - } - - public static Entry updateEntry(Entry entry, String value) { - Abdera abdera = new Abdera(); - entry.setTitle("customer " + value); - - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - entry.setContentElement(content); - - return entry; - } - -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/Consumer.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/Consumer.java deleted file mode 100644 index 34d3ed1d1c..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/Consumer.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.atom; - -import org.apache.tuscany.sca.host.embedded.SCADomain; - -public class Consumer { - - public static void main(String[] args) throws Exception { - - SCADomain scaDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Consumer.composite"); - - CustomerClient testService = scaDomain.getService(CustomerClient.class, "CustomerClient"); - testService.testCustomerCollection(); - - scaDomain.close(); - } -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ConsumerProviderAtomTestCase.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ConsumerProviderAtomTestCase.java deleted file mode 100644 index 9af85a970c..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ConsumerProviderAtomTestCase.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.atom; - -import java.util.Date; - -import junit.framework.Assert; - -import org.apache.abdera.Abdera; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.abdera.model.Feed; -import org.apache.tuscany.sca.binding.atom.collection.Collection; -import org.apache.tuscany.sca.host.embedded.SCADomain; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -/** - * Test case for the given package. - */ -public class ConsumerProviderAtomTestCase { - - protected static SCADomain scaConsumerDomain; - protected static SCADomain scaProviderDomain; - protected static CustomerClient testService; - protected static Abdera abdera; - - @BeforeClass - public static void init() throws Exception { - System.out.println(">>>AtomBindingIntegratedTestCase.init entry"); - scaProviderDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite"); - scaConsumerDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Consumer.composite"); - testService = scaConsumerDomain.getService(CustomerClient.class,"CustomerClient"); - abdera = new Abdera(); - } - - @AfterClass - public static void destroy() throws Exception { - System.out.println(">>>AtomBindingIntegratedTestCase.destroy entry"); - scaConsumerDomain.close(); - scaProviderDomain.close(); - } - - @Test - public void testPrelim() throws Exception { - Assert.assertNotNull(scaProviderDomain); - Assert.assertNotNull(scaConsumerDomain); - Assert.assertNotNull(testService); - Assert.assertNotNull(abdera); - } - - @Test - public void testEntry() throws Exception { - // System.out.println( getClass().getName() + ".testEntry entry" ); - Entry entry = abdera.newEntry(); - Assert.assertNotNull(entry); - - String testTitle = "Sponge Bob"; - entry.setTitle(testTitle); - Assert.assertEquals(testTitle, entry.getTitle()); - - String testContent = "This is the content"; - entry.setContent(testContent); - Assert.assertEquals(testContent, entry.getContent()); - - Date now = new Date(); - entry.setEdited(now); - Assert.assertEquals(now, entry.getEdited()); - - Date later = new Date(); - entry.setPublished(later); - Assert.assertEquals(later, entry.getPublished()); - - String testSummary = "This is the summary"; - entry.setSummary(testSummary); - Assert.assertEquals(testSummary, entry.getSummary()); - } - - @Test - public void testCustomerCollection() throws Exception { - System.out.println(getClass().getName() + ".testCustomerCollection entry"); - Collection resourceCollection = testService.getCustomerCollection(); - Assert.assertNotNull(resourceCollection); - - Entry newEntry = newEntry("Sponge Bob"); - System.out.println(">>> post entry=" + newEntry.getTitle()); - newEntry = resourceCollection.post(newEntry); - System.out.println("<<< post id=" + newEntry.getId() + " entry=" + newEntry.getTitle()); - - newEntry = newEntry("Jane Bond"); - System.out.println(">>> post entry=" + newEntry.getTitle()); - newEntry = resourceCollection.post(newEntry); - System.out.println("<<< post id=" + newEntry.getId() + " entry=" + newEntry.getTitle()); - - System.out.println(">>> get id=" + newEntry.getId()); - Entry entry = resourceCollection.get(newEntry.getId().toString()); - System.out.println("<<< get id=" + entry.getId() + " entry=" + entry.getTitle()); - - System.out.println(">>> put id=" + newEntry.getId() + " entry=" + entry.getTitle()); - resourceCollection.put(entry.getId().toString(), updateEntry(entry, "James Bond")); - System.out.println("<<< put id=" + entry.getId() + " entry=" + entry.getTitle()); - - System.out.println(">>> delete id=" + entry.getId()); - resourceCollection.delete(entry.getId().toString()); - System.out.println("<<< delete id=" + entry.getId()); - - System.out.println(">>> get collection"); - Feed feed = resourceCollection.getFeed(); - System.out.println("<<< get collection"); - for (Object o : feed.getEntries()) { - Entry e = (Entry)o; - System.out.println("id = " + e.getId() + " entry = " + e.getTitle()); - } - } - - private Entry newEntry(String value) { - Entry entry = abdera.newEntry(); - entry.setTitle("customer " + value); - - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - entry.setContentElement(content); - - return entry; - } - - private Entry updateEntry(Entry entry, String value) { - entry.setTitle("customer " + value); - - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - entry.setContentElement(content); - - return entry; - } -}
\ No newline at end of file diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ContentNegotiationTest.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ContentNegotiationTest.java deleted file mode 100644 index 08f8e3db2a..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ContentNegotiationTest.java +++ /dev/null @@ -1,249 +0,0 @@ -/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.tuscany.sca.binding.atom;
-
-import java.io.IOException;
-import java.io.Reader;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import junit.framework.Assert;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import org.apache.tuscany.sca.binding.atom.collection.Collection;
-import org.apache.tuscany.sca.host.embedded.SCADomain;
-
-import org.apache.abdera.Abdera;
-import org.apache.abdera.i18n.iri.IRI;
-import org.apache.abdera.factory.Factory;
-import org.apache.abdera.model.Base;
-import org.apache.abdera.model.Content;
-import org.apache.abdera.model.Entry;
-import org.apache.abdera.model.Feed;
-import org.apache.abdera.model.Document;
-import org.apache.abdera.model.Service;
-import org.apache.abdera.protocol.Response.ResponseType;
-import org.apache.abdera.protocol.client.AbderaClient;
-import org.apache.abdera.protocol.client.ClientResponse;
-import org.apache.abdera.protocol.client.RequestOptions;
-import org.apache.abdera.protocol.client.util.BaseRequestEntity;
-import org.apache.abdera.util.EntityTag;
-import org.apache.abdera.parser.Parser;
-
-
-/**
- * Tests use of content negotiation for Atom binding in Tuscany.
- * Uses the SCA provided Provider composite to act as a server.
- * Uses the Abdera provided Client to act as a client.
- */
-public class ContentNegotiationTest {
- public final static String providerURI = "http://localhost:8084/customer";
- protected static SCADomain scaProviderDomain;
- protected static CustomerClient testService;
- protected static Abdera abdera;
- protected static AbderaClient client;
- protected static Parser abderaParser;
- protected static String lastId;
-
- @BeforeClass
- public static void init() throws Exception {
- System.out.println(">>>ContentNegotiationTest.init");
- scaProviderDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite");
- abdera = new Abdera();
- client = new AbderaClient(abdera);
- abderaParser = Abdera.getNewParser();
- }
-
- @AfterClass
- public static void destroy() throws Exception {
- System.out.println(">>>ContentNegotiationTest.destroy");
- scaProviderDomain.close();
- }
-
- @Test
- public void testPrelim() throws Exception {
- Assert.assertNotNull(scaProviderDomain);
- Assert.assertNotNull( client );
- }
-
- @Test
- public void testPost() throws Exception {
- System.out.println(">>>ContentNegotiationTest.testPost");
- // Testing of entry creation
- Factory factory = abdera.getFactory();
- String customerName = "Fred Farkle";
- Entry entry = factory.newEntry();
- entry.setTitle("customer " + customerName);
- entry.setUpdated(new Date());
- entry.addAuthor("Apache Tuscany");
- // ID created by collection.
- Content content = abdera.getFactory().newContent();
- content.setContentType(Content.Type.TEXT);
- content.setValue(customerName);
- entry.setContentElement(content);
-
- RequestOptions opts = new RequestOptions();
- final String contentType = "application/atom+xml; type=entry";
- opts.setContentType(contentType);
- // AtomTestCaseUtils.printRequestHeaders( "Post request headers", " ", opts );
- IRI colUri = new IRI(providerURI).resolve("customer");
- // res = client.post(colUri.toString() + "?test=foo", entry, opts);
- ClientResponse res = client.post(colUri.toString(), entry, opts);
-
- // Assert response status code is 201-OK.
- // Assert response header Content-Type: application/atom+xml; charset=UTF-8
- Assert.assertEquals(201, res.getStatus());
- String returnedContentType = res.getContentType().toString().trim();
- Assert.assertEquals(contentType, returnedContentType );
-
- String eTag = res.getHeader( "ETag" );
- if ( eTag != null)
- lastId = eTag.substring( 1, eTag.length()-1);
-
- // AtomTestCaseUtils.printResponseHeaders( "Entry post response headers:", " ", res );
- // System.out.println("Entry post response content:");
- // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument());
- }
-
- @Test
- public void testXMLEntryGet() throws Exception {
- System.out.println(">>>ContentNegotiationTest.testXMLEntryGet");
- RequestOptions opts = new RequestOptions();
- opts.setHeader( "Accept", "application/atom+xml" );
-
- IRI colUri = new IRI(providerURI).resolve("customer");
- ClientResponse res = client.get(colUri.toString() + "/" + lastId, opts);
- Assert.assertEquals(200, res.getStatus());
- String returnedContentType = res.getContentType().toString().trim();
- // Assert.assertEquals(contentType, returnedContentType );
- res.release();
- }
-
- @Test
- public void testJSONEntryGet() throws Exception {
- System.out.println(">>>ContentNegotiationTest.testJSONEntryGet");
- RequestOptions opts = new RequestOptions();
- opts.setHeader( "Accept", "application/json" );
-
- IRI colUri = new IRI(providerURI).resolve("customer");
- ClientResponse res = client.get(colUri.toString() + "/" + lastId, opts);
- try {
- Assert.assertEquals(200, res.getStatus());
- // Abdera 0.4 throws exception on getContentType with application/json.
- // System.out.println( "ContentNegotiationTest.testJSONEntryGet contentType=" + res.getContentType());
- String contentType = res.getHeader( "Content-Type");
- Assert.assertTrue( -1 < contentType.indexOf( "application/json" ));
- // Following is a poor man's JSONObject test to avoid dependency on JSON libs.
- // JSONObject jsonResp = new JSONObject(res.);
- // Assert.assertEquals(12345, jsonResp.getInt("result"));
- String responseBody = readResponse( res.getReader() );
- Assert.assertTrue( responseBody.startsWith( "{") );
- Assert.assertTrue( responseBody.endsWith( "}") );
- Assert.assertTrue( -1 < responseBody.indexOf( "\"id\"" ));
- Assert.assertTrue( -1 < responseBody.indexOf( "\"title\"" ));
- Assert.assertTrue( -1 < responseBody.indexOf( "\"updated\"" ));
- // AtomTestCaseUtils.printResponseHeaders( "JSON Entry response headers:", " ", res );
- // System.out.println( "ContentNegotiationTest.testJSONEntryGet JSON entry body=" + responseBody );
- } finally {
- res.release();
- }
- }
-
- @Test
- public void testXMLFeedGet() throws Exception {
- System.out.println(">>>ContentNegotiationTest.testXMLFeedGet");
- RequestOptions opts = new RequestOptions();
- opts.setHeader( "Accept", "application/atom+xml" );
-
- // Atom feed request
- ClientResponse res = client.get(providerURI, opts);
- Assert.assertNotNull(res);
- try {
- // Asser feed provided since no predicates
- Assert.assertEquals(200, res.getStatus());
- Assert.assertEquals(ResponseType.SUCCESS, res.getType());
- // AtomTestCaseUtils.printResponseHeaders( "Feed response headers:", " ", res );
- // System.out.println("Feed response content:");
- // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument());
-
- // Perform other tests on feed.
- Document<Feed> doc = res.getDocument();
- Assert.assertNotNull( doc );
- Feed feed = doc.getRoot();
- Assert.assertNotNull( feed );
- // RFC 4287 requires non-null id, title, updated elements
- Assert.assertNotNull( feed.getId() );
- Assert.assertNotNull( feed.getTitle() );
- Assert.assertNotNull( feed.getUpdated() );
- // AtomTestCaseUtils.printFeed( "Feed values", " ", feed );
- } finally {
- res.release();
- }
- }
-
- @Test
- public void testJSONFeedGet() throws Exception {
- System.out.println(">>>ContentNegotiationTest.testJSONFeedGet");
- RequestOptions opts = new RequestOptions();
- opts.setHeader( "Accept", "application/json" );
-
- // JSON feed request
- ClientResponse res = client.get(providerURI, opts);
- Assert.assertNotNull(res);
- try {
- // Assert feed provided since no predicates
- Assert.assertEquals(200, res.getStatus());
- // Abdera 0.4 throws exception on getContentType with application/json.
- // System.out.println( "ContentNegotiationTest.testJSONEntryGet contentType=" + res.getContentType());
- String contentType = res.getHeader( "Content-Type");
- Assert.assertTrue( -1 < contentType.indexOf( "application/json" ));
- // Following is a poor man's JSONObject test to avoid dependency on JSON libs.
- // JSONObject jsonResp = new JSONObject(res.);
- // Assert.assertEquals(12345, jsonResp.getInt("result"));
- String responseBody = readResponse( res.getReader() );
- Assert.assertTrue( responseBody.startsWith( "{") );
- Assert.assertTrue( responseBody.endsWith( "}") );
- Assert.assertTrue( -1 < responseBody.indexOf( "\"id\"" ));
- Assert.assertTrue( -1 < responseBody.indexOf( "\"title\"" ));
- Assert.assertTrue( -1 < responseBody.indexOf( "\"updated\"" ));
- Assert.assertTrue( -1 < responseBody.indexOf( "\"entries\"" ));
- // AtomTestCaseUtils.printResponseHeaders( "JSON Entry response headers:", " ", res );
- // System.out.println( "ContentNegotiationTest.testJSONEntryGet JSON entry body=" + responseBody );
- } finally {
- res.release();
- }
- }
-
- protected String readResponse( Reader responseReader ) {
- if ( responseReader == null ) return "";
- StringBuffer sb = new StringBuffer(1024);
- try {
- int charValue = 0;
- while ((charValue = responseReader.read()) != -1) {
- //result = result + (char) charValue;
- sb.append((char)charValue);
- }
- } catch ( IOException e ) {
- }
- return sb.toString();
- }
-}
diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerClient.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerClient.java deleted file mode 100644 index bc32b91367..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerClient.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.atom; - -import org.apache.tuscany.sca.binding.atom.collection.Collection; - -public interface CustomerClient { - - void testCustomerCollection() throws Exception; - - Collection getCustomerCollection(); -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerClientImpl.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerClientImpl.java deleted file mode 100644 index 3e5705b14c..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerClientImpl.java +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.atom; - -import org.apache.abdera.Abdera; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.abdera.model.Feed; -import org.apache.tuscany.sca.binding.atom.collection.Collection; -import org.osoa.sca.annotations.Reference; - -public class CustomerClientImpl implements CustomerClient { - - protected final Abdera abdera = new Abdera(); - - @Reference - public Collection customerCollection; - - public void testCustomerCollection() throws Exception { - - Entry newEntry = newEntry("Sponge Bob"); - System.out.println(">>> post entry=" + newEntry.getTitle()); - newEntry = customerCollection.post(newEntry); - System.out.println("<<< post id=" + newEntry.getId() + " entry=" + newEntry.getTitle()); - - newEntry = newEntry("Jane Bond"); - System.out.println(">>> post entry=" + newEntry.getTitle()); - newEntry = customerCollection.post(newEntry); - System.out.println("<<< post id=" + newEntry.getId() + " entry=" + newEntry.getTitle()); - - System.out.println(">>> get id=" + newEntry.getId()); - Entry entry = customerCollection.get(newEntry.getId().toString()); - System.out.println("<<< get id=" + entry.getId() + " entry=" + entry.getTitle()); - - System.out.println(">>> put id=" + newEntry.getId() + " entry=" + entry.getTitle()); - customerCollection.put(entry.getId().toString(), updateEntry(entry, "James Bond")); - System.out.println("<<< put id=" + entry.getId() + " entry=" + entry.getTitle()); - - System.out.println(">>> delete id=" + entry.getId()); - customerCollection.delete(entry.getId().toString()); - System.out.println("<<< delete id=" + entry.getId()); - - System.out.println(">>> get collection"); - Feed feed = customerCollection.getFeed(); - System.out.println("<<< get collection"); - for (Object o : feed.getEntries()) { - Entry e = (Entry)o; - System.out.println("id = " + e.getId() + " entry = " + e.getTitle()); - } - } - - public Collection getCustomerCollection() { - return customerCollection; - } - - private Entry newEntry(String value) { - - Entry entry = this.abdera.newEntry(); - entry.setTitle("customer " + value); - - Content content = this.abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - - entry.setContentElement(content); - - return entry; - } - - private Entry updateEntry(Entry entry, String value) { - - entry.setTitle("customer " + value); - - Content content = this.abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - - entry.setContentElement(content); - - return entry; - } -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerCollectionImpl.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerCollectionImpl.java deleted file mode 100644 index db66b00a50..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/CustomerCollectionImpl.java +++ /dev/null @@ -1,149 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.atom; - -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.apache.abdera.Abdera; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.abdera.model.Feed; -import org.apache.tuscany.sca.binding.atom.collection.Collection; -import org.apache.tuscany.sca.binding.atom.collection.NotFoundException; -import org.osoa.sca.annotations.Scope; - -@Scope("COMPOSITE") -public class CustomerCollectionImpl implements Collection { - private final Abdera abdera = new Abdera(); - private Map<String, Entry> entries = new HashMap<String, Entry>(); - public Date lastModified = new Date(); - - /** - * Default constructor - */ - public CustomerCollectionImpl() { - - } - - public Entry post(Entry entry) { - System.out.println(">>> CustomerCollectionImpl.post entry=" + entry.getTitle()); - - if(!("Exception_Test".equalsIgnoreCase(entry.getTitle()))) - { - String id = "urn:uuid:customer-" + UUID.randomUUID().toString(); - entry.setId(id); - - entry.addLink("" + id, "edit"); - entry.addLink("" + id, "alternate"); - Date now = new Date(); - entry.setUpdated(now); - lastModified = now; - entries.put(id, entry); - - System.out.println(">>> CustomerCollectionImpl.post return id=" + id); - - return entry; - - } - else - { - throw new IllegalArgumentException("Exception in Post method"); - } - } - - public Entry get(String id) { - System.out.println(">>> CustomerCollectionImpl.get id=" + id); - return entries.get(id); - } - - public void put(String id, Entry entry) throws NotFoundException { - System.out.println(">>> CustomerCollectionImpl.put id=" + id + " entry=" + entry.getTitle()); - if(entries.containsKey(id)){ - Date now = new Date(); - entry.setUpdated(now); - lastModified = now; - entries.put(id, entry); - } - else { - throw new NotFoundException(); - } - } - - public void delete(String id) throws NotFoundException { - System.out.println(">>> CustomerCollectionImpl.delete id=" + id); - if(entries.containsKey(id)){ - entries.remove(id); - lastModified = new Date(); - } - else { - throw new NotFoundException(); - } - } - - public Feed getFeed() { - System.out.println(">>> CustomerCollectionImpl.getFeed"); - - Feed feed = this.abdera.getFactory().newFeed(); - feed.setId("customers" + this.hashCode() ); // provide unique id for feed instance. - feed.setTitle("customers"); - feed.setSubtitle("This is a sample feed"); - feed.setUpdated(lastModified); - feed.addLink(""); - feed.addLink("", "self"); - - for (Entry entry : entries.values()) { - feed.addEntry(entry); - } - - return feed; - } - - public Feed query(String queryString) { - System.out.println(">>> CustomerCollectionImpl.query collection " + queryString); - return getFeed(); - } - - // This method used for testing. - protected void testPut(String value) { - String id = "urn:uuid:customer-" + UUID.randomUUID().toString(); - - Entry entry = abdera.getFactory().newEntry(); - entry.setId(id); - entry.setTitle("customer " + value); - - Content content = this.abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - - entry.setContentElement(content); - - entry.addLink("" + id, "edit"); - entry.addLink("" + id, "alternate"); - - entry.setUpdated(new Date()); - - entries.put(id, entry); - System.out.println(">>> id=" + id); - } - -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/MediaCollectionImpl.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/MediaCollectionImpl.java deleted file mode 100644 index 5d5953aaaa..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/MediaCollectionImpl.java +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.atom; - -import java.io.IOException; -import java.io.InputStream; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.apache.abdera.Abdera; -import org.apache.abdera.factory.Factory; -import org.apache.abdera.i18n.iri.IRI; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.abdera.model.Feed; -import org.apache.tuscany.sca.binding.atom.collection.Collection; -import org.apache.tuscany.sca.binding.atom.collection.MediaCollection; -import org.apache.tuscany.sca.binding.atom.collection.NotFoundException; -import org.osoa.sca.annotations.Scope; - -@Scope("COMPOSITE") -public class MediaCollectionImpl implements MediaCollection { - private final Abdera abdera = new Abdera(); - private Map<String, Entry> entries = new HashMap<String, Entry>(); - private Map<String, String> mediaFiles = new HashMap<String, String>(); - public Date lastModified = new Date(); - - public Entry post(Entry entry) { - System.out.println(">>> MediaCollectionImpl.post entry=" + entry.getTitle()); - - if(!("Exception_Test".equalsIgnoreCase(entry.getTitle()))) - { - String id = "urn:uuid:customer-" + UUID.randomUUID().toString(); - entry.setId(id); - - entry.addLink("" + id, "edit"); - entry.addLink("" + id, "alternate"); - Date now = new Date(); - entry.setUpdated(now); - lastModified = now; - entries.put(id, entry); - - System.out.println(">>> MediaCollectionImpl.post return id=" + id); - - return entry; - - } - else - { - throw new IllegalArgumentException("Exception in Post method"); - } - } - - public Entry get(String id) { - System.out.println(">>> MediaCollectionImpl.get id=" + id); - return entries.get(id); - } - - public void put(String id, Entry entry) throws NotFoundException { - System.out.println(">>> MediaCollectionImpl.put id=" + id + " entry=" + entry.getTitle()); - if(entries.containsKey(id)){ - Date now = new Date(); - entry.setUpdated(now); - lastModified = now; - entries.put(id, entry); - } - else { - throw new NotFoundException(); - } - } - - public void delete(String id) throws NotFoundException { - System.out.println(">>> MediaCollectionImpl.delete id=" + id); - if(entries.containsKey(id)){ - entries.remove(id); - lastModified = new Date(); - } - else { - throw new NotFoundException(); - } - } - - public Feed getFeed() { - System.out.println(">>> MediaCollectionImpl.getFeed"); - - Feed feed = this.abdera.getFactory().newFeed(); - feed.setId("customers" + this.hashCode() ); // provide unique id for feed instance. - feed.setTitle("customers"); - feed.setSubtitle("This is a sample feed"); - feed.setUpdated(lastModified); - feed.addLink(""); - feed.addLink("", "self"); - - for (Entry entry : entries.values()) { - feed.addEntry(entry); - } - - return feed; - } - - public Feed query(String queryString) { - System.out.println(">>> MediaCollectionImpl.query collection " + queryString); - return getFeed(); - } - - // This method used for testing. - protected void testPut(String value) { - String id = "urn:uuid:customer-" + UUID.randomUUID().toString(); - - Entry entry = abdera.getFactory().newEntry(); - entry.setId(id); - entry.setTitle("customer " + value); - - Content content = this.abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - - entry.setContentElement(content); - - entry.addLink("" + id, "edit"); - entry.addLink("" + id, "alternate"); - - entry.setUpdated(new Date()); - - entries.put(id, entry); - System.out.println(">>> id=" + id); - } - - // MediaCollection role - public Entry postMedia(String title, String slug, String contentType, InputStream media) { - System.out.println(">>> MediaCollectionImpl.postMedia title=" + title + ", slug=" + slug + ", contentType=" + contentType ); - - Factory factory = abdera.getFactory(); - Entry entry = factory.newEntry(); - // Must provide entry to media as per Atom Pub spec (http://tools.ietf.org/html/rfc5023#section-9.6) - // <?xml version="1.0"?> - // <entry xmlns="http://www.w3.org/2005/Atom"> - // <title>The Beach</title> (REQUIRED) - // <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> (REQUIRED) - // <updated>2005-10-07T17:17:08Z</updated> - // <summary type="text" /> (REQUIRED, OPTIONAL to populate - // <content type="image/png" src="http://media.example.org/the_beach.png"/> - // <link rel="edit-media" href="http://media.example.org/edit/the_beach.png" /> - // <link rel="edit" href="http://example.org/media/edit/the_beach.atom" /> - // </entry> - - // Normalize title - entry.setTitle( title ); - String normalTitle = title.replace( " ", "_" ); - String hostURL = "http://media.example.org/"; - int lastDelimiterPos = contentType != null ? contentType.lastIndexOf( "/" ) : -1; - String extension = ""; - if ( lastDelimiterPos != -1 ) { - extension = contentType.substring( lastDelimiterPos + 1 ); - } else { - extension = contentType; - } - long mediaLength = -1; - try { - mediaLength = media.skip( Long.MAX_VALUE ); - } catch ( IOException e ){} - - // A true implementation would store the media to a repository, e.g. file system. - // This implementation record's the id and the location. - String id = "urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a-" + mediaFiles.size(); - String reposLocation = hostURL + "edit/" + normalTitle; - mediaFiles.put( id, reposLocation ); - - // Build entry for media link. - entry.setUpdated( new Date() ); - entry.setId( id ); - // Convention. Return header properties as key values. - entry.setSummary( "Content-Type=" + contentType + ",Content-Length=" + mediaLength ); - entry.setContent( new IRI( hostURL + normalTitle + "." + extension ), contentType ); - entry.addLink( reposLocation + ".atom", "edit" ); - entry.addLink( reposLocation + "." + extension, "edit-media" ); - return entry; - } - - public void putMedia(String id, String contentType, InputStream media) throws NotFoundException { - System.out.println(">>> MediaCollectionImpl.putMedia id=" + id + ", contentType=" + contentType ); - - // Must responsd with success or not found as per Atom Pub spec (http://tools.ietf.org/html/rfc5023#section-9.6) - // Body is null. - if ( !id.endsWith( "0" ) ) - throw new NotFoundException( "Media at id=" + id + " not found." ); - - // A true implementation would update the media in the media repository. - } - -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/MediaCollectionTestCase.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/MediaCollectionTestCase.java deleted file mode 100644 index 0aabf225a4..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/MediaCollectionTestCase.java +++ /dev/null @@ -1,287 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.atom; - -import java.io.File; -import java.io.FileInputStream; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; - -import junit.framework.Assert; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -import org.apache.tuscany.sca.host.embedded.SCADomain; - -import org.apache.abdera.Abdera; -import org.apache.abdera.i18n.iri.IRI; -import org.apache.abdera.model.Entry; -import org.apache.abdera.model.Feed; -import org.apache.abdera.model.Document; -import org.apache.abdera.model.Link; -import org.apache.abdera.protocol.client.AbderaClient; -import org.apache.abdera.protocol.client.ClientResponse; -import org.apache.abdera.protocol.client.RequestOptions; -import org.apache.abdera.protocol.client.util.BaseRequestEntity; -import org.apache.abdera.util.EntityTag; -import org.apache.abdera.parser.Parser; - -import org.apache.commons.httpclient.Header; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.methods.PostMethod; -import org.apache.commons.httpclient.methods.PutMethod; -import org.apache.commons.httpclient.methods.InputStreamRequestEntity; - -/** - * Tests use of server provided entry entity tags for Atom binding in Tuscany. - * Tests conditional gets (e.g. get if-none-match) or conditional posts (post if-match) - * using entity tags or last modified header entries. - * Uses the SCA provided Provider composite to act as a server. - * Uses the Abdera provided Client to act as a client. - */ -public class MediaCollectionTestCase { - public final static String providerURI = "http://localhost:8084/receipt"; - protected static SCADomain scaConsumerDomain; - protected static SCADomain scaProviderDomain; - protected static CustomerClient testService; - protected static Abdera abdera; - protected static AbderaClient client; - protected static Parser abderaParser; - protected static String eTag; - protected static Date lastModified; - protected static String mediaId; - protected static final SimpleDateFormat dateFormat = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss Z" ); // RFC 822 date time - - @BeforeClass - public static void init() throws Exception { - System.out.println(">>>MediaCollectionTestCase.init"); - scaProviderDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/ReceiptProvider.composite"); - abdera = new Abdera(); - client = new AbderaClient(abdera); - abderaParser = Abdera.getNewParser(); - } - - @AfterClass - public static void destroy() throws Exception { - System.out.println(">>>MediaCollectionTestCase.destroy"); - scaProviderDomain.close(); - } - - @Test - public void testPrelim() throws Exception { - Assert.assertNotNull(scaProviderDomain); - Assert.assertNotNull( client ); - } - - @Test - public void testMediaEntryPost() throws Exception { - // Pseudo Code (see APP (http://tools.ietf.org/html/rfc5023#section-9.6) - // Post request - // POST /edit/ HTTP/1.1 - // Host: media.example.org - // Content-Type: image/png - // Slug: The Beach - // Content-Length: nnn - // ...binary data... - - // Testing of entry creation - String receiptName = "Auto Repair Bill"; - String fileName = "ReceiptToms.gif"; - File input = new File( fileName ); - boolean exists = input.exists(); - Assert.assertTrue( exists ); - - // Prepare HTTP post - // PostMethod post = new PostMethod( colUri.toString() ); - PostMethod post = new PostMethod( providerURI ); - post.addRequestHeader( "Content-Type", "image/gif" ); - post.addRequestHeader( "Title", "Title " + receiptName + "" ); - post.addRequestHeader( "Slug", "Slug " + receiptName + "" ); - post.setRequestEntity( - new InputStreamRequestEntity( new FileInputStream( input ), "image/gif" ) ); - - // Get HTTP client - HttpClient httpclient = new HttpClient(); - try { - // Execute request - int result = httpclient.executeMethod(post); - // Pseudo Code (see APP (http://tools.ietf.org/html/rfc5023#section-9.6) - // Post response - // Tuscany responds with proper media links. Note that the media is - // stored in a different location than the media information which is - // stored in the Atom feed. - // HTTP/1.1 201 Created - // Display status code - // System.out.println("Response status code: " + result + ", status text=" + post.getStatusText() ); - Assert.assertEquals(201, result ); - // Display response - // System.out.println("Response body: "); - // System.out.println(post.getResponseBodyAsString()); // Warning: BodyAsString recommends BodyAsStream - - // Location: http://example.org/media/edit/the_beach.atom (REQUIRED) - // System.out.println( "Response Location=" + post.getResponseHeader( "Location" ).getValue() + "." ); - Header header = post.getResponseHeader( "Location" ); - Assert.assertNotNull( header ); - Assert.assertNotNull( header.getValue() ); - // ContentLocation: http://example.org/media/edit/the_beach.jpg (REQUIRED) - // System.out.println( "Response Content-Location=" + post.getResponseHeader( "Content-Location" ).getValue() ); - header = post.getResponseHeader( "Content-Location" ); - Assert.assertNotNull( header ); - Assert.assertNotNull( header.getValue() ); - // Content-Type: application/atom+xml;type=entry;charset="utf-8" - // System.out.println( "Response Content-Type=" + post.getResponseHeader( "Content-Type" ).getValue()); - header = post.getResponseHeader( "Content-Type" ); - Assert.assertNotNull( header ); - Assert.assertNotNull( header.getValue() ); - // Content-Length: nnn (OPTIONAL) - // System.out.println( "Response Content-Length=" + post.getResponseHeader( "Content-Length" ).getValue() ); - header = post.getResponseHeader( "Content-Length" ); - Assert.assertNotNull( header ); - Assert.assertNotNull( header.getValue() ); - // <?xml version="1.0"?> - // <entry xmlns="http://www.w3.org/2005/Atom"> - // <title>The Beach</title> (REQUIRED) - // <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> (REQUIRED) - // <updated>2005-10-07T17:17:08Z</updated> - // <author><name>Daffy</name></author> - // <summary type="text" /> (REQUIRED, OPTIONAL to populate - // <content type="image/png" src="http://media.example.org/the_beach.png"/> - // <link rel="edit-media" href="http://media.example.org/edit/the_beach.png" /> - // <link rel="edit" href="http://example.org/media/edit/the_beach.atom" /> - // </entry> - Document<Entry> document = abderaParser.parse( post.getResponseBodyAsStream() ); - Entry entry = document.getRoot(); - String title = entry.getTitle(); - // System.out.println( "mediaPost entry.title=" + title ); - Assert.assertNotNull( title ); - IRI id = entry.getId(); - // System.out.println( "mediaPost entry.id=" + id ); - Assert.assertNotNull( id ); - mediaId = id.toString(); - Assert.assertNotNull( mediaId ); // Save for put/update request - Date updated = entry.getUpdated(); - // System.out.println( "mediaPost entry.updated=" + updated); - Assert.assertNotNull( updated ); - String summary = entry.getSummary(); - // System.out.println( "mediaPost entry.summary=" + summary); - Assert.assertNotNull( summary ); - IRI contentSrc = entry.getContentSrc(); - // System.out.println( "mediaPost entry.content.src=" + contentSrc + ", type=" + entry.getContentType()); - Assert.assertNotNull( contentSrc ); - Link editLink = entry.getEditLink(); - // System.out.println( "mediaPost entry.editLink" + " rel=" + editLink.getRel() + ", href=" + editLink.getHref() ); - Assert.assertNotNull( editLink ); - Assert.assertNotNull( editLink.getRel() ); - Assert.assertNotNull( editLink.getHref() ); - Link editMediaLink = entry.getEditMediaLink(); - // System.out.println( "mediaPost entry.editMediaLink" + " rel=" + editMediaLink.getRel() + ", href=" + editMediaLink.getHref() ); - Assert.assertNotNull( editMediaLink ); - Assert.assertNotNull( editMediaLink.getRel() ); - Assert.assertNotNull( editMediaLink.getHref() ); - - } finally { - // Release current connection to the connection pool once you are done - post.releaseConnection(); - } - } - - @Test - public void testMediaEntryPutFound() throws Exception { - // Pseudo Code (see APP (http://tools.ietf.org/html/rfc5023#section-9.6) - // Testing of entry update - String receiptName = "Value Autoglass Bill"; - String fileName = "ReceiptValue.jpg"; - File input = new File( fileName ); - boolean exists = input.exists(); - Assert.assertTrue( exists ); - - // Prepare HTTP put request - // PUT /edit/the_beach.png HTTP/1.1 - // Host: media.example.org - // Content-Type: image/png - // Content-Length: nnn - // ...binary data... - PutMethod put = new PutMethod( providerURI + "/" + mediaId ); - put.addRequestHeader( "Content-Type", "image/jpg" ); - put.addRequestHeader( "Title", "Title " + receiptName + "" ); - put.addRequestHeader( "Slug", "Slug " + receiptName + "" ); - put.setRequestEntity( - new InputStreamRequestEntity( new FileInputStream( input ), "image/jpg" ) ); - - // Get HTTP client - HttpClient httpclient = new HttpClient(); - try { - // Execute request - int result = httpclient.executeMethod(put); - // Pseudo Code (see APP (http://tools.ietf.org/html/rfc5023#section-9.6) - // Display status code - // System.out.println("Response status code: " + result + ", status text=" + put.getStatusText() ); - Assert.assertEquals(200, result ); - // Display response. Should be empty for put. - // System.out.println("Response body: "); - // System.out.println(put.getResponseBodyAsString()); // Warning: BodyAsString recommends BodyAsStream - } finally { - // Release current connection to the connection pool once you are done - put.releaseConnection(); - } - } - - @Test - public void testMediaEntryPutNotFound() throws Exception { - // Pseudo Code (see APP (http://tools.ietf.org/html/rfc5023#section-9.6) - // Testing of entry update - String receiptName = "Value Autoglass Bill"; - String fileName = "ReceiptValue.jpg"; - File input = new File( fileName ); - boolean exists = input.exists(); - Assert.assertTrue( exists ); - - // Prepare HTTP put request - // PUT /edit/the_beach.png HTTP/1.1 - // Host: media.example.org - // Content-Type: image/png - // Content-Length: nnn - // ...binary data... - PutMethod put = new PutMethod( providerURI + "/" + mediaId + "-bogus" ); // Does not exist. - put.addRequestHeader( "Content-Type", "image/jpg" ); - put.addRequestHeader( "Title", "Title " + receiptName + "" ); - put.addRequestHeader( "Slug", "Slug " + receiptName + "" ); - put.setRequestEntity( - new InputStreamRequestEntity( new FileInputStream( input ), "image/jpg" ) ); - - // Get HTTP client - HttpClient httpclient = new HttpClient(); - try { - // Execute request - int result = httpclient.executeMethod(put); - // Pseudo Code (see APP (http://tools.ietf.org/html/rfc5023#section-9.6) - // Display status code - // System.out.println("Response status code: " + result + ", status text=" + put.getStatusText() ); - Assert.assertEquals(404, result ); - // Display response. Should be empty for put. - // System.out.println("Response body: "); - // System.out.println(put.getResponseBodyAsString()); // Warning: BodyAsString recommends BodyAsStream - } finally { - // Release current connection to the connection pool once you are done - put.releaseConnection(); - } - } -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/Provider.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/Provider.java deleted file mode 100644 index 3e1bf543e5..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/Provider.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.tuscany.sca.binding.atom; - -import java.io.IOException; - -import org.apache.tuscany.sca.host.embedded.SCADomain; - -public class Provider { - - public static void main(String[] args) { - - SCADomain scaDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite"); - System.out.println("Provider.composite ready..."); - - try { - System.in.read(); - } catch (IOException e) { - e.printStackTrace(); - } - - scaDomain.close(); - } -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTestCase.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTestCase.java deleted file mode 100644 index 703419f527..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderEntryEntityTagsTestCase.java +++ /dev/null @@ -1,428 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.atom; - -import java.text.SimpleDateFormat; -import java.util.Date; - -import junit.framework.Assert; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -import org.apache.tuscany.sca.binding.atom.collection.Collection; -import org.apache.tuscany.sca.host.embedded.SCADomain; - -import org.apache.abdera.Abdera; -import org.apache.abdera.i18n.iri.IRI; -import org.apache.abdera.factory.Factory; -import org.apache.abdera.model.Base; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.abdera.model.Feed; -import org.apache.abdera.model.Document; -import org.apache.abdera.model.Service; -import org.apache.abdera.protocol.Response.ResponseType; -import org.apache.abdera.protocol.client.AbderaClient; -import org.apache.abdera.protocol.client.ClientResponse; -import org.apache.abdera.protocol.client.RequestOptions; -import org.apache.abdera.protocol.client.util.BaseRequestEntity; -import org.apache.abdera.util.EntityTag; -import org.apache.abdera.parser.Parser; - -/** - * Tests use of server provided entry entity tags for Atom binding in Tuscany. - * Tests conditional gets (e.g. get if-none-match) or conditional posts (post if-match) - * using entity tags or last modified header entries. - * Uses the SCA provided Provider composite to act as a server. - * Uses the Abdera provided Client to act as a client. - */ -public class ProviderEntryEntityTagsTestCase { - public final static String providerURI = "http://localhost:8084/customer"; - protected static SCADomain scaConsumerDomain; - protected static SCADomain scaProviderDomain; - protected static CustomerClient testService; - protected static Abdera abdera; - protected static AbderaClient client; - protected static Parser abderaParser; - protected static String eTag; - protected static Date lastModified; - protected static final SimpleDateFormat dateFormat = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss Z" ); // RFC 822 date time - - @BeforeClass - public static void init() throws Exception { - System.out.println(">>>ProviderEntryEntityTagsTestCase.init"); - scaProviderDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite"); - abdera = new Abdera(); - client = new AbderaClient(abdera); - abderaParser = Abdera.getNewParser(); - } - - @AfterClass - public static void destroy() throws Exception { - System.out.println(">>>ProviderEntryEntityTagsTestCase.destroy"); - scaProviderDomain.close(); - } - - @Test - public void testPrelim() throws Exception { - Assert.assertNotNull(scaProviderDomain); - Assert.assertNotNull( client ); - } - - @Test - public void testEmptyCachePost() throws Exception { - // Pseudo-code - // 1) Example HTTP POST request (new entry put, new etag response) - // User client post request - // POST /myblog/entries HTTP/1.1 - // Slug: First Post - // - // <?xml version="1.0" ?> - // <entry xmlns="http://www.w3.org/2005/Atom"> - // <title>Atom-Powered Robots Run Amok</title> - // <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> - // <updated>2007-02-123T17:09:02Z</updated> - // <author><name>Captain Lansing</name></author> - // <content>It's something moving... solid metal</content> - // </entry> - - // Expected Atom server response (note unique ETag) - // HTTP/1.1 201 Created - // Date: Fri, 23 Feb 2007 21:17:11 GMT - // Content-Length: nnn - // Content-Type: application/atom+xml;type=entry - // Location: http://example.org/edit/first-post.atom - // Content-Location: http://example.org/edit/first-post.atom - // ETag: "e180ee84f0671b1" - // Last-Modified: Fri, 25 Jul 2008 14:36:44 -0500 - // - // <?xml version="1.0" ?> - // <entry xmlns="http://www.w3.org/2005/Atom"> - // <title>Atom-Powered Robots Run Amok</title> - // <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> - // <updated>2007-02-123T17:09:02Z</updated> - // <author><name>Captain Lansing</name></author> - // <content>It's something moving... solid metal</content> - // </entry> - - // Testing of entry creation - Factory factory = abdera.getFactory(); - String customerName = "Fred Farkle"; - Entry entry = factory.newEntry(); - entry.setTitle("customer " + customerName); - entry.setUpdated(new Date()); - entry.addAuthor("Apache Tuscany"); - // ID created by collection. - // entry.setId(id); // auto-provided - // entry.addLink("" + id, "edit"); // auto-provided - // entry.addLink("" + id, "alternate"); // auto-provided - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(customerName); - entry.setContentElement(content); - - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml; type=entry"; - opts.setContentType(contentType); - // AtomTestCaseUtils.printRequestHeaders( "Post request headers", " ", opts ); - IRI colUri = new IRI(providerURI).resolve("customer"); - // res = client.post(colUri.toString() + "?test=foo", entry, opts); - ClientResponse res = client.post(colUri.toString(), entry, opts); - - // Assert response status code is 201-OK. - // Assert response header Content-Type: application/atom+xml; charset=UTF-8 - // Assert response header Location: http://example.org/edit/first-post.atom - // Assert response header Content-Location: http://example.org/edit/first-post.atom - // Assert response header ETag: "e180ee84f0671b1" - // Assert response header Last-Modified: Fri, 25 Jul 2008 14:36:44 -0500 - // Assert collection size is 1. - Assert.assertEquals(201, res.getStatus()); - Assert.assertEquals(contentType, res.getContentType().toString().trim()); - // Assert.assertNotNull( res.getLocation().toString() ); - // Assert.assertEquals( "", res.getContentLocation().toString() ); - // Save eTag for subsequent tests; - eTag = res.getHeader( "ETag" ); - Assert.assertNotNull( eTag ); - lastModified = res.getLastModified(); - Assert.assertNotNull(lastModified); - } - - @Test - public void testDirtyCachePut() throws Exception { - // 2) Conditional PUT request (post with etag. entry provided is stale) - // User client PUT request - // PUT /edit/first-post.atom HTTP/1.1 - // > If-Match: "e180ee84f0671b1" - // - // <?xml version="1.0" ?> - // <entry xmlns="http://www.w3.org/2005/Atom"> - // <title>Atom-Powered Robots Run Amok</title> - // <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> - // <updated>2007-02-24T16:34:06Z</updated> - // <author><name>Captain Lansing</name></author> - // <content>Update: it's a hoax!</content> - // </entry> - // Testing of entry creation - Factory factory = abdera.getFactory(); - String customerName = "Molly Ringwald"; - Entry entry = factory.newEntry(); - entry.setTitle("customer " + customerName); - entry.setUpdated( new Date()); - entry.addAuthor("Apache Tuscany"); - String id = eTag.substring( 1, eTag.length()-1); - entry.setId(id); // auto-provided - // entry.addLink("" + id, "edit"); // auto-provided - // entry.addLink("" + id, "alternate"); // auto-provided - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(customerName); - entry.setContentElement(content); - - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml; type=entry"; - opts.setContentType(contentType); - opts.setHeader( "If-None-Match", eTag); - - // AtomTestCaseUtils.printRequestHeaders( "Put request headers", " ", opts ); - IRI colUri = new IRI(providerURI).resolve("customer"); - // res = client.post(colUri.toString() + "?test=foo", entry, opts); - id = eTag.substring( 1, eTag.length()-1); - // Warning. AbderaClient.put(String uri,Base base,RequestOptions options) caches on the client side. - // ClientResponse res = client.put(colUri.toString() + id, entry, opts); - ClientResponse res = client.put(colUri.toString() + "/" + id, new BaseRequestEntity( entry ), opts); - // Expected Atom server response (item was edited by another user) - // > HTTP/1.1 412 Precondition Failed - // Date: Sat, 24 Feb 2007 16:34:11 GMT - - // If-Match Assert response status code is 412. Precondition failed. - // If-None-Match Assert response status code is 200. OK - Assert.assertEquals(200, res.getStatus()); - // Put provides null body and no etags. - res.release(); - } - - @Test - public void testETagMissGet() throws Exception { - // 4) Conditional GET example (get with etag. etag not in cache) - // User client GET request - // GET /edit/first-post.atom HTTP/1.1 - // > If-None-Match: "e180ee84f0671b1" - - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml; type=entry"; - opts.setContentType(contentType); - opts.setHeader( "If-None-Match", "123456"); - opts.setHeader( "Pragma", "no-cache"); // turn off client caching - - IRI colUri = new IRI(providerURI).resolve("customer"); - // res = client.post(colUri.toString() + "?test=foo", entry, opts); - String id = eTag.substring( 1, eTag.length()-1); - // Warning. AbderaClient.put(String uri,Base base,RequestOptions options) caches on the client side. - // ClientResponse res = client.put(colUri.toString() + id, entry, opts); - ClientResponse res = client.get(colUri.toString() + "/" + id, opts); - // Expected Atom server response (item was edited by another user) - // > HTTP/1.1 412 Precondition Failed - // Date: Sat, 24 Feb 2007 16:34:11 GMT - - // Atom server response (item was up to date) - // > HTTP/1.1 200 OK - // Date: Sat, 24 Feb 2007 13:17:11 GMT - // > ETag: "bb4f5e86e92ddb8549604a0df0763581" - // > Last-Modified: Mon, 28 Jul 2008 10:25:37 -0500 - - // Assert response status code is 200 OK. - // Assert header Content-Type: application/atom+xml;type=entry - // Assert header Location: http://example.org/edit/first-post.atom - // Assert header Content-Location: http://example.org/edit/first-post.atom - // Assert header ETag: "555555" (etag response != etag request) - // Assert header Last-Modified: Fri, 25 Jul 2008 14:36:44 -0500 - Assert.assertEquals(200, res.getStatus()); - Assert.assertEquals(contentType, res.getContentType().toString().trim()); - // Assert.assertNotNull( res.getLocation().toString() ); - // Assert.assertEquals( "", res.getContentLocation().toString() ); - Assert.assertNotNull( res.getHeader( "ETag" ) ); - lastModified = res.getLastModified(); - Assert.assertNotNull(lastModified); - res.release(); - } - - @Test - public void testETagHitGet() throws Exception { - // 3) Conditional GET example (get with etag. etag match) - // User client GET request - // GET /edit/first-post.atom HTTP/1.1 - // > If-None-Match: "e180ee84f0671b1" - - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml; type=entry"; - opts.setContentType(contentType); - opts.setHeader( "If-None-Match", eTag); - opts.setHeader( "Pragma", "no-cache"); // turn off client caching - - IRI colUri = new IRI(providerURI).resolve("customer"); - // res = client.post(colUri.toString() + "?test=foo", entry, opts); - String id = eTag.substring( 1, eTag.length()-1); - // Warning. AbderaClient.put(String uri,Base base,RequestOptions options) caches on the client side. - // ClientResponse res = client.put(colUri.toString() + id, entry, opts); - ClientResponse res = client.get(colUri.toString() + "/" + id, opts); - // Atom server response (item was up to date) - // > HTTP/1.1 304 Not Modified - // Date: Sat, 24 Feb 2007 13:17:11 GMT - - // Assert response status code is 304 Not Modified. - // Assert header ETag: "e180ee84f0671b1" - // Assert header Last-Modified: Fri, 25 Jul 2008 14:36:44 -0500 - // Assert.assertEquals(304, res.getStatus()); - res.release(); - } - - - @Test - public void testUpToDateGet() throws Exception { - // 3) Conditional GET example (get with If-Mod. entry is up to date) - // User client GET request - // GET /edit/first-post.atom HTTP/1.1 - // > If-Modified-Since: Sat, 29 Oct 2025 19:43:31 GMT - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml; type=entry"; - opts.setContentType(contentType); - opts.setHeader( "If-Modified-Since", "Sat, 29 Oct 2025 19:43:31 GMT"); // "EEE, dd MMM yyyy HH:mm:ss Z // RFC 822 Date - opts.setHeader( "Pragma", "no-cache"); // turn off client caching - - IRI colUri = new IRI(providerURI).resolve("customer"); - // res = client.post(colUri.toString() + "?test=foo", entry, opts); - String id = eTag.substring( 1, eTag.length()-1); - // Warning. AbderaClient.put(String uri,Base base,RequestOptions options) caches on the client side. - // ClientResponse res = client.put(colUri.toString() + id, entry, opts); - // Warning. AbderaClient.put(String uri,Base base,RequestOptions options) caches on the client side. - // ClientResponse res = client.get(colUri.toString() + "/" + id, opts); - ClientResponse res = client.execute( "GET", colUri.toString(), (BaseRequestEntity)null, opts); - - // Atom server response (item was up to date) - // > HTTP/1.1 304 Not Modified - // Date: Sat, 24 Feb 2007 13:17:11 GMT - - // Assert response status code is 304 Not Modified. - Assert.assertEquals(304, res.getStatus()); - res.release(); - } - - @Test - public void testOutOfDateGet() throws Exception { - // 4) Conditional GET example (get with If-Mod. entry is not to date) - // User client GET request - // GET /edit/first-post.atom HTTP/1.1 - // > If-Modified-Since: Sat, 29 Oct 1844 19:43:31 GMT - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml; type=entry"; - opts.setContentType(contentType); - opts.setHeader( "If-Modified-Since", "Sat, 29 Oct 1844 19:43:31 GMT"); // "EEE, dd MMM yyyy HH:mm:ss Z // RFC 822 Date - opts.setHeader( "Pragma", "no-cache"); // turn off client caching - - IRI colUri = new IRI(providerURI).resolve("customer"); - // res = client.post(colUri.toString() + "?test=foo", entry, opts); - String id = eTag.substring( 1, eTag.length()-1); - // Warning. AbderaClient.put(String uri,Base base,RequestOptions options) caches on the client side. - // ClientResponse res = client.put(colUri.toString() + id, entry, opts); - ClientResponse res = client.get(colUri.toString() + "/" + id, opts); - - // Atom server response (item was up to date) - // > HTTP/1.1 200 OK - // Date: Sat, 24 Feb 2007 13:17:11 GMT - // > ETag: "bb4f5e86e92ddb8549604a0df0763581" - // > Last-Modified: Mon, 28 Jul 2008 10:25:37 -0500 - - // Assert response status code is 200 OK. - // Assert header ETag: "e180ee84f0671b1" - // Assert header Last-Modified: Greater than If-Mod - Assert.assertEquals(200, res.getStatus()); - Assert.assertEquals(contentType, res.getContentType().toString().trim()); - // Assert.assertNotNull( res.getLocation().toString() ); - // Assert.assertEquals( "", res.getContentLocation().toString() ); - Assert.assertNotNull( res.getHeader( "ETag" ) ); - lastModified = res.getLastModified(); - Assert.assertNotNull(lastModified); - res.release(); - } - - @Test - public void testUpToDateUnModGet() throws Exception { - // 3) Conditional GET example (get with If-Unmod. entry is not modified (< predicate date). - // User client GET request - // GET /edit/first-post.atom HTTP/1.1 - // > If-Unmodified-Since: Sat, 29 Oct 2025 19:43:31 GMT - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml; type=entry"; - opts.setContentType(contentType); - opts.setHeader( "If-Unmodified-Since", "Sat, 29 Oct 2050 19:43:31 GMT" ); - opts.setHeader( "Pragma", "no-cache"); // turn off client caching - - IRI colUri = new IRI(providerURI).resolve("customer"); - // res = client.post(colUri.toString() + "?test=foo", entry, opts); - String id = eTag.substring( 1, eTag.length()-1); - // Warning. AbderaClient.put(String uri,Base base,RequestOptions options) caches on the client side. - // ClientResponse res = client.put(colUri.toString() + id, entry, opts); - ClientResponse res = client.get(colUri.toString() + "/" + id, opts); - - // Atom server response (item was up to date) - // > HTTP/1.1 200 OK - // Date: Sat, 24 Feb 2007 13:17:11 GMT - // > ETag: "bb4f5e86e92ddb8549604a0df0763581" - // > Last-Modified: Mon, 28 Jul 2008 10:25:37 -0500 - - // Assert response status code is 200 OK. - // Assert header Content-Type: application/atom+xml;type=entry - // Assert header Location: http://example.org/edit/first-post.atom - // Assert header Content-Location: http://example.org/edit/first-post.atom - // Assert header ETag: "e180ee84f0671b1" - // Assert header Last-Modified: Less than If-Unmod - Assert.assertEquals(200, res.getStatus()); - res.release(); - } - - @Test - public void testOutOfDateUnModGet() throws Exception { - // 4) Conditional GET example (get with If-Unmod. entry is modified (> predicate date) - // User client GET request - // GET /edit/first-post.atom HTTP/1.1 - // Host: example.org - // > If-Unmodified-Since: Sat, 29 Oct 1844 19:43:31 GMT - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml; type=entry"; - opts.setContentType(contentType); - opts.setHeader( "If-Unmodified-Since", "Sat, 29 Oct 1844 19:43:31 GMT" ); - opts.setHeader( "Pragma", "no-cache"); // turn off client caching - - IRI colUri = new IRI(providerURI).resolve("customer"); - // res = client.post(colUri.toString() + "?test=foo", entry, opts); - String id = eTag.substring( 1, eTag.length()-1); - // Warning. AbderaClient.put(String uri,Base base,RequestOptions options) caches on the client side. - // ClientResponse res = client.put(colUri.toString() + id, entry, opts); - ClientResponse res = client.get(colUri.toString() + "/" + id, opts); - - // Atom server response (item was up to date) - // > HTTP/1.1 304 Not Modified - // Date: Sat, 24 Feb 2007 13:17:11 GMT - - // Assert response status code is 304 Not Modified. - Assert.assertEquals(304, res.getStatus()); - res.release(); - } -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java deleted file mode 100644 index 4915f7426e..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java +++ /dev/null @@ -1,382 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.atom; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.StringReader; -import java.net.Socket; -import java.text.SimpleDateFormat; -import java.util.Date; - -import junit.framework.Assert; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -import org.apache.tuscany.sca.host.embedded.SCADomain; - -import org.apache.abdera.Abdera; -import org.apache.abdera.i18n.iri.IRI; -import org.apache.abdera.factory.Factory; -import org.apache.abdera.model.Base; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.abdera.model.Feed; -import org.apache.abdera.model.Document; -import org.apache.abdera.model.Service; -import org.apache.abdera.model.Collection; -import org.apache.abdera.protocol.Response.ResponseType; -import org.apache.abdera.protocol.client.AbderaClient; -import org.apache.abdera.protocol.client.ClientResponse; -import org.apache.abdera.protocol.client.RequestOptions; -import org.apache.abdera.protocol.client.util.BaseRequestEntity; -import org.apache.abdera.util.EntityTag; -import org.apache.abdera.parser.Parser; - -/** - * Tests use of server provided feed entity tags for Atom binding in Tuscany. - * Tests conditional gets (e.g. get if-none-match) or conditional posts (post if-match) - * using entity tags and last modified entries in headers. - * Uses the SCA provided Provider composite to act as a server. - * Uses the Abdera provided Client to act as a client. - */ -public class ProviderFeedEntityTagsTestCase { - public final static String providerURI = "http://localhost:8084/customer"; - protected static SCADomain scaConsumerDomain; - protected static SCADomain scaProviderDomain; - protected static CustomerClient testService; - protected static Abdera abdera; - protected static AbderaClient client; - protected static Parser abderaParser; - protected static String eTag; - protected static Date lastModified; - protected static final SimpleDateFormat dateFormat = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss Z" ); // RFC 822 date time - - @BeforeClass - public static void init() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.init"); - scaProviderDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite"); - abdera = new Abdera(); - client = new AbderaClient(abdera); - abderaParser = Abdera.getNewParser(); - } - - @AfterClass - public static void destroy() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.destroy"); - scaProviderDomain.close(); - } - - @Test - public void testPrelim() throws Exception { - Assert.assertNotNull(scaProviderDomain); - Assert.assertNotNull( client ); - } - - @Test - public void testFeedBasics() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedBasics"); - // Normal feed request - ClientResponse res = client.get(providerURI); - Assert.assertNotNull(res); - try { - // Assert feed provided since no predicates - Assert.assertEquals(200, res.getStatus()); - Assert.assertEquals(ResponseType.SUCCESS, res.getType()); - // AtomTestCaseUtils.printResponseHeaders( "Feed response headers:", " ", res ); - // System.out.println("Feed response content:"); - // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument()); - - // Perform other tests on feed. - // Warning. AbderaClient.getEntityTag is very particular on tag pattern. - // Document<Feed> doc = res.getDocument(); - String body = read( res.getInputStream() ); - // RFC 4287 requires non-null id, title, updated elements - Assert.assertTrue( -1 != body.indexOf( "</id>" )); - Assert.assertTrue( -1 != body.indexOf( "</title>" )); - Assert.assertTrue( -1 != body.indexOf( "</updated>" )); - - eTag = res.getHeader("ETag"); - Assert.assertNotNull( eTag ); - lastModified = res.getLastModified(); - Assert.assertNotNull( lastModified ); - } finally { - res.release(); - } - } - - @Test - public void testUnmodifiedGetIfMatch() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfMatch"); - // Feed request with predicates - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml"; - opts.setContentType(contentType); - opts.setHeader( "If-Match", eTag); - - ClientResponse res = client.get(providerURI, opts); - Assert.assertNotNull(res); - try { - String thisETag = res.getHeader("ETag"); - Assert.assertNotNull( thisETag ); - Date thisLastModified = res.getLastModified(); - Assert.assertNotNull( thisLastModified ); - - // Should return 200 - Feed provided since it matches etag. - Assert.assertEquals(200, res.getStatus()); - Assert.assertEquals(ResponseType.SUCCESS, res.getType()); - // AtomTestCaseUtils.printResponseHeaders( "Feed response headers:", " ", res ); - // System.out.println("Feed response content:"); - // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument()); - } finally { - res.release(); - } - } - - @Test - public void testUnmodifiedGetIfNoneMatch() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfNoneMatch"); - // Feed request with predicates - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml"; - opts.setContentType(contentType); - opts.setHeader( "If-None-Match", eTag); - - ClientResponse res = client.get(providerURI, opts); - Assert.assertNotNull(res); - try { - // Should return 304 - Feed not provided since it matches ETag. - Assert.assertEquals(304, res.getStatus()); - } finally { - res.release(); - } - } - - @Test - public void testUnmodifiedGetIfUnModified() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfUnModified"); - // Feed request with predicates - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml"; - opts.setContentType(contentType); - opts.setHeader( "If-Unmodified-Since", dateFormat.format( new Date() )); - - ClientResponse res = client.get(providerURI, opts); - Assert.assertNotNull(res); - try { - // Should return 304 - Feed not provided since feed is modified since. - Assert.assertEquals(304, res.getStatus()); - } finally { - res.release(); - } - } - - @Test - public void testUnmodifiedGetIfModified() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfModified"); - // Feed request with predicates - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml"; - opts.setContentType(contentType); - opts.setHeader( "If-Modified-Since", dateFormat.format( new Date( 0 ) )); - - ClientResponse res = client.get(providerURI, opts); - Assert.assertNotNull(res); - try { - // Should return 200 - Feed provided since feed is changed. - Assert.assertEquals(200, res.getStatus()); - Assert.assertEquals(ResponseType.SUCCESS, res.getType()); - - String thisETag = res.getHeader("ETag"); - Assert.assertNotNull( thisETag ); - Date thisLastModified = res.getLastModified(); - Assert.assertNotNull( thisLastModified ); - } finally { - res.release(); - } - } - - @Test - public void testModifiedGetIfNoneMatch() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedModifiedGetIfNoneMatch"); - // Post some new content to the feed. - Factory factory = abdera.getFactory(); - String customerName = "Fred Farkle"; - Entry entry = factory.newEntry(); - entry.setTitle("customer " + customerName); - entry.setUpdated(new Date()); - entry.addAuthor("Apache Tuscany"); - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(customerName); - entry.setContentElement(content); - - RequestOptions opts = new RequestOptions(); - String contentType = "application/atom+xml; type=entry"; - opts.setContentType(contentType); - IRI colUri = new IRI(providerURI).resolve("customer"); - ClientResponse res = client.post(colUri.toString(), entry, opts); - - // Feed request with predicates - opts = new RequestOptions(); - contentType = "application/atom+xml"; - opts.setContentType(contentType); - opts.setHeader( "If-None-Match", eTag); - - res = client.get(providerURI, opts); - Assert.assertNotNull(res); - try { - // Should return 304 - Feed not provided since it matches ETag. - Assert.assertEquals(304, res.getStatus()); - // AtomTestCaseUtils.printResponseHeaders( "Feed response headers:", " ", res ); - // System.out.println("Feed response content:"); - // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument()); - } finally { - res.release(); - } - } - - @Test - public void testModifiedGetIfMatch() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedModifiedGetIfMatch"); - // Feed request with predicates - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml"; - opts.setContentType(contentType); - opts.setHeader( "If-Match", eTag); - - ClientResponse res = client.get(providerURI, opts); - Assert.assertNotNull(res); - try { - String thisETag = res.getHeader("ETag"); - Assert.assertNotNull( thisETag ); - Date thisLastModified = res.getLastModified(); - Assert.assertNotNull( thisLastModified ); - - // Should return 200 - value since feed is changed - Assert.assertEquals(200, res.getStatus()); - Assert.assertEquals(ResponseType.SUCCESS, res.getType()); - - // AtomTestCaseUtils.printResponseHeaders( "Feed modified if-none-match response headers:", " ", res ); - // System.out.println("Feed response content:"); - // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument()); - } finally { - res.release(); - } - } - - @Test - public void testModifiedGetIfUnModified() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfUnModified"); - // Feed request with predicates - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml"; - opts.setContentType(contentType); - opts.setHeader( "If-Unmodified-Since", dateFormat.format( new Date() )); - - ClientResponse res = client.get(providerURI, opts); - Assert.assertNotNull(res); - try { - // Should return 304 - Feed not provided since feed is modified since. - Assert.assertEquals(304, res.getStatus()); - } finally { - res.release(); - } - } - - @Test - public void testModifiedGetIfModified() throws Exception { - System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfModified"); - // Feed request with predicates - RequestOptions opts = new RequestOptions(); - final String contentType = "application/atom+xml"; - opts.setContentType(contentType); - opts.setHeader( "If-Modified-Since", dateFormat.format( lastModified )); - - ClientResponse res = client.get(providerURI, opts); - Assert.assertNotNull(res); - try { - // Should return 200 - Feed provided since feed is changed. - Assert.assertEquals(200, res.getStatus()); - Assert.assertEquals(ResponseType.SUCCESS, res.getType()); - - String thisETag = res.getHeader("ETag"); - Assert.assertNotNull( thisETag ); - Date thisLastModified = res.getLastModified(); - Assert.assertNotNull( thisLastModified ); - } finally { - res.release(); - } - } - - - public static void printFeed( String title, String indent, Feed feed ) { - if ( feed == null ) { - System.out.println( title + " feed is null"); - return; - } - - System.out.println( title ); - System.out.println( indent + "id=" + feed.getId() ); - System.out.println( indent + "title=" + feed.getTitle() ); - System.out.println( indent + "updated=" + feed.getUpdated() ); - System.out.println( indent + "author=" + feed.getAuthor() ); - Collection collection = feed.getCollection(); - if ( collection == null ) { - System.out.println( indent + "collection=null" ); - } else { - System.out.println( indent + "collection=" + collection ); - } - // System.out.println( indent + "collection size=" + feed.getCollection() ); - // for (Collection collection : workspace.getCollections()) { - // if (collection.getTitle().equals("customers")) { - // String expected = uri + "customers"; - // String actual = collection.getResolvedHref().toString(); - // assertEquals(expected, actual); - // } - // } - - } - - /** - * Read response ream from the given socket. - * @param socket - * @return - * @throws IOException - */ - private static String read(InputStream inputStream) throws IOException { - BufferedReader reader = null; - try { - reader = new BufferedReader(new InputStreamReader( inputStream )); - StringBuffer sb = new StringBuffer(); - String str; - while ((str = reader.readLine()) != null) { - sb.append(str); - } - return sb.toString(); - } finally { - if (reader != null) { - reader.close(); - } - } - } -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTestCase.java b/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTestCase.java deleted file mode 100644 index 96ea508210..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderServiceDocumentTestCase.java +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.tuscany.sca.binding.atom; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; - -import junit.framework.Assert; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; - -import org.apache.tuscany.sca.host.embedded.SCADomain; -import org.apache.tuscany.sca.binding.atom.collection.Collection; - -import org.apache.abdera.Abdera; -import org.apache.abdera.i18n.iri.IRI; -import org.apache.abdera.factory.Factory; -import org.apache.abdera.model.Content; -import org.apache.abdera.model.Entry; -import org.apache.abdera.model.Feed; -import org.apache.abdera.model.Document; -import org.apache.abdera.model.Service; -import org.apache.abdera.protocol.Response.ResponseType; -import org.apache.abdera.protocol.client.AbderaClient; -import org.apache.abdera.protocol.client.ClientResponse; -import org.apache.abdera.protocol.client.RequestOptions; -import org.apache.abdera.parser.Parser; - -/** - * Tests use of service documents provided by atom binding based collections. - * Uses the SCA provided Provider composite to act as a server. - * Uses the Abdera provided Client to act as a client. - */ -public class ProviderServiceDocumentTestCase { - public final static String providerURI = "http://localhost:8084/customer"; - protected static SCADomain scaProviderDomain; - protected static SCADomain scaConsumerDomain; - protected static CustomerClient testService; - protected static Abdera abdera; - protected static AbderaClient client; - protected static Parser abderaParser; - - @BeforeClass - public static void init() throws Exception { - scaProviderDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Provider.composite"); - scaConsumerDomain = SCADomain.newInstance("org/apache/tuscany/sca/binding/atom/Consumer.composite"); - testService = scaConsumerDomain.getService(CustomerClient.class, "CustomerClient"); - abdera = new Abdera(); - client = new AbderaClient(abdera); - abderaParser = Abdera.getNewParser(); - } - - @AfterClass - public static void destroy() throws Exception { - scaProviderDomain.close(); - } - - @Test - public void testPrelim() throws Exception { - Assert.assertNotNull(scaProviderDomain); - Assert.assertNotNull( client ); - } - - @Test - public void testFeedBasics() throws Exception { - // Normal feed request - ClientResponse res = client.get(providerURI); - Assert.assertNotNull(res); - try { - // Assert feed provided since no predicates - Assert.assertEquals(200, res.getStatus()); - Assert.assertEquals(ResponseType.SUCCESS, res.getType()); - // AtomTestCaseUtils.printResponseHeaders( "Feed response headers:", " ", res ); - // System.out.println("Feed response content:"); - // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument()); - - // Perform other tests on feed. - // Warning. AbderaClient.getEntityTag is very particular on tag pattern. - // Document<Feed> doc = res.getDocument(); - String body = read( res.getInputStream() ); - // RFC 4287 requires non-null id, title, updated elements - Assert.assertTrue( -1 != body.indexOf( "</id>" )); - Assert.assertTrue( -1 != body.indexOf( "</title>" )); - Assert.assertTrue( -1 != body.indexOf( "</updated>" )); - } finally { - res.release(); - } - } - - @Test - public void testServiceDocumentGet() throws Exception { - Collection resourceCollection = testService.getCustomerCollection(); - Assert.assertNotNull(resourceCollection); - - Entry postEntry = postEntry("Sponge Bob"); - Entry newEntry = resourceCollection.post(postEntry); - postEntry = postEntry("Austin Powers"); - newEntry = resourceCollection.post(postEntry); - postEntry = postEntry("Count Dracula"); - newEntry = resourceCollection.post(postEntry); - - // Service document - ClientResponse res = client.get(providerURI + "/atomsvc"); - Assert.assertNotNull(res); - try { - // Asser feed provided since no predicates - Assert.assertEquals(200, res.getStatus()); - Assert.assertEquals(ResponseType.SUCCESS, res.getType()); - - // Perform other tests on feed. - // AtomTestCaseUtils.prettyPrint(abdera, res.getDocument()); - Document<Service> serviceDoc = res.getDocument(); - Service service = serviceDoc.getRoot(); - Assert.assertNotNull( service ); - org.apache.abdera.model.Collection collection = service.getCollection( "workspace", "customers" ); - String title = collection.getTitle(); - Assert.assertEquals("customers", title); - String href = collection.getHref().toString(); - Assert.assertTrue( href.contains( "customer") ); - } finally { - res.release(); - } - } - - public static void printFeed( String title, String indent, Feed feed ) { - if ( feed == null ) { - System.out.println( title + " feed is null"); - return; - } - - System.out.println( title ); - System.out.println( indent + "id=" + feed.getId() ); - System.out.println( indent + "title=" + feed.getTitle() ); - System.out.println( indent + "updated=" + feed.getUpdated() ); - System.out.println( indent + "author=" + feed.getAuthor() ); - // Collection collection = feed.getCollection(); - // if ( collection == null ) { - // System.out.println( indent + "collection=null" ); - // } else { - // System.out.println( indent + "collection=" + collection ); - // } - // System.out.println( indent + "collection size=" + feed.getCollection() ); - // for (Collection collection : workspace.getCollections()) { - // if (collection.getTitle().equals("customers")) { - // String expected = uri + "customers"; - // String actual = collection.getResolvedHref().toString(); - // assertEquals(expected, actual); - // } - // } - - } - - private Entry postEntry(String value) { - Entry entry = abdera.newEntry(); - entry.setTitle("customer " + value); - - Content content = abdera.getFactory().newContent(); - content.setContentType(Content.Type.TEXT); - content.setValue(value); - entry.setContentElement(content); - - return entry; - } - - /** - * Read response ream from the given socket. - * @param socket - * @return - * @throws IOException - */ - private static String read(InputStream inputStream) throws IOException { - BufferedReader reader = null; - try { - reader = new BufferedReader(new InputStreamReader( inputStream )); - StringBuffer sb = new StringBuffer(); - String str; - while ((str = reader.readLine()) != null) { - sb.append(str); - } - return sb.toString(); - } finally { - if (reader != null) { - reader.close(); - } - } - } -} diff --git a/java/sca/modules/binding-atom-abdera/src/test/resources/org/apache/tuscany/sca/binding/atom/Consumer.composite b/java/sca/modules/binding-atom-abdera/src/test/resources/org/apache/tuscany/sca/binding/atom/Consumer.composite deleted file mode 100644 index a2c50f872e..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/resources/org/apache/tuscany/sca/binding/atom/Consumer.composite +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" - xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0" - targetNamespace="http://customer" - name="Consumer"> - - <component name="CustomerClient"> - <implementation.java class="org.apache.tuscany.sca.binding.atom.CustomerClientImpl"/> - <reference name="customerCollection"> - <tuscany:binding.atom uri="http://localhost:8084/customer"/> - </reference> - </component> - -</composite> diff --git a/java/sca/modules/binding-atom-abdera/src/test/resources/org/apache/tuscany/sca/binding/atom/Provider.composite b/java/sca/modules/binding-atom-abdera/src/test/resources/org/apache/tuscany/sca/binding/atom/Provider.composite deleted file mode 100644 index 60097ee0f7..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/resources/org/apache/tuscany/sca/binding/atom/Provider.composite +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" - xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
- targetNamespace = "http://customer" - name="Provider">
-
- <service name="customer" promote="CustomerCollection">
- <tuscany:binding.atom uri = "http://localhost:8084/customer"/>
- </service>
-
- <component name="CustomerCollection">
- <implementation.java class="org.apache.tuscany.sca.binding.atom.CustomerCollectionImpl"/>
- </component>
-
-</composite>
diff --git a/java/sca/modules/binding-atom-abdera/src/test/resources/org/apache/tuscany/sca/binding/atom/ReceiptProvider.composite b/java/sca/modules/binding-atom-abdera/src/test/resources/org/apache/tuscany/sca/binding/atom/ReceiptProvider.composite deleted file mode 100644 index 71aa932a12..0000000000 --- a/java/sca/modules/binding-atom-abdera/src/test/resources/org/apache/tuscany/sca/binding/atom/ReceiptProvider.composite +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?>
-<!-- - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. ---> -<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" - xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0"
- targetNamespace = "http://receipt" - name="ReceiptProvider">
-
- <service name="receipt" promote="MediaCollection">
- <tuscany:binding.atom uri = "http://localhost:8084/receipt"/>
- </service>
-
- <component name="MediaCollection">
- <implementation.java class="org.apache.tuscany.sca.binding.atom.MediaCollectionImpl"/>
- </component>
-
-</composite>
|