summaryrefslogtreecommitdiffstats
path: root/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java
diff options
context:
space:
mode:
authordims <dims@13f79535-47bb-0310-9956-ffa450edef68>2008-06-17 00:23:01 +0000
committerdims <dims@13f79535-47bb-0310-9956-ffa450edef68>2008-06-17 00:23:01 +0000
commitbdd0a41aed7edf21ec2a65cfa17a86af2ef8c48a (patch)
tree38a92061c0793434c4be189f1d70c3458b6bc41d /branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java
Move Tuscany from Incubator to top level.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@668359 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java')
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/account/AccountServiceComponentImpl.java117
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/AccountLoginServiceImpl.java64
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/LoginService.java36
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/ProfileService.java42
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/ProfileServiceImpl.java69
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/SimpleLoginServiceImpl.java51
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/AccountLogTag.java120
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/AccountStatusTag.java135
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/StockLogTag.java81
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/StockStatusTag.java85
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/sca/LoginBarrierTag.java101
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/sca/ServiceTag.java107
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/ui/FormServlet.java161
-rw-r--r--branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/ui/LoginServlet.java96
14 files changed, 1265 insertions, 0 deletions
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/account/AccountServiceComponentImpl.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/account/AccountServiceComponentImpl.java
new file mode 100644
index 0000000000..a0f98f14f3
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/account/AccountServiceComponentImpl.java
@@ -0,0 +1,117 @@
+/*
+ * 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 bigbank.webclient.services.account;
+
+import java.rmi.RemoteException;
+
+import org.osoa.sca.ServiceUnavailableException;
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+import com.bigbank.account.AccountLog;
+import com.bigbank.account.AccountReport;
+import com.bigbank.account.AccountService;
+import com.bigbank.account.CustomerProfileData;
+import com.bigbank.account.StockSummary;
+
+/**
+ */
+@Service(AccountService.class)
+public class AccountServiceComponentImpl implements AccountService {
+
+ private AccountService accountService;
+
+ @Reference
+ public void setAccountService(AccountService accountService) {
+ this.accountService = accountService;
+ }
+
+ /**
+ *
+ */
+ public AccountServiceComponentImpl() {
+ super();
+ }
+
+ /**
+ * @see bigbank.account.services.account.AccountService#getAccountReport(java.lang.String)
+ */
+ public AccountReport getAccountReport(int customerID) {
+ try {
+ return accountService.getAccountReport(customerID);
+ } catch (Exception e) {
+ throw new ServiceUnavailableException(e);
+ }
+ }
+
+ public StockSummary purchaseStock(int customerID, StockSummary stockSummary) throws RemoteException {
+ try {
+ return accountService.purchaseStock(customerID, stockSummary);
+ } catch (Exception e) {
+ throw new ServiceUnavailableException(e);
+ }
+ }
+
+ public CustomerProfileData getCustomerProfile(String param2) throws RemoteException {
+ try {
+ return accountService.getCustomerProfile(param2);
+ } catch (Exception e) {
+ throw new ServiceUnavailableException(e);
+ }
+ }
+
+ public float deposit(String account, float amount) throws RemoteException {
+ try {
+ return accountService.deposit(account, amount);
+ } catch (Exception e) {
+ throw new ServiceUnavailableException(e);
+ }
+ }
+
+ public StockSummary sellStock(int purchaseLotNumber, int quantity) throws RemoteException {
+ try {
+ return accountService.sellStock(purchaseLotNumber, quantity);
+ } catch (Exception e) {
+ throw new ServiceUnavailableException(e);
+ }
+ }
+
+ public float withdraw(String account, float amount) throws RemoteException {
+ try {
+ return accountService.withdraw(account, amount);
+ } catch (Exception e) {
+ throw new ServiceUnavailableException(e);
+ }
+ }
+
+ public CustomerProfileData createAccount(CustomerProfileData customerProfile, boolean createSavings, boolean createCheckings)
+ throws RemoteException {
+
+ return accountService.createAccount(customerProfile, createSavings, createCheckings);
+ }
+
+ public AccountLog getAccountLog(int customerID) throws RemoteException {
+ try {
+ return accountService.getAccountLog(customerID);
+ } catch (Exception e) {
+ throw new ServiceUnavailableException(e);
+ }
+ }
+
+}
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/AccountLoginServiceImpl.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/AccountLoginServiceImpl.java
new file mode 100644
index 0000000000..d6c40e8dda
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/AccountLoginServiceImpl.java
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package bigbank.webclient.services.profile;
+
+import java.rmi.RemoteException;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+import com.bigbank.account.AccountService;
+import com.bigbank.account.CustomerProfileData;
+
+@Service(LoginService.class)
+@Scope("COMPOSITE")
+public class AccountLoginServiceImpl implements LoginService {
+
+ public AccountService accountService;
+
+ @Reference
+ public void setAccountService(AccountService accountService) {
+ this.accountService = accountService;
+ }
+
+ public ProfileService profileService;
+
+ @Reference
+ public void setProfileService(ProfileService profileService) {
+ this.profileService = profileService;
+ }
+
+ public int login(String userName, String password) throws RemoteException {
+
+ CustomerProfileData profileData = accountService.getCustomerProfile(userName);
+
+ if (!password.equals(profileData.getPassword())) {
+ return INVALID_PASSWORD;
+ }
+
+ profileService.setLoggedIn(true);
+ profileService.setFirstName(profileData.getFirstName());
+ profileService.setLastName(profileData.getLastName());
+ profileService.setId(profileData.getId());
+
+ return SUCCESS;
+ }
+
+}
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/LoginService.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/LoginService.java
new file mode 100644
index 0000000000..c688df2597
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/LoginService.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 bigbank.webclient.services.profile;
+
+import java.rmi.RemoteException;
+
+import org.apache.tuscany.api.annotation.DataType;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface LoginService {
+
+ static final int SUCCESS = 1;
+
+ static final int INVALID_LOGIN = -1;
+
+ static final int INVALID_PASSWORD = -2;
+
+ int login(String userName, String password) throws RemoteException;
+}
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/ProfileService.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/ProfileService.java
new file mode 100644
index 0000000000..551d80c935
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/ProfileService.java
@@ -0,0 +1,42 @@
+/*
+ * 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 bigbank.webclient.services.profile;
+
+import org.apache.tuscany.api.annotation.DataType;
+import org.osoa.sca.annotations.Remotable;
+
+@Remotable
+public interface ProfileService {
+
+ String getFirstName();
+
+ void setFirstName(String pName);
+
+ String getLastName();
+
+ void setLastName(String pName);
+
+ boolean isLoggedIn();
+
+ void setLoggedIn(boolean pStatus);
+
+ int getId();
+
+ void setId(int pId);
+}
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/ProfileServiceImpl.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/ProfileServiceImpl.java
new file mode 100644
index 0000000000..5385a7c3fc
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/ProfileServiceImpl.java
@@ -0,0 +1,69 @@
+/*
+ * 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 bigbank.webclient.services.profile;
+
+import org.osoa.sca.annotations.Property;
+import org.osoa.sca.annotations.Scope;
+import org.osoa.sca.annotations.Service;
+
+@Service(ProfileService.class)
+@Scope("SESSION")
+public class ProfileServiceImpl implements ProfileService {
+
+ private String firstName;
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ @Property
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ private String lastName;
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ private boolean loggedIn;
+
+ public boolean isLoggedIn() {
+ return loggedIn;
+ }
+
+ public void setLoggedIn(boolean status) {
+ loggedIn = status;
+ }
+
+ private int id;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+}
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/SimpleLoginServiceImpl.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/SimpleLoginServiceImpl.java
new file mode 100644
index 0000000000..711c6ba0b9
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/services/profile/SimpleLoginServiceImpl.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package bigbank.webclient.services.profile;
+
+import org.osoa.sca.annotations.Reference;
+import org.osoa.sca.annotations.Service;
+
+@Service(LoginService.class)
+public class SimpleLoginServiceImpl implements LoginService {
+
+ public ProfileService profileService;
+
+ @Reference
+ public void setProfileService(ProfileService profileService) {
+ this.profileService = profileService;
+ }
+
+ public int login(String userName, String password) {
+
+ if (!"test".equals(userName)) {
+ return INVALID_LOGIN;
+ }
+
+ if (!"password".equals(password)) {
+ return INVALID_PASSWORD;
+ }
+
+ profileService.setLoggedIn(true);
+ profileService.setFirstName("John");
+ profileService.setLastName("Doe");
+ profileService.setId(12345);
+
+ return SUCCESS;
+ }
+}
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/AccountLogTag.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/AccountLogTag.java
new file mode 100644
index 0000000000..08751bdc3d
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/AccountLogTag.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 bigbank.webclient.tags.account;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;
+
+import bigbank.webclient.services.profile.ProfileService;
+
+import com.bigbank.account.AccountLog;
+import com.bigbank.account.AccountService;
+
+public class AccountLogTag extends TagSupport {
+
+ public AccountLogTag() {
+ super();
+ }
+
+ private String mAccountService;
+
+ public String getAccountService() {
+ return mAccountService;
+ }
+
+ public void setAccountService(String pAccountService) {
+ mAccountService = pAccountService;
+ }
+
+ private String mProfileService;
+
+ public String getProfileService() {
+ return mProfileService;
+ }
+
+ public void setProfileService(String pProfileService) {
+ mProfileService = pProfileService;
+ }
+
+ private String mId;
+
+ @Override
+ public String getId() {
+ return mId;
+ }
+
+ @Override
+ public void setId(String pId) {
+ mId = pId;
+ }
+
+ private Iterator mIterator;
+
+ @Override
+ public int doStartTag() throws JspException {
+ CompositeContext moduleContext = CurrentCompositeContext.getContext();
+
+ ProfileService profile = moduleContext.locateService(ProfileService.class, mProfileService);
+
+ if (profile == null) {
+ throw new JspException("Profile [" + mProfileService + "] not found in current module context");
+ }
+
+ AccountService service = (AccountService) moduleContext.locateService(AccountService.class, mAccountService);
+ if (service == null) {
+ throw new JspException("Service [" + mAccountService + "] not found in current module context");
+ }
+ List entries;
+ try {
+ AccountLog accountLog = service.getAccountLog(profile.getId());
+ pageContext.setAttribute("StockLogEntries", accountLog.getStockLogEntries());
+ entries = accountLog.getAccountLogEntries();
+ } catch (Exception e) {
+ throw new JspException(e);
+ }
+ mIterator = entries.iterator();
+ if (mIterator.hasNext()) {
+ pageContext.setAttribute(mId, mIterator.next());
+ return EVAL_BODY_INCLUDE;
+ } else {
+ return SKIP_BODY;
+ }
+ }
+
+ @Override
+ public int doAfterBody() {
+ if (mIterator.hasNext()) {
+ pageContext.setAttribute(mId, mIterator.next());
+ return EVAL_BODY_AGAIN;
+ } else {
+ return SKIP_BODY;
+ }
+ }
+
+ @Override
+ public void release() {
+ super.release();
+ }
+}
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/AccountStatusTag.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/AccountStatusTag.java
new file mode 100644
index 0000000000..3733cc84dd
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/AccountStatusTag.java
@@ -0,0 +1,135 @@
+/*
+ * 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 bigbank.webclient.tags.account;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;
+
+import bigbank.webclient.services.profile.ProfileService;
+
+import com.bigbank.account.AccountReport;
+import com.bigbank.account.AccountService;
+
+/**
+ * Retrieves and iterates over account summary information for the current profile by accessing the remotable account service component
+ */
+
+public class AccountStatusTag extends TagSupport {
+
+ // ----------------------------------
+ // Constructors
+ // ----------------------------------
+
+ public AccountStatusTag() {
+ super();
+ }
+
+ // ----------------------------------
+ // Methods
+ // ----------------------------------
+
+ private String mAccountService;
+
+ public String getAccountService() {
+ return mAccountService;
+ }
+
+ public void setAccountService(String pAccountService) {
+ mAccountService = pAccountService;
+ }
+
+ private String mProfileService;
+
+ public String getProfileService() {
+ return mProfileService;
+ }
+
+ public void setProfileService(String pProfileService) {
+ mProfileService = pProfileService;
+ }
+
+ private String mId;
+
+ @Override
+ public String getId() {
+ return mId;
+ }
+
+ @Override
+ public void setId(String pId) {
+ mId = pId;
+ }
+
+ private Iterator mIterator;
+
+ @Override
+ public int doStartTag() throws JspException {
+ CompositeContext moduleContext = CurrentCompositeContext.getContext();
+
+ ProfileService profile = moduleContext.locateService(ProfileService.class, mProfileService);
+
+ if (profile == null) {
+ throw new JspException("Profile [" + mProfileService + "] not found in current module context");
+ }
+
+ AccountService service = (AccountService) moduleContext.locateService(AccountService.class, mAccountService);
+
+ if (service == null) {
+ throw new JspException("Service [" + mAccountService + "] not found in current module context");
+ }
+ List summaries;
+ try {
+ AccountReport accountReport = service.getAccountReport(profile.getId());
+ pageContext.setAttribute("StockSummaries", accountReport.getStockSummaries());
+ summaries = accountReport.getAccountSummaries();
+ } catch (Exception e) {
+ throw new JspException(e);
+ }
+ mIterator = summaries.iterator();
+ if (mIterator.hasNext()) {
+ pageContext.setAttribute(mId, mIterator.next());
+ return EVAL_BODY_INCLUDE;
+ } else {
+ return SKIP_BODY;
+ }
+ }
+
+ @Override
+ public int doAfterBody() {
+ if (mIterator.hasNext()) {
+ pageContext.setAttribute(mId, mIterator.next());
+ return EVAL_BODY_AGAIN;
+ } else {
+ return SKIP_BODY;
+ }
+ }
+
+ @Override
+ public void release() {
+ super.release();
+ mId = null;
+ mIterator = null;
+ }
+} \ No newline at end of file
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/StockLogTag.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/StockLogTag.java
new file mode 100644
index 0000000000..ea2df8aa55
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/StockLogTag.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 bigbank.webclient.tags.account;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+public class StockLogTag extends TagSupport {
+
+ public StockLogTag() {
+ super();
+ }
+
+ private String mId;
+
+ @Override
+ public String getId() {
+ return mId;
+ }
+
+ @Override
+ public void setId(String pId) {
+ mId = pId;
+ }
+
+ private Iterator mIterator;
+
+ @Override
+ public int doStartTag() throws JspException {
+
+ List entries = (List) pageContext.getAttribute("StockLogEntries");
+ if (null == entries) {
+ return SKIP_BODY;
+ }
+ mIterator = entries.iterator();
+ if (mIterator.hasNext()) {
+ pageContext.setAttribute(mId, mIterator.next());
+ return EVAL_BODY_INCLUDE;
+ } else {
+ return SKIP_BODY;
+ }
+ }
+
+ @Override
+ public int doAfterBody() {
+ if (mIterator.hasNext()) {
+ pageContext.setAttribute(mId, mIterator.next());
+ return EVAL_BODY_AGAIN;
+ } else {
+ pageContext.setAttribute("StockLogEntries", null);
+ return SKIP_BODY;
+ }
+ }
+
+ @Override
+ public void release() {
+ pageContext.setAttribute("StockLogEntries", null);
+ super.release();
+ mId = null;
+ mIterator = null;
+ }
+}
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/StockStatusTag.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/StockStatusTag.java
new file mode 100644
index 0000000000..b2c61193e7
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/account/StockStatusTag.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 bigbank.webclient.tags.account;
+
+import java.util.Iterator;
+import java.util.List;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+/**
+ * Retrieves and iterates over account summary information for the current profile by accessing the remotable account service component
+ */
+
+public class StockStatusTag extends TagSupport {
+
+ public StockStatusTag() {
+ super();
+ }
+
+ private String mId;
+
+ @Override
+ public String getId() {
+ return mId;
+ }
+
+ @Override
+ public void setId(String pId) {
+ mId = pId;
+ }
+
+ private Iterator mIterator;
+
+ @Override
+ public int doStartTag() throws JspException {
+
+ List summaries = (List) pageContext.getAttribute("StockSummaries");
+ if (null == summaries) {
+ return SKIP_BODY;
+ }
+ mIterator = summaries.iterator();
+ if (mIterator.hasNext()) {
+ pageContext.setAttribute(mId, mIterator.next());
+ return EVAL_BODY_INCLUDE;
+ } else {
+ return SKIP_BODY;
+ }
+ }
+
+ @Override
+ public int doAfterBody() {
+ if (mIterator.hasNext()) {
+ pageContext.setAttribute(mId, mIterator.next());
+ return EVAL_BODY_AGAIN;
+ } else {
+ pageContext.setAttribute("StockSummaries", null);
+ return SKIP_BODY;
+ }
+ }
+
+ @Override
+ public void release() {
+ pageContext.setAttribute("StockSummaries", null);
+ super.release();
+ mId = null;
+ mIterator = null;
+ }
+} \ No newline at end of file
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/sca/LoginBarrierTag.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/sca/LoginBarrierTag.java
new file mode 100644
index 0000000000..6c50595d0f
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/sca/LoginBarrierTag.java
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package bigbank.webclient.tags.sca;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;
+
+import bigbank.webclient.services.profile.ProfileService;
+
+public class LoginBarrierTag extends TagSupport {
+
+ public LoginBarrierTag() {
+ super();
+ }
+
+ private String mProfile;
+
+ public String getProfile() {
+ return mProfile;
+ }
+
+ public void setProfile(String pProfile) {
+ mProfile = pProfile;
+ }
+
+ private String mUrl;
+
+ public String getUrl() {
+ return mUrl;
+ }
+
+ public void setUrl(String pUrl) {
+ mUrl = pUrl;
+ }
+
+ int doPage = EVAL_PAGE;
+
+ @Override
+ public int doStartTag() throws JspException {
+ if (mProfile == null || mProfile.length() < 1) {
+ throw new JspException("Invalid profile location specified");
+ }
+
+ CompositeContext moduleContext = CurrentCompositeContext.getContext();
+
+ ProfileService profile = moduleContext.locateService(ProfileService.class, mProfile);
+
+ if (profile == null) {
+ throw new JspException("Profile [" + mProfile + "] not found in current module context");
+ }
+
+ if (profile.isLoggedIn()) {
+ return EVAL_BODY_INCLUDE;
+ } else {
+ try {
+ doPage = SKIP_PAGE;
+ pageContext.forward(mUrl);
+ ((HttpServletResponse) (pageContext.getResponse())).sendRedirect("login.html");
+ return SKIP_BODY;
+ } catch (ServletException e) {
+ throw new JspException("Unable to forward to [" + mUrl + "]");
+ } catch (IOException e) {
+ throw new JspException("Unable to forward to [" + mUrl + "]");
+ }
+ }
+ }
+
+ @Override
+ public int doEndTag() throws JspException {
+ return doPage;
+ }
+
+ @Override
+ public void release() {
+ super.release();
+ }
+
+}
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/sca/ServiceTag.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/sca/ServiceTag.java
new file mode 100644
index 0000000000..d1263377c2
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/tags/sca/ServiceTag.java
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package bigbank.webclient.tags.sca;
+
+import javax.servlet.jsp.JspException;
+import javax.servlet.jsp.tagext.TagSupport;
+
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;
+
+/**
+ * Places an SCA service in the JSP page context, making it available to other tags corresponding to its id value.
+ */
+
+public class ServiceTag extends TagSupport {
+
+ // ----------------------------------
+ // Constructors
+ // ----------------------------------
+
+ public ServiceTag() {
+ super();
+ }
+
+ // ----------------------------------
+ // Methods
+ // ----------------------------------
+
+ private String mName;
+
+ /**
+ * Returns the name of the SCA service to import into the page context.
+ */
+ public String getName() {
+ return mName;
+ }
+
+ /**
+ * Sets name of the SCA service to import into the page context.
+ */
+ public void setName(String pName) {
+ mName = pName;
+ }
+
+ private String mId;
+
+ /**
+ * Returns the id of the service in the page context
+ */
+ @Override
+ public String getId() {
+ return mId;
+ }
+
+ /**
+ * Sets the id of the service for the page context
+ */
+
+ @Override
+ public void setId(String pId) {
+ mId = pId;
+ }
+
+ @Override
+ public int doStartTag() throws JspException {
+ CompositeContext moduleContext = CurrentCompositeContext.getContext();
+
+ Object service = moduleContext.locateService(Object.class, mName);
+
+ if (service == null) {
+ throw new JspException("Service [" + mName + "] not found in current module context");
+ }
+ if (mId == null) {
+ // if the Id name was not specified, default to the basic name of the
+ // service
+ mId = mName;
+ }
+ pageContext.setAttribute(mId, service);
+ return EVAL_BODY_INCLUDE;
+ }
+
+ @Override
+ public int doEndTag() throws JspException {
+ return EVAL_PAGE;
+ }
+
+ @Override
+ public void release() {
+ super.release();
+ }
+} \ No newline at end of file
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/ui/FormServlet.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/ui/FormServlet.java
new file mode 100644
index 0000000000..3acdbee845
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/ui/FormServlet.java
@@ -0,0 +1,161 @@
+/*
+ * 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 bigbank.webclient.ui;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;
+
+import bigbank.webclient.services.profile.ProfileService;
+
+import com.bigbank.account.AccountFactory;
+import com.bigbank.account.AccountService;
+import com.bigbank.account.CustomerProfileData;
+import com.bigbank.account.StockSummary;
+
+public class FormServlet extends HttpServlet {
+
+ // private ServletContext mContext;
+ // public void init(ServletConfig pCfg) throws ServletException {
+ // mContext = pCfg.getServletContext();
+ // }
+
+ @Override
+ public void doPost(HttpServletRequest pReq, HttpServletResponse pResp) throws ServletException {
+
+ try {
+ final String action = pReq.getParameter("action");
+
+ CompositeContext moduleContext = CurrentCompositeContext.getContext();
+ AccountService accountServices = (AccountService) moduleContext.locateService(AccountService.class, "AccountServiceComponent");
+ if (accountServices == null) {
+ throw new ServletException("AccountServiceComponent");
+ }
+ ProfileService profileServices = null;
+ if (!"createAccount".equals(action)) {
+ profileServices = moduleContext.locateService(ProfileService.class, "ProfileServiceComponent");
+ if (profileServices == null) {
+ throw new ServletException("ProfileServiceComponent not found.");
+ }
+ if (!profileServices.isLoggedIn()) {
+ throw new ServletException("User id '" + profileServices.getId() + "' not logged on.");
+ }
+ }
+
+ if ("createAccount".equals(action)) {
+ createAccount(pReq, pResp, accountServices);
+ } else if ("account".equals(action)) {
+ accountTransaction(pReq, pResp, accountServices);
+ } else if ("stockPurchase".equals(action)) {
+ stockPurchase(pReq, pResp, profileServices, accountServices);
+ } else if ("stockSale".equals(action)) {
+ stockSale(pReq, pResp, profileServices, accountServices);
+ } else {
+ throw new IllegalArgumentException("Unknown action in Form servlet '" + action + "'.");
+ }
+ // mContext.getRequestDispatcher("summary.jsp").forward(pReq, pResp);
+ pResp.sendRedirect("summary.jsp");
+ } catch (ServletException e) {
+ e.printStackTrace();
+ throw e;
+
+ } catch (Exception e) {
+
+ throw new ServletException(e);
+ }
+
+ }
+
+ private void stockSale(HttpServletRequest req, HttpServletResponse resp, ProfileService profileServices, AccountService accountServices)
+ throws ServletException {
+ try {
+ if (!"cancel".equals(req.getParameter("cancel"))) {
+
+ int quantity = Integer.parseInt(req.getParameter("quantity"));
+ int purchaseLotNumber = Integer.parseInt(req.getParameter("purchaseLotNumber"));
+ accountServices.sellStock(purchaseLotNumber, quantity);
+ }
+
+ } catch (Exception e) {
+
+ throw new ServletException("stockSale " + e.getMessage(), e);
+ }
+
+ }
+
+ private void stockPurchase(HttpServletRequest req, HttpServletResponse resp, ProfileService profileServices, AccountService accountServices)
+ throws ServletException {
+ try {
+ if (!"cancel".equals(req.getParameter("cancel"))) {
+
+ String symbol = req.getParameter("symbol").trim().toUpperCase();
+ int quantity = Integer.parseInt(req.getParameter("quantity"));
+ StockSummary stockSummry = AccountFactory.INSTANCE.createStockSummary();
+ stockSummry.setSymbol(symbol);
+ stockSummry.setQuantity(quantity);
+ accountServices.purchaseStock(profileServices.getId(), stockSummry);
+ }
+ } catch (Exception e) {
+ throw new ServletException("stockPurchase " + e.getMessage(), e);
+ }
+ }
+
+ private void accountTransaction(HttpServletRequest req, HttpServletResponse resp, AccountService accountServices) throws ServletException {
+ try {
+ if (!"cancel".equals(req.getParameter("cancel"))) {
+ String account = req.getParameter("account");
+ String amount = req.getParameter("Amount");
+ if ("deposit".equals(req.getParameter("actionType"))) {
+ accountServices.deposit(account, Float.parseFloat(amount));
+ } else {
+ accountServices.withdraw(account, Float.parseFloat(amount));
+ }
+ }
+ } catch (Exception e) {
+ throw new ServletException("accountTransaction " + e.getMessage(), e);
+ }
+
+ }
+
+ private void createAccount(HttpServletRequest pReq, HttpServletResponse pResp, AccountService accountServices) throws ServletException {
+ try {
+ CustomerProfileData customerProfileData = AccountFactory.INSTANCE.createCustomerProfileData();
+ customerProfileData.setFirstName(pReq.getParameter("firstName"));
+ customerProfileData.setLastName(pReq.getParameter("lastName"));
+ customerProfileData.setAddress(pReq.getParameter("address"));
+ customerProfileData.setEmail(pReq.getParameter("email"));
+ customerProfileData.setLoginID(pReq.getParameter("loginID"));
+ customerProfileData.setPassword(pReq.getParameter("password"));
+
+ CustomerProfileData resp = accountServices.createAccount(customerProfileData, "savings".equals(pReq.getParameter("savings")), "checkings"
+ .equals(pReq.getParameter("checkings")));
+ LoginServlet.login(resp.getLoginID(), resp.getPassword());
+
+ } catch (IOException e) {
+ throw new ServletException(e);
+ }
+
+ }
+}
diff --git a/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/ui/LoginServlet.java b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/ui/LoginServlet.java
new file mode 100644
index 0000000000..784cc4fb40
--- /dev/null
+++ b/branches/sca-java-0.99/samples/old/bigbank/webclient/src/main/java/bigbank/webclient/ui/LoginServlet.java
@@ -0,0 +1,96 @@
+/*
+ * 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 bigbank.webclient.ui;
+
+import java.io.IOException;
+import java.rmi.RemoteException;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.osoa.sca.CompositeContext;
+import org.osoa.sca.CurrentCompositeContext;
+
+import bigbank.webclient.services.profile.LoginService;
+
+public class LoginServlet extends HttpServlet {
+
+ @Override
+ public void init(ServletConfig pCfg) throws ServletException {
+
+ }
+
+ @Override
+ public void doPost(HttpServletRequest pReq, HttpServletResponse pResp) throws ServletException {
+
+ if ("logout".equals(pReq.getParameter("logout")) || "logoutHIDDEN".equals(pReq.getParameter("logoutHIDDEN"))) {
+ HttpSession sess = pReq.getSession();
+ if (sess != null) {
+ sess.invalidate();
+ }
+ try {
+ pResp.sendRedirect("login.html");
+ } catch (IOException e) {
+
+ e.printStackTrace();
+ throw new ServletException(e);
+ }
+
+ } else {
+ pReq.getSession(); // make sure session started.
+ String login = pReq.getParameter("login");
+ String password = pReq.getParameter("password");
+ try {
+ int resp = login(login, password);
+ if (resp == LoginService.SUCCESS) {
+
+ pResp.sendRedirect("summary.jsp");
+ } else {
+
+ pResp.sendRedirect("login.html");
+ }
+ } catch (IOException e) {
+ throw new ServletException(e);
+ }
+ }
+ }
+
+ static int login(final String login, final String password) throws ServletException {
+
+ CompositeContext moduleContext = CurrentCompositeContext.getContext();
+ LoginService loginMgr = moduleContext.locateService(LoginService.class, "LoginServiceComponent");
+
+ if (loginMgr == null) {
+ throw new ServletException("LoginManager not found");
+ }
+
+ try {
+ return loginMgr.login(login, password);
+ } catch (RemoteException e) {
+
+ throw new ServletException(e);
+ }
+
+ }
+
+}