You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by lr...@apache.org on 2008/12/17 20:31:01 UTC

svn commit: r727484 - in /tuscany/branches/sca-java-1.x/samples/store-android: ./ res/ res/drawable/ res/layout/ res/values/ src/ src/services/ src/services/json/ src/services/json/rpc/ src/store/ src/store/android/

Author: lresende
Date: Wed Dec 17 11:31:01 2008
New Revision: 727484

URL: http://svn.apache.org/viewvc?rev=727484&view=rev
Log:
[Work in progress] An Android store app consuming SCA services

Added:
    tuscany/branches/sca-java-1.x/samples/store-android/
    tuscany/branches/sca-java-1.x/samples/store-android/.classpath
    tuscany/branches/sca-java-1.x/samples/store-android/.project
    tuscany/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml
    tuscany/branches/sca-java-1.x/samples/store-android/res/
    tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/
    tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png
    tuscany/branches/sca-java-1.x/samples/store-android/res/layout/
    tuscany/branches/sca-java-1.x/samples/store-android/res/layout/main.xml
    tuscany/branches/sca-java-1.x/samples/store-android/res/values/
    tuscany/branches/sca-java-1.x/samples/store-android/res/values/strings.xml
    tuscany/branches/sca-java-1.x/samples/store-android/src/
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/Item.java
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/
    tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java
    tuscany/branches/sca-java-1.x/samples/store-android/src/store/
    tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/
    tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/R.java
    tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java

Added: tuscany/branches/sca-java-1.x/samples/store-android/.classpath
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/.classpath?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/.classpath (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/.classpath Wed Dec 17 11:31:01 2008
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>

Added: tuscany/branches/sca-java-1.x/samples/store-android/.project
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/.project?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/.project (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/.project Wed Dec 17 11:31:01 2008
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>store-android</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>

Added: tuscany/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml Wed Dec 17 11:31:01 2008
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+      package="store.android"
+      android:versionCode="1"
+      android:versionName="1.0.0">
+    <application android:icon="@drawable/icon" android:label="@string/app_name">
+        <activity android:name=".catalog"
+                  android:label="@string/app_name">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
+        </activity>
+    </application>
+
+<uses-permission android:name="android.permission.INTERNET"></uses-permission>
+
+</manifest> 
\ No newline at end of file

Added: tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png?rev=727484&view=auto
==============================================================================
Files tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png (added) and tuscany/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png Wed Dec 17 11:31:01 2008 differ

Added: tuscany/branches/sca-java-1.x/samples/store-android/res/layout/main.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/res/layout/main.xml?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/res/layout/main.xml (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/res/layout/main.xml Wed Dec 17 11:31:01 2008
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:orientation="vertical"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    >
+<TextView  
+    android:layout_width="fill_parent" 
+    android:layout_height="wrap_content" 
+    android:text="@string/hello"
+    />
+</LinearLayout>

Added: tuscany/branches/sca-java-1.x/samples/store-android/res/values/strings.xml
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/res/values/strings.xml?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/res/values/strings.xml (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/res/values/strings.xml Wed Dec 17 11:31:01 2008
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="hello">Hello World, catalog</string>
+    <string name="app_name">store</string>
+</resources>

Added: tuscany/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java Wed Dec 17 11:31:01 2008
@@ -0,0 +1,24 @@
+/*
+ * 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 services;
+
+public interface Catalog {
+    Item[] get();
+}

Added: tuscany/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java Wed Dec 17 11:31:01 2008
@@ -0,0 +1,52 @@
+package services;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import services.json.rpc.JSONRpc;
+
+public class CatalogProxy implements Catalog {
+	private static final String jsonRPCServiceURI = "http://192.168.1.104:8080/Catalog";
+    private static final String jsonRPCRequest = "{\"id\": 3, \"method\": \"Service.get\", \"params\": []}";
+	
+    private List<Item> catalog = new ArrayList<Item>();
+    
+    public CatalogProxy() {
+    	initialize();
+    }
+   
+	public void initialize() {
+		JSONObject json = null; 
+			
+		try {
+			json = JSONRpc.invoke(jsonRPCServiceURI, jsonRPCRequest);
+			
+			if(json == null) {
+				return; 
+			}
+			
+			JSONArray result = json.getJSONArray("result");
+			for(int i = 0; i < result.length(); i++) {
+				Item item = new Item();
+				item.setName(result.getJSONObject(i).getString("name"));
+				item.setPrice(result.getJSONObject(i).getString("price"));
+				
+				catalog.add(item);
+			}
+			
+		} catch (JSONException e) {
+			e.printStackTrace();
+		}
+	}
+
+	public Item[] get() {
+		Item[] catalogArray = new Item[catalog.size()];
+		catalog.toArray(catalogArray);
+		return catalogArray;
+	}
+	
+}

Added: tuscany/branches/sca-java-1.x/samples/store-android/src/services/Item.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/services/Item.java?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/src/services/Item.java (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/src/services/Item.java Wed Dec 17 11:31:01 2008
@@ -0,0 +1,51 @@
+/*
+ * 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 services;
+
+
+public class Item {
+    private String name;
+    private String price;
+    
+    public Item() {
+    }
+    
+    public Item(String name, String price) {
+        this.name = name;
+        this.price = price;
+    }
+    
+    public String getName() {
+        return name;
+    }
+    
+    public void setName(String name) {
+        this.name = name;
+    }
+    
+    public String getPrice() {
+        return price;
+    }
+    
+    public void setPrice(String price) {
+        this.price = price;
+    }
+
+}

Added: tuscany/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java Wed Dec 17 11:31:01 2008
@@ -0,0 +1,44 @@
+package services;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import services.json.rpc.JSONRpc;
+
+public class ShoppingCartProxy {
+	private static final String jsonRPCTotalServiceURI = "http://192.168.1.104:8080/ShoppingCart/Total";
+    private static final String jsonRPCTotalRequest = "{\"id\": 4, \"method\": \"Service.getTotal\", \"params\": []}";
+
+	public Item[] getItems() {
+		return null;
+	}
+	
+	public void addItem(Item item) {
+		
+	}
+	
+	public void removeItem(Item item) {
+		
+	}
+	
+	public void checkOut() {
+		
+	}
+	
+	public String getTotal() {
+		String total = "";
+		JSONObject json = null; 
+		
+		try {
+			json = JSONRpc.invoke(jsonRPCTotalServiceURI, jsonRPCTotalRequest);
+			
+			if(json != null) {
+				total = json.getString("result");		
+			}
+		} catch (JSONException e) {
+			e.printStackTrace();
+		}
+		
+		return total;
+	}
+}

Added: tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java Wed Dec 17 11:31:01 2008
@@ -0,0 +1,44 @@
+package services.json.rpc;
+
+import java.io.IOException;
+
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+public class JSONRpc {
+
+	protected JSONRpc() {
+
+	}
+
+	public static JSONObject invoke(String serviceURI, String rpcRequest) throws JSONException{
+		HttpClient httpClient = new DefaultHttpClient();
+		HttpPost httpPost = new HttpPost(serviceURI);
+
+		JSONObject result = null;
+		try {
+			httpPost.setHeader("Content-Type", "text/xml");
+			httpPost.setEntity(new StringEntity(rpcRequest));
+
+			HttpResponse httpResponse = httpClient.execute(httpPost);
+			if (httpResponse.getStatusLine().getStatusCode() == 200) {
+				String jsonResult = EntityUtils.toString(httpResponse.getEntity());
+				result = new JSONObject(jsonResult);
+			} else {
+				String errorMessage = httpResponse.getStatusLine()
+						.getReasonPhrase();
+				System.out.println(errorMessage);
+			}
+		} catch (IOException e) {
+			e.printStackTrace();
+		}
+
+		return result;
+	}
+}

Added: tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/R.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/R.java?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/R.java (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/R.java Wed Dec 17 11:31:01 2008
@@ -0,0 +1,23 @@
+/* AUTO-GENERATED FILE.  DO NOT MODIFY.
+ *
+ * This class was automatically generated by the
+ * aapt tool from the resource data it found.  It
+ * should not be modified by hand.
+ */
+
+package store.android;
+
+public final class R {
+    public static final class attr {
+    }
+    public static final class drawable {
+        public static final int icon=0x7f020000;
+    }
+    public static final class layout {
+        public static final int main=0x7f030000;
+    }
+    public static final class string {
+        public static final int app_name=0x7f040001;
+        public static final int hello=0x7f040000;
+    }
+}

Added: tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java
URL: http://svn.apache.org/viewvc/tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java?rev=727484&view=auto
==============================================================================
--- tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java (added)
+++ tuscany/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java Wed Dec 17 11:31:01 2008
@@ -0,0 +1,82 @@
+package store.android;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import services.Catalog;
+import services.CatalogProxy;
+import services.Item;
+import services.ShoppingCartProxy;
+import android.app.ListActivity;
+import android.os.Bundle;
+import android.util.SparseBooleanArray;
+import android.view.View;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.ListView;
+
+public class catalog  extends ListActivity {
+	private Catalog catalogProxy = new CatalogProxy();
+	private ShoppingCartProxy shoppingCartProxy = new ShoppingCartProxy(); 
+		
+	private String[] getCatalogItems() {
+		List<String> catalog = new ArrayList<String>();
+		
+        for(Item item : catalogProxy.get()) {
+        	catalog.add(item.getName() + " - " + item.getPrice());
+        }	
+        
+        String[] catalogArray = new String[catalog.size()];
+        catalog.toArray(catalogArray);
+        
+        return catalogArray;
+	}
+	
+    /** Called when the activity is first created. */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        
+        setListAdapter(new ArrayAdapter<String>(this,
+                android.R.layout.simple_list_item_multiple_choice, this.getCatalogItems()));
+
+        Button addToCart = (Button) findViewById(1);
+        /*
+        addToCart.setOnClickListener(new View.OnClickListener() {
+        	public void onCLick(View v) {
+        		this.
+        	}
+        });
+        */
+        
+        
+        final ListView listView = getListView();
+
+        listView.setItemsCanFocus(false);
+        listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
+    }
+
+	@Override
+	protected void onListItemClick(ListView l, View v, int position, long id) {
+		super.onListItemClick(l, v, position, id);
+		
+		String item = this.getCatalogItems()[position];
+		System.out.println("Item clicked : " + item);
+		
+		System.out.println("Selected items:");
+		SparseBooleanArray checkedItems = l.getCheckedItemPositions();
+		for(int i = 0; i < checkedItems.size(); i++) {
+			if(checkedItems.valueAt(i) == true) {
+				System.out.println(">>>" + this.getCatalogItems()[checkedItems.keyAt(i)]);
+			}
+		}
+		System.out.println("Total: "  + shoppingCartProxy.getTotal());
+
+		//l.getCheckedItemPosition();
+		//Intent webIntent = new Intent("android.intent.action.VIEW", Uri.parse("http://192.168.1.104:8080/ShoppingCart/Cart"));
+		//startActivity(webIntent);
+	} 
+    
+    
+}
\ No newline at end of file