summaryrefslogtreecommitdiffstats
path: root/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java
diff options
context:
space:
mode:
authorrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-05-26 17:58:40 +0000
committerrfeng <rfeng@13f79535-47bb-0310-9956-ffa450edef68>2009-05-26 17:58:40 +0000
commit403ff4abf708d2beb7a97babb60f8c0318ff8450 (patch)
treefec9a5991a7e775a8c67a7a0a6dfb40c767fce84 /sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java
parente2153aa948efc7d8b05c641784b30a665c598748 (diff)
Adding CurrencyConverter
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@778816 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java')
-rw-r--r--sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/payment/creditcard/impl/CreditCardPaymentImpl.java47
-rw-r--r--sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/currency/CurrencyConverter.java33
-rw-r--r--sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/currency/impl/CurrencyConverterImpl.java53
-rw-r--r--sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentActivator.java (renamed from sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/payment/creditcard/impl/CreditCardPaymentActivator.java)6
-rw-r--r--sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentImpl.java64
5 files changed, 153 insertions, 50 deletions
diff --git a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/payment/creditcard/impl/CreditCardPaymentImpl.java b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/payment/creditcard/impl/CreditCardPaymentImpl.java
deleted file mode 100644
index 1ddf5be7d6..0000000000
--- a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/payment/creditcard/impl/CreditCardPaymentImpl.java
+++ /dev/null
@@ -1,47 +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 payment.creditcard.impl;
-
-import org.oasisopen.sca.annotation.Service;
-
-import payment.creditcard.CreditCardDetailsType;
-import payment.creditcard.CreditCardPayment;
-
-/**
- *
- */
-@Service(CreditCardPayment.class)
-public class CreditCardPaymentImpl implements CreditCardPayment {
-
- public String authorize(CreditCardDetailsType creditCard, float amount) {
- if (creditCard != null){
- System.out.println("Checking card: name = " +
- creditCard.getCardOwner().getName() +
- " number = " +
- creditCard.getCreditCardNumber() +
- " for amount " +
- amount);
- } else {
- System.out.println("Checking card is null");
- }
-
- return "OK";
- }
-}
diff --git a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/currency/CurrencyConverter.java b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/currency/CurrencyConverter.java
new file mode 100644
index 0000000000..49e1f6a119
--- /dev/null
+++ b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/currency/CurrencyConverter.java
@@ -0,0 +1,33 @@
+/*
+ * 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 scatours.currency;
+
+import org.oasisopen.sca.annotation.Remotable;
+
+/**
+ * The CurrencyConverter service interface
+ */
+@Remotable
+public interface CurrencyConverter {
+
+ float getExchangeRate(String fromCurrencyCode, String toCurrencyCode);
+
+ float convert(String fromCurrencyCode, String toCurrencyCode, float amount);
+
+}
diff --git a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/currency/impl/CurrencyConverterImpl.java b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/currency/impl/CurrencyConverterImpl.java
new file mode 100644
index 0000000000..52d7c60c31
--- /dev/null
+++ b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/currency/impl/CurrencyConverterImpl.java
@@ -0,0 +1,53 @@
+/*
+ * 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 scatours.currency.impl;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.oasisopen.sca.annotation.Service;
+
+import scatours.currency.CurrencyConverter;
+
+/**
+ * An implementation of the CurrencyConverter service
+ */
+@Service(CurrencyConverter.class)
+public class CurrencyConverterImpl implements CurrencyConverter {
+
+ // currency index
+ private Map<String, Integer> currencyIndex = new HashMap<String, Integer>();
+
+ // exchange rates
+ private final float rates[][] = { {1.00f, 0.50f, 0.66f}, {2.00f, 1.00f, 1.33f}, {1.50f, 0.75f, 1.00f}};
+
+ public CurrencyConverterImpl() {
+ currencyIndex.put("USD", new Integer(0));
+ currencyIndex.put("GBP", new Integer(1));
+ currencyIndex.put("EUR", new Integer(2));
+ }
+
+ public float getExchangeRate(String fromCurrencyCode, String toCurrencyCode) {
+ return rates[currencyIndex.get(fromCurrencyCode).intValue()][currencyIndex.get(toCurrencyCode).intValue()];
+ }
+
+ public float convert(String fromCurrencyCode, String toCurrencyCode, float amount) {
+ return amount * getExchangeRate(fromCurrencyCode, toCurrencyCode);
+ }
+}
diff --git a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/payment/creditcard/impl/CreditCardPaymentActivator.java b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentActivator.java
index 43a7c3519b..ba09b15de4 100644
--- a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/payment/creditcard/impl/CreditCardPaymentActivator.java
+++ b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentActivator.java
@@ -17,12 +17,12 @@
* under the License.
*/
-package payment.creditcard.impl;
+package scatours.payment.creditcard.impl;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
-import payment.creditcard.CreditCardPayment;
+import scatours.payment.creditcard.CreditCardPayment;
/**
*
@@ -31,7 +31,7 @@ public class CreditCardPaymentActivator implements BundleActivator {
public void start(BundleContext context) throws Exception {
System.out.println("Registering CreditCardPayment service...");
- context.registerService(CreditCardPayment.class.getName(), new CreditCardPaymentImpl(), null);
+ context.registerService(CreditCardPayment.class.getName(), new CreditCardPaymentImpl(context), null);
}
public void stop(BundleContext context) throws Exception {
diff --git a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentImpl.java b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentImpl.java
new file mode 100644
index 0000000000..657ef71c8b
--- /dev/null
+++ b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentImpl.java
@@ -0,0 +1,64 @@
+/*
+ * 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 scatours.payment.creditcard.impl;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+
+import scatours.currency.CurrencyConverter;
+import scatours.payment.creditcard.CreditCardDetailsType;
+import scatours.payment.creditcard.CreditCardPayment;
+
+public class CreditCardPaymentImpl implements CreditCardPayment {
+ private BundleContext context;
+
+ public CreditCardPaymentImpl(BundleContext context) {
+ super();
+ this.context = context;
+ }
+
+ public String authorize(CreditCardDetailsType creditCard, float amount) {
+ if (creditCard != null) {
+ System.out.println("Checking card: name = " + creditCard.getCardOwner().getName()
+ + " number = "
+ + creditCard.getCreditCardNumber()
+ + " for amount "
+ + amount + " EUR");
+ amount = convertCurrency(amount);
+ } else {
+ System.out.println("Credit card is null");
+ }
+
+ return "OK";
+ }
+
+ private float convertCurrency(float amount) {
+ ServiceReference ref = context.getServiceReference(CurrencyConverter.class.getName());
+ if (ref != null) {
+ CurrencyConverter converter = (CurrencyConverter)context.getService(ref);
+ if (converter != null) {
+ amount = converter.convert("EUR", "USD", amount);
+ context.ungetService(ref);
+ return amount;
+ }
+ }
+ throw new IllegalArgumentException("Currency cannot be converted");
+ }
+}