diff options
author | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-08 10:34:50 +0000 |
---|---|---|
committer | slaws <slaws@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-08 10:34:50 +0000 |
commit | eb06796859bc8746cb3f25e065d3211fdadf2d6b (patch) | |
tree | f1825072a06bd8da1119a52669a6bd82f82737f2 /sandbox/travelsample/shared-contributions | |
parent | a1000cfafed375d9e87d9f97a0d9347be806b977 (diff) |
re-org the modules
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@742040 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sandbox/travelsample/shared-contributions')
69 files changed, 4652 insertions, 0 deletions
diff --git a/sandbox/travelsample/shared-contributions/calendar-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/calendar-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..327ce07643 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/calendar-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <export.java package="scatours.calendar"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/calendar-contribution/pom.xml b/sandbox/travelsample/shared-contributions/calendar-contribution/pom.xml new file mode 100644 index 0000000000..ac4004355c --- /dev/null +++ b/sandbox/travelsample/shared-contributions/calendar-contribution/pom.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-calendar-contribution</artifactId> + <name>Apache Tuscany SCA Tours Calendar Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-embedded</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-implementation-java-runtime</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/calendar-contribution/src/main/java/calendar/Calendar.java b/sandbox/travelsample/shared-contributions/calendar-contribution/src/main/java/calendar/Calendar.java new file mode 100644 index 0000000000..90736b92b4 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/calendar-contribution/src/main/java/calendar/Calendar.java @@ -0,0 +1,28 @@ +/* + * 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 calendar; + +/** + * The Add service interface + */ +public interface Calendar { + + String getEndDate(String startDate, int duration); + +} diff --git a/sandbox/travelsample/shared-contributions/calendar-contribution/src/main/java/calendar/CalendarImpl.java b/sandbox/travelsample/shared-contributions/calendar-contribution/src/main/java/calendar/CalendarImpl.java new file mode 100644 index 0000000000..343926da65 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/calendar-contribution/src/main/java/calendar/CalendarImpl.java @@ -0,0 +1,48 @@ +/* + * 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 calendar; + +import java.text.DateFormat; +import java.util.Date; +import java.util.TimeZone; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * An implementation of the Add service + */ +public class CalendarImpl implements Calendar { + + public String getEndDate(String startDate, int duration){ + String returnDate = "Invalid Date"; + + try { + Date date = DateFormat.getInstance().parse(startDate); + java.util.Calendar calendar = java.util.Calendar.getInstance(); + calendar.setTime(date); + calendar.add(java.util.Calendar.DATE, duration); + returnDate = DateFormat.getInstance().format(calendar.getTime()); + } catch (Exception ex){ + // do nothing + System.out.println(ex.toString()); + } + + return returnDate; + } +} diff --git a/sandbox/travelsample/shared-contributions/calendar-contribution/src/main/resources/calendar.composite b/sandbox/travelsample/shared-contributions/calendar-contribution/src/main/resources/calendar.composite new file mode 100644 index 0000000000..b72c450446 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/calendar-contribution/src/main/resources/calendar.composite @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" + targetNamespace="http://travel" + xmlns:sample="http://travel" + name="calendar"> + + <component name="CalendarComponent"> + <implementation.java class="calendar.CalendarImpl"/> + </component> + +</composite> diff --git a/sandbox/travelsample/shared-contributions/calendar-contribution/src/test/java/calendar/CalendarTestCase.java b/sandbox/travelsample/shared-contributions/calendar-contribution/src/test/java/calendar/CalendarTestCase.java new file mode 100644 index 0000000000..fee00fbb0a --- /dev/null +++ b/sandbox/travelsample/shared-contributions/calendar-contribution/src/test/java/calendar/CalendarTestCase.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 calendar; + +import junit.framework.TestCase; + +import org.apache.tuscany.sca.host.embedded.SCADomain; + +/** + * This shows how to test the Calculator service component. + */ +public class CalendarTestCase extends TestCase { + + private Calendar calendar; + private SCADomain scaDomain; + + @Override + protected void setUp() throws Exception { + scaDomain = SCADomain.newInstance("calendar.composite"); + calendar = scaDomain.getService(Calendar.class, "CalendarComponent"); + } + + @Override + protected void tearDown() throws Exception { + scaDomain.close(); + } + + public void testCalculator() throws Exception { + System.out.println(calendar.getEndDate("07/10/96 04:05", 3)); + } +} diff --git a/sandbox/travelsample/shared-contributions/calendar-contribution/src/test/resources/calendar.composite b/sandbox/travelsample/shared-contributions/calendar-contribution/src/test/resources/calendar.composite new file mode 100644 index 0000000000..b72c450446 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/calendar-contribution/src/test/resources/calendar.composite @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" + targetNamespace="http://travel" + xmlns:sample="http://travel" + name="calendar"> + + <component name="CalendarComponent"> + <implementation.java class="calendar.CalendarImpl"/> + </component> + +</composite> diff --git a/sandbox/travelsample/shared-contributions/car-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/car-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..f9c448e8ee --- /dev/null +++ b/sandbox/travelsample/shared-contributions/car-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <import.java package="scatours.common"/> + <export.java package="scatours.car"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/car-contribution/pom.xml b/sandbox/travelsample/shared-contributions/car-contribution/pom.xml new file mode 100644 index 0000000000..06c29b25db --- /dev/null +++ b/sandbox/travelsample/shared-contributions/car-contribution/pom.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-car-contribution</artifactId> + <name>Apache Tuscany SCA Tours Car Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-common-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <resources> + <resource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + </excludes> + </resource> + </resources> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/car-contribution/src/scatours/car/CarImpl.java b/sandbox/travelsample/shared-contributions/car-contribution/src/scatours/car/CarImpl.java new file mode 100644 index 0000000000..059365a9ab --- /dev/null +++ b/sandbox/travelsample/shared-contributions/car-contribution/src/scatours/car/CarImpl.java @@ -0,0 +1,100 @@ +/* + * 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.car; + +import java.util.ArrayList; +import java.util.List; + +import org.osoa.sca.annotations.Callback; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; + +import scatours.common.Book; +import scatours.common.Search; +import scatours.common.SearchCallback; +import scatours.common.TripItem; +import scatours.common.TripLeg; + +/** + * An implementation of the Hotel service + */ +@Scope("STATELESS") +@Service(interfaces={Search.class, Book.class}) +public class CarImpl implements Search, Book { + + private List<CarInfo> cars = new ArrayList<CarInfo>(); + + @Callback + protected SearchCallback searchCallback; + + @Init + public void init() { + cars.add(new CarInfo("Premier Cars", + "BMW 5 Series", + "FLR", + "06/12/09", + "5", + 100.00, + "EUR", + "http://localhost:8085/tbd" )); + cars.add(new CarInfo("Premier Cars", + "Ford Focus", + "FLR", + "06/12/09", + "4", + 60.00, + "EUR", + "http://localhost:8085/tbd" )); + } + + public TripItem[] searchSynch(TripLeg tripLeg) { + List<TripItem> items = new ArrayList<TripItem>(); + + // find available hotels + for(CarInfo car : cars){ + if (car.getLocation().equals(tripLeg.getToLocation())){ + TripItem item = new TripItem("", + "", + TripItem.CAR, + car.getName(), + car.getDescription(), + car.getLocation(), + tripLeg.getFromDate(), + tripLeg.getToDate(), + car.getPricePerDay(), + car.getCurrency(), + car.getLink()); + items.add(item); + } + } + + return items.toArray(new TripItem[items.size()]); + } + + public void searchAsynch(TripLeg tripLeg) { + + // return available hotels + searchCallback.searchResults(searchSynch(tripLeg)); + } + + public String book(TripItem tripItem) { + return "car1"; + } +} diff --git a/sandbox/travelsample/shared-contributions/car-contribution/src/scatours/car/CarInfo.java b/sandbox/travelsample/shared-contributions/car-contribution/src/scatours/car/CarInfo.java new file mode 100644 index 0000000000..2538c51e09 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/car-contribution/src/scatours/car/CarInfo.java @@ -0,0 +1,120 @@ +/* + * 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.car; + + +public class CarInfo { + + private String name; + private String description; + private String location; + private String date; + private String seats; + private double pricePerDay; + private String currency; + private String link; + + public CarInfo() { + } + + public CarInfo(String name, + String description, + String location, + String date, + String seats, + double pricePerDay, + String currency, + String link) { + + this.name = name; + this.description = description; + this.location = location; + this.date = date; + this.seats = seats; + this.pricePerDay = pricePerDay; + this.currency = currency; + this.link = link; + } + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } + + public String getSeats() { + return seats; + } + + public void setSeats(String seats) { + this.seats = seats; + } + + public double getPricePerDay() { + return pricePerDay; + } + + public void setPricePerDay(double pricePerDay) { + this.pricePerDay = pricePerDay; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } +} diff --git a/sandbox/travelsample/shared-contributions/common-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/common-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..c2b9fd12c7 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/common-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <export.java package="scatours.common"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/common-contribution/build.xml b/sandbox/travelsample/shared-contributions/common-contribution/build.xml new file mode 100644 index 0000000000..b4fbc726cf --- /dev/null +++ b/sandbox/travelsample/shared-contributions/common-contribution/build.xml @@ -0,0 +1,61 @@ +<!-- + * 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. +--> +<project name="gettingstarted" default="compile"> + <property environment="env"/> + + <target name="compile"> + <mkdir dir="target/classes"/> + <javac srcdir="src" destdir="target/classes" + debug="on" source="1.5" target="1.5"> + <classpath> + <pathelement location="${env.TUSCANY}/lib/tuscany-sca-manifest.jar"/> + </classpath> + </javac> + </target> + + <target name="run"> + <java classname="client.CurrencyConverterClient" fork="true"> + <classpath> + <pathelement path="src"/> + <pathelement path="target/classes"/> + <pathelement location="${env.TUSCANY}/lib/tuscany-sca-manifest.jar"/> + </classpath> + </java> + </target> + + <target name="runtrip"> + <java classname="client.TripClient" fork="true"> + <classpath> + <pathelement path="src"/> + <pathelement path="target/classes"/> + <pathelement location="${env.TUSCANY}/lib/tuscany-sca-manifest.jar"/> + </classpath> + </java> + </target> + + <target name="runtripws"> + <java classname="client.TripWsClient" fork="true"> + <classpath> + <pathelement path="src"/> + <pathelement path="target/classes"/> + <pathelement location="${env.TUSCANY}/lib/tuscany-sca-manifest.jar"/> + </classpath> + </java> + </target> +</project> diff --git a/sandbox/travelsample/shared-contributions/common-contribution/pom.xml b/sandbox/travelsample/shared-contributions/common-contribution/pom.xml new file mode 100644 index 0000000000..e0b024b666 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/common-contribution/pom.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-common-contribution</artifactId> + <name>Apache Tuscany SCA Tours Common Artefacts Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/Book.java b/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/Book.java new file mode 100644 index 0000000000..f42db4341b --- /dev/null +++ b/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/Book.java @@ -0,0 +1,31 @@ +/* + * 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.common; + +import java.util.List; + +import org.osoa.sca.annotations.Callback; +import org.osoa.sca.annotations.OneWay; +import org.osoa.sca.annotations.Remotable; + +@Remotable +public interface Book { + String book(TripItem tripItem); +} diff --git a/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/Search.java b/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/Search.java new file mode 100644 index 0000000000..705753972e --- /dev/null +++ b/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/Search.java @@ -0,0 +1,35 @@ +/* + * 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.common; + +import java.util.List; + +import org.osoa.sca.annotations.Callback; +import org.osoa.sca.annotations.OneWay; +import org.osoa.sca.annotations.Remotable; + +@Remotable +@Callback(SearchCallback.class) +public interface Search { + TripItem[] searchSynch(TripLeg tripLeg); + + @OneWay + void searchAsynch(TripLeg tripLeg); +} diff --git a/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/SearchCallback.java b/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/SearchCallback.java new file mode 100644 index 0000000000..4bc88fd623 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/SearchCallback.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 scatours.common; + +import java.util.List; + +import org.apache.tuscany.sca.data.collection.Item; +import org.osoa.sca.annotations.Remotable; + +@Remotable +public interface SearchCallback { + void searchResults(TripItem[] items); +} diff --git a/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/TripItem.java b/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/TripItem.java new file mode 100644 index 0000000000..e991668cbc --- /dev/null +++ b/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/TripItem.java @@ -0,0 +1,220 @@ +/* + * 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.common; + +import java.util.List; + + +public class TripItem { + + public static String FLIGHT = "Flight"; + public static String HOTEL = "Hotel"; + public static String CAR = "Car"; + public static String TRIP = "Trip"; + + private String id; + private String tripId; + private String type; + private String name; + private String description; + private String location; + private String fromDate; + private String toDate; + private double price; + private String currency; + private String link; + private TripItem[] tripItems; // used for a trip made up of trip items + private String customerDetails; + private String agentDetails; + private String bookingCode; + + public TripItem() { + } + + public TripItem(TripItem item) { + this.id = item.getId(); + this.tripId = item.getTripId(); + this.type = item.getType(); + this.name = item.getName(); + this.description = item.getDescription(); + this.location = item.getLocation(); + this.fromDate = item.getFromDate(); + this.toDate = item.getToDate(); + this.price = item.getPrice(); + this.currency = item.getCurrency(); + this.link = item.getLink(); + } + + public TripItem(String id, + String tripId, + String type, + String name, + String description, + String location, + String fromDate, + String toDate, + double price, + String currency, + String link) { + this.id = id; + this.tripId = tripId; + this.type = type; + this.name = name; + this.description = description; + this.location = location; + this.fromDate = fromDate; + this.toDate = toDate; + this.price = price; + this.currency = currency; + this.link = link; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getTripId() { + return tripId; + } + + public void setTripId(String tripId) { + this.tripId = tripId; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getFromDate() { + return fromDate; + } + + public void setFromDate(String fromDate) { + this.fromDate = fromDate; + } + + public String getToDate() { + return toDate; + } + + public void setToDate(String toDate) { + this.toDate = toDate; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } + + public TripItem[] getTripItems() { + return tripItems; + } + + public void setTripItems(TripItem[] tripItems) { + this.tripItems = tripItems; + } + + public String getCustomerDetails() { + return customerDetails; + } + + public void setCustomerDetails(String customerDetails) { + this.customerDetails = customerDetails; + } + + public String getAgentDetails() { + return agentDetails; + } + + public void setAgentDetails(String agentDetails) { + this.agentDetails = agentDetails; + } + + public String getBookingCode() { + return bookingCode; + } + + public void setBookingCode(String bookingCode) { + this.bookingCode = bookingCode; + } + + @Override + public boolean equals(Object obj) { + + if (obj instanceof TripItem){ + if (((TripItem)obj).getId().equals(getId())){ + return true; + } + } + + return super.equals(obj); + } +} diff --git a/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/TripLeg.java b/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/TripLeg.java new file mode 100644 index 0000000000..1af33aa6f9 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/common-contribution/src/scatours/common/TripLeg.java @@ -0,0 +1,97 @@ +/* + * 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.common; + + +public class TripLeg { + + private String id; + private String fromLocation; + private String toLocation; + private String fromDate; + private String toDate; + private String noOfPeople; + + + public TripLeg() { + } + + public TripLeg(String id, + String fromLocation, + String toLocation, + String fromDate, + String toDate, + String noOfPeople) { + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getFromLocation() { + return fromLocation; + } + + public void setFromLocation(String fromLocation) { + this.fromLocation = fromLocation; + } + + public String getToLocation() { + return toLocation; + } + + public void setToLocation(String toLocation) { + this.toLocation = toLocation; + } + + public String getFromDate() { + return fromDate; + } + + public void setFromDate(String fromDate) { + this.fromDate = fromDate; + } + + public String getToDate() { + return toDate; + } + + public void setToDate(String toDate) { + this.toDate = toDate; + } + + public String getNoOfPeople() { + return noOfPeople; + } + + public void setNoOfPeople(String noOfPeople) { + this.noOfPeople = noOfPeople; + } + + + + + + +} diff --git a/sandbox/travelsample/shared-contributions/currency-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/currency-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..549a3bc7a3 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/currency-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <export.java package="scatours.currencyconverter"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/currency-contribution/pom.xml b/sandbox/travelsample/shared-contributions/currency-contribution/pom.xml new file mode 100644 index 0000000000..738c3d7f61 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/currency-contribution/pom.xml @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-currency-contribution</artifactId> + <name>Apache Tuscany SCA Tours Currency Converter Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-embedded</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-implementation-java-runtime</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <resources> + <resource> + <directory>${basedir}/resources</directory> + </resource> + </resources> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/currency-contribution/src/scatours/currencyconverter/CurrencyConverter.java b/sandbox/travelsample/shared-contributions/currency-contribution/src/scatours/currencyconverter/CurrencyConverter.java new file mode 100644 index 0000000000..9b3851721f --- /dev/null +++ b/sandbox/travelsample/shared-contributions/currency-contribution/src/scatours/currencyconverter/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.currencyconverter; + +/** + * The CurrencyConverter service interface + */ +public interface CurrencyConverter { + + double getExchangeRate(String fromCurrencyCode, + String toCurrencyCode); + + double convert(String fromCurrencyCode, + String toCurrencyCode, + double amount); + +} diff --git a/sandbox/travelsample/shared-contributions/currency-contribution/src/scatours/currencyconverter/CurrencyConverterImpl.java b/sandbox/travelsample/shared-contributions/currency-contribution/src/scatours/currencyconverter/CurrencyConverterImpl.java new file mode 100644 index 0000000000..eddc59f555 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/currency-contribution/src/scatours/currencyconverter/CurrencyConverterImpl.java @@ -0,0 +1,54 @@ +/* + * 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.currencyconverter; + +import java.util.HashMap; +import java.util.Map; + +import org.osoa.sca.annotations.Service; + +/** + * An implementation of the CurrencyConverter service + */ +@Service(interfaces={CurrencyConverter.class}) +public class CurrencyConverterImpl implements CurrencyConverter { + + // currency index + private Map<String, Integer> currencyIndex = new HashMap<String, Integer>(); + + // exchange rates + private final double rates [][] = {{ 1.00, 0.50, 0.66 }, + { 2.00, 1.00, 1.33 }, + { 1.50, 0.75, 1.00 } } ; + + public CurrencyConverterImpl(){ + currencyIndex.put("USD", new Integer(0)); + currencyIndex.put("GBP", new Integer(1)); + currencyIndex.put("EUR", new Integer(2)); + } + + public double getExchangeRate(String fromCurrencyCode, String toCurrencyCode){ + return rates[currencyIndex.get(fromCurrencyCode).intValue()] + [currencyIndex.get(toCurrencyCode).intValue()]; + } + + public double convert(String fromCurrencyCode, String toCurrencyCode, double amount){ + return amount * getExchangeRate(fromCurrencyCode, toCurrencyCode); + } +} diff --git a/sandbox/travelsample/shared-contributions/emailgateway-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/emailgateway-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..d77df2fd7e --- /dev/null +++ b/sandbox/travelsample/shared-contributions/emailgateway-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <export.java package="scatours.emailgateway"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/emailgateway-contribution/emailgatewaytest.composite b/sandbox/travelsample/shared-contributions/emailgateway-contribution/emailgatewaytest.composite new file mode 100644 index 0000000000..5be71b4d66 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/emailgateway-contribution/emailgatewaytest.composite @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" + xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0" + xmlns:c="http://creditcard" + targetNamespace="http://creditcard" + name="emailgateway"> + <component name="EmailGatewayClient"> + <implementation.java class="scatours.emailgateway.EmailGatewayClientImpl" /> + <reference name="emailGateway"> + <binding.ws uri="http://localhost:8082/EmailGateway" /> + </reference> + </component> + <component name="EmailGateway"> + <implementation.java class="scatours.emailgateway.EmailGatewayImpl" /> + <service name="EmailGateway"> + <binding.ws uri="http://localhost:8082/EmailGateway" /> + </service> + </component> +</composite>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/emailgateway-contribution/pom.xml b/sandbox/travelsample/shared-contributions/emailgateway-contribution/pom.xml new file mode 100644 index 0000000000..118a06d942 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/emailgateway-contribution/pom.xml @@ -0,0 +1,155 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-emailgateway-contribution</artifactId> + <name>Apache Tuscany SCA Tours Email Gateway Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-embedded</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-implementation-java-runtime</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-jsonrpc-runtime</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-ws-axis2</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-jetty</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <testSourceDirectory>${basedir}/test</testSourceDirectory> + <resources> + <resource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + <exclude>test/**</exclude> + <exclude>*.composite</exclude> + </excludes> + </resource> + </resources> + <testResources> + <testResource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + <exclude>test/**</exclude> + </excludes> + </testResource> + </testResources> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>1.0</version> + <executions> + <execution> + <id>add-source</id> + <phase>generate-sources</phase> + <goals> + <goal>add-source</goal> + </goals> + <configuration> + <sources> + <source>target/jaxws-source</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jaxws-maven-plugin</artifactId> + <version>1.9</version> + <executions> + <execution> + <id>wsimport</id> + <phase>generate-sources</phase> + <goals> + <goal>wsimport</goal> + </goals> + <configuration> + <packageName>scatours.emailgateway</packageName> + <wsdlDirectory>${basedir}/wsdl + </wsdlDirectory> + <wsdlFiles> + <wsdlFile>EmailGateway.wsdl</wsdlFile> + </wsdlFiles> + <sourceDestDir>${project.build.directory}/jaxws-source + </sourceDestDir> + <verbose>false</verbose> + <xnocompile>true</xnocompile> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/emailgateway-contribution/src/scatours/emailgateway/EmailGatewayImpl.java b/sandbox/travelsample/shared-contributions/emailgateway-contribution/src/scatours/emailgateway/EmailGatewayImpl.java new file mode 100644 index 0000000000..6e971c3267 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/emailgateway-contribution/src/scatours/emailgateway/EmailGatewayImpl.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 scatours.emailgateway; + +import org.osoa.sca.annotations.Service; + + +/** + * + */ +@Service(EmailGateway.class) +public class EmailGatewayImpl implements EmailGateway { + + public String sendEmail(EmailType email) { + System.out.println("Sending mail to " + email.getTo()); + return "SENT"; + } + +} diff --git a/sandbox/travelsample/shared-contributions/emailgateway-contribution/test/scatours/emailgateway/EmailGatewayClientImpl.java b/sandbox/travelsample/shared-contributions/emailgateway-contribution/test/scatours/emailgateway/EmailGatewayClientImpl.java new file mode 100644 index 0000000000..a6b76c525f --- /dev/null +++ b/sandbox/travelsample/shared-contributions/emailgateway-contribution/test/scatours/emailgateway/EmailGatewayClientImpl.java @@ -0,0 +1,38 @@ +/* + * 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.emailgateway; + +import org.osoa.sca.annotations.Reference; +import org.osoa.sca.annotations.Service; + +/** + * + */ +@Service(EmailGateway.class) +public class EmailGatewayClientImpl implements EmailGateway { + @Reference + protected EmailGateway emailGateway; + + public String sendEmail(EmailType email) { + // Delegate the external web service + return emailGateway.sendEmail(email); + } + +} diff --git a/sandbox/travelsample/shared-contributions/emailgateway-contribution/test/scatours/emailgateway/EmailGatewayTestCase.java b/sandbox/travelsample/shared-contributions/emailgateway-contribution/test/scatours/emailgateway/EmailGatewayTestCase.java new file mode 100644 index 0000000000..c471e024e3 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/emailgateway-contribution/test/scatours/emailgateway/EmailGatewayTestCase.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 scatours.emailgateway; + +import org.apache.tuscany.sca.node.SCAClient; +import org.apache.tuscany.sca.node.SCANode; +import org.apache.tuscany.sca.node.SCANodeFactory; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * + */ +public class EmailGatewayTestCase { + private static SCANode node; + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + SCANodeFactory factory = SCANodeFactory.newInstance(); + node = factory.createSCANodeFromClassLoader("emailgatewaytest.composite", EmailGateway.class.getClassLoader()); + node.start(); + } + + @Test + public void testEmailGateway() { + SCAClient client = (SCAClient) node; + EmailGateway cc = client.getService(EmailGateway.class, "EmailGatewayClient"); + ObjectFactory objectFactory = new ObjectFactory(); + EmailType email = objectFactory.createEmailType(); + email.setTo("Fred"); + email.setTitle("An email"); + email.setBody("A message"); + System.out.println(cc.sendEmail(email)); + } + + @Test + //@Ignore + public void testWaitForInput() { + System.out.println("Press a key to end"); + /* try { + System.in.read(); + } catch (Exception ex) { + } + System.out.println("Shutting down"); +*/ + } + + /** + * @throws java.lang.Exception + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + if (node != null) { + node.stop(); + node = null; + } + } + +} diff --git a/sandbox/travelsample/shared-contributions/emailgateway-contribution/wsdl/EmailGateway.wsdl b/sandbox/travelsample/shared-contributions/emailgateway-contribution/wsdl/EmailGateway.wsdl new file mode 100644 index 0000000000..c103ad947d --- /dev/null +++ b/sandbox/travelsample/shared-contributions/emailgateway-contribution/wsdl/EmailGateway.wsdl @@ -0,0 +1,89 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<wsdl:definitions name="EmailGateway"
+ targetNamespace="http://www.example.org/EmailGateway/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.example.org/EmailGateway/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.example.org/EmailGateway/"
+ xmlns:tns="http://www.example.org/EmailGateway/">
+
+ <xsd:element name="sendEmail" type="tns:SendEmailType"/>
+ <xsd:complexType name="SendEmailType">
+ <xsd:sequence>
+ <xsd:element name="Email" type="tns:EmailType"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="sendEmailResponse" type="tns:SendEmailResponseType"/>
+ <xsd:complexType name="SendEmailResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="EmailType">
+ <xsd:sequence>
+ <xsd:element name="To" type="xsd:string"/>
+ <xsd:element name="Title" type="xsd:string"/>
+ <xsd:element name="Body" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types>
+ <wsdl:message name="SendEmailRequest">
+ <wsdl:part name="parameters" element="tns:sendEmail"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="SendEmailResponse">
+ <wsdl:part name="parameters" element="tns:sendEmailResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="EmailGateway">
+ <wsdl:operation name="sendEmail">
+ <wsdl:input message="tns:SendEmailRequest"></wsdl:input>
+ <wsdl:output message="tns:SendEmailResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="EmailGatwayBinding" type="tns:EmailGateway">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="sendEmail">
+ <soap:operation soapAction="http://www.example.org/EmailGateway/sendEmail" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="EmailGatewayService">
+ <wsdl:port name="EmailGatewayPort" binding="tns:EmailGatwayBinding">
+ <soap:address location="http://localhost:8080/EmailGateway" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="EmailGatewayLinkType">
+ <plnk:role name="forward" portType="tns:EmailGateway"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/flight-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/flight-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..394be817a9 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/flight-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <import.java package="scatours.common"/> + <export.java package="scatours.flight"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/flight-contribution/pom.xml b/sandbox/travelsample/shared-contributions/flight-contribution/pom.xml new file mode 100644 index 0000000000..8782ab83d3 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/flight-contribution/pom.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-flight-contribution</artifactId> + <name>Apache Tuscany SCA Tours Flight Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-common-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <resources> + <resource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + </excludes> + </resource> + </resources> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/flight-contribution/src/scatours/flight/FlightImpl.java b/sandbox/travelsample/shared-contributions/flight-contribution/src/scatours/flight/FlightImpl.java new file mode 100644 index 0000000000..72c1c7201c --- /dev/null +++ b/sandbox/travelsample/shared-contributions/flight-contribution/src/scatours/flight/FlightImpl.java @@ -0,0 +1,127 @@ +/* + * 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.flight; + +import java.util.ArrayList; +import java.util.List; + +import org.osoa.sca.annotations.Callback; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; + +import scatours.common.Book; +import scatours.common.Search; +import scatours.common.SearchCallback; +import scatours.common.TripItem; +import scatours.common.TripLeg; + +/** + * An implementation of the Hotel service + */ +@Scope("STATELESS") +@Service(interfaces={Search.class, Book.class}) +public class FlightImpl implements Search, Book { + + private List<FlightInfo> flights = new ArrayList<FlightInfo>(); + + @Callback + protected SearchCallback searchCallback; + + @Init + public void init() { + flights.add(new FlightInfo("EA26", + "Europe Airlines Airbus A300", + "LGW", + "FLR", + "06/12/09", + "06/12/09", + "350", + 250, + "EUR", + "http://localhost:8085/tbd" )); + flights.add(new FlightInfo("EA27", + "Europe Airlines Airbus A300", + "FLR", + "LGW", + "13/12/09", + "13/12/09", + "350", + 250, + "EUR", + "http://localhost:8085/tbd" )); + + } + + public TripItem[] searchSynch(TripLeg tripLeg) { + List<TripItem> items = new ArrayList<TripItem>(); + + // find outbound leg + for(FlightInfo flight : flights){ + if ((flight.getFromLocation().equals(tripLeg.getFromLocation())) && + (flight.getToLocation().equals(tripLeg.getToLocation())) && + (flight.getFromDate().equals(tripLeg.getFromDate()))){ + TripItem item = new TripItem("", + "", + TripItem.FLIGHT, + flight.getName(), + flight.getDescription(), + flight.getFromLocation() + " - " + flight.getToLocation(), + flight.getFromDate(), + flight.getToDate(), + flight.getPricePerSeat(), + flight.getCurrency(), + flight.getLink()); + items.add(item); + } + } + + // find return leg + for(FlightInfo flight : flights){ + if ((flight.getFromLocation().equals(tripLeg.getToLocation())) && + (flight.getToLocation().equals(tripLeg.getFromLocation())) && + (flight.getFromDate().equals(tripLeg.getToDate()))){ + TripItem item = new TripItem("", + "", + TripItem.FLIGHT, + flight.getName(), + flight.getDescription(), + flight.getFromLocation() + " - " + flight.getToLocation(), + flight.getFromDate(), + tripLeg.getToDate(), + flight.getPricePerSeat(), + flight.getCurrency(), + flight.getLink()); + items.add(item); + } + } + + return items.toArray(new TripItem[items.size()]); + } + + public void searchAsynch(TripLeg tripLeg) { + + // return available hotels + searchCallback.searchResults(searchSynch(tripLeg)); + } + + public String book(TripItem tripItem) { + return "flight1"; + } +} diff --git a/sandbox/travelsample/shared-contributions/flight-contribution/src/scatours/flight/FlightInfo.java b/sandbox/travelsample/shared-contributions/flight-contribution/src/scatours/flight/FlightInfo.java new file mode 100644 index 0000000000..fb5fb9fef5 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/flight-contribution/src/scatours/flight/FlightInfo.java @@ -0,0 +1,142 @@ +/* + * 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.flight; + + +public class FlightInfo { + + private String name; + private String description; + private String fromLocation; + private String toLocation; + private String fromDate; + private String toDate; + private String seats; + private double pricePerSeat; + private String currency; + private String link; + + public FlightInfo() { + } + + public FlightInfo(String name, + String description, + String fromLocation, + String toLocation, + String fromDate, + String toDate, + String seats, + double pricePerSeat, + String currency, + String link) { + + + this.name = name; + this.description = description; + this.fromLocation = fromLocation; + this.toLocation = toLocation; + this.fromDate = fromDate; + this.toDate = toDate; + this.seats = seats; + this.pricePerSeat = pricePerSeat; + this.currency = currency; + this.link = link; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getFromLocation() { + return fromLocation; + } + + public void setFromLocation(String fromLocation) { + this.fromLocation = fromLocation; + } + + public String getToLocation() { + return toLocation; + } + + public void setToLocation(String toLocation) { + this.toLocation = toLocation; + } + + public String getFromDate() { + return fromDate; + } + + public void setFromDate(String fromDate) { + this.fromDate = fromDate; + } + + public String getToDate() { + return toDate; + } + + public void setToDate(String toDate) { + this.toDate = toDate; + } + + public String getSeats() { + return seats; + } + + public void setSeats(String seats) { + this.seats = seats; + } + + public double getPricePerSeat() { + return pricePerSeat; + } + + public void setPricePerSeat(double pricePerSeat) { + this.pricePerSeat = pricePerSeat; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } +}
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/hotel-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/hotel-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..765c8d1cc3 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/hotel-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <import.java package="scatours.common"/> + <export.java package="scatours.hotel"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/hotel-contribution/pom.xml b/sandbox/travelsample/shared-contributions/hotel-contribution/pom.xml new file mode 100644 index 0000000000..4b49632937 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/hotel-contribution/pom.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-hotel-contribution</artifactId> + <name>Apache Tuscany SCA Tours Hotel Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-common-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <resources> + <resource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + </excludes> + </resource> + </resources> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/hotel-contribution/src/scatours/hotel/HotelImpl.java b/sandbox/travelsample/shared-contributions/hotel-contribution/src/scatours/hotel/HotelImpl.java new file mode 100644 index 0000000000..a9a6d1bbde --- /dev/null +++ b/sandbox/travelsample/shared-contributions/hotel-contribution/src/scatours/hotel/HotelImpl.java @@ -0,0 +1,116 @@ +/* + * 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.hotel; + +import java.util.ArrayList; +import java.util.List; + +import org.osoa.sca.annotations.Callback; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; + +import scatours.common.Book; +import scatours.common.Search; +import scatours.common.SearchCallback; +import scatours.common.TripItem; +import scatours.common.TripLeg; + +/** + * An implementation of the Hotel service + */ +@Scope("STATELESS") +@Service(interfaces={Search.class, Book.class}) +public class HotelImpl implements Search, Book { + + private List<HotelInfo> hotels = new ArrayList<HotelInfo>(); + + @Callback + protected SearchCallback searchCallback; + + @Init + public void init() { + hotels.add(new HotelInfo("Deep Bay Hotel", + "Wonderful sea views and a relaxed atmosphere", + "FLR", + "06/12/09", + "200", + 100, + "EUR", + "http://localhost:8085/tbd" )); + hotels.add(new HotelInfo("Long Bay Hotel", + "Friendly staff and an ocean breeze", + "FLR", + "06/12/09", + "200", + 100, + "EUR", + "http://localhost:8085/tbd" )); + hotels.add(new HotelInfo("City Hotel", + "Smart rooms and early breakfasts", + "FLR", + "06/12/09", + "200", + 100, + "EUR", + "http://localhost:8085/tbd" )); + hotels.add(new HotelInfo("County Hotel", + "The smell of the open country", + "FLR", + "06/12/09", + "200", + 100, + "EUR", + "http://localhost:8085/tbd" )); + } + + public TripItem[] searchSynch(TripLeg tripLeg) { + List<TripItem> items = new ArrayList<TripItem>(); + + // find available hotels + for(HotelInfo hotel : hotels){ + if (hotel.getLocation().equals(tripLeg.getToLocation())){ + TripItem item = new TripItem("", + "", + TripItem.HOTEL, + hotel.getName(), + hotel.getDescription(), + hotel.getLocation(), + tripLeg.getFromDate(), + tripLeg.getToDate(), + hotel.getPricePerBed(), + hotel.getCurrency(), + hotel.getLink()); + items.add(item); + } + } + + return items.toArray(new TripItem[items.size()]); + } + + public void searchAsynch(TripLeg tripLeg) { + + // return available hotels + searchCallback.searchResults(searchSynch(tripLeg)); + } + + public String book(TripItem tripItem) { + return "hotel1"; + } +} diff --git a/sandbox/travelsample/shared-contributions/hotel-contribution/src/scatours/hotel/HotelInfo.java b/sandbox/travelsample/shared-contributions/hotel-contribution/src/scatours/hotel/HotelInfo.java new file mode 100644 index 0000000000..3b0d11d16e --- /dev/null +++ b/sandbox/travelsample/shared-contributions/hotel-contribution/src/scatours/hotel/HotelInfo.java @@ -0,0 +1,120 @@ +/* + * 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.hotel; + + +public class HotelInfo { + + private String name; + private String description; + private String location; + private String date; + private String beds; + private double pricePerBed; + private String currency; + private String link; + + public HotelInfo() { + } + + public HotelInfo(String name, + String description, + String location, + String date, + String beds, + double pricePerBed, + String currency, + String link) { + + this.name = name; + this.description = description; + this.location = location; + this.date = date; + this.beds = beds; + this.pricePerBed = pricePerBed; + this.currency = currency; + this.link = link; + } + + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getDate() { + return date; + } + + public void setDate(String date) { + this.date = date; + } + + public String getBeds() { + return beds; + } + + public void setBeds(String beds) { + this.beds = beds; + } + + public double getPricePerBed() { + return pricePerBed; + } + + public void setPricePerBed(double pricePerBed) { + this.pricePerBed = pricePerBed; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } +} diff --git a/sandbox/travelsample/shared-contributions/payment-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/payment-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..d22f4816ab --- /dev/null +++ b/sandbox/travelsample/shared-contributions/payment-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <export.java package="payment.creditcard"/> + <export.java package="payment.creditcard.impl"/> + <export.java package="payment.creditcard.ws"/> + <export.java package="payment.creditcard.ws.impl"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/payment-contribution/creditcard.composite b/sandbox/travelsample/shared-contributions/payment-contribution/creditcard.composite new file mode 100644 index 0000000000..184304e829 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/payment-contribution/creditcard.composite @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.0"
+ xmlns:c="http://creditcard" targetNamespace="http://creditcard" name="creditcard">
+ <component name="CreditCardPaymentWSClient">
+ <implementation.java class="payment.creditcard.impl.CreditCardPaymentImpl" />
+ <reference name="creditCardPayment">
+ <binding.ws uri="http://localhost:8081/CreditCardPayment" />
+ </reference>
+ <service name="CreditCardPayment">
+ <!--t:binding.jsonrpc uri="/jsonrpc/CreditCardPayment" /-->
+ <binding.sca />
+ </service>
+ </component>
+ <component name="CreditCardPaymentWS">
+ <implementation.java class="payment.creditcard.ws.impl.CreditCardPaymentWSImpl" />
+ <service name="CreditCardPayment">
+ <binding.ws uri="http://localhost:8081/CreditCardPayment" />
+ </service>
+ </component>
+</composite>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/payment-contribution/pom.xml b/sandbox/travelsample/shared-contributions/payment-contribution/pom.xml new file mode 100644 index 0000000000..98a1166a66 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/payment-contribution/pom.xml @@ -0,0 +1,155 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-payment-contribution</artifactId> + <name>Apache Tuscany SCA Tours Payment Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-embedded</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-implementation-java-runtime</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-jsonrpc-runtime</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-binding-ws-axis2</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-host-jetty</artifactId> + <version>1.5-SNAPSHOT</version> + <scope>runtime</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <testSourceDirectory>${basedir}/test</testSourceDirectory> + <resources> + <resource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + <exclude>test/**</exclude> + <exclude>*.composite</exclude> + </excludes> + </resource> + </resources> + <testResources> + <testResource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + <exclude>test/**</exclude> + </excludes> + </testResource> + </testResources> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>build-helper-maven-plugin</artifactId> + <version>1.0</version> + <executions> + <execution> + <id>add-source</id> + <phase>generate-sources</phase> + <goals> + <goal>add-source</goal> + </goals> + <configuration> + <sources> + <source>target/jaxws-source</source> + </sources> + </configuration> + </execution> + </executions> + </plugin> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jaxws-maven-plugin</artifactId> + <version>1.9</version> + <executions> + <execution> + <id>wsimport</id> + <phase>generate-sources</phase> + <goals> + <goal>wsimport</goal> + </goals> + <configuration> + <packageName>payment.creditcard</packageName> + <wsdlDirectory>${basedir}/wsdl + </wsdlDirectory> + <wsdlFiles> + <wsdlFile>CreditCardPayment.wsdl</wsdlFile> + </wsdlFiles> + <sourceDestDir>${project.build.directory}/jaxws-source + </sourceDestDir> + <verbose>false</verbose> + <xnocompile>true</xnocompile> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/payment-contribution/src/payment/creditcard/impl/CreditCardPaymentImpl.java b/sandbox/travelsample/shared-contributions/payment-contribution/src/payment/creditcard/impl/CreditCardPaymentImpl.java new file mode 100644 index 0000000000..2a9c537775 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/payment-contribution/src/payment/creditcard/impl/CreditCardPaymentImpl.java @@ -0,0 +1,46 @@ +/* + * 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.osoa.sca.annotations.Reference; +import org.osoa.sca.annotations.Service; + +import payment.creditcard.CreditCardDetailsType; +import payment.creditcard.CreditCardPayment; + +/** + * + */ +@Service(CreditCardPayment.class) +public class CreditCardPaymentImpl implements CreditCardPayment { + + @Reference + protected CreditCardPayment creditCardPayment; + + public String authorize(CreditCardDetailsType creditCard, float amount) { + // Validate some of the fields in CreditCardDetailsType + if (creditCard.getCreditCardType() == null) { + return "UnknownCreditCardType"; + } + // Delegate the external web service + return creditCardPayment.authorize(creditCard, amount); + } + +} diff --git a/sandbox/travelsample/shared-contributions/payment-contribution/src/payment/creditcard/ws/impl/CreditCardPaymentWSImpl.java b/sandbox/travelsample/shared-contributions/payment-contribution/src/payment/creditcard/ws/impl/CreditCardPaymentWSImpl.java new file mode 100644 index 0000000000..f0c61cd14d --- /dev/null +++ b/sandbox/travelsample/shared-contributions/payment-contribution/src/payment/creditcard/ws/impl/CreditCardPaymentWSImpl.java @@ -0,0 +1,48 @@ +/* + * 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.ws.impl; + +import org.osoa.sca.annotations.Service; + +import payment.creditcard.CreditCardDetailsType; +import payment.creditcard.CreditCardPayment; + +/** + * + */ +@Service(CreditCardPayment.class) +public class CreditCardPaymentWSImpl 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/travelsample/shared-contributions/payment-contribution/test/payment/creditcard/CreditCardPaymentTestCase.java b/sandbox/travelsample/shared-contributions/payment-contribution/test/payment/creditcard/CreditCardPaymentTestCase.java new file mode 100644 index 0000000000..656197dcb9 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/payment-contribution/test/payment/creditcard/CreditCardPaymentTestCase.java @@ -0,0 +1,85 @@ +/* + * 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; + +import org.apache.tuscany.sca.node.SCAClient; +import org.apache.tuscany.sca.node.SCANode; +import org.apache.tuscany.sca.node.SCANodeFactory; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * + */ +public class CreditCardPaymentTestCase { + private static SCANode node; + + /** + * @throws java.lang.Exception + */ + @BeforeClass + public static void setUpBeforeClass() throws Exception { + SCANodeFactory factory = SCANodeFactory.newInstance(); + node = factory.createSCANodeFromClassLoader("creditcard.composite", CreditCardPayment.class.getClassLoader()); + node.start(); + } + + @Test + public void testCreditCardPayment() { + SCAClient client = (SCAClient) node; + CreditCardPayment cc = client.getService(CreditCardPayment.class, "CreditCardPaymentWSClient"); + + ObjectFactory objectFactory = new ObjectFactory(); + CreditCardDetailsType ccDetails = objectFactory.createCreditCardDetailsType(); + ccDetails.setCreditCardType(CreditCardTypeType.fromValue("Visa")); + PayerType ccOwner = objectFactory.createPayerType(); + ccOwner.setName("Fred"); + ccDetails.setCardOwner(ccOwner); + + System.out.println(cc.authorize(ccDetails, 100.00f)); + } + + @Test + //@Ignore + public void testWaitForInput() { +/* + System.out.println("Press a key to end"); + try { + System.in.read(); + } catch (Exception ex) { + } + System.out.println("Shutting down"); +*/ + } + + /** + * @throws java.lang.Exception + */ + @AfterClass + public static void tearDownAfterClass() throws Exception { + if (node != null) { + node.stop(); + node = null; + } + } + +} diff --git a/sandbox/travelsample/shared-contributions/payment-contribution/wsdl/CreditCardPayment.wsdl b/sandbox/travelsample/shared-contributions/payment-contribution/wsdl/CreditCardPayment.wsdl new file mode 100644 index 0000000000..b40c341389 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/payment-contribution/wsdl/CreditCardPayment.wsdl @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * 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.
+-->
+<wsdl:definitions name="CreditCardPayment"
+ targetNamespace="http://www.example.org/CreditCardPayment/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://www.example.org/CreditCardPayment/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:bpws="http://schemas.xmlsoap.org/ws/2004/03/business-process/"
+ xmlns:plnk="http://schemas.xmlsoap.org/ws/2004/03/partner-link/">
+ <wsdl:types>
+ <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.example.org/CreditCardPayment/"
+ xmlns:tns="http://www.example.org/CreditCardPayment/">
+
+ <xsd:element name="authorize" type="tns:AuthorizeType"/>
+ <xsd:complexType name="AuthorizeType">
+ <xsd:sequence>
+ <xsd:element name="CreditCard" type="tns:CreditCardDetailsType"></xsd:element>
+ <xsd:element name="Amount" type="xsd:float"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:element name="authorizeResponse" type="tns:AuthorizeResponseType"/>
+ <xsd:complexType name="AuthorizeResponseType">
+ <xsd:sequence>
+ <xsd:element name="Status" type="xsd:string"></xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+
+ <xsd:complexType name="CreditCardDetailsType">
+ <xsd:sequence>
+ <xsd:element name="CreditCardType" type="tns:CreditCardTypeType" minOccurs="0" />
+ <xsd:element name="CreditCardNumber" type="xsd:string" minOccurs="0" />
+ <xsd:element name="ExpMonth" type="xsd:int" minOccurs="0" />
+ <xsd:element name="ExpYear" type="xsd:int" minOccurs="0" />
+ <xsd:element name="CardOwner" type="tns:PayerType" minOccurs="0" />
+ <xsd:element name="CVV2" type="xsd:string" minOccurs="0" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="CreditCardTypeType">
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="Visa" />
+ <xsd:enumeration value="MasterCard" />
+ <xsd:enumeration value="Discover" />
+ <xsd:enumeration value="Amex" />
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="PayerType">
+ <xsd:sequence>
+ <xsd:element name="Name" type="xsd:string" />
+ <xsd:element name="Address" type="tns:AddressType" />
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AddressType">
+ <xsd:sequence>
+ <xsd:element name="Street" type="xsd:string" />
+ <xsd:element name="City" type="xsd:string" />
+ <xsd:element name="State" type="xsd:string" />
+ <xsd:element name="ZipCode" type="xsd:string" />
+ <xsd:element name="HomePhone" type="xsd:string" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:schema>
+ </wsdl:types> + <wsdl:message name="AuthorizeRequest">
+ <wsdl:part name="parameters" element="tns:authorize"></wsdl:part>
+ </wsdl:message>
+ <wsdl:message name="AuthorizeResponse">
+ <wsdl:part name="parameters" element="tns:authorizeResponse"></wsdl:part>
+ </wsdl:message>
+ <wsdl:portType name="CreditCardPayment">
+ <wsdl:operation name="authorize">
+ <wsdl:input message="tns:AuthorizeRequest"></wsdl:input>
+ <wsdl:output message="tns:AuthorizeResponse"></wsdl:output>
+ </wsdl:operation>
+ </wsdl:portType>
+ <wsdl:binding name="CreditCardPaymentBinding" type="tns:CreditCardPayment">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+ <wsdl:operation name="authorize">
+ <soap:operation soapAction="http://www.example.org/CreditCardPayment/authorize" />
+ <wsdl:input>
+ <soap:body use="literal" />
+ </wsdl:input>
+ <wsdl:output>
+ <soap:body use="literal" />
+ </wsdl:output>
+ </wsdl:operation>
+ </wsdl:binding>
+ <wsdl:service name="CreditCardPaymentService">
+ <wsdl:port name="CreditCardPaymentPort" binding="tns:CreditCardPaymentBinding">
+ <soap:address location="http://localhost:8080/CreditCardPayment" />
+ </wsdl:port>
+ </wsdl:service>
+
+ <plnk:partnerLinkType name="CreditCardPaymentLinkType">
+ <plnk:role name="forward" portType="tns:CreditCardPayment"/>
+ </plnk:partnerLinkType>
+</wsdl:definitions>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/pom.xml b/sandbox/travelsample/shared-contributions/pom.xml new file mode 100644 index 0000000000..39dde3875f --- /dev/null +++ b/sandbox/travelsample/shared-contributions/pom.xml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.4-SNAPSHOT</version> + <!--relativePath>../pom.xml</relativePath--> + </parent> + <artifactId>tuscany-scatours-common-contributions</artifactId> + <packaging>pom</packaging> + <name>Apache Tuscany SCA Tours Common Contributions</name> + + <profiles> + <profile> + <id>default</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <modules> + <module>calendar-contribution</module> + <module>car-contribution</module> + <module>common-contribution</module> + <module>currency-contribution</module> + <module>emailgateway-contribution</module> + <module>flight-contribution</module> + <module>hotel-contribution</module> + <module>payment-contribution</module> + <module>shoppingcart-contribution</module> + <module>travelcatalog-contribution</module> + <module>tripbooking-contribution</module> + <module>trip-contribution</module> + <module>scatours-contribution</module> + </modules> + </profile> + + </profiles> + +</project> diff --git a/sandbox/travelsample/shared-contributions/scatours-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/scatours-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..368e95ebd0 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/scatours-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <import.java package="scatours.common"/> + <import.java package="scatours.travelcatalog"/> + <import.java package="scatours.tripbooking"/> + <import.java package="scatours.shoppingcart"/> + <export.java package="scatours"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/scatours-contribution/pom.xml b/sandbox/travelsample/shared-contributions/scatours-contribution/pom.xml new file mode 100644 index 0000000000..500d23f4b8 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/scatours-contribution/pom.xml @@ -0,0 +1,106 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-scatours-contribution</artifactId> + <name>Apache Tuscany SCA Tours SCATours Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-common-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-currency-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-travelcatalog-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-tripbooking-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-shoppingcart-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-paymentprocess-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <resources> + <resource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + </excludes> + </resource> + </resources> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursBooking.java b/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursBooking.java new file mode 100644 index 0000000000..ac39443e9c --- /dev/null +++ b/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursBooking.java @@ -0,0 +1,32 @@ +/* + * 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; + + +import org.osoa.sca.annotations.Remotable; + +import scatours.common.TripItem; + +/** + * The SCA Tours trip booking service interface + */ +@Remotable +public interface SCAToursBooking { + String bookTrip(String cartId, TripItem tripId); +} diff --git a/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursCart.java b/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursCart.java new file mode 100644 index 0000000000..61e32ec4a2 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursCart.java @@ -0,0 +1,34 @@ +/* + * 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; + +import org.osoa.sca.annotations.Conversational; +import org.osoa.sca.annotations.Remotable; + +import scatours.common.TripItem; + +/** + * The ShoppingCart service interface + */ +@Remotable +public interface SCAToursCart{ + String newCart(); + TripItem[] getTrips(String cartId); + void checkout(String cartId); +} diff --git a/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursImpl.java b/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursImpl.java new file mode 100644 index 0000000000..c0f7bec6ea --- /dev/null +++ b/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursImpl.java @@ -0,0 +1,162 @@ +/* + * 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; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.osoa.sca.ComponentContext; +import org.osoa.sca.ServiceReference; +import org.osoa.sca.annotations.Context; +import org.osoa.sca.annotations.Reference; +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; + +import scatours.common.TripItem; +import scatours.common.TripLeg; +import scatours.paymentprocess.PaymentProcess; +import scatours.shoppingcart.ShoppingCart; +import scatours.travelcatalog.TravelCatalogSearch; +import scatours.tripbooking.TripBooking; + +/** + * An implementation of the Trip service + */ +@Scope("COMPOSITE") +@Service(interfaces={SCAToursSearch.class, SCAToursBooking.class, SCAToursCart.class}) +public class SCAToursImpl implements SCAToursSearch, SCAToursBooking, SCAToursCart{ + + @Reference + protected TravelCatalogSearch travelCatalogSearch; + + @Reference + protected TripBooking tripBooking; + + @Reference + protected ShoppingCart shoppingCart; + + @Context + protected ComponentContext componentContext; + + private Map<String,ShoppingCart> carts = new HashMap<String,ShoppingCart>(); + private Map<String,TripBooking> trips = new HashMap<String,TripBooking>(); + //private Map<String, TripItem> searchItemsCache = new HashMap<String, TripItem>(); + + // SCAToursSearch methods + + public TripItem[] search(TripLeg tripLeg) { + + TripItem[] searchItems = travelCatalogSearch.search(tripLeg); + + //for (int i =0; i< searchItems.length; i++){ + // searchItemsCache.put(searchItems[i].getId(), searchItems[i]); + //} + return searchItems; + } + + // SCAToursBooking methods + + public String bookTrip(String cartId, TripItem trip){ + TripItem bookedTrip = tripBooking.bookTrip(cartId, trip); + carts.get(cartId).addTrip(bookedTrip); + return bookedTrip.getBookingCode(); + } + + // SCAToursCart methods + + public String newCart(){ + String cartId = UUID.randomUUID().toString(); + ServiceReference<ShoppingCart> shoppingCart = componentContext.getServiceReference(ShoppingCart.class, + "shoppingCart"); + shoppingCart.setConversationID(cartId); + carts.put(cartId, shoppingCart.getService()); + + return cartId; + } + + public TripItem[] getTrips(String cartId){ + return carts.get(cartId).getTrips(); + } + + public void checkout(String cartId){ + shoppingCart.checkout("Fred"); + } + +/* + public String addTrip(String cartId){ + String tripId = UUID.randomUUID().toString(); + ServiceReference<TripBooking> tripReference = componentContext.getServiceReference(TripBooking.class, + "tripBooking"); + tripReference.setConversationID(tripId); + trips.put(tripId, tripReference.getService()); + + carts.get(cartId).addItem(tripId); + return tripId; + } + + public void removeTrip(String cartId, String tripId) { + carts.get(cartId).removeItem(tripId); + } + + public void addTripItem(String cartId, String tripId, String tripItemId){ + TripItem item = searchItemsCache.get(tripItemId); + TripItem itemCopy = new TripItem(item); + itemCopy.setTripId(tripId); + trips.get(tripId).addTripItem(itemCopy); + } + + public void removeTripItem(String cartId, String tripId, String tripItemId){ + trips.get(tripId).removeTripItem(tripItemId); + } + + public TripItem[] getTripItems(String cartId) { + List<TripItem> returnTripItems = new ArrayList<TripItem>(); + + for( String tripId : carts.get(cartId).getItems()){ + returnTripItems.addAll(Arrays.asList(trips.get(tripId).getTripItems())); + } + + return returnTripItems.toArray(new TripItem[returnTripItems.size()]); + } + + public double getTotalPrice(String cartId){ + double total = 0.0; + + for( String tripId : carts.get(cartId).getItems()){ + total += trips.get(tripId).getTripPrice(); + } + + return total; + } + + public void checkout(String cartId){ + // get users credentials. Hard coded for now but should + // come from the security context + String customerId = "Fred Bloggs"; + float amount = (float)getTotalPrice(cartId); + + paymentProcess.makePayment(customerId, amount); + } + +*/ +} diff --git a/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursSearch.java b/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursSearch.java new file mode 100644 index 0000000000..f0f435fc06 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/scatours-contribution/src/scatours/SCAToursSearch.java @@ -0,0 +1,32 @@ +/* + * 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; + +import org.osoa.sca.annotations.Remotable; + +import scatours.common.TripItem; +import scatours.common.TripLeg; + +/** + * The Trip service interface + */ +@Remotable +public interface SCAToursSearch { + TripItem[] search(TripLeg tripLeg); +} diff --git a/sandbox/travelsample/shared-contributions/shoppingcart-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/shoppingcart-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..f4010d04b1 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/shoppingcart-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <import.java package="scatours.common"/> + <import.java package="scatours.paymentprocess"/> + <export.java package="scatours.shoppingcart"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/shoppingcart-contribution/pom.xml b/sandbox/travelsample/shared-contributions/shoppingcart-contribution/pom.xml new file mode 100644 index 0000000000..79621c1370 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/shoppingcart-contribution/pom.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-shoppingcart-contribution</artifactId> + <name>Apache Tuscany SCA Tours Shopping Cart Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-common-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-currency-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-paymentprocess-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <resources> + <resource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + </excludes> + </resource> + </resources> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/shoppingcart-contribution/src/scatours/shoppingcart/ShoppingCart.java b/sandbox/travelsample/shared-contributions/shoppingcart-contribution/src/scatours/shoppingcart/ShoppingCart.java new file mode 100644 index 0000000000..f7595c71fe --- /dev/null +++ b/sandbox/travelsample/shared-contributions/shoppingcart-contribution/src/scatours/shoppingcart/ShoppingCart.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 scatours.shoppingcart; + +import org.osoa.sca.annotations.Conversational; +import org.osoa.sca.annotations.EndsConversation; +import org.osoa.sca.annotations.Remotable; + +import scatours.common.TripItem; + +/** + * The ShoppingCart service interface + */ +@Remotable +@Conversational +public interface ShoppingCart{ + void addTrip(TripItem trip); + void removeTrip(TripItem trip); + TripItem[] getTrips(); + + @EndsConversation + void checkout(String name); +} diff --git a/sandbox/travelsample/shared-contributions/shoppingcart-contribution/src/scatours/shoppingcart/ShoppingCartImpl.java b/sandbox/travelsample/shared-contributions/shoppingcart-contribution/src/scatours/shoppingcart/ShoppingCartImpl.java new file mode 100644 index 0000000000..5b6bc4007c --- /dev/null +++ b/sandbox/travelsample/shared-contributions/shoppingcart-contribution/src/scatours/shoppingcart/ShoppingCartImpl.java @@ -0,0 +1,89 @@ +/* + * 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.shoppingcart; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +import org.osoa.sca.annotations.ConversationID; +import org.osoa.sca.annotations.Destroy; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Reference; + +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; + + +import scatours.common.TripItem; +import scatours.paymentprocess.PaymentProcess; + +/** + * An implementation of the Trip service + */ +@Scope("CONVERSATION") +@Service(interfaces={ShoppingCart.class}) +public class ShoppingCartImpl implements ShoppingCart{ + + // @Reference + // protected PaymentProcess paymentProcess; + + @ConversationID + protected String cartId; + + private List<TripItem> trips = new ArrayList<TripItem>(); + + // Trip methods + + @Init + public void initCart() { + System.out.println("Cart init for id: " + cartId); + } + + @Destroy + public void destroyCart() { + System.out.println("Cart destroy for id: " + cartId); + } + + public void addTrip(TripItem trip) { + trips.add(trip); + } + + public void removeTrip(TripItem trip) { + trips.remove(trip); + } + + public TripItem[] getTrips(){ + return trips.toArray(new TripItem[trips.size()]); + } + + public void checkout(String customerName){ + // get users credentials. Hard coded for now but should + // come from the security context + String customerId = customerName; + + // get the total for all the trips + float amount = (float)0.0; + + //paymentProcess.makePayment(customerId, amount); + } + +} diff --git a/sandbox/travelsample/shared-contributions/travelcatalog-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/travelcatalog-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..286b9c2a05 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/travelcatalog-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <import.java package="scatours.common"/> + <import.java package="scatours.currencyconverter"/> + <export.java package="scatours.travelcatalog"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/travelcatalog-contribution/pom.xml b/sandbox/travelsample/shared-contributions/travelcatalog-contribution/pom.xml new file mode 100644 index 0000000000..c82a50c012 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/travelcatalog-contribution/pom.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-travelcatalog-contribution</artifactId> + <name>Apache Tuscany SCA Tours Travel Catalog Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-common-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-currency-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-tripbooking-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <resources> + <resource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + </excludes> + </resource> + </resources> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/travelcatalog-contribution/src/scatours/travelcatalog/TravelCatalogImpl.java b/sandbox/travelsample/shared-contributions/travelcatalog-contribution/src/scatours/travelcatalog/TravelCatalogImpl.java new file mode 100644 index 0000000000..2369baaff1 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/travelcatalog-contribution/src/scatours/travelcatalog/TravelCatalogImpl.java @@ -0,0 +1,137 @@ +/* + * 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.travelcatalog; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +import org.apache.tuscany.sca.data.collection.Entry; +import org.apache.tuscany.sca.data.collection.NotFoundException; +import org.osoa.sca.CallableReference; +import org.osoa.sca.ComponentContext; +import org.osoa.sca.RequestContext; +import org.osoa.sca.ServiceReference; +import org.osoa.sca.annotations.Context; +import org.osoa.sca.annotations.Property; +import org.osoa.sca.annotations.Reference; +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; + +import scatours.common.Search; +import scatours.common.SearchCallback; +import scatours.common.TripItem; +import scatours.common.TripLeg; +import scatours.currencyconverter.CurrencyConverter; + +/** + * An implementation of the Trip service + */ +@Scope("COMPOSITE") +@Service(interfaces={TravelCatalogSearch.class}) +public class TravelCatalogImpl implements TravelCatalogSearch, SearchCallback{ + + @Reference + protected Search hotelSearch; + + @Reference + protected Search flightSearch; + + @Reference + protected Search carSearch; + + @Reference + protected Search tripSearch; + + @Property + public String quoteCurrencyCode = "USD"; + + @Reference + protected CurrencyConverter currencyConverter; + + @Context + protected ComponentContext componentContext; + + private int responsesReceived = 0; + + private List<TripItem> searchResults = new ArrayList<TripItem>(); + + // TravelSearch methods + + public TripItem[] search(TripLeg tripLeg) { + + searchResults.clear(); + responsesReceived = 0; + + ServiceReference<Search> dynamicHotelSearch = + componentContext.getServiceReference(Search.class, "hotelSearch"); + + dynamicHotelSearch.setCallbackID("HotelSearchCallbackID-" + tripLeg.getId()); + dynamicHotelSearch.getService().searchAsynch(tripLeg); + + flightSearch.searchAsynch(tripLeg); + carSearch.searchAsynch(tripLeg); + tripSearch.searchAsynch(tripLeg); + + while (responsesReceived < 4){ + try { + synchronized (this) { + this.wait(); + } + } catch (InterruptedException ex){ + // do nothing + } + } + + for (TripItem tripItem : searchResults){ + tripItem.setId(UUID.randomUUID().toString()); + tripItem.setTripId(tripLeg.getId()); + tripItem.setPrice(currencyConverter.convert(tripItem.getCurrency(), + quoteCurrencyCode, + tripItem.getPrice())); + tripItem.setCurrency(quoteCurrencyCode); + } + + return searchResults.toArray(new TripItem[searchResults.size()]); + } + + // SearchCallback methods + + public void searchResults(TripItem[] items){ + RequestContext requestContext = componentContext.getRequestContext(); + Object callbackID = requestContext.getServiceReference().getCallbackID(); + System.out.println(callbackID); + + if (items != null) { + for(int i = 0; i < items.length; i++ ){ + searchResults.add(items[i]); + } + } + + responsesReceived++; + try { + synchronized (this) { + this.notifyAll(); + } + } catch (Exception ex) { + } + } +} diff --git a/sandbox/travelsample/shared-contributions/travelcatalog-contribution/src/scatours/travelcatalog/TravelCatalogSearch.java b/sandbox/travelsample/shared-contributions/travelcatalog-contribution/src/scatours/travelcatalog/TravelCatalogSearch.java new file mode 100644 index 0000000000..df22724de2 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/travelcatalog-contribution/src/scatours/travelcatalog/TravelCatalogSearch.java @@ -0,0 +1,32 @@ +/* + * 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.travelcatalog; + +import org.osoa.sca.annotations.Remotable; + +import scatours.common.TripItem; +import scatours.common.TripLeg; + +/** + * The Trip service interface + */ +@Remotable +public interface TravelCatalogSearch { + TripItem[] search(TripLeg tripLeg); +} diff --git a/sandbox/travelsample/shared-contributions/trip-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/trip-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..8a4f6abf02 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/trip-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <import.java package="scatours.common"/> + <export.java package="scatours.trip"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/trip-contribution/pom.xml b/sandbox/travelsample/shared-contributions/trip-contribution/pom.xml new file mode 100644 index 0000000000..e858b5cf1e --- /dev/null +++ b/sandbox/travelsample/shared-contributions/trip-contribution/pom.xml @@ -0,0 +1,76 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-trip-contribution</artifactId> + <name>Apache Tuscany SCA Tours Prepackaged Trip Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-common-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <resources> + <resource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + </excludes> + </resource> + </resources> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/trip-contribution/src/scatours/trip/TripImpl.java b/sandbox/travelsample/shared-contributions/trip-contribution/src/scatours/trip/TripImpl.java new file mode 100644 index 0000000000..9d51c8078b --- /dev/null +++ b/sandbox/travelsample/shared-contributions/trip-contribution/src/scatours/trip/TripImpl.java @@ -0,0 +1,106 @@ +/* + * 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.trip; + +import java.util.ArrayList; +import java.util.List; + +import org.osoa.sca.annotations.Callback; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; + +import scatours.common.Book; +import scatours.common.Search; +import scatours.common.SearchCallback; +import scatours.common.TripItem; +import scatours.common.TripLeg; + +/** + * An implementation of the Hotel service + */ +@Scope("STATELESS") +@Service(interfaces={Search.class, Book.class}) +public class TripImpl implements Search, Book { + + private List<TripInfo> trips = new ArrayList<TripInfo>(); + + @Callback + protected SearchCallback searchCallback; + + @Init + public void init() { + trips.add(new TripInfo("FS1DEC06", + "Florence and Siena pre-packaged tour", + "LGW", + "FLR", + "06/12/09", + "13/12/09", + "27", + 450, + "EUR", + "http://localhost:8085/tbd" )); + trips.add(new TripInfo("FS1DEC13", + "Florence and Siena pre-packaged tour 2", + "LGW", + "FLR", + "13/12/09", + "20/12/09", + "27", + 550, + "EUR", + "http://localhost:8085/tbd" )); + } + + public TripItem[] searchSynch(TripLeg tripLeg) { + List<TripItem> items = new ArrayList<TripItem>(); + + // find the pre-package trip + for(TripInfo trip : trips){ + if ((trip.getFromLocation().equals(tripLeg.getFromLocation())) && + (trip.getToLocation().equals(tripLeg.getToLocation())) && + (trip.getFromDate().equals(tripLeg.getFromDate()))){ + TripItem item = new TripItem("", + "", + TripItem.TRIP, + trip.getName(), + trip.getDescription(), + trip.getFromLocation() + " - " + trip.getToLocation(), + trip.getFromDate(), + trip.getToDate(), + trip.getPricePerPerson(), + trip.getCurrency(), + trip.getLink()); + items.add(item); + } + } + + return items.toArray(new TripItem[items.size()]); + } + + public void searchAsynch(TripLeg tripLeg) { + + // return available hotels + searchCallback.searchResults(searchSynch(tripLeg)); + } + + public String book(TripItem tripItem) { + return "trip1"; + } +} diff --git a/sandbox/travelsample/shared-contributions/trip-contribution/src/scatours/trip/TripInfo.java b/sandbox/travelsample/shared-contributions/trip-contribution/src/scatours/trip/TripInfo.java new file mode 100644 index 0000000000..343a3d2cef --- /dev/null +++ b/sandbox/travelsample/shared-contributions/trip-contribution/src/scatours/trip/TripInfo.java @@ -0,0 +1,142 @@ +/* + * 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.trip; + + +public class TripInfo { + + private String name; + private String description; + private String fromLocation; + private String toLocation; + private String fromDate; + private String toDate; + private String spaces; + private double pricePerPerson; + private String currency; + private String link; + + public TripInfo() { + } + + public TripInfo(String name, + String description, + String fromLocation, + String toLocation, + String fromDate, + String toDate, + String spaces, + double pricePerPerson, + String currency, + String link) { + + + this.name = name; + this.description = description; + this.fromLocation = fromLocation; + this.toLocation = toLocation; + this.fromDate = fromDate; + this.toDate = toDate; + this.spaces = spaces; + this.pricePerPerson = pricePerPerson; + this.currency = currency; + this.link = link; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getFromLocation() { + return fromLocation; + } + + public void setFromLocation(String fromLocation) { + this.fromLocation = fromLocation; + } + + public String getToLocation() { + return toLocation; + } + + public void setToLocation(String toLocation) { + this.toLocation = toLocation; + } + + public String getFromDate() { + return fromDate; + } + + public void setFromDate(String fromDate) { + this.fromDate = fromDate; + } + + public String getToDate() { + return toDate; + } + + public void setToDate(String toDate) { + this.toDate = toDate; + } + + public String getSpaces() { + return spaces; + } + + public void setSpaces(String spaces) { + this.spaces = spaces; + } + + public double getPricePerPerson() { + return pricePerPerson; + } + + public void setPricePerPerson(double pricePerPerson) { + this.pricePerPerson = pricePerPerson; + } + + public String getCurrency() { + return currency; + } + + public void setCurrency(String currency) { + this.currency = currency; + } + + public String getLink() { + return link; + } + + public void setLink(String link) { + this.link = link; + } +}
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/tripbooking-contribution/META-INF/sca-contribution.xml b/sandbox/travelsample/shared-contributions/tripbooking-contribution/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..2accecffaa --- /dev/null +++ b/sandbox/travelsample/shared-contributions/tripbooking-contribution/META-INF/sca-contribution.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"> + <import.java package="scatours.common"/> + <import.java package="scatours.currencyconverter"/> + <import.java package="scatours.shoppingcart"/> + <export.java package="scatours.tripbooking"/> +</contribution>
\ No newline at end of file diff --git a/sandbox/travelsample/shared-contributions/tripbooking-contribution/build.xml b/sandbox/travelsample/shared-contributions/tripbooking-contribution/build.xml new file mode 100644 index 0000000000..b4fbc726cf --- /dev/null +++ b/sandbox/travelsample/shared-contributions/tripbooking-contribution/build.xml @@ -0,0 +1,61 @@ +<!-- + * 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. +--> +<project name="gettingstarted" default="compile"> + <property environment="env"/> + + <target name="compile"> + <mkdir dir="target/classes"/> + <javac srcdir="src" destdir="target/classes" + debug="on" source="1.5" target="1.5"> + <classpath> + <pathelement location="${env.TUSCANY}/lib/tuscany-sca-manifest.jar"/> + </classpath> + </javac> + </target> + + <target name="run"> + <java classname="client.CurrencyConverterClient" fork="true"> + <classpath> + <pathelement path="src"/> + <pathelement path="target/classes"/> + <pathelement location="${env.TUSCANY}/lib/tuscany-sca-manifest.jar"/> + </classpath> + </java> + </target> + + <target name="runtrip"> + <java classname="client.TripClient" fork="true"> + <classpath> + <pathelement path="src"/> + <pathelement path="target/classes"/> + <pathelement location="${env.TUSCANY}/lib/tuscany-sca-manifest.jar"/> + </classpath> + </java> + </target> + + <target name="runtripws"> + <java classname="client.TripWsClient" fork="true"> + <classpath> + <pathelement path="src"/> + <pathelement path="target/classes"/> + <pathelement location="${env.TUSCANY}/lib/tuscany-sca-manifest.jar"/> + </classpath> + </java> + </target> +</project> diff --git a/sandbox/travelsample/shared-contributions/tripbooking-contribution/pom.xml b/sandbox/travelsample/shared-contributions/tripbooking-contribution/pom.xml new file mode 100644 index 0000000000..b0e7b2fef7 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/tripbooking-contribution/pom.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + * 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. +--> +<project> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca</artifactId> + <version>1.5-SNAPSHOT</version> + <!--relativePath>../../pom.xml</relativePath--> + </parent> + <artifactId>scatours-tripbooking-contribution</artifactId> + <name>Apache Tuscany SCA Tours Trip Booking Contribution</name> + + <dependencies> + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-sca-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>tuscany-data-api</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-common-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-currency-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>org.apache.tuscany.sca</groupId> + <artifactId>scatours-shoppingcart-contribution</artifactId> + <version>1.5-SNAPSHOT</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.5</version> + <scope>test</scope> + </dependency> + + </dependencies> + + <build> + <finalName>${artifactId}</finalName> + <sourceDirectory>${basedir}/src</sourceDirectory> + <resources> + <resource> + <directory>${basedir}</directory> + <excludes> + <exclude>**/*.java</exclude> + <exclude>**/.*/**</exclude> + <exclude>pom.xml</exclude> + <exclude>build.xml</exclude> + <exclude>target/**</exclude> + <exclude>src/**</exclude> + </excludes> + </resource> + </resources> + </build> +</project> diff --git a/sandbox/travelsample/shared-contributions/tripbooking-contribution/src/scatours/tripbooking/TripBooking.java b/sandbox/travelsample/shared-contributions/tripbooking-contribution/src/scatours/tripbooking/TripBooking.java new file mode 100644 index 0000000000..2255b29d35 --- /dev/null +++ b/sandbox/travelsample/shared-contributions/tripbooking-contribution/src/scatours/tripbooking/TripBooking.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 scatours.tripbooking; + +import org.osoa.sca.annotations.Conversational; +import org.osoa.sca.annotations.Destroy; +import org.osoa.sca.annotations.EndsConversation; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Remotable; + +import scatours.common.TripItem; + +/** + * The Trip service interface + */ +@Remotable +public interface TripBooking { + + TripItem bookTrip(String cartId, TripItem trip); +} diff --git a/sandbox/travelsample/shared-contributions/tripbooking-contribution/src/scatours/tripbooking/TripBookingImpl.java b/sandbox/travelsample/shared-contributions/tripbooking-contribution/src/scatours/tripbooking/TripBookingImpl.java new file mode 100644 index 0000000000..fd199fd19f --- /dev/null +++ b/sandbox/travelsample/shared-contributions/tripbooking-contribution/src/scatours/tripbooking/TripBookingImpl.java @@ -0,0 +1,147 @@ +/* + * 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.tripbooking; + +import java.util.HashMap; +import java.util.Map; + + +import org.osoa.sca.ComponentContext; +import org.osoa.sca.ServiceReference; +import org.osoa.sca.annotations.Context; +import org.osoa.sca.annotations.ConversationID; +import org.osoa.sca.annotations.Destroy; +import org.osoa.sca.annotations.Init; +import org.osoa.sca.annotations.Reference; + +import org.osoa.sca.annotations.Scope; +import org.osoa.sca.annotations.Service; + + +import scatours.common.Book; +import scatours.common.Search; +import scatours.common.TripItem; +import scatours.shoppingcart.ShoppingCart; + +/** + * An implementation of the Trip service + */ +@Service(interfaces={TripBooking.class}) +public class TripBookingImpl implements TripBooking{ + + @Reference + protected Book hotelBook; + + @Reference + protected Book flightBook; + + @Reference + protected Book carBook; + + @Reference + protected Book tripBook; + + @Reference + protected ShoppingCart shoppingCart; + + @Context + protected ComponentContext componentContext; + + public TripItem bookTrip(String cartId, TripItem trip) { + + String bookingCode = ""; + + // book any nested items + TripItem[] nestedItems = trip.getTripItems(); + if (nestedItems != null){ + for(int i = 0; i < nestedItems.length; i++ ){ + TripItem tripItem = nestedItems[i]; + if (tripItem.getType().equals(TripItem.CAR)){ + tripItem.setBookingCode(carBook.book(tripItem)); + } else if (tripItem.getType().equals(TripItem.FLIGHT)){ + tripItem.setBookingCode(flightBook.book(tripItem)); + } else if (tripItem.getType().equals(TripItem.HOTEL)){ + tripItem.setBookingCode(hotelBook.book(tripItem)); + } else { + tripItem.setBookingCode(tripItem.getType() + " is invalid"); + } + } + } + + // book the top level item if it's a packaged trip + if (trip.getType().equals(TripItem.TRIP)){ + bookingCode = tripBook.book(trip); + trip.setBookingCode(bookingCode); + } + + // add trip to the shopping cart + //ServiceReference<ShoppingCart> cart = componentContext.getServiceReference(ShoppingCart.class, + // "shoppingCart"); + //cart.setConversationID(cartId); + //cart.getService().addTrip(trip); + + return trip; + } + + /* + @ConversationID + protected String conversationId; + + private Map<String, TripItem> tripItems = new HashMap<String, TripItem>(); + + // Trip methods + + @Init + public void initTrip() { + System.out.println("Trip init for id: " + conversationId); + } + + @Destroy + public void destroyTrip() { + System.out.println("Trip destroy for id: " + conversationId); + } + + + public void addTripItem(TripItem tripItem){ + tripItems.put(tripItem.getId(), tripItem); + } + + public void removeTripItem(String id){ + tripItems.remove(id); + } + + public TripItem[] getTripItems() { + return tripItems.values().toArray(new TripItem[tripItems.size()]); + } + + public double getTripPrice(){ + double totalPrice = 0.0; + + for (TripItem tripItem : tripItems.values()){ + totalPrice += tripItem.getPrice(); + } + + return totalPrice; + } + + public void bookTrip() { + // TODO + } + */ +} |