diff --git a/ARCHITECTURE-README.md b/ARCHITECTURE-README.md new file mode 100644 index 0000000..372f9eb --- /dev/null +++ b/ARCHITECTURE-README.md @@ -0,0 +1,688 @@ +# eCommerce Application - Architectural Discovery Report + +## Executive Summary + +The **eCommerce** application is a comprehensive Java-based e-commerce platform built on Apache Struts 2 framework. This report provides an architectural overview to help new team members understand the application's structure, technologies, and key components. + +**Key Statistics:** +- **Lines of Code:** 136,828 +- **Total Components:** 12,051 elements +- **Interactions:** 72,471 +- **Last Analysis:** June 23, 2025 +- **API/UI Endpoints:** 275 transactions +- **Data Entity Networks:** 60 data graphs + +--- + +## Technology Stack + +### Core Technologies +- **Java** - Primary programming language +- **Apache Struts 2.2.1.1** - MVC Web Framework +- **Hibernate** - ORM framework for database operations +- **Spring Framework** - Dependency injection and enterprise services +- **JPA** - Java Persistence API + +### Frontend Technologies +- **JavaScript** - Client-side scripting +- **jQuery** - JavaScript library +- **JSP (Java Server Pages)** - Server-side templating +- **Apache Tiles** - Layout composition framework +- **Direct Web Remoting (DWR)** - AJAX library for Java + +### Communication & Integration +- **Java Servlet** - HTTP request handling +- **Java SOAP** - Web services +- **HTML** - Markup + +### Database +- **MySQL** - Primary relational database +- **Oracle** - Alternative database support +- **ANSI SQL** - Standard SQL queries + +--- + +## Architectural Overview + +### High-Level Architecture (Component Level) + +The application follows a layered architecture pattern with 6 main architectural components: + +| Component | Elements | Description | +|-----------|----------|-------------| +| **Web Interaction** | 715 | User interface layer handling HTTP requests and responses | +| **Logic Services** | 1,928 | Business logic and application services | +| **Communication Services** | 302 | Integration and communication handling | +| **Database Services** | 111 | Data persistence and retrieval | +| **Screen Interaction** | 10 | UI component interactions | +| **Output Services** | 4 | Report generation and output formatting | + +### Detailed Architecture (Sub-Component Level) + +The application's architecture is further divided into 12 specialized sub-components: + +#### Presentation Layer +- **Web Presentation** (378 elements) - User interface components +- **Rich Client Presentation** (10 elements) - Enhanced client interactions +- **Web Coordination** (270 elements) - Request orchestration and flow control +- **Web Communication** (67 elements) - HTTP communication handling + +#### Business Logic Layer +- **Business Logic** (1,674 elements) - Core business rules and processing +- **Business Logic Communication** (204 elements) - Service-to-service communication +- **Business Process Services** (16 elements) - Workflow and process orchestration + +#### Integration Layer +- **Exposed API** (286 elements) - External service endpoints + +#### Data Layer +- **Data Access Services** (156 elements) - Database access and ORM +- **RDBMS Services** (95 elements) - Relational database operations +- **NoSQL Services** (16 elements) - Non-relational data storage + +#### Reporting Layer +- **Reporting Services** (4 elements) - Report generation capabilities + +--- + +## Key Functional Areas + +### 1. Transaction Endpoints (API/UI) + +The application exposes **275 transaction endpoints** organized into several functional domains: + +#### E-commerce Core Operations +- **Product Management** + - Product catalog browsing + - Product details and descriptions + - Product search and filtering + +- **Shopping Cart Operations** + - Add to cart (`/addToCart`) + - Show cart (`/showCart`) + - Cart properties management + - Mini shopping cart display + +- **Checkout Process** + - Local checkout (`/checkoutLocal`) + - Remote checkout (`/checkoutRemote`) + - Order processing (`/ProcessOrder!processOrder`) + - Order summary display (`/summary`) + - Invoice generation (`/displayInvoiceConfirmation`) + +- **Payment Processing** + - PayPal Express Checkout integration + - Invoice payment initialization + - Multiple payment method support (Authorize.net, Beanstream) + +#### Customer Management +- **Authentication & Authorization** + - Customer login/logout (`/AuthenticateCustomer!logon`, `/AuthenticateCustomer!logout`) + - Remote logon support + - Password reset functionality + - Customer information management + +- **Customer Profile** + - Address management + - Customer information updates + - Billing information + +#### Administration & Configuration +- **Store Management** + - Store front configuration + - Store pages management + - Content management + - Portlet configuration + +- **Catalog Administration** + - Category management (`CategoryListAction`) + - Product relationship management (cross-sell, featured items) + - Product attributes and options + - Image management + - Discount management + +- **Shipping Configuration** + - Shipping modules management + - Custom shipping rates + - Zone configuration + - Canada Post integration + +- **Payment Configuration** + - Payment method management + - Payment module configuration + - Module enable/disable operations + +- **Order Management** + - Order listing and reporting + - Invoice management + - Order details viewing + +#### Integration & Advanced Features +- **Facebook Integration** + - Facebook page display (`/FbPage!display`) + - Facebook portlet configuration + +- **File Management** + - File upload functionality + - Digital product downloads + - File viewing and access control + +- **Content Management** + - Page content management + - Dynamic content updates + - Portlet configuration + +#### Technology-Specific Endpoints +- **jQuery AJAX Operations** - Interactive client-side features +- **DWR (Direct Web Remoting)** - Real-time updates (e.g., `AddProduct.calculate`) +- **JSP Pages** - Server-rendered views (82+ JSP templates) + +### 2. Data Entity Networks + +The application manages **60 data entity interaction networks** representing complex data flows: + +#### Core Database Tables + +**Product Management:** +- `PRODUCTS` (975 interactions) - Central product catalog +- `PRODUCTS_DESCRIPTION` (823 interactions) - Multi-language product descriptions +- `PRODUCTS_ATTRIBUTES` (840 interactions) - Product variants and options +- `PRODUCTS_PRICE` (809 interactions) - Pricing information +- `PRODUCTS_PRICE_SPECIALS` (806 interactions) - Special pricing and discounts +- `PRODUCTS_OPTIONS` (196 interactions) - Configurable product options +- `PRODUCTS_OPTIONS_VALUES` (193 interactions) - Option value definitions +- `PRODUCTS_ATTRIBUTES_DOWNLOAD` (816 interactions) - Downloadable products +- `PRODUCT_RELATIONSHIP` (852 interactions) - Cross-sell and related products + +**Category Management:** +- `CATEGORIES` (889 interactions) - Product categorization +- `CATEGORIES_DESCRIPTION` (832 interactions) - Multi-language category descriptions + +**Customer Management:** +- `CUSTOMERS` (890 interactions) - Customer accounts +- `CUSTOMERS_INFO` (848 interactions) - Extended customer information + +**Order Management:** +- `ORDERS` (870 interactions) - Order records +- `ORDERS_PRODUCTS` (812 interactions) - Order line items +- `ORDERS_PRODUCTS_ATTRIBUTES` (810 interactions) - Ordered product variants +- `ORDERS_PRODUCTS_PRICES` (810 interactions) - Historical pricing +- `ORDERS_PRODUCTS_DOWNLOAD` (823 interactions) - Digital product orders +- `ORDERS_TOTAL` (811 interactions) - Order totals and summaries +- `ORDERS_ACCOUNT` (819 interactions) - Account-based orders +- `ORDERS_ACCOUNT_PRODUCTS` (819 interactions) - Account order details + +**Merchant & Store Configuration:** +- `MERCHANT_STORE` (1,030 interactions) - Store configuration +- `MERCHANT_CONFIGURATION` (999 interactions) - Store settings +- `MERCHANT_USER_INFORMATION` (861 interactions) - Admin user profiles +- `MERCHANT_USER_ROLE` (830 interactions) - Role-based access control +- `MERCHANT_REGISTRATION` (804 interactions) - Merchant registration +- `MERCHANT_ID` (801 interactions) - Merchant identifiers +- `MERCHANT_PAYMENT_GATEWAY_TRX` (835 interactions) - Payment transactions + +**Configuration & Reference Data:** +- `COUNTRIES` (860 interactions) - Country reference data +- `ZONES` (817 interactions) - Geographic zones +- `GEO_ZONES` (814 interactions) - Geographic zone definitions +- `ZONES_TO_GEO_ZONES` (812 interactions) - Zone mappings +- `LANGUAGES` (808 interactions) - Multi-language support +- `CURRENCIES` (803 interactions) - Currency definitions +- `TAX_CLASS` (818 interactions) - Tax classifications +- `TAX_RATES` (852 interactions) - Tax rate definitions +- `TAX_RATES_DESCRIPTION` (814 interactions) - Tax rate descriptions + +**Module Configuration:** +- `MODULE_CONFIGURATION` (890 interactions) - Module settings +- `CORE_MODULES_SERVICES` (870 interactions) - Service configurations + +**Content Management:** +- `PAGE` (854 interactions) - Content pages (MySQL & Oracle) +- `PORTLET` (872 interactions) - Portlet definitions (MySQL & Oracle) +- `DYNAMIC_LABEL` (937 interactions) - Dynamic labels +- `DYNAMIC_LABEL_DESCRIPTION` (862 interactions) - Label descriptions + +**Product Reviews:** +- `REVIEWS` (815 interactions) - Customer reviews +- `REVIEWS_DESCRIPTION` (811 interactions) - Review content +- `SPECIALS` (804 interactions) - Special offers + +**Other Tables:** +- `CENTRAL_CREDIT_CARDS` (818 interactions) +- `CENTRAL_MEASURE_UNITS` (803 interactions) +- `CENTRAL_SEQUENCER` (798 interactions) + +#### Data Flow Patterns + +**Example: CATEGORIES Table Data Graph (889 total interactions)** + +The CATEGORIES table demonstrates complex data interaction patterns: + +**Node Types Involved:** +- 2 JQuery selectors (2 start/end points) +- 167 Struts Actions +- 186 Struts Operations +- 4 JPA Entity Operations +- 6 DWR Methods with 6 CallTo Methods +- 304 Java Methods +- 39 JavaScript functions +- 82 JSP Pages +- 2 JavaScript Files +- 87 Apache Tiles Definitions +- 1 SOAP Java Operation + +**Interaction Patterns:** +- Delete operations: MySQL Table → JPA Entity Operation (4 operations) +- Insert operations: MySQL Table → Java Method (5 operations) +- Call chains: JPA → Java Methods → Struts Actions → JSP Pages +- UI rendering: Struts Operations → JSP Pages → Apache Tiles +- AJAX calls: DWR Methods → JavaScript functions → JQuery selectors +- Presentation flow: JSP Pages reference Apache Tiles (70 references) + +This illustrates the multi-layered architecture from database to UI, showing how data flows through: +1. **Data Layer** (MySQL/JPA) +2. **Service Layer** (Java Methods) +3. **Controller Layer** (Struts Actions/Operations) +4. **Presentation Layer** (JSP/Tiles) +5. **Client Layer** (JavaScript/jQuery/DWR) + +--- + +## External Dependencies + +The application relies on **23 third-party packages**: + +### Core Framework Dependencies +| Package | Version | Objects Used | Purpose | +|---------|---------|--------------|---------| +| org.apache.struts:struts2-core | 2.2.1.1 | 147 objects, 490 uses | Primary MVC framework | +| org.apache.struts.xwork:xwork-core | 2.2.1.1 | 56 objects, 246 uses | Struts dependency | +| org.apache.tomcat:servlet-api | 6.0.13 | 119 objects, 945 uses | Servlet container API | +| org.apache.tiles:tiles-api | 2.0.6 | 13 objects, 10 uses | Layout framework API | +| org.apache.tiles:tiles-jsp | 2.0.6 | 13 objects, 10 uses | Tiles JSP integration | + +### Utility Libraries +| Package | Version | Objects Used | Purpose | +|---------|---------|--------------|---------| +| commons-logging:commons-logging | 1.0.4 | 4 objects, 500 uses | Logging abstraction | +| commons-lang:commons-lang | 2.3 | 11 objects, 415 uses | Common utilities | +| commons-configuration:commons-configuration | 1.4 | 23 objects, 173 uses | Configuration management | +| commons-beanutils:commons-beanutils | 1.7.0 | 3 objects, 7 uses | Bean manipulation | +| commons-collections:commons-collections | 3.2 | 5 objects, 4 uses | Collection utilities | +| commons-codec:commons-codec | 1.4 | 3 objects, 2 uses | Encoding/decoding | +| commons-httpclient:commons-httpclient | 3.1 | 26 objects, 20 uses | HTTP client | +| commons-validator:commons-validator | 1.3.1 | 4 objects, 6 uses | Data validation | +| commons-digester:commons-digester | 2.0 | 8 objects, 18 uses | XML to Java object mapping | + +### Integration & Communication +| Package | Version | Objects Used | Purpose | +|---------|---------|--------------|---------| +| uk.ltd.getahead:dwr | 1.1-beta-3 | 7 objects, 48 uses | AJAX library | +| org.apache.axis:axis | 1.4 | 2 objects, 4 uses | SOAP web services | +| org.codehaus.jackson:jackson-core-lgpl | 1.6.2 | 2 objects, 4 uses | JSON processing | +| org.codehaus.jackson:jackson-mapper-lgpl | 1.6.2 | 2 objects, 4 uses | JSON object mapping | + +### Template & Rendering +| Package | Version | Objects Used | Purpose | +|---------|---------|--------------|---------| +| jstl:jstl | 1.1.0 | 19 objects, 5 uses | JSP Standard Tag Library | +| org.freemarker:freemarker | 2.3.16 | 5 objects, 11 uses | Template engine | +| org.xhtmlrenderer:core-renderer | R8 | 5 objects, 2 uses | XHTML rendering | + +### Search & Indexing +| Package | Version | Objects Used | Purpose | +|---------|---------|--------------|---------| +| org.apache.lucene:lucene-core | 2.3.0 | 13 objects, 5 uses | Full-text search | + +--- + +## Data Sensitivity & Security + +### Data Classification +The application handles **Sensitive Data** including: +- Customer personal information +- Payment details +- Order history +- Authentication credentials +- Merchant configuration data + +### Security Vulnerabilities (CVE Analysis) + +⚠️ **CRITICAL SECURITY CONCERN**: The application has **104 known CVE vulnerabilities** that require immediate attention. + +#### Severity Distribution +- **CRITICAL**: 13 vulnerabilities +- **HIGH**: 45 vulnerabilities +- **MEDIUM**: 44 vulnerabilities +- **LOW**: 2 vulnerabilities + +#### High-Priority Vulnerabilities by Component + +**Apache Struts 2 Framework (Most Critical)** +- **CVE-2017-12611** (CRITICAL) - Remote code execution via unintended expression evaluation +- **CVE-2020-17530** (CRITICAL) - Forced OGNL evaluation leading to RCE +- **CVE-2016-4436** (CRITICAL) - Unspecified remote code execution +- **CVE-2016-3082** (CRITICAL) - XSLTResult RCE vulnerability +- **CVE-2013-2134/2135** (CRITICAL) - OGNL code execution via request parameters +- **CVE-2012-0838** (CRITICAL) - OGNL expression evaluation vulnerability +- **CVE-2019-0230** (CRITICAL) - Forced double OGNL evaluation +- **CVE-2018-11776** (HIGH) - Remote code execution when namespace not set + +**Spring Framework** +- **CVE-2022-22965** (CRITICAL - "Spring4Shell") - Remote code execution on JDK 9+ +- **CVE-2018-1270** (CRITICAL) - Remote code execution via Spring Messaging +- **CVE-2016-1000027** (CRITICAL) - Potential RCE issue + +**Apache Commons** +- **CVE-2015-7501** (CRITICAL) - Apache Commons Collections deserialization RCE +- **CVE-2016-1000031** (CRITICAL) - FileUpload DiskFileItem RCE +- **CVE-2014-0114** (HIGH) - BeanUtils class loader manipulation +- **CVE-2019-10086** (HIGH) - BeanIntrospector access control vulnerability + +**XML Processing Libraries** +- **CVE-2020-10683** (CRITICAL) - dom4j external entity vulnerability +- **CVE-2018-1000632** (HIGH) - dom4j XML injection + +**Apache Axis (SOAP)** +- **CVE-2023-40743** (CRITICAL) - Unsupported, critical vulnerability +- **CVE-2019-0227** (HIGH) - Server-Side Request Forgery (SSRF) + +#### Recommendations +1. **URGENT**: Upgrade Apache Struts to version 2.5.33 or later (current: 2.2.1.1) +2. **URGENT**: Upgrade Spring Framework to latest secure version (5.3.x or 6.x series) +3. **HIGH**: Update all Apache Commons libraries to latest versions +4. **HIGH**: Replace Apache Axis 1.4 with modern alternatives (Axis2, CXF, or REST) +5. **MEDIUM**: Update all third-party dependencies to latest stable versions +6. Implement web application firewall (WAF) rules +7. Conduct security code review focused on OGNL expression handling +8. Enable security features in Struts configuration (strict method invocation, etc.) + +--- + +## Inter-Application Dependencies + +The eCommerce application has dependencies with **7 other applications**: + +### Inbound Dependencies (Applications calling eCommerce) +- **Shopizer115**: 470 calls - Major integration partner +- **EcommerceApp**: 92 calls - Related e-commerce functionality + +### Outbound Dependencies (eCommerce calling other apps) +- **Shopizer115**: 470 calls - Reciprocal integration +- **EcommerceApp**: 92 calls - Reciprocal integration +- **ShopizerApp**: 57 calls - Related Shopizer services +- **ThingsBoard**: 10 calls - IoT/telemetry integration +- **eShop**: 4 calls - E-commerce platform integration +- **GrandNode**: 2 calls - Alternative e-commerce platform + +**Note**: The strong bidirectional relationship with Shopizer115 (470 calls in each direction) suggests this may be a modularized deployment or shared codebase scenario. + +--- + +## Example Transaction Flow + +### Shopping Cart "Add to Cart" Transaction (ID: 335335) + +This transaction demonstrates a typical user operation flow with **1,044 total interactions**: + +#### Technology Stack Used +- Apache Struts (request handling) +- Hibernate (persistence) +- Java (business logic) +- JSP (view rendering) +- Spring (dependency injection) +- SQL (data access) + +#### Component Interaction Pattern + +**Node Types:** +- 1 Struts Operation (entry point: `/addToCart`) +- 6 Struts Actions (action handlers) +- 70 Java Methods (business logic) +- 10 MySQL Tables (data persistence) +- 7 JPA Entity Operations (ORM operations) +- 1 Java Class (domain models) + +**Interaction Flow:** +1. **Entry Point**: Struts Operation receives HTTP POST request +2. **Controller Layer**: Struts Operation → Java Method (depth 0) +3. **Service Layer**: Java Method → Java Method calls (up to depth 10) +4. **Data Access Layer**: + - Java Method → JPA Entity Operation (depth 0-11) + - JPA Entity Operation → MySQL Table (SELECT operations) + - Java Method → MySQL Table (direct SELECT queries) +5. **Presentation Layer**: Java Method → Struts Action → JSP rendering +6. **Model Layer**: Java Method → Java Class references + +This pattern demonstrates the clean separation of concerns in the MVC architecture, with request flowing from controller through service layer to data access, then back up through presentation. + +--- + +## Code Organization + +### Element Types Distribution + +The application contains diverse element types showing a rich architecture: + +**Backend Components:** +- **Java Method**: Core business logic implementation +- **Java Class**: Object-oriented design +- **Java Constructor/Initializer**: Object lifecycle management +- **Java Interface**: Contract definitions +- **Java Enum/Enum Item**: Type-safe constants +- **Generic Java Method/Class/Interface**: Parameterized types + +**Web Framework Components:** +- **Struts Operation**: URL-mapped actions +- **Struts Action**: Request handlers +- **Servlet**: HTTP request processing +- **Servlet Get/Post Operation**: HTTP method handlers +- **Servlet Mapping**: URL routing + +**Frontend Components:** +- **JSP Pages**: Server-side templates (82+ pages) +- **JavaScript function**: Client-side logic +- **JavaScript Files**: Organized JS modules +- **JavaScript HttpRequest Get/Post Service**: AJAX services +- **JQuery POST resource service**: RESTful AJAX +- **JQuery selector**: DOM manipulation +- **HTML Pages**: Static content +- **DWR Method/CallTo Method**: Remote procedure calls +- **Apache Tiles Definition**: Layout templates + +**Data Access Components:** +- **MySQL Table**: Relational data structures +- **Oracle Table**: Alternative RDBMS support +- **Oracle SQL Script**: Database scripts +- **JPA Entity**: ORM-mapped domain objects +- **JPA Entity Operation**: CRUD operations +- **JPA Unknown SQL Query**: Dynamic queries + +**Enterprise Components:** +- **J2EE Scoped Bean**: Enterprise beans +- **Spring Bean**: Spring-managed components +- **SOAP Java Operation**: Web service endpoints +- **Java Post/Get Resource Service**: RESTful services + +--- + +## Interaction Types + +The application uses **38 different interaction patterns**: + +### Core Programming Interactions +- **CALL**: Method/function invocations +- **INSTANTIATE**: Object creation +- **IMPLEMENT/EXTEND**: OOP inheritance +- **OVERRIDE**: Method overriding +- **INHERIT**: Inheritance relationships + +### Data Operations +- **SELECT**: Read operations +- **INSERT**: Create operations +- **UPDATE**: Modify operations +- **DELETE**: Remove operations +- **READ/WRITE**: File I/O + +### Execution Flow +- **GOTO**: Control flow +- **THROW/CATCH**: Exception handling +- **RAISE**: Event triggering +- **FIRE**: Event firing +- **PERFORM**: Action execution + +### Web & UI Interactions +- **PAGE_FORWARD**: JSP forwarding +- **PAGE_INCLUDE**: JSP inclusion +- **GET/POST**: HTTP methods +- **OPEN/CLOSE**: Resource management +- **INCLUDE**: Template inclusion + +### Component Relationships +- **USE**: Component usage +- **REFER**: Reference relationships +- **RELY_ON**: Dependency relationships +- **MENTION**: Code references +- **DEFINE**: Definition relationships + +### Special Interactions +- **PROTOTYPE**: JavaScript prototypes +- **MEMBER**: Class membership +- **SET**: Property setting +- **HIDE**: Encapsulation +- **MONITOR**: Observation +- **INSTANCE_OF**: Type checking +- **EXEC_CICS**: CICS execution (legacy) +- **Generic Instantiation**: Parameterized object creation + +--- + +## Development Guidelines + +### Technology Versions (Legacy Warning) +⚠️ **IMPORTANT**: Many dependencies are significantly outdated: + +- **Apache Struts 2.2.1.1** (2010) - Current stable: 6.4.0 +- **Spring Framework** (Pre-3.0) - Current stable: 6.x +- **Commons libraries** (2007-2010) - All have newer versions +- **Servlet API 6.0.13** (2007) - Current: Jakarta Servlet 6.x + +### Modernization Recommendations + +1. **Framework Upgrade Path** + - Migrate from Struts 2.2.x to Struts 2.5.x (or consider Spring MVC/Boot) + - Upgrade Spring to 5.3.x or 6.x + - Update servlet API to Jakarta EE standards + +2. **Dependency Management** + - Implement dependency vulnerability scanning + - Create a dependency update schedule + - Use dependency management tools (Maven/Gradle) + +3. **Architecture Evolution** + - Consider microservices for new features + - Introduce RESTful APIs (reduce SOAP usage) + - Implement API gateway pattern + - Add containerization (Docker/Kubernetes) + +4. **Code Quality** + - Implement static code analysis + - Add comprehensive unit testing + - Introduce integration testing + - Set up CI/CD pipeline + +5. **Security Hardening** + - Regular security audits + - Implement OWASP security best practices + - Add runtime application self-protection (RASP) + - Implement security headers + +--- + +## Getting Started for New Developers + +### Key Areas to Explore + +1. **Start with Transactions**: Review the `/addToCart` and `/summary` operations to understand request flow +2. **Study Data Models**: Examine the PRODUCTS, ORDERS, and CUSTOMERS data graphs +3. **Review Configuration**: Check Struts configuration files and Spring bean definitions +4. **Understand Security**: Review authentication/authorization in `AuthenticateCustomerAction` +5. **Learn Integration Points**: Study PayPal integration and DWR AJAX implementations + +### Development Environment Setup + +1. **Prerequisites** + - Java JDK 8 or later + - MySQL 5.x or Oracle database + - Apache Tomcat 7.x or later + - Maven or Ant build tool + +2. **Database Setup** + - Import database schemas from `/schema` directory + - Configure database connection in properties files + - Initialize reference data (countries, currencies, etc.) + +3. **Application Deployment** + - Build WAR files from source modules: + - `sm-core` - Core business logic + - `sm-central` - Administration interface + - `sm-shop` - Customer storefront + - Deploy to Tomcat webapps directory + - Configure application properties + +4. **Testing** + - Access admin interface (sm-central) + - Access storefront (sm-shop) + - Test key workflows (product browsing, cart, checkout) + +### Code Navigation Tips + +- **Entry Points**: Start with Struts action classes in `com.salesmanager.*` packages +- **Business Logic**: Located in service classes with Spring annotations +- **Data Access**: JPA entities and Hibernate DAOs handle persistence +- **Views**: JSP files in WebContent directories with Apache Tiles layouts +- **Configuration**: XML files in WEB-INF (struts.xml, dwr.xml, tiles.xml, spring configs) + +--- + +## Contact & Support + +For questions about this architecture: +- Review the original documentation in `readme-shopizer.txt` +- Check licensing information in `SHOPIZER-LIC` +- Consult the database schemas in `/schema` directory + +--- + +## Appendix: Quick Reference + +### Module Structure +- **sm-core**: Core business logic and domain models +- **sm-central**: Back-office administration application +- **sm-shop**: Customer-facing storefront application +- **schema**: Database schemas and migration scripts +- **media**: Static assets and media files + +### Important Struts Actions +- `ShoppingCartAction` - Cart operations +- `ProductDetailsAction` - Product viewing +- `ComitOrderAction` - Order finalization +- `AuthenticateCustomerAction` - Security +- `PayPalExpressCheckoutAction` - Payment processing + +### Key Configuration Files +- `struts.xml` - URL routing and action mapping +- `dwr.xml` - AJAX endpoint configuration +- `tiles.xml` - Layout template definitions +- Spring XML configs - Bean definitions and DI + +### Database Connection Points +- JPA Entity Operations (7 types in cart transaction) +- Direct JDBC queries in utility classes +- Hibernate session management via Spring + +--- + +*Report Generated: November 2025* +*Data Source: CAST Imaging Analysis (June 23, 2025)* +*Application Version: Shopizer 1.1.5*