summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2008-12-17 19:31:01 +0000
committerlresende <lresende@13f79535-47bb-0310-9956-ffa450edef68>2008-12-17 19:31:01 +0000
commit31cc3f73bea03fb0d8403ed7b5c7adda6c7c9c9a (patch)
treeea168b22586fd30e092554166b2c02654b59eed4
parentf4a9b26a985ae42074ce692e1ed60341061186e9 (diff)
[Work in progress] An Android store app consuming SCA services
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@727484 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--branches/sca-java-1.x/samples/store-android/.classpath6
-rw-r--r--branches/sca-java-1.x/samples/store-android/.project33
-rw-r--r--branches/sca-java-1.x/samples/store-android/AndroidManifest.xml18
-rw-r--r--branches/sca-java-1.x/samples/store-android/res/drawable/icon.pngbin0 -> 3180 bytes
-rw-r--r--branches/sca-java-1.x/samples/store-android/res/layout/main.xml12
-rw-r--r--branches/sca-java-1.x/samples/store-android/res/values/strings.xml5
-rw-r--r--branches/sca-java-1.x/samples/store-android/src/services/Catalog.java24
-rw-r--r--branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java52
-rw-r--r--branches/sca-java-1.x/samples/store-android/src/services/Item.java51
-rw-r--r--branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java44
-rw-r--r--branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java44
-rw-r--r--branches/sca-java-1.x/samples/store-android/src/store/android/R.java23
-rw-r--r--branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java82
13 files changed, 394 insertions, 0 deletions
diff --git a/branches/sca-java-1.x/samples/store-android/.classpath b/branches/sca-java-1.x/samples/store-android/.classpath
new file mode 100644
index 0000000000..ef7c361cff
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/.classpath
@@ -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>
diff --git a/branches/sca-java-1.x/samples/store-android/.project b/branches/sca-java-1.x/samples/store-android/.project
new file mode 100644
index 0000000000..616abf1df0
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/.project
@@ -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>
diff --git a/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml b/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml
new file mode 100644
index 0000000000..4a26dd27c6
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/AndroidManifest.xml
@@ -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
diff --git a/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png b/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png
new file mode 100644
index 0000000000..75024841d3
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/res/drawable/icon.png
Binary files differ
diff --git a/branches/sca-java-1.x/samples/store-android/res/layout/main.xml b/branches/sca-java-1.x/samples/store-android/res/layout/main.xml
new file mode 100644
index 0000000000..3a5f117d3c
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/res/layout/main.xml
@@ -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>
diff --git a/branches/sca-java-1.x/samples/store-android/res/values/strings.xml b/branches/sca-java-1.x/samples/store-android/res/values/strings.xml
new file mode 100644
index 0000000000..02b55ae85a
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/res/values/strings.xml
@@ -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>
diff --git a/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java b/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java
new file mode 100644
index 0000000000..9105f1047c
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/src/services/Catalog.java
@@ -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();
+}
diff --git a/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java b/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java
new file mode 100644
index 0000000000..3ce9459844
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/src/services/CatalogProxy.java
@@ -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;
+ }
+
+}
diff --git a/branches/sca-java-1.x/samples/store-android/src/services/Item.java b/branches/sca-java-1.x/samples/store-android/src/services/Item.java
new file mode 100644
index 0000000000..27abd4f016
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/src/services/Item.java
@@ -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;
+ }
+
+}
diff --git a/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java b/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java
new file mode 100644
index 0000000000..872db654a4
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/src/services/ShoppingCartProxy.java
@@ -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;
+ }
+}
diff --git a/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java b/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java
new file mode 100644
index 0000000000..927a840b86
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/src/services/json/rpc/JSONRpc.java
@@ -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;
+ }
+}
diff --git a/branches/sca-java-1.x/samples/store-android/src/store/android/R.java b/branches/sca-java-1.x/samples/store-android/src/store/android/R.java
new file mode 100644
index 0000000000..74dae5d7e4
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/src/store/android/R.java
@@ -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;
+ }
+}
diff --git a/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java b/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java
new file mode 100644
index 0000000000..e21196b3ed
--- /dev/null
+++ b/branches/sca-java-1.x/samples/store-android/src/store/android/catalog.java
@@ -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