You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by js...@apache.org on 2007/06/20 02:59:05 UTC
svn commit: r548879 - in /incubator/tuscany/java/sca:
demos/alert-aggregator/src/main/java/org/apache/tuscany/sca/demos/aggregator/
demos/bigbank-account/
demos/bigbank-account/src/main/java/bigbank/account/feed/
demos/bigbank-account/src/main/resource...
Author: jsdelfino
Date: Tue Jun 19 17:59:04 2007
New Revision: 548879
URL: http://svn.apache.org/viewvc?view=rev&rev=548879
Log:
Pass the feed URI to the Feed.get() method, to allow a feed producer to extract business data out of it, and return that URI in the feed itself. Added a feed binding to the Bigbank demo, allowing a client to the customer account report as a feed.
Added:
incubator/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/feed/
incubator/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/feed/AccountFeedImpl.java (with props)
Modified:
incubator/tuscany/java/sca/demos/alert-aggregator/src/main/java/org/apache/tuscany/sca/demos/aggregator/AlertsFeedServiceImpl.java
incubator/tuscany/java/sca/demos/bigbank-account/pom.xml
incubator/tuscany/java/sca/demos/bigbank-account/src/main/resources/BigBank.composite
incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/Feed.java
incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingInvoker.java
incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListener.java
incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedServiceBindingProvider.java
incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/AggregatorImpl.java
Modified: incubator/tuscany/java/sca/demos/alert-aggregator/src/main/java/org/apache/tuscany/sca/demos/aggregator/AlertsFeedServiceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/alert-aggregator/src/main/java/org/apache/tuscany/sca/demos/aggregator/AlertsFeedServiceImpl.java?view=diff&rev=548879&r1=548878&r2=548879
==============================================================================
--- incubator/tuscany/java/sca/demos/alert-aggregator/src/main/java/org/apache/tuscany/sca/demos/aggregator/AlertsFeedServiceImpl.java (original)
+++ incubator/tuscany/java/sca/demos/alert-aggregator/src/main/java/org/apache/tuscany/sca/demos/aggregator/AlertsFeedServiceImpl.java Tue Jun 19 17:59:04 2007
@@ -21,26 +21,19 @@
import java.text.DateFormat;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
-import org.apache.tuscany.sca.demos.aggregator.types.ConfigType;
-import org.apache.tuscany.sca.demos.aggregator.types.SourceType;
-import org.apache.tuscany.sca.demos.aggregator.types.TypesFactory;
-import org.apache.tuscany.sca.demos.aggregator.types.AlertsType;
+import org.apache.tuscany.sca.binding.feed.Feed;
import org.apache.tuscany.sca.demos.aggregator.types.AlertType;
-import org.apache.tuscany.sca.demos.aggregator.types.impl.AlertsTypeImpl;
-
-import org.osoa.sca.annotations.Service;
+import org.apache.tuscany.sca.demos.aggregator.types.AlertsType;
import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndEntryImpl;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.feed.synd.SyndFeedImpl;
-import org.apache.tuscany.sca.binding.feed.Feed;
-
/**
* Read all new alerts from the specified sources
*
@@ -63,14 +56,14 @@
*
* @return the structure containing alerts
*/
- public SyndFeed get() {
+ public SyndFeed get(String uri) {
// Create a new Feed
SyndFeed feed = new SyndFeedImpl();
feed.setTitle("Apache Tuscant Feed Aggregator");
feed.setDescription("A sample showing an SCA application to aggregate various types of feeds");
feed.setAuthor("Apache Tuscany");
- feed.setLink("http://incubator.apache.org/tuscany");
+ feed.setLink(uri);
// Aggregate entries from feed1 and feed2
List<SyndEntry> entries = new ArrayList<SyndEntry>();
Modified: incubator/tuscany/java/sca/demos/bigbank-account/pom.xml
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/bigbank-account/pom.xml?view=diff&rev=548879&r1=548878&r2=548879
==============================================================================
--- incubator/tuscany/java/sca/demos/bigbank-account/pom.xml (original)
+++ incubator/tuscany/java/sca/demos/bigbank-account/pom.xml Tue Jun 19 17:59:04 2007
@@ -45,6 +45,12 @@
<dependency>
<groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>tuscany-binding-feed</artifactId>
+ <version>1.0-incubating-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca</groupId>
<artifactId>tuscany-implementation-java-runtime</artifactId>
<version>1.0-incubating-SNAPSHOT</version>
<scope>runtime</scope>
Added: incubator/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/feed/AccountFeedImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/feed/AccountFeedImpl.java?view=auto&rev=548879
==============================================================================
--- incubator/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/feed/AccountFeedImpl.java (added)
+++ incubator/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/feed/AccountFeedImpl.java Tue Jun 19 17:59:04 2007
@@ -0,0 +1,68 @@
+/*
+ * 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 bigbank.account.feed;
+
+import org.apache.tuscany.sca.binding.feed.Feed;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import bigbank.account.AccountService;
+
+import com.sun.syndication.feed.synd.SyndContent;
+import com.sun.syndication.feed.synd.SyndContentImpl;
+import com.sun.syndication.feed.synd.SyndEntry;
+import com.sun.syndication.feed.synd.SyndEntryImpl;
+import com.sun.syndication.feed.synd.SyndFeed;
+import com.sun.syndication.feed.synd.SyndFeedImpl;
+
+/**
+ * @version $$Rev$$ $$Date$$
+ */
+
+@Service(Feed.class)
+public class AccountFeedImpl implements Feed {
+
+ @Reference
+ protected AccountService accountService;
+
+ @SuppressWarnings("unchecked")
+ public SyndFeed get(String uri) {
+
+ // Get the account report for the specified customer ID
+ String customerID = uri.substring(uri.lastIndexOf('/')+1);
+ double balance = accountService.getAccountReport(customerID);
+ String value = Double.toString(balance);
+
+ // Create a new Feed
+ SyndFeed feed = new SyndFeedImpl();
+ feed.setTitle("Account Report Feed");
+ feed.setDescription("A sample Account Report feed");
+ feed.setAuthor("anonymous");
+ feed.setLink(uri);
+
+ SyndEntry entry = new SyndEntryImpl();
+ entry.setAuthor("anonymous");
+ SyndContent content = new SyndContentImpl();
+ content.setValue(value);
+ entry.setDescription(content);
+ feed.getEntries().add(entry);
+
+ return feed;
+ }
+}
Propchange: incubator/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/feed/AccountFeedImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/tuscany/java/sca/demos/bigbank-account/src/main/java/bigbank/account/feed/AccountFeedImpl.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: incubator/tuscany/java/sca/demos/bigbank-account/src/main/resources/BigBank.composite
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/demos/bigbank-account/src/main/resources/BigBank.composite?view=diff&rev=548879&r1=548878&r2=548879
==============================================================================
--- incubator/tuscany/java/sca/demos/bigbank-account/src/main/resources/BigBank.composite (original)
+++ incubator/tuscany/java/sca/demos/bigbank-account/src/main/resources/BigBank.composite Tue Jun 19 17:59:04 2007
@@ -14,20 +14,30 @@
<binding.jsonrpc/>
</service>
+ <service name="AccountWebResources" promote="WebResourceComponent">
+ <binding.resource uri="/"/>
+ </service>
+
+ <service name="AccountFeed" promote="AccountFeedComponent">
+ <binding.atom uri="/feed/*"/>
+ </service>
+
<component name="AccountServiceComponent">
<implementation.java class="bigbank.account.AccountServiceImpl"/>
<reference name="accountDataService" target="AccountDataServiceComponent"/>
<property name="currency">EURO</property>
</component>
+ <component name="AccountFeedComponent">
+ <implementation.java class="bigbank.account.feed.AccountFeedImpl"/>
+ <reference name="accountService" target="AccountServiceComponent"/>
+ </component>
+
<component name="AccountDataServiceComponent">
<implementation.composite name="bb:AccountData"/>
</component>
<component name="WebResourceComponent">
- <service name="Resource">
- <binding.resource uri="/"/>
- </service>
<implementation.resource location="web"/>
</component>
Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/Feed.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/Feed.java?view=diff&rev=548879&r1=548878&r2=548879
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/Feed.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/Feed.java Tue Jun 19 17:59:04 2007
@@ -32,5 +32,11 @@
@Remotable
public interface Feed {
- SyndFeed get();
+ /**
+ * Get an RSS or Atom feed.
+ *
+ * @param uri the uri of the feed
+ * @return the RSS or Atom feed
+ */
+ SyndFeed get(String uri);
}
Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingInvoker.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingInvoker.java?view=diff&rev=548879&r1=548878&r2=548879
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingInvoker.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingInvoker.java Tue Jun 19 17:59:04 2007
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.net.MalformedURLException;
+import java.net.URI;
import java.net.URL;
import org.apache.tuscany.sca.invocation.Invoker;
@@ -43,11 +44,22 @@
public Message invoke(Message msg) {
try {
- URL feedUrl = new URL(uri);
+ URL feedURL;
+ Object[] args = msg.getBody();
+ if (args[0] != null) {
+ URI arg = URI.create((String)args[0]);
+ if (arg.isAbsolute()) {
+ feedURL = arg.toURL();
+ } else {
+ feedURL = new URL(uri + "/" + arg.toString());
+ }
+ } else {
+ feedURL = new URL(uri);
+ }
// Read the configured feed into a Feed object
SyndFeedInput input = new SyndFeedInput();
- SyndFeed feed = input.build(new XmlReader(feedUrl));
+ SyndFeed feed = input.build(new XmlReader(feedURL));
msg.setBody(feed);
System.out.println(">>> FeedBindingInvoker (" + feed.getFeedType() + ") " + uri);
Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListener.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListener.java?view=diff&rev=548879&r1=548878&r2=548879
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListener.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedBindingListener.java Tue Jun 19 17:59:04 2007
@@ -70,7 +70,8 @@
// Assuming that the service provided by this binding implements the Feed
// service interface, get the Feed from the service
- SyndFeed syndFeed = ((Feed)serviceInstance).get();
+ String uri = request.getRequestURL().toString();
+ SyndFeed syndFeed = ((Feed)serviceInstance).get(uri);
syndFeed.setFeedType(requestFeedType);
// Write the Feed to the servlet output
Modified: incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedServiceBindingProvider.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedServiceBindingProvider.java?view=diff&rev=548879&r1=548878&r2=548879
==============================================================================
--- incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedServiceBindingProvider.java (original)
+++ incubator/tuscany/java/sca/modules/binding-feed/src/main/java/org/apache/tuscany/sca/binding/feed/provider/FeedServiceBindingProvider.java Tue Jun 19 17:59:04 2007
@@ -33,12 +33,11 @@
*/
public class FeedServiceBindingProvider implements ServiceBindingProvider {
- public static final String SERVICE_MAPPING_PREFIX = "/";
-
private RuntimeComponent component;
private RuntimeComponentService service;
private FeedBinding binding;
private ServletHost servletHost;
+ private String uri;
public FeedServiceBindingProvider(RuntimeComponent component,
RuntimeComponentService service,
@@ -48,6 +47,10 @@
this.service = service;
this.binding = binding;
this.servletHost = servletHost;
+ uri = binding.getURI();
+ if (uri == null) {
+ uri = "/" + component.getName();
+ }
}
public InterfaceContract getBindingInterfaceContract() {
@@ -61,18 +64,10 @@
FeedBindingListener servlet =
new FeedBindingListener(binding.getName(), aClass, instance, binding.getFeedType());
- String uri = binding.getURI();
- if (uri == null) {
- uri = SERVICE_MAPPING_PREFIX + binding.getName();
- }
servletHost.addServletMapping(uri, servlet);
}
public void stop() {
- String uri = binding.getURI();
- if (uri == null) {
- uri = SERVICE_MAPPING_PREFIX + binding.getName();
- }
servletHost.removeServletMapping(uri);
}
Modified: incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/AggregatorImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/AggregatorImpl.java?view=diff&rev=548879&r1=548878&r2=548879
==============================================================================
--- incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/AggregatorImpl.java (original)
+++ incubator/tuscany/java/sca/samples/feed-aggregator/src/main/java/feed/AggregatorImpl.java Tue Jun 19 17:59:04 2007
@@ -50,23 +50,21 @@
public String feedDescription = "Anonymous Aggregated Feed";
@Property
public String feedAuthor = "anonymous";
- @Property
- public String feedLink = "http://incubator.apache.org/tuscany";
@SuppressWarnings("unchecked")
- public SyndFeed get() {
+ public SyndFeed get(String uri) {
// Create a new Feed
SyndFeed feed = new SyndFeedImpl();
feed.setTitle(feedTitle);
feed.setDescription(feedDescription);
feed.setAuthor(feedAuthor);
- feed.setLink(feedLink);
+ feed.setLink(uri);
// Aggregate entries from feed1 and feed2
List<SyndEntry> entries = new ArrayList<SyndEntry>();
- entries.addAll(feed1.get().getEntries());
- entries.addAll(feed2.get().getEntries());
+ entries.addAll(feed1.get(null).getEntries());
+ entries.addAll(feed2.get(null).getEntries());
// Sort entries by published date
if (sort != null)
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org