diff options
Diffstat (limited to 'sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java')
17 files changed, 1431 insertions, 0 deletions
diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/Customer.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/Customer.java new file mode 100644 index 0000000000..3b72f81b33 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/Customer.java @@ -0,0 +1,70 @@ +/* + * 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 com.tuscanyscatours.customer; + +import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType; + +/** + * Customer data + */ +public class Customer { + private String id; + private String email; + private String name; + + private CreditCardDetailsType creditCard; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public CreditCardDetailsType getCreditCard() { + return creditCard; + } + + public void setCreditCard(CreditCardDetailsType creditCard) { + this.creditCard = creditCard; + } + + public String toString() { + return "id: " + id + " name: " + name + " e-mail: " + email; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java new file mode 100644 index 0000000000..b08f76e0fa --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/CustomerNotFoundException.java @@ -0,0 +1,57 @@ +/* + * 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 com.tuscanyscatours.customer; + +public class CustomerNotFoundException extends Exception { + private static final long serialVersionUID = -129752837478357452L; + + /** + * + */ + public CustomerNotFoundException() { + + } + + /** + * @param message + */ + public CustomerNotFoundException(String message) { + super(message); + + } + + /** + * @param cause + */ + public CustomerNotFoundException(Throwable cause) { + super(cause); + + } + + /** + * @param message + * @param cause + */ + public CustomerNotFoundException(String message, Throwable cause) { + super(message, cause); + + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java new file mode 100644 index 0000000000..706167d567 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/CustomerRegistry.java @@ -0,0 +1,39 @@ +/* + * 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 com.tuscanyscatours.customer; + +import java.util.Collection; + +import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType; + +/** + * Customer registry interface + */ +public interface CustomerRegistry { + Customer createCustomer(String name, String email, CreditCardDetailsType creditCard); + + boolean updateCustomer(Customer customer); + + Customer getCustomer(String id) throws CustomerNotFoundException; + + Collection<Customer> getAllCustomers(); + + boolean deleteCustomer(String id); +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java new file mode 100644 index 0000000000..bdf99dec72 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/customer/impl/CustomerRegistryImpl.java @@ -0,0 +1,114 @@ +/* + * 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 com.tuscanyscatours.customer.impl; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + +import org.osoa.sca.annotations.Destroy; +import org.osoa.sca.annotations.EagerInit; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Requires; +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; + +import com.tuscanyscatours.customer.Customer; +import com.tuscanyscatours.customer.CustomerNotFoundException; +import com.tuscanyscatours.customer.CustomerRegistry; +import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType; +import com.tuscanyscatours.payment.creditcard.CreditCardTypeType; +import com.tuscanyscatours.payment.creditcard.PayerType; + +/** + * An in-memory customer registry implementation + */ +@Service(CustomerRegistry.class) +@Scope("COMPOSITE") +@EagerInit +@Requires("{http://www.osoa.org/xmlns/sca/1.0}managedTransaction.global") +public class CustomerRegistryImpl implements CustomerRegistry { + private volatile static int idGenerator = 0; + private Map<String, Customer> customers = new HashMap<String, Customer>(); + + @Init + public void init() { + // Load the customers + + CreditCardDetailsType cc = new CreditCardDetailsType(); + PayerType john = new PayerType(); + john.setName("John Smith"); + cc.setCardOwner(john); + cc.setCreditCardNumber("1111-2222-3333-4444"); + cc.setCreditCardType(CreditCardTypeType.VISA); + cc.setCVV2("1234"); + cc.setExpMonth(1); + cc.setExpYear(2012); + createCustomer("John Smith", "john@xyz.com", cc); + } + + @Destroy + public void destroy() { + // Save the customers + } + + public Customer createCustomer(String name, String email, CreditCardDetailsType creditCard) { + Customer customer = new Customer(); + customer.setId("c-" + idGenerator++); + customer.setName(name); + customer.setEmail(email); + customer.setCreditCard(creditCard); + customers.put(customer.getId(), customer); + return customer; + } + + public boolean deleteCustomer(String id) { + return customers.remove(id) != null; + } + + public Collection<Customer> getAllCustomers() { + return customers.values(); + } + + public Customer getCustomer(String id) throws CustomerNotFoundException { + Customer customer = customers.get(id); + + if (customer == null) { + throw new CustomerNotFoundException("Customer " + id + " not found"); + } + + return customer; + } + + public boolean updateCustomer(Customer customer) { + Customer current = null; + try { + current = getCustomer(customer.getId()); + } catch (Exception ex) { + return false; + } + + current.setEmail(customer.getEmail()); + current.setName(customer.getName()); + current.setCreditCard(customer.getCreditCard()); + return true; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java new file mode 100644 index 0000000000..0fbf63d6bc --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/emailgateway/EmailGateway.java @@ -0,0 +1,30 @@ +/* + * 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 com.tuscanyscatours.emailgateway; + +import org.osoa.sca.annotations.Remotable; + +/** + * A gateway to send e-mail + */ +@Remotable +public interface EmailGateway { + public boolean sendEmail(String sender, String recipient, String subject, String body); +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java new file mode 100644 index 0000000000..d9798e436a --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/emailgateway/impl/EmailGatewayImpl.java @@ -0,0 +1,37 @@ +/* + * 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 com.tuscanyscatours.emailgateway.impl; + +import org.osoa.sca.annotations.Service; + +import com.tuscanyscatours.emailgateway.EmailGateway; + +@Service(EmailGateway.class) +public class EmailGatewayImpl implements EmailGateway { + + public boolean sendEmail(String sender, String recipient, String subject, String body) { + System.out.println("From: " + sender); + System.out.println("To: " + recipient); + System.out.println("Subject: " + subject); + System.out.println(body); + return true; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AddressType.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AddressType.java new file mode 100644 index 0000000000..ca3724a4f5 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AddressType.java @@ -0,0 +1,191 @@ +/* + * 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 com.tuscanyscatours.payment.creditcard; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>Java class for AddressType complex type. + * + * <p>The following schema fragment specifies the expected content contained within this class. + * + * <pre> + * <complexType name="AddressType"> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="Street" type="{http://www.w3.org/2001/XMLSchema}string"/> + * <element name="City" type="{http://www.w3.org/2001/XMLSchema}string"/> + * <element name="State" type="{http://www.w3.org/2001/XMLSchema}string"/> + * <element name="ZipCode" type="{http://www.w3.org/2001/XMLSchema}string"/> + * <element name="HomePhone" type="{http://www.w3.org/2001/XMLSchema}string"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "AddressType", propOrder = { + "street", + "city", + "state", + "zipCode", + "homePhone" +}) +public class AddressType { + + @XmlElement(name = "Street", required = true) + protected String street; + @XmlElement(name = "City", required = true) + protected String city; + @XmlElement(name = "State", required = true) + protected String state; + @XmlElement(name = "ZipCode", required = true) + protected String zipCode; + @XmlElement(name = "HomePhone", required = true) + protected String homePhone; + + /** + * Gets the value of the street property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getStreet() { + return street; + } + + /** + * Sets the value of the street property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setStreet(String value) { + this.street = value; + } + + /** + * Gets the value of the city property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCity() { + return city; + } + + /** + * Sets the value of the city property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCity(String value) { + this.city = value; + } + + /** + * Gets the value of the state property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getState() { + return state; + } + + /** + * Sets the value of the state property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setState(String value) { + this.state = value; + } + + /** + * Gets the value of the zipCode property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getZipCode() { + return zipCode; + } + + /** + * Sets the value of the zipCode property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setZipCode(String value) { + this.zipCode = value; + } + + /** + * Gets the value of the homePhone property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getHomePhone() { + return homePhone; + } + + /** + * Sets the value of the homePhone property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setHomePhone(String value) { + this.homePhone = value; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/Authorize.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/Authorize.java new file mode 100644 index 0000000000..7c0b38198e --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/Authorize.java @@ -0,0 +1,101 @@ +/* + * 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 com.tuscanyscatours.payment.creditcard; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>Java class for anonymous complex type. + * + * <p>The following schema fragment specifies the expected content contained within this class. + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="CreditCard" type="{http://www.tuscanyscatours.com/CreditCardPayment/}CreditCardDetailsType"/> + * <element name="Amount" type="{http://www.w3.org/2001/XMLSchema}float"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "creditCard", + "amount" +}) +@XmlRootElement(name = "authorize") +public class Authorize { + + @XmlElement(name = "CreditCard", required = true) + protected CreditCardDetailsType creditCard; + @XmlElement(name = "Amount") + protected float amount; + + /** + * Gets the value of the creditCard property. + * + * @return + * possible object is + * {@link CreditCardDetailsType } + * + */ + public CreditCardDetailsType getCreditCard() { + return creditCard; + } + + /** + * Sets the value of the creditCard property. + * + * @param value + * allowed object is + * {@link CreditCardDetailsType } + * + */ + public void setCreditCard(CreditCardDetailsType value) { + this.creditCard = value; + } + + /** + * Gets the value of the amount property. + * + */ + public float getAmount() { + return amount; + } + + /** + * Sets the value of the amount property. + * + */ + public void setAmount(float value) { + this.amount = value; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AuthorizeFault.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AuthorizeFault.java new file mode 100644 index 0000000000..84278aa508 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AuthorizeFault.java @@ -0,0 +1,81 @@ +/* + * 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 com.tuscanyscatours.payment.creditcard; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>Java class for anonymous complex type. + * + * <p>The following schema fragment specifies the expected content contained within this class. + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="errorCode" type="{http://www.w3.org/2001/XMLSchema}string"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "errorCode" +}) +@XmlRootElement(name = "authorizeFault") +public class AuthorizeFault { + + @XmlElement(required = true) + protected String errorCode; + + /** + * Gets the value of the errorCode property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getErrorCode() { + return errorCode; + } + + /** + * Sets the value of the errorCode property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setErrorCode(String value) { + this.errorCode = value; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AuthorizeFault_Exception.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AuthorizeFault_Exception.java new file mode 100644 index 0000000000..ec0f8768da --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AuthorizeFault_Exception.java @@ -0,0 +1,71 @@ +/* + * 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 com.tuscanyscatours.payment.creditcard; + +import javax.xml.ws.WebFault; + + +/** + * This class was generated by the JAX-WS RI. + * JAX-WS RI 2.1.7-b01- + * Generated source version: 2.1 + * + */ +@WebFault(name = "authorizeFault", targetNamespace = "http://www.tuscanyscatours.com/CreditCardPayment/") +public class AuthorizeFault_Exception + extends Exception +{ + + /** + * Java type that goes as soapenv:Fault detail element. + * + */ + private AuthorizeFault faultInfo; + + /** + * + * @param message + * @param faultInfo + */ + public AuthorizeFault_Exception(String message, AuthorizeFault faultInfo) { + super(message); + this.faultInfo = faultInfo; + } + + /** + * + * @param message + * @param faultInfo + * @param cause + */ + public AuthorizeFault_Exception(String message, AuthorizeFault faultInfo, Throwable cause) { + super(message, cause); + this.faultInfo = faultInfo; + } + + /** + * + * @return + * returns fault bean: com.tuscanyscatours.payment.creditcard.AuthorizeFault + */ + public AuthorizeFault getFaultInfo() { + return faultInfo; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AuthorizeResponse.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AuthorizeResponse.java new file mode 100644 index 0000000000..05f3479804 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/AuthorizeResponse.java @@ -0,0 +1,81 @@ +/* + * 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 com.tuscanyscatours.payment.creditcard; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>Java class for anonymous complex type. + * + * <p>The following schema fragment specifies the expected content contained within this class. + * + * <pre> + * <complexType> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="Status" type="{http://www.w3.org/2001/XMLSchema}string"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "status" +}) +@XmlRootElement(name = "authorizeResponse") +public class AuthorizeResponse { + + @XmlElement(name = "Status", required = true) + protected String status; + + /** + * Gets the value of the status property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getStatus() { + return status; + } + + /** + * Sets the value of the status property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setStatus(String value) { + this.status = value; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardDetailsType.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardDetailsType.java new file mode 100644 index 0000000000..8bac29f6bd --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardDetailsType.java @@ -0,0 +1,219 @@ +/* + * 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 com.tuscanyscatours.payment.creditcard; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>Java class for CreditCardDetailsType complex type. + * + * <p>The following schema fragment specifies the expected content contained within this class. + * + * <pre> + * <complexType name="CreditCardDetailsType"> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="CreditCardType" type="{http://www.tuscanyscatours.com/CreditCardPayment/}CreditCardTypeType" minOccurs="0"/> + * <element name="CreditCardNumber" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * <element name="ExpMonth" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/> + * <element name="ExpYear" type="{http://www.w3.org/2001/XMLSchema}int" minOccurs="0"/> + * <element name="CardOwner" type="{http://www.tuscanyscatours.com/CreditCardPayment/}PayerType" minOccurs="0"/> + * <element name="CVV2" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "CreditCardDetailsType", propOrder = { + "creditCardType", + "creditCardNumber", + "expMonth", + "expYear", + "cardOwner", + "cvv2" +}) +public class CreditCardDetailsType { + + @XmlElement(name = "CreditCardType") + protected CreditCardTypeType creditCardType; + @XmlElement(name = "CreditCardNumber") + protected String creditCardNumber; + @XmlElement(name = "ExpMonth") + protected Integer expMonth; + @XmlElement(name = "ExpYear") + protected Integer expYear; + @XmlElement(name = "CardOwner") + protected PayerType cardOwner; + @XmlElement(name = "CVV2") + protected String cvv2; + + /** + * Gets the value of the creditCardType property. + * + * @return + * possible object is + * {@link CreditCardTypeType } + * + */ + public CreditCardTypeType getCreditCardType() { + return creditCardType; + } + + /** + * Sets the value of the creditCardType property. + * + * @param value + * allowed object is + * {@link CreditCardTypeType } + * + */ + public void setCreditCardType(CreditCardTypeType value) { + this.creditCardType = value; + } + + /** + * Gets the value of the creditCardNumber property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCreditCardNumber() { + return creditCardNumber; + } + + /** + * Sets the value of the creditCardNumber property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCreditCardNumber(String value) { + this.creditCardNumber = value; + } + + /** + * Gets the value of the expMonth property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getExpMonth() { + return expMonth; + } + + /** + * Sets the value of the expMonth property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setExpMonth(Integer value) { + this.expMonth = value; + } + + /** + * Gets the value of the expYear property. + * + * @return + * possible object is + * {@link Integer } + * + */ + public Integer getExpYear() { + return expYear; + } + + /** + * Sets the value of the expYear property. + * + * @param value + * allowed object is + * {@link Integer } + * + */ + public void setExpYear(Integer value) { + this.expYear = value; + } + + /** + * Gets the value of the cardOwner property. + * + * @return + * possible object is + * {@link PayerType } + * + */ + public PayerType getCardOwner() { + return cardOwner; + } + + /** + * Sets the value of the cardOwner property. + * + * @param value + * allowed object is + * {@link PayerType } + * + */ + public void setCardOwner(PayerType value) { + this.cardOwner = value; + } + + /** + * Gets the value of the cvv2 property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCVV2() { + return cvv2; + } + + /** + * Sets the value of the cvv2 property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCVV2(String value) { + this.cvv2 = value; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardPayment.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardPayment.java new file mode 100644 index 0000000000..8150b3ccfd --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardPayment.java @@ -0,0 +1,36 @@ +/* + * 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 com.tuscanyscatours.payment.creditcard; + +import org.osoa.sca.ServiceReference; +import org.osoa.sca.annotations.Remotable; + +import com.tuscanyscatours.emailgateway.EmailGateway; + +@Remotable +public interface CreditCardPayment { + + public String authorize(CreditCardDetailsType ccDetails, + float amount, + ServiceReference<EmailGateway> emailGateway, + String emailAddress) + throws AuthorizeFault_Exception; + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardTypeType.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardTypeType.java new file mode 100644 index 0000000000..0467078279 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/CreditCardTypeType.java @@ -0,0 +1,74 @@ +/* + * 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 com.tuscanyscatours.payment.creditcard; + +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>Java class for CreditCardTypeType. + * + * <p>The following schema fragment specifies the expected content contained within this class. + * <p> + * <pre> + * <simpleType name="CreditCardTypeType"> + * <restriction base="{http://www.w3.org/2001/XMLSchema}token"> + * <enumeration value="Visa"/> + * <enumeration value="MasterCard"/> + * <enumeration value="Discover"/> + * <enumeration value="Amex"/> + * </restriction> + * </simpleType> + * </pre> + * + */ +@XmlType(name = "CreditCardTypeType") +@XmlEnum +public enum CreditCardTypeType { + + @XmlEnumValue("Visa") + VISA("Visa"), + @XmlEnumValue("MasterCard") + MASTER_CARD("MasterCard"), + @XmlEnumValue("Discover") + DISCOVER("Discover"), + @XmlEnumValue("Amex") + AMEX("Amex"); + private final String value; + + CreditCardTypeType(String v) { + value = v; + } + + public String value() { + return value; + } + + public static CreditCardTypeType fromValue(String v) { + for (CreditCardTypeType c: CreditCardTypeType.values()) { + if (c.value.equals(v)) { + return c; + } + } + throw new IllegalArgumentException(v); + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/PayerType.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/PayerType.java new file mode 100644 index 0000000000..f36fe35bdf --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/PayerType.java @@ -0,0 +1,107 @@ +/* + * 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 com.tuscanyscatours.payment.creditcard; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlType; + + +/** + * <p>Java class for PayerType complex type. + * + * <p>The following schema fragment specifies the expected content contained within this class. + * + * <pre> + * <complexType name="PayerType"> + * <complexContent> + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> + * <sequence> + * <element name="Name" type="{http://www.w3.org/2001/XMLSchema}string"/> + * <element name="Address" type="{http://www.tuscanyscatours.com/CreditCardPayment/}AddressType"/> + * </sequence> + * </restriction> + * </complexContent> + * </complexType> + * </pre> + * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "PayerType", propOrder = { + "name", + "address" +}) +public class PayerType { + + @XmlElement(name = "Name", required = true) + protected String name; + @XmlElement(name = "Address", required = true) + protected AddressType address; + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the address property. + * + * @return + * possible object is + * {@link AddressType } + * + */ + public AddressType getAddress() { + return address; + } + + /** + * Sets the value of the address property. + * + * @param value + * allowed object is + * {@link AddressType } + * + */ + public void setAddress(AddressType value) { + this.address = value; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java new file mode 100644 index 0000000000..46b51f40c8 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/creditcard/impl/CreditCardPaymentImpl.java @@ -0,0 +1,47 @@ +/* + * 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 com.tuscanyscatours.payment.creditcard.impl; + +import org.osoa.sca.ServiceReference; +import org.osoa.sca.annotations.Service; + +import com.tuscanyscatours.emailgateway.EmailGateway; +import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType; +import com.tuscanyscatours.payment.creditcard.CreditCardPayment; + +@Service(CreditCardPayment.class) +public class CreditCardPaymentImpl implements CreditCardPayment { + + public String authorize(CreditCardDetailsType card, + float amount, + ServiceReference<EmailGateway> emailGateway, + String emailAddress) { + + // payment processing + + emailGateway.getService().sendEmail("order@tuscanyscatours.com", + emailAddress, + "Status for your payment", + "Authorized"); + + return "OK"; + } + +} diff --git a/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java new file mode 100644 index 0000000000..089ea4a183 --- /dev/null +++ b/sca-java-1.x/branches/sca-java-travelsample-1.0/contributions/payment-java-reference-pass/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java @@ -0,0 +1,76 @@ +/* + * 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 com.tuscanyscatours.payment.impl; + +import org.osoa.sca.ServiceReference; +import org.osoa.sca.annotations.Property; +import org.osoa.sca.annotations.Reference; +import org.osoa.sca.annotations.Service; + +import com.tuscanyscatours.customer.Customer; +import com.tuscanyscatours.customer.CustomerNotFoundException; +import com.tuscanyscatours.customer.CustomerRegistry; +import com.tuscanyscatours.emailgateway.EmailGateway; +import com.tuscanyscatours.payment.Payment; +import com.tuscanyscatours.payment.creditcard.AuthorizeFault_Exception; +import com.tuscanyscatours.payment.creditcard.CreditCardPayment; + +/** + * The payment implementation + */ +@Service(Payment.class) +public class PaymentImpl implements Payment { + + @Reference + protected CustomerRegistry customerRegistry; + + @Reference + protected CreditCardPayment creditCardPayment; + + @Reference + protected ServiceReference<EmailGateway> emailGateway; + + @Property + protected float transactionFee = 0.01f; + + public String makePaymentMember(String customerId, float amount) { + try { + Customer customer = customerRegistry.getCustomer(customerId); + String status = creditCardPayment.authorize(customer.getCreditCard(), + amount + transactionFee, + emailGateway, + customer.getEmail()); + return status; + } catch (CustomerNotFoundException ex) { + return "Payment failed due to " + ex.getMessage(); + } catch (AuthorizeFault_Exception e) { + return e.getFaultInfo().getErrorCode(); + } catch (Throwable t) { + return "Payment failed due to system error " + t.getMessage(); + } + } + + public String checkSecurity(String securityPrompt) { + System.out.println("Extra securiy - " + securityPrompt); + System.out.println("password = abcxyz"); + return "abcxyz"; + } + +} |