From 403ff4abf708d2beb7a97babb60f8c0318ff8450 Mon Sep 17 00:00:00 2001 From: rfeng Date: Tue, 26 May 2009 17:58:40 +0000 Subject: Adding CurrencyConverter git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@778816 13f79535-47bb-0310-9956-ffa450edef68 --- .../impl/CreditCardPaymentActivator.java | 40 -------------- .../creditcard/impl/CreditCardPaymentImpl.java | 47 ---------------- .../java/scatours/currency/CurrencyConverter.java | 33 +++++++++++ .../currency/impl/CurrencyConverterImpl.java | 53 ++++++++++++++++++ .../impl/CreditCardPaymentActivator.java | 40 ++++++++++++++ .../creditcard/impl/CreditCardPaymentImpl.java | 64 ++++++++++++++++++++++ .../src/main/resources/CreditCardPayment.wsdl | 22 ++++---- .../resources/OSGI-INF/sca/bundle.componentType | 4 -- .../main/resources/OSGI-INF/sca/bundle.composite | 11 ++-- .../src/main/resources/creditcard.composite | 34 ------------ 10 files changed, 205 insertions(+), 143 deletions(-) delete mode 100644 sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/payment/creditcard/impl/CreditCardPaymentActivator.java delete mode 100644 sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/payment/creditcard/impl/CreditCardPaymentImpl.java create mode 100644 sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/currency/CurrencyConverter.java create mode 100644 sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/currency/impl/CurrencyConverterImpl.java create mode 100644 sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentActivator.java create mode 100644 sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentImpl.java delete mode 100644 sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/creditcard.composite (limited to 'sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main') 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/payment/creditcard/impl/CreditCardPaymentActivator.java deleted file mode 100644 index 43a7c3519b..0000000000 --- a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/payment/creditcard/impl/CreditCardPaymentActivator.java +++ /dev/null @@ -1,40 +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.osgi.framework.BundleActivator; -import org.osgi.framework.BundleContext; - -import payment.creditcard.CreditCardPayment; - -/** - * - */ -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); - } - - public void stop(BundleContext context) throws Exception { - } - -} 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 currencyIndex = new HashMap(); + + // 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/scatours/payment/creditcard/impl/CreditCardPaymentActivator.java b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentActivator.java new file mode 100644 index 0000000000..ba09b15de4 --- /dev/null +++ b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/java/scatours/payment/creditcard/impl/CreditCardPaymentActivator.java @@ -0,0 +1,40 @@ +/* + * 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.BundleActivator; +import org.osgi.framework.BundleContext; + +import scatours.payment.creditcard.CreditCardPayment; + +/** + * + */ +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(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"); + } +} diff --git a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/CreditCardPayment.wsdl b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/CreditCardPayment.wsdl index dbf89924cc..1fac949ea1 100644 --- a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/CreditCardPayment.wsdl +++ b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/CreditCardPayment.wsdl @@ -7,29 +7,29 @@ * 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. + * under the License. --> - - - + @@ -106,11 +106,11 @@ - + - + - + \ No newline at end of file diff --git a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/OSGI-INF/sca/bundle.componentType b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/OSGI-INF/sca/bundle.componentType index 70852d88a9..c14c60c21d 100644 --- a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/OSGI-INF/sca/bundle.componentType +++ b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/OSGI-INF/sca/bundle.componentType @@ -30,12 +30,8 @@ - diff --git a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/OSGI-INF/sca/bundle.composite b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/OSGI-INF/sca/bundle.composite index 071cff731d..97550f027c 100644 --- a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/OSGI-INF/sca/bundle.composite +++ b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/OSGI-INF/sca/bundle.composite @@ -28,18 +28,15 @@ - - - - - - + + + + diff --git a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/creditcard.composite b/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/creditcard.composite deleted file mode 100644 index 9c69035a10..0000000000 --- a/sandbox/rfeng/scatours-creditcard-payment-dosgi-contribution/src/main/resources/creditcard.composite +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file -- cgit v1.2.3