Codebase Analysis Tools (CAT) Report JSON

Statistics JSON

Project Name petstore1.3.2
Snapshot Date 04/01/2026, 10:55:35
LLM Provider VertexAI Gemini (Gemini Embeddings, Gemini Pro 3.0, Gemini Pro 2.5)
Files Count 565
Lines of Code 72079

Technologies JSON

Java 2 Platform, Enterprise Edition (J2EE) 1.3 Enterprise JavaBeans (EJB) Java Message Service (JMS) XML and XSLT Ant Cloudscape / Oracle Java Swing

Description JSON

The application is the Java Pet Store Demo 1.3.2, a reference implementation of the J2EE BluePrints design guidelines. It is a comprehensive e-commerce platform designed to demonstrate the capabilities of the J2EE 1.3 platform, specifically focusing on Enterprise JavaBeans (EJB 2.0), Servlets, JSP, and JMS. The application is architected as a multi-tier system comprising a Web Tier, an EJB Tier, and a Client Tier. The Web Tier utilizes a custom Web Application Framework (WAF) that implements the Model-View-Controller (MVC) pattern, featuring a Front Controller (MainServlet), Request Processor, and a Templating mechanism for composite views. The EJB Tier encapsulates business logic using Session Beans (e.g., ShoppingController, SignOn), Entity Beans (e.g., Customer, PurchaseOrder, Catalog), and Message-Driven Beans (MDBs) for asynchronous processing. The application simulates a real-world scenario involving three main sub-applications: the Pet Store (B2C interface for customers), the Order Processing Center (OPC) for back-office order fulfillment, and a Supplier module for B2B inventory management. It relies heavily on asynchronous messaging via JMS to decouple the order lifecycle steps, such as order approval, invoicing, and shipping. Data persistence is handled through Container-Managed Persistence (CMP) Entity Beans and Data Access Objects (DAOs). Additionally, it includes a Swing-based Administration Client that communicates with the server via HTTP/XML to manage orders and view sales statistics.

File Types JSON

50.1% 17.3% 13.3% 5.5% java (283 files) jsp (98 files) xml (75 files) dtd (31 files) xsl (13 files) tld (12 files) mf (11 files) html (9 files) sql (7 files) sh (7 files) bat (7 files) properties (7 files) xsd (3 files) unknown (2 files)

File Type Files Count Lines Count
java 283 34137
jsp 98 10794
xml 75 19227
dtd 31 1589
xsl 13 541
tld 12 3061
mf 11 39
html 9 292
sql 7 1177
sh 7 475
bat 7 307
properties 7 241
xsd 3 103
unknown 2 96

Bill of Materials (Dependencies) JSON

Total Dependencies 56
Version Conflicts 0
Build Files 24
Dependency Name Group ID Versions Scopes Locations Status
asyncsender-ejb-client.jar internal compile 1 file ✓ OK
asyncsender-ejb-client.jar petstore.component compile 1 file ✓ OK
asyncsender-ejb.jar internal runtime 1 file ✓ OK
base64.jar N/A compile 1 file ✓ OK
cart-ejb-client.jar petstore.component compile 1 file ✓ OK
catalog-ejb-client.jar com.sun.j2ee.blueprints compile 1 file ✓ OK
catalog-ejb-client.jar petstore.component compile 1 file ✓ OK
contactinfo com.sun.j2ee.blueprints compile 1 file ✓ OK
creditcard com.sun.j2ee.blueprints compile 1 file ✓ OK
crimson.jar org.apache.crimson runtime 1 file ✓ OK
customer-ejb-client.jar petstore.component compile 1 file ✓ OK
j2ee.jar javax.j2ee compile 11 files ✓ OK
j2ee.jar N/A compile 9 files ✓ OK
j2ee.jar Sun Microsystems compile 1 file ✓ OK
j2ee.jar sun.j2ee compile 2 files ✓ OK
j2ee.jar com.sun.j2ee compile 1 file ✓ OK
j2eetools.jar com.sun.j2ee compile 1 file ✓ OK
j2eetools.jar javax.j2ee compile 1 file ✓ OK
j2eetools.jar sun.j2ee compile 1 file ✓ OK
j2eetools.jar N/A compile 1 file ✓ OK
jaxp.jar N/A runtime 1 file ✓ OK
jstl.jar javax.servlet.jsp.jstl runtime 1 file ✓ OK
locale N/A compile, runtime 6 files ✓ OK
locale sun.j2ee runtime 1 file ✓ OK
locale javax.j2ee compile 1 file ✓ OK
mailer-ejb-client.jar com.sun.j2ee.blueprints compile 1 file ✓ OK
opc-ejb-client.jar internal compile 1 file ✓ OK
opc-ejb.jar internal runtime 1 file ✓ OK
po-ejb-client.jar com.sun.j2ee.blueprints compile 1 file ✓ OK
po-ejb-client.jar petstore.component compile 1 file ✓ OK
processmanager-ejb-client.jar com.sun.j2ee.blueprints compile 1 file ✓ OK
processmanager-ejb-client.jar N/A compile 1 file ✓ OK
servicelocator.jar com.sun.j2ee.blueprints compile 2 files ✓ OK
servicelocator.jar internal compile 2 files ✓ OK
servicelocator.jar contactinfo.components compile 1 file ✓ OK
servicelocator.jar project.servicelocator compile 1 file ✓ OK
servicelocator.jar N/A compile 3 files ✓ OK
servicelocator.jar petstore.component compile 1 file ✓ OK
signon-ejb-client.jar petstore.component compile 1 file ✓ OK
standard.jar javax.servlet.jsp.jstl runtime 1 file ✓ OK
supplierpo-ejb-client.jar N/A compile 1 file ✓ OK
tracer.jar internal compile 1 file ✓ OK
tracer.jar com.sun.j2ee.blueprints compile 1 file ✓ OK
tracer.jar N/A compile 1 file ✓ OK
tracer.jar petstore.component compile 1 file ✓ OK
uidgen-ejb-client.jar petstore.component compile 1 file ✓ OK
waf-ejb.jar petstore.component compile 1 file ✓ OK
waf-web.jar petstore.component runtime 1 file ✓ OK
xmldocuments.jar com.sun.j2ee.blueprints compile 3 files ✓ OK
xmldocuments.jar lineitem compile 1 file ✓ OK
xmldocuments.jar xmldocuments compile 1 file ✓ OK
xmldocuments.jar contactinfo.components compile 1 file ✓ OK
xmldocuments.jar project.xmldocuments compile 1 file ✓ OK
xmldocuments.jar internal compile 1 file ✓ OK
xmldocuments.jar N/A compile 2 files ✓ OK
xmldocuments.jar petstore.component compile 1 file ✓ OK

Existing Business Processes JSON

Customer Shopping and Checkout process

The process where a user browses the catalog, manages a shopping cart, and places an order.

%%{init: {'flowchart': {'diagramPadding': 30}}}%%
graph LR

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    catalog_browsing_0["Catalog Browsing"]
    class catalog_browsing_0 process
    cart_management_1["Cart Management"]
    class cart_management_1 process
    user_authentication_2["User Authentication"]
    class user_authentication_2 process
    order_placement_3["Order Placement"]
    class order_placement_3 process
    catalog_browsing_0 --> cart_management_1
    cart_management_1 --> user_authentication_2
    user_authentication_2 --> order_placement_3

Process Activities:

  • Catalog Browsing User views categories, products, and specific items with details.
  • Cart Management User adds items to the shopping cart, updates quantities, or removes items.
  • User Authentication User signs in or creates a new account to proceed with checkout.
  • Order Placement User confirms shipping and billing information and submits the order, generating a unique Order ID.

Order Fulfillment (OPC) process

The asynchronous workflow managed by the Order Processing Center to validate, approve, and ship orders.

%%{init: {'flowchart': {'diagramPadding': 30}}}%%
graph LR

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    order_ingestion_0["Order Ingestion"]
    class order_ingestion_0 process
    order_approval_1["Order Approval"]
    class order_approval_1 process
    supplier_coordination_2["Supplier Coordination"]
    class supplier_coordination_2 process
    invoice_processing_3["Invoice Processing"]
    class invoice_processing_3 process
    order_ingestion_0 --> order_approval_1
    order_approval_1 --> supplier_coordination_2
    supplier_coordination_2 --> invoice_processing_3

Process Activities:

  • Order Ingestion The system receives the new order via JMS and persists it as a pending order.
  • Order Approval Orders are checked against business rules (e.g., credit limits); small orders are auto-approved, larger ones require manual admin approval.
  • Supplier Coordination Approved orders are converted to XML and sent to the Supplier via JMS for fulfillment.
  • Invoice Processing The system receives an invoice from the supplier indicating shipment and updates the local order status.

Supplier Inventory Management process

The B2B process where the supplier receives orders and manages inventory.

%%{init: {'flowchart': {'diagramPadding': 30}}}%%
graph LR

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    order_reception_0["Order Reception"]
    class order_reception_0 process
    inventory_check_1["Inventory Check"]
    class inventory_check_1 process
    shipment_notification_2["Shipment Notification"]
    class shipment_notification_2 process
    order_reception_0 --> inventory_check_1
    inventory_check_1 --> shipment_notification_2

Process Activities:

  • Order Reception Supplier receives a purchase order XML message.
  • Inventory Check System checks stock levels and decrements inventory if items are available.
  • Shipment Notification Supplier generates an invoice XML and sends it back to the OPC to confirm shipment.

Administration process

Back-office management of the system by an administrator.

%%{init: {'flowchart': {'diagramPadding': 30}}}%%
graph LR

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    order_review_0["Order Review"]
    class order_review_0 process
    sales_analysis_1["Sales Analysis"]
    class sales_analysis_1 process
    order_review_0 --> sales_analysis_1

Process Activities:

  • Order Review Administrator views pending orders and manually approves or denies them.
  • Sales Analysis Administrator views charts and statistics regarding sales revenue and order volume.

Current Architecture JSON

Note: This diagram shows the high-level business components inferred from the existing codebase. Internal components (green) represent core business functionality, while external dependencies (orange) represent external systems such as databases, message queues, and external APIs.

Architecture Overview

%%{init: {'flowchart': {'diagramPadding': 50, 'nodeSpacing': 30, 'rankSpacing': 60}}}%%
flowchart TB

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    int_catalog_manager_0["Catalog Manager"]
    int_shopping_cart_manager_1["Shopping Cart Manager"]
    int_customer_account_manager_2["Customer Account Manager"]
    int_order_manager_3["Order Manager"]
    int_order_processing_center_opc_4["Order Processing Center #40;OPC#41;"]
    int_supplier_manager_5["Supplier Manager"]
    int_notification_service_6["Notification Service"]
    int_administration_manager_7["Administration Manager"]
    int_unique_id_generator_8["Unique ID Generator"]
    ext_cloudscape_oracle_database_0["Cloudscape/Oracle Database
Database"] ext_jms_provider_1["JMS Provider
Message Queue"] ext_javamail_service_2["JavaMail Service
External API"] int_shopping_cart_manager_1 --> int_catalog_manager_0 int_order_manager_3 --> int_customer_account_manager_2 int_order_manager_3 --> int_unique_id_generator_8 int_order_manager_3 --> ext_jms_provider_1 int_order_processing_center_opc_4 --> ext_jms_provider_1 int_order_processing_center_opc_4 --> ext_cloudscape_oracle_database_0 int_supplier_manager_5 --> ext_jms_provider_1 int_supplier_manager_5 --> ext_cloudscape_oracle_database_0 int_notification_service_6 --> ext_jms_provider_1 int_notification_service_6 --> ext_javamail_service_2 int_administration_manager_7 --> int_order_processing_center_opc_4 int_catalog_manager_0 --> ext_cloudscape_oracle_database_0 int_customer_account_manager_2 --> ext_cloudscape_oracle_database_0 class int_catalog_manager_0 internalComponent class int_shopping_cart_manager_1 internalComponent class int_customer_account_manager_2 internalComponent class int_order_manager_3 internalComponent class int_order_processing_center_opc_4 internalComponent class int_supplier_manager_5 internalComponent class int_notification_service_6 internalComponent class int_administration_manager_7 internalComponent class int_unique_id_generator_8 internalComponent class ext_cloudscape_oracle_database_0 externalComponent class ext_jms_provider_1 externalComponent class ext_javamail_service_2 externalComponent

Internal Business Components

Catalog Manager

Responsible for retrieving and searching product information. It abstracts the data access logic (DAO) and provides product details to the presentation layer.

Shopping Cart Manager

Manages the temporary state of a user's shopping session. It handles adding/removing items and calculating subtotals before an order is placed.

Customer Account Manager

Handles user registration, authentication (SignOn), and profile management (Contact Info, Credit Card, Preferences).

Order Manager

Handles the creation and persistence of customer orders. It initiates the fulfillment workflow by sending order data to the processing center.

Order Processing Center (OPC)

The core workflow engine that manages the lifecycle of an order. It handles order approval (manual or automatic), coordinates with suppliers, and tracks order status.

Supplier Manager

Simulates an external B2B partner. It receives purchase orders from the OPC, checks inventory, and sends back invoices/shipment notifications.

Notification Service

Responsible for generating and sending emails to customers regarding order status updates (Received, Approved, Shipped).

Administration Manager

Provides capabilities for administrators to view sales statistics and manually approve or deny pending orders.

Unique ID Generator

A utility component responsible for generating unique primary keys for orders and other entities.

External Dependencies

Name Type Description
Cloudscape/Oracle Database Database Stores persistent data for Catalog, Customers, Orders, and Inventory.
JMS Provider Message Queue Handles asynchronous messaging between the Pet Store, OPC, and Supplier components (Queues and Topics).
JavaMail Service External API Used by the Notification Service to send SMTP emails to customers.

Derived Microservices Architecture JSON

Note: This is a suggested new Microservices architecture derived from what the application does and how it functions - it intentionally does not reflect the curent the current archiecture of the application or any of its existing Microservices (if any).

Microservices

%%{init: {'flowchart': {'diagramPadding': 30}}}%%
flowchart TB

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    subgraph services[" "]
        catalog_service_0["Catalog Service"]
        order_service_1["Order Service"]
        customer_service_2["Customer Service"]
        inventory_service_3["Inventory Service"]
        catalog_service_0 ~~~ order_service_1
        order_service_1 ~~~ customer_service_2
        catalog_service_0 ~~~ inventory_service_3
    end
    class catalog_service_0 service
    class order_service_1 service
    class customer_service_2 service
    class inventory_service_3 service
    style services fill:transparent,stroke:transparent,stroke-width:0

Microservices Details

Catalog Service

A read-heavy service responsible for managing and serving product, category, and item data. It would replace the CatalogEJB and DAO layers, providing a RESTful interface for the storefront to browse and search for pets.

Entities
  • Product: A specific type of pet available for sale.
    Attributes: productId, categoryId, name, description, image
  • Item: A specific SKU of a product with pricing.
    Attributes: itemId, productId, listPrice, unitCost, status
API Endpoints
  • GET /categories
    List all product categories.
  • GET /products
    List products, optionally filtered by category.
  • GET /items/{itemId}
    Get details for a specific item.
Operations
  • Search Items (GET)
    Search for items based on keywords.

Order Service

Manages the lifecycle of customer orders. It handles order creation, persistence, and status updates. It would replace the PurchaseOrderEJB and related MDBs, potentially using an event bus for asynchronous processing.

Entities
  • Order: The primary record of a transaction.
    Attributes: orderId, userId, orderDate, totalPrice, status
API Endpoints
  • POST /orders
    Create a new order.
  • GET /orders/{orderId}
    Retrieve order details.
Operations
  • Create Order (POST)
    Submit a new order from the shopping cart.
  • Update Order Status (PATCH)
    Update the status (e.g., Approved, Shipped) of an order.

Customer Service

Manages user accounts, profiles, and authentication. It replaces the Customer, Account, and SignOn EJBs.

Entities
  • Customer: The user account information.
    Attributes: userId, email, firstName, lastName
  • Address: Shipping or billing address.
    Attributes: street, city, state, zip, country
API Endpoints
  • GET /customers/{userId}
    Get customer profile.
  • POST /customers
    Register a new customer.
Operations
  • Authenticate (POST)
    Verify user credentials.

Inventory Service

Manages stock levels and supplier interactions. It replaces the Supplier module and Inventory EJB.

Entities
  • InventoryItem: Stock level for a specific item.
    Attributes: itemId, quantity
API Endpoints
  • GET /inventory/{itemId}
    Get current stock level.
  • PATCH /inventory/{itemId}
    Update stock level (deduct or restock).
Operations
  • Check Availability (GET)
    Check if an item is in stock.

Derived Domain Model JSON

Note: This domain model has been derived from what the application does and how it functions - it intentionally does not reflect how the current code manages and persists business data.

Catalog Context bounded context

Manages the product information, categories, and specific items available for sale. It provides browsing and searching capabilities.

%%{init: {'flowchart': {'diagramPadding': 30}}}%%
flowchart TB

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    catalog_context_0{{"Catalog Context"}}
    catalog_context_0 --> agg_catalog_0
    agg_catalog_0 -.-> entity_category_0
    agg_catalog_0 -.-> entity_product_1
    agg_catalog_0 -.-> entity_item_2
    subgraph aggRepoGroup0[" "]
        direction LR
        agg_catalog_0(["Catalog"])
        repo_catalogdao_0(("CatalogDAO"))
        agg_catalog_0 -.- repo_catalogdao_0
    end
    class agg_catalog_0 aggregate
    class repo_catalogdao_0 repository
    subgraph entitiesGroup[" "]
        direction LR
        entity_category_0("Category")
        entity_product_1("Product")
        entity_item_2("Item")
    end
    class entity_category_0 entity
    class entity_product_1 entity
    class entity_item_2 entity
    class catalog_context_0 boundedContext
    style aggRepoGroup0 fill:transparent,stroke:transparent,stroke-width:0
    style entitiesGroup fill:transparent,stroke:transparent,stroke-width:0

Aggregates (1)

  • Catalog: The root aggregate for browsing products. It provides read-only access to product data.

Repositories (1)

  • CatalogDAO: Provides data access to catalog tables, supporting both direct JDBC (Fast Lane Reader) and EJB access.

Entities (3)

  • Category: Represents a grouping of products (e.g., Birds, Dogs).
  • Product: Represents a specific type of animal (e.g., Golden Retriever).
  • Item: Represents a specific stock keeping unit (SKU) with a price and specific attributes.

Customer Context bounded context

Handles user identity, authentication, and profile management.

%%{init: {'flowchart': {'diagramPadding': 30}}}%%
flowchart TB

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    customer_context_0{{"Customer Context"}}
    customer_context_0 --> agg_customer_0
    agg_customer_0 -.-> entity_account_0
    agg_customer_0 -.-> entity_contactinfo_1
    agg_customer_0 -.-> entity_creditcard_2
    agg_customer_0 -.-> entity_profile_3
    subgraph aggRepoGroup0[" "]
        direction LR
        agg_customer_0(["Customer"])
        repo_customerlocalhome_0(("CustomerLocalHome"))
        agg_customer_0 -.- repo_customerlocalhome_0
    end
    class agg_customer_0 aggregate
    class repo_customerlocalhome_0 repository
    subgraph entitiesGroup[" "]
        direction LR
        entity_account_0("Account")
        entity_contactinfo_1("ContactInfo")
        entity_creditcard_2("CreditCard")
        entity_profile_3("Profile")
    end
    class entity_account_0 entity
    class entity_contactinfo_1 entity
    class entity_creditcard_2 entity
    class entity_profile_3 entity
    class customer_context_0 boundedContext
    style aggRepoGroup0 fill:transparent,stroke:transparent,stroke-width:0
    style entitiesGroup fill:transparent,stroke:transparent,stroke-width:0

Aggregates (1)

  • Customer: Represents the registered user and their associated data.

Repositories (1)

  • CustomerLocalHome: Manages the persistence of Customer entity beans.

Entities (4)

  • Account: Holds account status and links to contact info.
  • ContactInfo: Stores address, email, and phone number.
  • CreditCard: Stores payment information.
  • Profile: Stores user preferences like language and favorite category.

Order Context bounded context

Manages the lifecycle of a customer's purchase order within the Pet Store front-end.

%%{init: {'flowchart': {'diagramPadding': 30}}}%%
flowchart TB

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    order_context_0{{"Order Context"}}
    order_context_0 --> agg_purchaseorder_0
    agg_purchaseorder_0 -.-> entity_lineitem_0
    subgraph aggRepoGroup0[" "]
        direction LR
        agg_purchaseorder_0(["PurchaseOrder"])
        repo_purchaseorderlocalhome_0(("PurchaseOrderLocalHome"))
        agg_purchaseorder_0 -.- repo_purchaseorderlocalhome_0
    end
    class agg_purchaseorder_0 aggregate
    class repo_purchaseorderlocalhome_0 repository
    subgraph entitiesGroup[" "]
        direction LR
        entity_lineitem_0("LineItem")
    end
    class entity_lineitem_0 entity
    class order_context_0 boundedContext
    style aggRepoGroup0 fill:transparent,stroke:transparent,stroke-width:0
    style entitiesGroup fill:transparent,stroke:transparent,stroke-width:0

Aggregates (1)

  • PurchaseOrder: Represents a placed order containing all billing, shipping, and item details.

Repositories (1)

  • PurchaseOrderLocalHome: Manages the persistence of PurchaseOrder entity beans.

Entities (1)

  • LineItem: Represents a specific item and quantity within an order.

Fulfillment Context bounded context

Manages the backend processing of orders, including workflow state and supplier interaction.

%%{init: {'flowchart': {'diagramPadding': 30}}}%%
flowchart TB

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    fulfillment_context_0{{"Fulfillment Context"}}
    fulfillment_context_0 --> agg_processmanager_0
    agg_processmanager_0 -.-> entity_manager_0
    subgraph aggRepoGroup0[" "]
        direction LR
        agg_processmanager_0(["ProcessManager"])
        repo_managerlocalhome_0(("ManagerLocalHome"))
        agg_processmanager_0 -.- repo_managerlocalhome_0
    end
    class agg_processmanager_0 aggregate
    class repo_managerlocalhome_0 repository
    subgraph entitiesGroup[" "]
        direction LR
        entity_manager_0("Manager")
    end
    class entity_manager_0 entity
    class fulfillment_context_0 boundedContext
    style aggRepoGroup0 fill:transparent,stroke:transparent,stroke-width:0
    style entitiesGroup fill:transparent,stroke:transparent,stroke-width:0

Aggregates (1)

  • ProcessManager: Tracks the state of an order through the fulfillment workflow (Pending, Approved, Completed).

Repositories (1)

  • ManagerLocalHome: Persists the state of order processing managers.

Entities (1)

  • Manager: Represents the workflow state for a specific order ID.

Supplier Context bounded context

Manages the supplier's view of orders and inventory.

%%{init: {'flowchart': {'diagramPadding': 30}}}%%
flowchart TB

    classDef boundedContext fill:#e8f5e8,stroke:#00684A,stroke-width:3px,color:#001e2b
    classDef aggregate fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef entity fill:#f3e5f5,stroke:#7b1fa2,stroke-width:1.5px,color:#001e2b
    classDef repository fill:#fff5f0,stroke:#d2691e,stroke-width:1.5px,color:#001e2b
    classDef service fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef process fill:#ffffff,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef dependency fill:#f8f9fa,stroke:#6c757d,stroke-width:1px,color:#001e2b
    classDef rootDependency fill:#e3f2fd,stroke:#1976d2,stroke-width:2px,color:#001e2b
    classDef internalComponent fill:#e8f5e8,stroke:#00684A,stroke-width:2px,color:#001e2b
    classDef externalComponent fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#001e2b
    supplier_context_0{{"Supplier Context"}}
    supplier_context_0 --> agg_supplierorder_0
    agg_supplierorder_0 -.-> entity_inventory_0
    subgraph aggRepoGroup0[" "]
        direction LR
        agg_supplierorder_0(["SupplierOrder"])
        repo_supplierorderlocalhome_0(("SupplierOrderLocalHome"))
        agg_supplierorder_0 -.- repo_supplierorderlocalhome_0
    end
    class agg_supplierorder_0 aggregate
    class repo_supplierorderlocalhome_0 repository
    subgraph entitiesGroup[" "]
        direction LR
        entity_inventory_0("Inventory")
    end
    class entity_inventory_0 entity
    class supplier_context_0 boundedContext
    style aggRepoGroup0 fill:transparent,stroke:transparent,stroke-width:0
    style entitiesGroup fill:transparent,stroke:transparent,stroke-width:0

Aggregates (1)

  • SupplierOrder: Represents an order received by the supplier from the OPC.

Repositories (1)

  • SupplierOrderLocalHome: Persists supplier orders.

Entities (1)

  • Inventory: Tracks stock levels for items.

Code Quality Summary JSON

This section provides code quality metrics to help identify complex, hard-to-maintain code. Metrics are estimated by AI and should be verified manually.

Overall Statistics

Metric Value Description
Total Functions/Methods Analyzed 1500 Total number of functions/methods analyzed across the codebase
Average Complexity 1.63 Average cyclomatic complexity (1-10: simple, 11-20: moderate, >20: complex)
High Complexity Functions/Methods 9 Functions/methods with complexity > 10 (candidate for refactoring)
Very High Complexity 3 Functions/methods with complexity > 20 (high priority for refactoring)
Average Function/Method Length 4.9 LOC Average lines of code per function/method
Long Functions/Methods 7 Functions/methods with > 50 lines of code

Top 10 Most Complex Functions/Methods

These functions/methods have the highest cyclomatic complexity and should be prioritized for refactoring.

Function/Method Name File Path Complexity Lines Code Smells
process com.sun.j2ee.blueprints.waf.view.template.TemplateServlet::process
TemplateServlet.java src/waf/src/view/template/com/sun/j2ee/blueprints/waf/view/template/TemplateServlet.java
22 82
  • LONG METHOD
  • COMPLEX CONDITIONAL
  • DEEP NESTING
compareRowsByColumn com.sun.j2ee.blueprints.admin.client.TableSorter::compareRowsByColumn
TableSorter.java src/apps/admin/src/client/com/sun/j2ee/blueprints/admin/client/TableSorter.java
22 68
  • COMPLEX CONDITIONAL
  • LONG METHOD
getRequestMappings com.sun.j2ee.blueprints.waf.controller.web.URLMappingsXmlDAO::getRequestMappings
URLMappingsXmlDAO.java src/waf/src/controller/com/sun/j2ee/blueprints/waf/controller/web/URLMappingsXmlDAO.java
21 75
  • LONG METHOD
  • DEEP NESTING
  • COMPLEX CONDITIONAL
doEndTag com.sun.j2ee.blueprints.waf.view.taglibs.smart::doEndTag
ClientStateTag.java src/waf/src/view/taglibs/com/sun/j2ee/blueprints/taglibs/smart/ClientStateTag.java
16 92
  • LONG METHOD
  • DEEP NESTING
  • COMPLEX CONDITIONAL
searchItems com.sun.j2ee.blueprints.catalog.dao.CloudscapeCatalogDAO::searchItems
CloudscapeCatalogDAO.java src/components/catalog/src/com/sun/j2ee/blueprints/catalog/dao/CloudscapeCatalogDAO.java
14 65
  • LONG METHOD
  • COMPLEX CONDITIONAL
  • DUPLICATE CODE
  • MAGIC NUMBERS
doPost com.sun.j2ee.blueprints.supplier.inventory.web::doPost
RcvrRequestProcessor.java src/apps/supplier/src/com/sun/j2ee/blueprints/supplier/inventory/web/RcvrRequestProcessor.java
13 36
  • COMPLEX CONDITIONAL
  • MAGIC NUMBERS
  • LONG METHOD
getChartInfo com.sun.j2ee.blueprints.opc.admin.ejb::getChartInfo
OPCAdminFacadeEJB.java src/apps/opc/src/com/sun/j2ee/blueprints/opc/admin/ejb/OPCAdminFacadeEJB.java
13 56
  • LONG METHOD
  • DEEP NESTING
  • COMPLEX CONDITIONAL
  • DUPLICATE CODE
startElement com.sun.j2ee.blueprints.petstore.tools.populate::startElement
XMLDBHandler.java src/apps/petstore/src/com/sun/j2ee/blueprints/petstore/tools/populate/XMLDBHandler.java
13 36
  • COMPLEX CONDITIONAL
  • LONG METHOD
startElement com.sun.j2ee.blueprints.supplier.tools.populate.XMLDBHandler::startElement
XMLDBHandler.java src/apps/supplier/src/com/sun/j2ee/blueprints/supplier/tools/populate/XMLDBHandler.java
12 30
  • COMPLEX CONDITIONAL
  • LONG METHOD
getLocaleFromString com.sun.j2ee.blueprints.opc.customerrelations.ejb.LocaleUtil::getLocaleFromString
LocaleUtil.java src/apps/opc/src/com/sun/j2ee/blueprints/opc/customerrelations/ejb/LocaleUtil.java
10 22
  • COMPLEX CONDITIONAL
  • DEAD CODE
  • MAGIC NUMBERS

Most Common Code Smells

Frequently occurring code quality issues across the codebase.

Code Smell Type Occurrences Affected Files Recommendation
OTHER 39 31 Review and refactor as part of modernization effort
DATA CLASS 37 37 Review and refactor as part of modernization effort
MAGIC NUMBERS 18 18 Review and refactor as part of modernization effort
COMPLEX CONDITIONAL 14 14 Review and refactor as part of modernization effort
LONG PARAMETER LIST 13 13 Review and refactor as part of modernization effort
LONG METHOD 13 13 Review and refactor as part of modernization effort
DUPLICATE CODE 12 12 Review and refactor as part of modernization effort
TOO MANY METHODS 12 12 Review and refactor as part of modernization effort
DEEP NESTING 6 6 Review and refactor as part of modernization effort
DEAD CODE 4 4 Review and refactor as part of modernization effort
FEATURE ENVY 2 2 Review and refactor as part of modernization effort
INVALID 2 2 Review and refactor as part of modernization effort
LARGE FILE 1 1 Review and refactor as part of modernization effort

Scheduled Jobs and Batch Processes JSON

Total Jobs 14
Trigger Types 1
Script Files 14

Trigger Types Found: manual

Job Name Source File Trigger Purpose Input Resources Output Resources
Ant Build Execution build.bat manual Executes the Apache Ant build system with a pre-configured classpath and system properties tailored for the 'estore' J2EE application. It acts as the primary entry point for compiling, packaging, and managing the application lifecycle.
  • JAVA_HOME environment variable
  • J2EE_HOME environment variable
  • Ant libraries (ant.jar, xml.jar)
  • Java tools (tools.jar)
  • J2EE libraries (j2ee.jar)
  • build.xml (implicit Ant configuration)
  • Compiled Java classes
  • Javadocs
  • Build artifacts (likely WAR or EAR files)
Dependencies: Java SDK, J2EE SDK, Apache Ant
Ant Build Execution build.bat manual Configures the Java classpath with J2EE and Ant dependencies and launches the Apache Ant build tool to process build targets.
  • Environment Variable: JAVA_HOME
  • Environment Variable: J2EE_HOME
  • File: ./lib/ant/lib/ant.jar
  • File: ./lib/ant/lib/jaxp.jar
  • File: ./lib/ant/lib/parser.jar
  • File: %J2EE_HOME%/lib/j2ee.jar
  • Process: org.apache.tools.ant.Main
Dependencies: Java SDK, J2EE SDK, Apache Ant Libraries
Ant Build Wrapper build.bat Manual Sets up the Java classpath including J2EE and Ant libraries and executes the Apache Ant Main class to perform build tasks.
  • ../../lib/ant
  • %JAVA_HOME%/lib/tools.jar
  • %J2EE_HOME%/lib/j2ee.jar
  • Build Artifacts (determined by build.xml)
Dependencies: JAVA_HOME environment variable, J2EE_HOME environment variable, Apache Ant libraries
Ant Setup Build setup.bat manual Initiates the Apache Ant build process using the configuration defined in setup.xml, typically used to compile, package, or configure the J2EE application.
  • setup.xml
  • src/lib/ant/lib/ant.jar
  • src/lib/ant/lib/parser.jar
  • src/lib/ant/lib/jaxp.jar
  • %JAVA_HOME%/lib/tools.jar
  • %J2EE_HOME%/lib/j2ee.jar
  • Build artifacts (determined by setup.xml targets)
Dependencies: Java Development Kit (JAVA_HOME), J2EE SDK (J2EE_HOME), Apache Ant libraries
build.sh build.sh manual Initiates the Apache Ant build process for the application, handling environment setup and classpath configuration automatically.
  • JAVA_HOME environment variable
  • J2EE_HOME environment variable
  • Ant libraries (ant.jar, parser.jar, jaxp.jar)
  • J2EE libraries (j2ee.jar)
  • Project source code (implied by Ant execution)
  • Compiled Java classes
  • Build artifacts (likely JAR, WAR, or EAR files)
Dependencies: Java Development Kit (JDK), J2EE SDK, Apache Ant
build.sh build.sh manual Wraps the Apache Ant execution to compile, build, and potentially package the J2EE application (referenced as 'estore').
  • JAVA_HOME environment variable
  • J2EE_HOME environment variable
  • ../../../lib/ant (Ant libraries)
  • Source code (implied by Ant execution)
  • Compiled Java classes
  • J2EE Archives (WAR/EAR files)
  • Javadoc documentation
Dependencies: Java SDK, J2EE SDK, Apache Ant
build.sh build.sh manual Initializes the environment and executes the Apache Ant build tool to compile and package the J2EE application.
  • JAVA_HOME environment variable
  • J2EE_HOME environment variable
  • lib/ant/lib/ant.jar
  • lib/ant/lib/jaxp.jar
  • lib/ant/lib/parser.jar
  • $J2EE_HOME/lib/j2ee.jar
  • $JAVA_HOME/lib/tools.jar
  • Ant Build Artifacts (determined by build.xml targets)
Dependencies: Java SDK, J2EE SDK, Apache Ant (embedded in lib/ant)
build.sh build.sh manual Initializes the environment and executes the Apache Ant build process for a J2EE application.
  • JAVA_HOME environment variable
  • J2EE_HOME environment variable
  • ../../lib/ant (Ant libraries)
  • build.xml (implied Ant default)
  • Compiled Java classes
  • J2EE archives (WAR/EAR/JAR)
Dependencies: Java SDK, J2EE SDK, Apache Ant
build.sh build.sh manual Initializes the environment and executes the Apache Ant build system to compile and package the application.
  • JAVA_HOME environment variable
  • J2EE_HOME environment variable
  • ../../../lib/ant/lib/ant.jar
  • ../../../lib/ant/lib/xml.jar
  • $J2EE_HOME/lib/j2ee.jar
  • Ant Build Process
Dependencies: java, ant, j2ee-sdk
build.sh build.sh manual Initializes the environment and executes the Apache Ant build process for the application.
  • JAVA_HOME environment variable
  • J2EE_HOME environment variable
  • ../../../lib/ant/lib/ant.jar
  • $JAVA_HOME/lib/tools.jar
  • $J2EE_HOME/lib/j2ee.jar
  • Ant build artifacts (compiled classes, JARs, WARs)
  • Console build logs
Dependencies: Java Development Kit (JDK), J2EE SDK, Apache Ant
J2EE Ant Build Launcher build.bat manual Configures the Java classpath and system properties to launch the Apache Ant build tool for a J2EE project.
  • Environment Variable: JAVA_HOME
  • Environment Variable: J2EE_HOME
  • File: ../../../lib/ant/lib/ant.jar
  • File: ../../../lib/ant/lib/xml.jar
  • File: %JAVA_HOME%/lib/tools.jar
  • File: %J2EE_HOME%/lib/j2ee.jar
  • Ant Build Artifacts (dependent on build.xml targets)
Dependencies: Java Runtime Environment, Apache Ant, J2EE SDK
J2EE Ant Build Launcher build.bat manual Configures the Java classpath with J2EE and Ant libraries, then executes the Apache Ant Main class to perform build operations defined in an associated build.xml file.
  • JAVA_HOME environment variable
  • J2EE_HOME environment variable
  • ../../../lib/ant/lib/ant.jar
  • lib/j2ee.jar
  • Command line arguments (%1 %2 %3 %4)
  • Java Process (Ant Build)
  • Console Output
Dependencies: Java SDK (tools.jar), Apache Ant, J2EE SDK
J2EE Ant Build Wrapper build.bat manual Invokes the Apache Ant build system with a pre-configured classpath that includes J2EE and Java tool dependencies to compile and package the application.
  • JAVA_HOME environment variable
  • J2EE_HOME environment variable
  • ../../../lib/ant (Ant libraries)
  • build.xml (implicit Ant input)
  • Console output (Build logs)
  • Compiled Java classes
  • J2EE Artifacts (WAR/EAR/JAR files)
Dependencies: Java Development Kit (JDK), J2EE SDK, Apache Ant
setup.sh setup.sh manual Initiates the application setup or build process by configuring the environment and invoking the Apache Ant build tool with the 'setup.xml' file.
  • setup.xml
  • JAVA_HOME environment variable
  • J2EE_HOME environment variable
  • ./src/lib/ant or ./lib/ant directory
  • tools.jar
  • j2ee.jar
  • Console output (classpath echo)
  • Ant build artifacts (defined in setup.xml)
Dependencies: Java Runtime Environment, J2EE SDK, Apache Ant libraries

Module Coupling Analysis JSON

Total Modules 38
Coupling Relationships 38
Highest Coupling 583
Module Depth 2

Interpretation: High reference counts indicate tightly coupled modules (candidates for single services). Low reference counts indicate loosely coupled modules (candidates for easy separation).

From Module To Module Reference Count Coupling Level
src/apps com.sun 583 Very High
src/components com.sun 226 Medium
src/waf com.sun 124 Medium
src/apps customer.account 16 Low
src/apps WEB-INF/c.tld 12 Low
src/apps WEB-INF/waftags.tld 12 Low
src/waf WEB-INF/waftags.tld 7 Low
src/apps customer.profile 4 Low
src/apps cart.do 3 Low
src/apps customer.do 3 Low
src/apps order.do 3 Low
src/apps WEB-INF/fmt.tld 3 Low
src/apps WEB-INF/template.tld 3 Low
src/apps enter_order_information.screen 2 Low
src/apps item.screen 2 Low
src/apps update_customer.screen 2 Low
src/apps admin/AdminRequestProcessor 1 Low
src/apps cart.count 1 Low
src/apps cart.items 1 Low
src/apps cart.subTotal 1 Low
src/apps changelocale.do 1 Low
src/apps index.html 1 Low
src/apps item.attribute 1 Low
src/apps item.itemId 1 Low
src/apps item.name 1 Low
src/apps item.quantity 1 Low
src/apps item.unitCost 1 Low
src/apps main.screen 1 Low
src/apps petstore/main.screen 1 Low
src/apps search.screen 1 Low
src/apps signoff.do 1 Low
src/apps signon_welcome.screen 1 Low
src/apps signon.screen 1 Low
src/apps supplier/populating.jsp 1 Low
src/waf clientstatetag_test.screen 1 Low
src/waf formtag.screen 1 Low
src/waf images/clientstate.jpg 1 Low
src/waf inputtag.screen 1 Low

Coupling Level Guide:

UI Technology Deep-Dive Analysis JSON

JSP Files: 98 | Total Scriptlets: 17 | Avg Scriptlets/File: 0.2 | High Debt Files: 1

⚠️ High Technical Debt Detected! 1 file has more than 10 scriptlet blocks. Consider refactoring to modern UI patterns (JSP tags, JSF components, or React/Vue).

Detected UI Frameworks

Framework Version Configuration Files
Sun Java BluePrints WAF Unknown screen-definitions.xml

Top JSP Files by Scriptlet Count (Technical Debt Hotspots)

File Path Scriptlets Expressions Declarations Total Blocks Debt Level
displayinventory.jsp src/apps/supplier/src/docroot/displayinventory.jsp
7 4 0 11 High
general_error.jsp src/apps/petstore/src/docroot/general_error.jsp
2 2 0 4 Low
general_error.jsp src/apps/petstore/src/docroot/ja/general_error.jsp
2 1 0 3 Low
general_error.jsp src/apps/petstore/src/docroot/zh/general_error.jsp
2 1 0 3 Low
populating.jsp src/apps/petstore/src/docroot/populating.jsp
0 2 0 2 Low
clientstatetag_test.jsp src/waf/src/docroot/clientstatetag_test.jsp
1 0 0 1 Low
populating.jsp src/apps/supplier/src/docroot/populating.jsp
0 1 0 1 Low
logout.jsp src/apps/supplier/src/docroot/logout.jsp
1 0 0 1 Low
logout.jsp src/apps/admin/src/docroot/logout.jsp
1 0 0 1 Low
changelocalesuccess.jsp src/waf/src/docroot/changelocalesuccess.jsp
0 1 0 1 Low

Custom Tag Libraries Used

Prefix URI Usage Count Type
c /WEB-INF/c.tld 40 files Custom
waf /WEB-INF/waftags.tld 33 files Custom
fmt /WEB-INF/fmt.tld 12 files Custom
template /WEB-INF/template.tld 5 files Custom

UI Modernization Insights

Database Stored Procedures & Triggers JSON

Stored Procedures 9
Triggers 2
Low Complexity 7
Medium Complexity 4
High Complexity 0

test_cursor_performance Procedure

Path: dbstuff/cursor-for-loop-optimization.sql

Complexity: MEDIUM (Contains internal sub-procedures, dynamic cursor handling, bulk collection logic, and case switching for different execution paths.)

Lines: 76

Purpose: Benchmarks cursor iteration performance by generating dummy data and iterating through it using implicit loops, explicit fetches, or bulk collects. It measures and prints the execution time for the selected method. It is designed to show the impact of compiler optimization levels.

emps_pkg Procedure

Path: dbstuff/cursor-for-loop.sql

Complexity: LOW (The package consists primarily of declarative cursor definitions and simple SQL queries without complex procedural logic.)

Lines: 18

Purpose: A PL/SQL package that defines a reusable cursor for the employees table, demonstrating how to declare cursors in a package specification and optionally hide the query implementation in the package body.

show_common_names Procedure

Path: dbstuff/cursors-in-plsql.sql

Complexity: MEDIUM (It utilizes the DBMS_SQL package which requires manual parsing, column definition, and fetching, making it more verbose than standard SQL.)

Lines: 19

Purpose: Dynamically queries a specified table to retrieve and print the 'common_name' column using the DBMS_SQL package.

refcursor_pkg.filtered_species_cv Procedure

Path: dbstuff/cursors-in-plsql.sql

Complexity: LOW (Contains simple conditional logic to open a cursor with or without a WHERE clause.)

Lines: 13

Purpose: Returns a strongly typed REF CURSOR containing species data, optionally filtered by a search string.

refcursor_pkg.data_from_any_query_cv Procedure

Path: dbstuff/cursors-in-plsql.sql

Complexity: LOW (Consists of a single OPEN-FOR statement using a dynamic string.)

Lines: 7

Purpose: Returns a weakly typed REF CURSOR based on any dynamic SQL query string provided as an argument.

refcursor_pkg.data_from_any_query_cv2 Procedure

Path: dbstuff/cursors-in-plsql.sql

Complexity: LOW (Consists of a single OPEN-FOR statement using the standard SYS_REFCURSOR type.)

Lines: 7

Purpose: Returns a SYS_REFCURSOR based on a dynamic query string, utilizing the built-in system cursor type.

put_in_table Procedure

Path: dbstuff/forall-bulk-rowcount.sql

Complexity: MEDIUM (Uses autonomous transactions, dynamic SQL for both DDL and DML, and bulk binding.)

Lines: 26

Purpose: A helper procedure designed to log a collection of IDs into a database table. It handles the creation of the target table dynamically and ensures the data is committed independently of the main transaction.

compare_inserting Procedure

Path: dbstuff/forall-inserts-comparison.sql

Complexity: MEDIUM (The procedure utilizes advanced PL/SQL features such as bulk binding (FORALL), dynamic SQL, custom object types, and nested table manipulations.)

Lines: 103

Purpose: This procedure runs a series of performance tests to compare different methods of inserting data into a database table. It populates in-memory collections with dummy data and then times the execution of row-by-row inserts, bulk inserts, and SQL-based inserts. It outputs the elapsed CPU time for each method to the console to facilitate performance analysis.

show_trigger_event Procedure

Path: dbstuff/trigger-predicates.sql

Complexity: LOW (It consists of a single CASE statement to check boolean predicates and print a string.)

Lines: 11

Purpose: This utility procedure determines the context in which it was called by checking Oracle conditional predicates (INSERTING, UPDATING, DELETING). It outputs the type of DML operation occurring to the console via DBMS_OUTPUT. It also handles cases where it is called outside of a trigger context.

employee_changes_after Trigger

Path: dbstuff/trigger-predicates.sql

Complexity: LOW (The trigger body contains a single line of code calling a stored procedure.)

Lines: 5

Purpose: This trigger fires after any INSERT or UPDATE operation is performed on the employees table. It calls the shared utility procedure to log the specific event type.

employee_changes_before Trigger

Path: dbstuff/trigger-predicates.sql

Complexity: LOW (The trigger body contains a single line of code calling a stored procedure.)

Lines: 5

Purpose: This trigger fires before any DELETE operation is performed on the employees table. It calls the shared utility procedure to log the specific event type.

Database Interactions JSON

Path Mechanism Description Code Example
dbstuff/forall-values-of.sql DML The code interacts with an Oracle database using PL/SQL anonymous blocks and standard SQL statements. It performs a bulk update operation using the FORALL construct to optimize performance when updating multiple records based on a collection of IDs. It also utilizes standard SELECT statements for data verification.
FORALL l_index IN VALUES OF l_employee_values
   UPDATE employees
      SET salary = 10000
    WHERE employee_id = l_employees (l_index);
com.sun.j2ee.blueprints.address.ejb EJB The class is an abstract Entity Bean using Container-Managed Persistence (CMP). The abstract getter and setter methods correspond to persistent fields that the EJB container automatically maps to database columns and manages synchronization for.
public abstract String getStreetName1();
public abstract void setStreetName1(String streetName1);
com.sun.j2ee.blueprints.address.ejb.AddressLocal EJB This interface represents the local view of an Entity Bean, which is a persistent data component in the J2EE architecture. The actual database interaction (SQL generation, connection management) is handled by the EJB Container (for Container-Managed Persistence) or the Bean implementation class (for Bean-Managed Persistence). The getters and setters defined here correspond to persistent fields in the underlying database table.
public interface AddressLocal extends javax.ejb.EJBLocalObject {
  public String getStreetName1();
  public void setStreetName1(String streetName1);
  // ...
com.sun.j2ee.blueprints.address.ejb.AddressLocalHome EJB This is an EJB Entity Bean Local Home interface. In the EJB component model, 'create' methods correspond to database INSERT operations, and 'find' methods correspond to database SELECT operations. The persistence is managed by the EJB container (Container-Managed Persistence) or the bean implementation (Bean-Managed Persistence).
public AddressLocal create(String streetName1, String streetName2...) throws CreateException;
com.sun.j2ee.blueprints.catalog.client.CatalogHelper EJB The class integrates with the database primarily through the `CatalogLocal` Enterprise Java Bean (EJB) or alternatively via a direct `CatalogDAO` (Fast Lane pattern). The EJB approach uses a Service Locator to find the EJB Home and create a local interface reference. The DAO approach uses a Factory to obtain a DAO instance. Both paths ultimately perform READ operations against the catalog data.
ServiceLocator sl = new ServiceLocator();
CatalogLocalHome home =(CatalogLocalHome)sl.getLocalHome(JNDINames.CATALOG_EJBHOME);
return home.create();
com.sun.j2ee.blueprints.catalog.ejb EJB This file is an EJB Local Interface. While it does not contain direct database code, it defines the data access contract for the Catalog component. The implementation of this interface (the Bean) is responsible for interacting with the database to retrieve Categories, Products, and Items.
public interface CatalogLocal extends EJBLocalObject {
    public Category getCategory(String categoryID, Locale l);
    ...
com.sun.j2ee.blueprints.contactinfo.ejb EJB This interface represents the local view of an Entity Bean (or Session Bean wrapping an entity) managed by the EJB container. The container handles the persistence of the fields defined by the getters and setters (FamilyName, GivenName, Telephone, Email) to the underlying database.
public interface ContactInfoLocal extends javax.ejb.EJBLocalObject {
  public String getFamilyName();
  public void setFamilyName(String familyName);
}
com.sun.j2ee.blueprints.contactinfo.ejb EJB This class is an EJB 2.x Entity Bean using Container-Managed Persistence (CMP). The container manages the synchronization of the abstract accessor methods with the underlying database table. It also manages the relationship with the Address entity via Container-Managed Relationships (CMR).
public abstract String getFamilyName();
public abstract void setFamilyName(String familyName);
com.sun.j2ee.blueprints.contactinfo.ejb EJB This file is the Local Home interface for an Entity EJB. It defines the methods to create (INSERT) and find (SELECT) persistent ContactInfo entities managed by the EJB container.
public ContactInfoLocal findByPrimaryKey(Object key) throws FinderException;
com.sun.j2ee.blueprints.creditcard.ejb EJB This file is an EJB Local Home interface, which defines the persistence lifecycle methods (create, find) for an Entity Bean. The actual database interaction is handled by the EJB container (Container Managed Persistence) or the bean implementation (Bean Managed Persistence), mapping these methods to SQL INSERT and SELECT operations.
public CreditCardLocal findByPrimaryKey(Object key) throws FinderException;
com.sun.j2ee.blueprints.creditcard.ejb EJB This interface represents the local view of an Enterprise Java Bean (EJB), likely an Entity Bean. In the J2EE architecture, Entity Beans are used to represent persistent data in a database. The container manages the synchronization between this object and the underlying database table.
public interface CreditCardLocal extends javax.ejb.EJBLocalObject
com.sun.j2ee.blueprints.creditcard.ejb.CreditCardEJB EJB The class uses EJB 2.x Container Managed Persistence (CMP). The abstract getters and setters define the persistent fields, and the EJB container handles the actual database interactions (SQL generation, connection management) at runtime.
public abstract String getCardNumber();
public abstract void setCardNumber(String cardNumber);
com.sun.j2ee.blueprints.customer.account.ejb EJB The class is an EJB 2.x Entity Bean using Container-Managed Persistence (CMP). The abstract methods (getters/setters) are implemented by the EJB container to perform SQL operations (SELECT, INSERT, UPDATE) against the database. The mapping to specific tables and columns is defined in external XML deployment descriptors (not shown in code).
public abstract String getStatus(); // CMP field managed by container
com.sun.j2ee.blueprints.customer.account.ejb.AccountLocal EJB This is an EJB Local Interface (extending EJBLocalObject), which typically acts as the local view for an Entity Bean. Entity Beans in J2EE are used to represent persistent data in a database. The container handles the synchronization between this object and the database row.
public interface AccountLocal extends javax.ejb.EJBLocalObject
com.sun.j2ee.blueprints.customer.account.ejb.AccountLocalHome EJB This file is an EJB Local Home interface, which defines the lifecycle methods (create, find) for an Entity Bean. The EJB container intercepts calls to these methods to perform database INSERT and SELECT operations via Container-Managed Persistence (CMP) or Bean-Managed Persistence (BMP).
public AccountLocal findByPrimaryKey(Object key) throws FinderException;
com.sun.j2ee.blueprints.customer.ejb.CustomerEJB EJB This class is an EJB 2.x Entity Bean using Container-Managed Persistence (CMP). The EJB container is responsible for generating the SQL and database connectivity code to persist the 'userId' field and manage the relationships to Account and Profile entities.
public abstract String getUserId();
public abstract void setUserId(String userId);
com.sun.j2ee.blueprints.customer.ejb.CustomerLocal EJB This interface represents the local view of an Entity Bean (likely Container-Managed Persistence - CMP) in a J2EE application. It provides access to persistent customer data and relationships (Account, Profile) managed by the EJB container.
public interface CustomerLocal extends javax.ejb.EJBLocalObject
com.sun.j2ee.blueprints.customer.ejb.CustomerLocalHome EJB This is an EJB Entity Bean Home interface. It defines methods that map directly to database operations (INSERT for create, SELECT for finders) managed by the EJB container (CMP) or the bean implementation (BMP).
public CustomerLocal findByPrimaryKey(String userId) throws FinderException;
com.sun.j2ee.blueprints.customer.profile.ejb EJB The class uses EJB 2.x Container-Managed Persistence (CMP). The abstract getters and setters define the persistent fields, and the EJB container automatically handles the SQL generation, database connection, and synchronization based on the deployment descriptor configuration.
public abstract String getPreferredLanguage();
public abstract void setPreferredLanguage(String preferredLanguage);
com.sun.j2ee.blueprints.customer.profile.ejb EJB This interface acts as the local view for an Enterprise Java Bean (likely an Entity Bean or a Session Bean wrapping an Entity) that persists customer profile data. The actual database interaction is handled by the EJB container (CMP) or the bean implementation (BMP), but this interface defines the data access contract.
public interface ProfileLocal extends javax.ejb.EJBLocalObject
com.sun.j2ee.blueprints.customer.profile.ejb.ProfileLocalHome EJB This interface defines methods for creating and finding EJB instances, which implies database interaction managed by an EJB container. The `create` method corresponds to a database INSERT operation, and the `findByPrimaryKey` method corresponds to a database SELECT operation. This pattern is characteristic of EJB 2.x Container-Managed Persistence (CMP) or Bean-Managed Persistence (BMP), where the application server handles the persistence logic for entity beans.
public ProfileLocal findByPrimaryKey(Object key) throws FinderException;
com.sun.j2ee.blueprints.lineitem.ejb EJB This interface represents the local view of an Enterprise Java Bean (EJB), likely an Entity Bean using Container-Managed Persistence (CMP) or Bean-Managed Persistence (BMP). The EJB container manages the synchronization of this object's state with the underlying database table.
public interface LineItemLocal extends EJBLocalObject
com.sun.j2ee.blueprints.lineitem.ejb EJB This class is an EJB 2.x Container-Managed Persistence (CMP) Entity Bean. The abstract getter and setter methods (e.g., getCategoryId, setQuantity) correspond to persistent fields managed by the EJB container. The container generates the SQL to read/write these fields to a database table based on the deployment descriptor (ejb-jar.xml).
public abstract String getCategoryId();
public abstract void setCategoryId(String id);
com.sun.j2ee.blueprints.lineitem.ejb.LineItemLocalHome EJB This file is the Home interface for an Entity Bean. The 'create' methods correspond to database INSERT operations, and 'findByPrimaryKey' corresponds to a database SELECT operation by primary key. The actual persistence logic (SQL generation and execution) is handled by the EJB container (likely Container-Managed Persistence).
LineItemLocal create(String catId, String prodId, String itemId, String lineNo, int qty, float price, int qtyShipped) throws CreateException;
com.sun.j2ee.blueprints.opc.admin.ejb EJB The code interacts with the database indirectly through Enterprise Java Beans (Entity Beans). It uses Local Home interfaces to execute finders and retrieve Entity instances, which represent database rows.
PurchaseOrderLocalHome pohome = getPO();
Collection poColl = pohome.findPOBetweenDates(start.getTime(), end.getTime());
Iterator it = poColl.iterator();
while((it!= null) && (it.hasNext())) {
    po = (PurchaseOrderLocal) it.next();
    // ...
com.sun.j2ee.blueprints.opc.customerrelations.ejb EJB The code uses EJB 2.x Entity Beans to interact with the database. It utilizes the `PurchaseOrderLocalHome` interface to find a `PurchaseOrderLocal` entity bean by its primary key (the order ID). This abstracts the direct database operations.
PurchaseOrderLocal po = poHome.findByPrimaryKey(invoiceXDE.getOrderId());
com.sun.j2ee.blueprints.opc.customerrelations.ejb.MailCompletedOrderMDB EJB The code uses EJB 2.x Entity Beans to access database information. It uses the `PurchaseOrderLocalHome` interface to find a Purchase Order by its primary key (the order ID) and retrieves the underlying data object.
PurchaseOrder poData = poHome.findByPrimaryKey(orderId).getData();
com.sun.j2ee.blueprints.opc.customerrelations.ejb.MailOrderApprovalMDB EJB The code interacts with the database via EJB 2.x Entity Beans. It uses the PurchaseOrderLocalHome interface to find PurchaseOrderLocal entity instances by their primary key (OrderId).
po = poHome.findByPrimaryKey(co.getOrderId());
String emailAddress = po.getPoEmailId();
com.sun.j2ee.blueprints.opc.ejb EJB The code uses EJB 2.x Entity Beans (Local Interfaces) to persist data. It utilizes `PurchaseOrderLocalHome` to create new Purchase Order entities in the underlying database.
poHome = (PurchaseOrderLocalHome)serviceLocator.getLocalHome(JNDINames.PURCHASE_ORDER_EJB);
// ...
PurchaseOrder purchaseOrder = PurchaseOrder.fromXML(xmlMessage, entityCatalogURL, validateXmlPurchaseOrder);
poHome.create(purchaseOrder);
com.sun.j2ee.blueprints.opc.ejb.InvoiceMDB EJB The class interacts with the database through EJB 2.x Entity Beans. It uses `PurchaseOrderLocalHome` to find purchase orders by primary key and `ProcessManagerLocalHome` to create or find process managers. The actual persistence logic is abstracted by the EJB container (CMP or BMP).
poHome = (PurchaseOrderLocalHome)serviceLocator.getLocalHome(JNDINames.PURCHASE_ORDER_EJB);
PurchaseOrderLocal po = poHome.findByPrimaryKey(invoiceXDE.getOrderId());
processManager.updateStatus(invoiceXDE.getOrderId(), OrderStatusNames.COMPLETED);
com.sun.j2ee.blueprints.opc.ejb.OrderApprovalMDB EJB The code interacts with the database using EJB 2.x Entity Beans (`PurchaseOrderLocal`) and Session Beans (`ProcessManagerLocal`). It retrieves purchase orders by primary key and updates order statuses via the process manager.
po = poHome.findByPrimaryKey(co.getOrderId());
processManager.updateStatus(co.getOrderId(), co.getOrderStatus());
com.sun.j2ee.blueprints.petstore.controller.ejb EJB The code interacts with the database through Enterprise JavaBeans (EJB) Entity Beans. Specifically, it uses the `CustomerLocalHome` interface to find and create Customer entities, which represent persistent data in the underlying database.
ServiceLocator sl = new ServiceLocator();
CustomerLocalHome home =(CustomerLocalHome)sl.getLocalHome(JNDINames.CUSTOMER_EJBHOME);
customer = home.findByPrimaryKey(userId);
com.sun.j2ee.blueprints.petstore.controller.ejb.ShoppingClientFacadeLocal EJB This interface represents a J2EE Enterprise Java Bean (EJB) Local Interface. While the interface itself does not contain SQL, it defines the contract for a Session Bean that orchestrates Entity Beans (CustomerLocal) which map directly to database tables. The `getCustomer` and `createCustomer` methods imply direct interaction with the persistence layer via the EJB container.
public interface ShoppingClientFacadeLocal extends EJBLocalObject {
    public CustomerLocal getCustomer() throws FinderException;
}
com.sun.j2ee.blueprints.petstore.controller.ejb.actions EJB The code interacts with the persistence layer through Enterprise Java Beans (EJB). Specifically, it accesses the `ProfileLocal` entity bean to retrieve customer profile information (preferred language). The presence of `FinderException` handling indicates a database lookup operation.
ProfileLocal profile = scf.getCustomer().getProfile();
Locale locale = I18nUtil.getLocaleFromString(profile.getPreferredLanguage());
com.sun.j2ee.blueprints.petstore.controller.ejb.actions EJB The class delegates database persistence operations to the SignOnLocal Enterprise Java Bean. While this class does not contain direct SQL, it invokes the transactional 'createUser' method on the EJB, which is responsible for persisting the user credentials to the underlying data store.
SignOnLocalHome home =(SignOnLocalHome)sl.getLocalHome(JNDINames.SIGN_ON_EJBHOME);
signOn = home.create();
signOn.createUser(userName, password);
com.sun.j2ee.blueprints.petstore.controller.ejb.actions.CustomerEJBAction EJB The code interacts with the database through Enterprise JavaBeans (Entity Beans) accessed via a Session Facade. It retrieves Local Interfaces for Customer, Account, ContactInfo, Address, and CreditCard entities and performs updates by calling setter methods on these persistent objects.
CustomerLocal customer = scf.getCustomer();
AccountLocal account = customer.getAccount();
ContactInfoLocal contactInfoLocal = account.getContactInfo();
contactInfoLocal.setFamilyName(contactInfo.getFamilyName());
com.sun.j2ee.blueprints.petstore.controller.web EJB The class interacts with the persistence tier through Enterprise Java Beans (EJB). It uses a ServiceLocator to look up the 'ShoppingControllerLocalHome' via JNDI and creates a 'ShoppingControllerLocal' EJB. This EJB acts as a facade to manage data related to shopping carts and customers.
ShoppingControllerLocalHome scEjbHome =
   (ShoppingControllerLocalHome)serviceLocator.getLocalHome(JNDINames.SHOPPING_CONTROLLER_EJBHOME);
scEjb = scEjbHome.create();
com.sun.j2ee.blueprints.petstore.controller.web EJB This class interacts with the ShoppingControllerLocal Enterprise Java Bean. While it does not execute SQL directly, it delegates business operations to the EJB layer which is responsible for transaction management and persistence operations within the J2EE container.
ShoppingControllerLocal scEjb = pcm.getShoppingController(session);
return scEjb.processEvent(ev);
com.sun.j2ee.blueprints.petstore.tools.populate EJB The class interacts with the database via Enterprise Java Beans (EJB) 2.x Entity Beans. It looks up the Local Home interface using JNDI and invokes the `create` method to persist a new Profile entity.
InitialContext context = new InitialContext();
profileHome = (ProfileLocalHome) context.lookup(JNDI_PROFILE_HOME);
return profileHome.create(preferredLanguage, favoriteCategory, myListPreference, bannerPreference);
com.sun.j2ee.blueprints.petstore.tools.populate EJB The class uses Enterprise Java Beans (EJB 2.x) Entity Beans to persist account data. It interacts with the container via JNDI to locate the Home interface and creates new entities.
InitialContext context = new InitialContext();
accountHome = (AccountLocalHome) context.lookup(JNDI_ACCOUNT_HOME);
return accountHome.create(AccountLocalHome.Active, contactInfo, creditCard);
com.sun.j2ee.blueprints.petstore.tools.populate EJB The code interacts with the database through Enterprise Java Beans (EJB). It looks up the Local Home interface for the CreditCard EJB and invokes the `create` method, which delegates the actual database INSERT operation to the EJB container (likely CMP).
InitialContext context = new InitialContext();
creditCardHome = (CreditCardLocalHome) context.lookup(JNDI_CREDIT_CARD_HOME);
return creditCardHome.create(cardNumber, cardType, expiryDate);
com.sun.j2ee.blueprints.petstore.tools.populate EJB The class uses Enterprise JavaBeans (EJB) Entity Beans to interact with the database. It obtains a reference to the UserLocalHome interface via JNDI and uses it to create and find User entities.
InitialContext context = new InitialContext();
userHome = (UserLocalHome) context.lookup(JNDI_USER_HOME);
user = userHome.create(id, password);
com.sun.j2ee.blueprints.petstore.tools.populate.AddressPopulator EJB The code uses Enterprise JavaBeans (EJB) 2.x Local Interfaces to persist data. It looks up the EJB Home interface via JNDI and uses the `create()` factory method to instantiate a new persistent entity, then populates its fields via setter methods.
InitialContext context = new InitialContext();
addressHome = (AddressLocalHome) context.lookup(JNDI_ADDRESS_HOME);
AddressLocal address = addressHome.create();
address.setStreetName1(streetName1);
com.sun.j2ee.blueprints.petstore.tools.populate.ContactInfoPopulator EJB The class uses Enterprise Java Beans (EJB 2.x) Entity Beans to persist data. It looks up the Local Home interface via JNDI and uses the `create` method to insert data.
InitialContext context = new InitialContext();
contactInfoHome = (ContactInfoLocalHome) context.lookup(JNDI_CONTACT_INFO_HOME);
return contactInfoHome.create(givenName, familyName, phone, email, address);
com.sun.j2ee.blueprints.petstore.tools.populate.CustomerPopulator EJB The class interacts with the database via Enterprise Java Beans (EJB 2.x) Entity Beans. It uses the CustomerLocalHome interface to find, create, and remove Customer entities. It also interacts with AccountLocal and ProfileLocal interfaces to manage related data.
customerHome = (CustomerLocalHome) context.lookup(JNDI_CUSTOMER_HOME);
CustomerLocal customer = customerHome.create(id);
com.sun.j2ee.blueprints.processmanager.ejb EJB The class interacts with the database indirectly through EJB Entity Beans. It uses the `ManagerLocalHome` interface to find, create, and update `ManagerLocal` entities, which represent persistent data (likely orders). The actual SQL or database interaction is handled by the EJB container's persistence mechanism (CMP or BMP) associated with the `Manager` bean.
ManagerLocal manager = mlh.findByPrimaryKey(orderId);
manager.setStatus(status);
com.sun.j2ee.blueprints.processmanager.ejb EJB The interface extends EJBLocalObject and declares methods throwing CreateException and FinderException, which are standard EJB patterns for interacting with a persistence layer (likely Entity Beans or direct JDBC within a Session Bean). The methods imply CRUD operations on an order process entity.
public void createManager (String orderId, String status) throws CreateException;
com.sun.j2ee.blueprints.processmanager.ejb.ProcessManagerLocalHome EJB This is a Home interface for an Entity EJB, which represents a persistent data object. The create method typically corresponds to an INSERT operation in the underlying database, managed either by the container (CMP) or the bean implementation (BMP).
public ProcessManagerLocal create() throws CreateException;
com.sun.j2ee.blueprints.processmanager.manager.ejb EJB This file is an EJB Entity Bean Home interface. It defines persistence operations (create, find) that the EJB container maps to database operations (INSERT, SELECT).
public ManagerLocal create(String orderId, String status) throws CreateException;
com.sun.j2ee.blueprints.processmanager.manager.ejb EJB The class uses EJB 2.x Container-Managed Persistence (CMP). The abstract class defines the data schema via abstract getters and setters, and the EJB container is responsible for generating the SQL and database connectivity code at deployment time.
public abstract class ManagerEJB implements EntityBean {
    // CMP fields
    public abstract String getOrderId();
    public abstract void setOrderId(String orderId);
    // ...
}
com.sun.j2ee.blueprints.processmanager.manager.ejb.ManagerLocal EJB This interface represents the local view of an Enterprise Java Bean (EJB). In the context of J2EE Blueprints, this likely corresponds to an Entity Bean or a Session Bean that manages persistence for process manager state. The methods defined (getOrderId, getStatus, setStatus) imply a direct mapping to persistent fields or a stateful workflow backed by a database.
public interface ManagerLocal extends javax.ejb.EJBLocalObject
com.sun.j2ee.blueprints.purchaseorder.ejb EJB The code interacts with the database through EJB Entity Beans (Local interfaces). It navigates the relationship between PurchaseOrder and LineItems and updates the persistent state (quantityShipped) of LineItem entities.
LineItemLocal li = (LineItemLocal) liIt.next();
if(lineItemIds.containsKey(li.getItemId())) {
    Integer shipped = (Integer) lineItemIds.get(li.getItemId());
    li.setQuantityShipped(li.getQuantityShipped() + shipped.intValue());
}
com.sun.j2ee.blueprints.purchaseorder.ejb.PurchaseOrderEJB EJB The class is an EJB 2.0 Entity Bean using Container-Managed Persistence (CMP). The abstract getters and setters map directly to database columns managed by the EJB container. Relationships with other entities (LineItems, ContactInfo) are handled via Container-Managed Relationships (CMR).
public abstract String getPoId();
public abstract void setPoId(String id);
com.sun.j2ee.blueprints.purchaseorder.ejb.PurchaseOrderLocal EJB This interface defines an EJB Entity Bean using Container Managed Persistence (CMP). The comments explicitly mention 'getters and setters for PO CMP fields', indicating that the EJB container is responsible for mapping these methods to database columns and handling persistence automatically.
public String getPoId();
public void setContactInfo(ContactInfoLocal addr);
com.sun.j2ee.blueprints.purchaseorder.ejb.PurchaseOrderLocalHome EJB This interface defines methods for creating and finding PurchaseOrder EJB instances, which is a core part of the EJB 2.x persistence framework. While it doesn't contain direct database access code itself, the EJB container implements these methods to interact with the database. The `create` and `find...` methods are mapped to underlying persistence operations (e.g., SQL INSERT and SELECT statements) against the table corresponding to the PurchaseOrder entity. This pattern is characteristic of Container-Managed Persistence (CMP).
public PurchaseOrderLocal findByPrimaryKey(String poId) throws FinderException;
com.sun.j2ee.blueprints.signon.ejb EJB The class interacts with the database indirectly through Enterprise Java Beans (Entity Beans). It uses the `UserLocalHome` interface to find and create `UserLocal` entities, which represent rows in the underlying database table. The actual SQL generation and execution are handled by the EJB container (CMP) or the Entity Bean implementation (BMP).
UserLocal user = ulh.findByPrimaryKey(userName);
com.sun.j2ee.blueprints.signon.ejb.SignOnLocalHome EJB This file is the Home interface for an EJB Entity Bean. The `create()` method corresponds to the creation of a persistent entity, which implies a database INSERT operation managed by the EJB container (CMP) or the bean implementation (BMP).
public SignOnLocal create() throws CreateException;
com.sun.j2ee.blueprints.signon.user.ejb EJB This interface represents the local view of an Entity Bean, which is a J2EE component model specifically designed for database persistence. The methods defined (get/set password, getUserName) map directly to columns in a database table (likely a 'Users' or 'SignOn' table). In EJB 2.x, the container handles the synchronization between this object and the database row.
public interface UserLocal extends javax.ejb.EJBLocalObject {
    public String getUserName();
    public void setPassword(String password);
}
com.sun.j2ee.blueprints.signon.user.ejb.UserEJB EJB The class uses EJB 2.x Container-Managed Persistence (CMP). The abstract methods `getUserName`/`setUserName` and `getPassword`/`setPassword` are implemented by the EJB container to map directly to database columns. The container handles the generation of SQL for INSERT, UPDATE, SELECT, and DELETE operations based on the deployment descriptor configuration.
public abstract String getUserName();
public abstract void setUserName(String userName);
com.sun.j2ee.blueprints.signon.user.ejb.UserLocalHome EJB This interface defines the contract for an EJB 2.x Entity Bean's local home. It provides methods for creating and finding 'User' entities. The EJB container implements this interface at deployment time, generating the necessary data access logic (typically SQL) to interact with a database based on the EJB's deployment descriptor (e.g., ejb-jar.xml). The methods 'create', 'findByPrimaryKey', and 'findAllUsers' correspond to database INSERT and SELECT operations.
public UserLocal findByPrimaryKey (String userName) throws FinderException;
com.sun.j2ee.blueprints.signon.web EJB The servlet interacts with the database indirectly through an Enterprise Java Bean (SignOnLocal). The EJB encapsulates the persistence logic for creating a user.
InitialContext ic = new InitialContext();
Object o = ic.lookup("java:comp/env/ejb/SignOn");
SignOnLocalHome home =(SignOnLocalHome)o;
signOn = home.create();
signOn.createUser(userName, password);
com.sun.j2ee.blueprints.signon.web.SignOnFilter EJB The filter delegates the actual database authentication logic to an Enterprise JavaBean (`SignOnLocal`). The filter looks up the EJB via JNDI and invokes the `authenticate` method, which presumably interacts with the database to verify credentials.
InitialContext ic = new InitialContext();
Object o = ic.lookup("java:comp/env/ejb/SignOn");
SignOnLocalHome home =(SignOnLocalHome)o;
signOn = home.create();
boolean authenticated = signOn.authenticate(userName, password);
com.sun.j2ee.blueprints.supplier.inventory.ejb EJB The class uses EJB 2.x Container-Managed Persistence (CMP). The EJB container automatically handles the database interactions (SELECT, INSERT, UPDATE, DELETE) based on the abstract accessor methods defined in this class and the deployment descriptor mapping.
public abstract String getItemId();
public abstract void setItemId(String itemId);
com.sun.j2ee.blueprints.supplier.inventory.ejb EJB This interface represents a Container Managed Persistence (CMP) Entity Bean. The EJB container automatically handles the synchronization of the bean's state (itemId, quantity) with the underlying database table based on the deployment descriptor.
public interface InventoryLocal extends EJBLocalObject
com.sun.j2ee.blueprints.supplier.inventory.ejb EJB The code defines an EJB Local Home interface for a Container Managed Persistence (CMP) bean. The EJB container handles the actual database interactions (SQL generation, connection management) based on this interface and the associated deployment descriptors.
public InventoryLocal create(String itemId, int quantity)
    throws CreateException;
com.sun.j2ee.blueprints.supplier.inventory.web EJB The class interacts with the database indirectly by invoking methods on an Enterprise JavaBean (EJB) Local Home interface. The `findAllInventoryItems` method on the EJB likely executes a database query (SQL or JPQL) to retrieve all inventory records.
inventoryHomeRef = (InventoryLocalHome)
             serviceLocator.getLocalHome(JNDINames.INV_EJB);
invColl = inventoryHomeRef.findAllInventoryItems();
com.sun.j2ee.blueprints.supplier.inventory.web EJB The code interacts with the database using EJB 2.x Entity Beans (`InventoryLocal`) and Session Beans (`OrderFulfillmentFacadeLocal`). It performs explicit transaction management using JTA `UserTransaction` to wrap multiple database operations (finding and updating inventory items) into a single atomic unit.
ut = (UserTransaction) ic.lookup(JNDINames.USER_TRANSACTION);
ut.begin();
// ...
inventory = inventoryHomeRef.findByPrimaryKey(itemId);
inventory.setQuantity(qty.intValue());
// ...
ut.commit();
com.sun.j2ee.blueprints.supplier.orderfulfillment.ejb.OrderFulfillmentFacadeEJB EJB The application uses EJB 2.x Entity Beans to interact with the database. It persists new orders using the `SupplierOrderLocalHome` interface and manages inventory levels using the `InventoryLocalHome` interface. The persistence logic is abstracted behind these EJB interfaces, which handle the underlying database operations.
InventoryLocal inv = invHome.findByPrimaryKey(item.getItemId());
if(inv.getQuantity() < item.getQuantity())
  return(false);
inv.reduceQuantity(item.getQuantity());
com.sun.j2ee.blueprints.supplier.orderfulfillment.ejb.OrderFulfillmentFacadeLocal EJB This is an EJB Local Interface that defines business methods implying database interaction. The `processPO` method suggests data creation (INSERT), and `processPendingPO` throws `FinderException`, which is explicitly used in EJB to signal issues finding data in a database (SELECT). The underlying implementation would typically use EJB Entity Beans or JDBC.
public Collection processPendingPO() throws FinderException;
com.sun.j2ee.blueprints.supplier.processpo.ejb.SupplierOrderMDB EJB The class delegates data persistence and business logic to a local Enterprise Java Bean (Entity or Session facade). It does not execute SQL directly but relies on the `OrderFulfillmentFacadeLocal` component to persist purchase order data and generate invoices.
OrderFulfillmentFacadeLocalHome ref = (OrderFulfillmentFacadeLocalHome)
                                  serviceLocator.getLocalHome(JNDINames.ORDERFACADE_EJB);
poProcessor = ref.create();
// ...
invoice = poProcessor.processPO(xmlMessage);
com.sun.j2ee.blueprints.supplier.tools.populate EJB The class uses Enterprise JavaBeans (EJB) 2.x Entity Beans to manage persistence. It looks up the Local Home interface via JNDI and uses it to find, remove, and create inventory items.
InitialContext context = new InitialContext();
inventoryHome = (InventoryLocalHome) context.lookup(JNDI_INVENTORY_HOME);
// ...
inventory = inventoryHome.create(id, quantity);
com.sun.j2ee.blueprints.supplierpo.ejb EJB The class is an EJB 2.0 Entity Bean using Container-Managed Persistence (CMP). The EJB container handles the persistence of fields (PoId, PoDate, PoStatus) and relationships (ContactInfo, LineItems) to the underlying database.
public abstract String getPoId();
public abstract void setPoId(String id);
com.sun.j2ee.blueprints.supplierpo.ejb EJB The code defines an EJB Local Interface for an Entity Bean using Container Managed Persistence (CMP). The comments explicitly mention 'CMP fields', indicating that the EJB container automatically handles the persistence of fields like PoId, PoDate, and PoStatus to the underlying database.
public interface SupplierOrderLocal extends EJBLocalObject{
    // getters and setters for PO CMP fields
    public String getPoId();
com.sun.j2ee.blueprints.supplierpo.ejb EJB This is an EJB Entity Bean Home interface. It defines methods that the EJB container maps to database operations (INSERT for create, SELECT for finders).
SupplierOrderLocal create(SupplierOrder supplierOrder) throws CreateException;
com.sun.j2ee.blueprints.uidgen.counter.ejb EJB The class uses EJB 2.x Container-Managed Persistence (CMP). The EJB container automatically handles the mapping of the abstract 'counter' and 'name' fields to columns in a database table. The developer does not write SQL; instead, the container generates the necessary JDBC calls at runtime based on deployment descriptors.
public abstract int getCounter();
public abstract void setCounter(int counter);
com.sun.j2ee.blueprints.uidgen.counter.ejb.CounterLocalHome EJB This file is an EJB Local Home interface. In EJB 2.x architecture, methods defined here (create, findByPrimaryKey) directly map to persistence operations managed by the container (CMP) or the bean implementation (BMP). The 'create' method implies an INSERT operation, and 'findByPrimaryKey' implies a SELECT operation by ID.
public CounterLocal findByPrimaryKey(String name) throws FinderException;
com.sun.j2ee.blueprints.uidgen.ejb.UniqueIdGeneratorEJB EJB The class interacts with the persistence layer through EJB 2.x Entity Beans. It uses the CounterLocalHome interface to find existing Counter entities by their primary key or create new ones if they do not exist. This implies an underlying database table where counter states are stored.
counter = clh.findByPrimaryKey(name);
} catch (FinderException fe) {
    counter = clh.create(name);
}
src/lib/jstl/sql.tld JDBC This file defines the interface for the JSTL SQL library, which provides a direct wrapper around JDBC functionality for use in JSP pages. It defines tags that allow setting up JDBC DataSources, executing SQL queries and updates, and managing database transactions.
<tag>
    <name>setDataSource</name>
    <tag-class>org.apache.taglibs.standard.tag.el.sql.SetDataSourceTag</tag-class>
    <body-content>empty</body-content>
    <description>
        Creates a simple DataSource suitable only for prototyping.
    </description>
    <attribute>
        <name>driver</name>
        <required>false</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
    <attribute>
        <name>url</name>
        <required>false</required>
        <rtexprvalue>false</rtexprvalue>
    </attribute>
</tag>
src/lib/jstl/sql-rt.tld JDBC This TLD defines the interface for JSTL SQL tags, which act as wrappers around JDBC functionality. It enables the execution of arbitrary SQL statements directly from JSP pages by mapping XML tags to Java classes that manage JDBC Connections, Statements, and ResultSets.
<tag>
    <name>query</name>
    <tag-class>org.apache.taglibs.standard.tag.rt.sql.QueryTag</tag-class>
    <body-content>JSP</body-content>
    <description>
        Executes the SQL query defined in its body or through the
        sql attribute.
    </description>
...
com.sun.j2ee.blueprints.catalog.dao.CloudscapeCatalogDAO JDBC The class uses raw JDBC (Java Database Connectivity) to interact with a Cloudscape database. It obtains connections via a DataSource looked up through JNDI. It uses PreparedStatement for all queries to handle parameters safely. The code manually manages resources (Connection, PreparedStatement, ResultSet) using try-catch-finally blocks (or close calls within the try block in this specific legacy style).
c = getDataSource().getConnection();
ps = c.prepareStatement(GET_CATEGORY_STATEMENT,
                        ResultSet.TYPE_SCROLL_INSENSITIVE,
                        ResultSet.CONCUR_READ_ONLY);
ps.setString(1, l.toString());
ps.setString(2, categoryID);
rs = ps.executeQuery();
com.sun.j2ee.blueprints.catalog.dao.GenericCatalogDAO JDBC The class uses standard JDBC APIs (Connection, PreparedStatement, ResultSet) to interact with the database. It retrieves a DataSource via JNDI lookup. SQL statements are not hardcoded in the Java file but are constructed from fragments loaded from an external XML file, allowing for dynamic query generation based on parameters.
connection = getDataSource().getConnection();
String[] parameterValues = new String[] { locale.toString(), categoryID };
statement = buildSQLStatement(connection, sqlStatements, XML_GET_CATEGORY, parameterValues);
resultSet = statement.executeQuery();
com.sun.j2ee.blueprints.petstore.tools.populate JDBC The class interacts with the database using raw JDBC connections passed into its methods. It relies on a `PopulateUtils` helper class to execute SQL statements stored in a `Map`. It performs DDL (Create/Drop) and DML (Insert) operations.
PopulateUtils.executeSQLStatement(connection, sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.INSERT_OPERATION, "item"), PARAMETER_NAMES, this);
com.sun.j2ee.blueprints.petstore.tools.populate JDBC The class interacts with the database using standard JDBC `Connection` objects passed to its methods. It delegates the actual execution of SQL to a utility class `PopulateUtils`, which retrieves SQL templates from a `Map` based on operation keys (INSERT, CREATE, DROP, CHECK). It supports both direct execution against a database and generating SQL scripts (printing) when no connection is provided.
PopulateUtils.executeSQLStatement(connection, sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.INSERT_OPERATION, "product"), PARAMETER_NAMES, this);
com.sun.j2ee.blueprints.petstore.tools.populate JDBC The class interacts with the database using raw JDBC Connections and SQL statements provided in a Map. It uses a utility class 'PopulateUtils' to abstract the execution of PreparedStatement logic.
PopulateUtils.executeSQLStatement(connection, sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.INSERT_OPERATION, "category"), PARAMETER_NAMES, this);
com.sun.j2ee.blueprints.petstore.tools.populate JDBC The class manages database schema operations (DDL) and data verification via JDBC Connections passed to helper classes. It does not execute SQL directly but orchestrates the execution via CategoryPopulator, ProductPopulator, and ItemPopulator.
public void createTables(Connection connection) throws PopulateException {
    categoryPopulator.createTables(connection);
    productPopulator.createTables(connection);
    itemPopulator.createTables(connection);
    return;
  }
com.sun.j2ee.blueprints.petstore.tools.populate.CategoryDetailsPopulator JDBC The class interacts with the database using standard JDBC connections passed to its methods. It does not contain inline SQL but retrieves SQL statements from a `Map` (likely loaded from a properties file elsewhere). It performs DDL operations (CREATE, DROP) and DML operations (INSERT) via a helper utility `PopulateUtils`.
PopulateUtils.executeSQLStatement(connection, sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.INSERT_OPERATION, "category_details"), PARAMETER_NAMES, this);
com.sun.j2ee.blueprints.petstore.tools.populate.ItemDetailsPopulator JDBC The class interacts with the database using raw JDBC Connections passed to its methods. It executes SQL statements (INSERT, CREATE, DROP, CHECK) stored in a Map, using a helper utility 'PopulateUtils' to handle the PreparedStatement execution.
PopulateUtils.executeSQLStatement(connection, sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.INSERT_OPERATION, "item_details"), PARAMETER_NAMES, this);
com.sun.j2ee.blueprints.petstore.tools.populate.PopulateServlet JDBC The servlet interacts with the database using raw JDBC connections obtained from a DataSource looked up via JNDI. It executes dynamic SQL statements (DDL for table creation and DML for data insertion) that are parsed from XML configuration files.
InitialContext context = new InitialContext();
return ((DataSource) context.lookup(JNDINames.CATALOG_DATASOURCE)).getConnection();
com.sun.j2ee.blueprints.petstore.tools.populate.PopulateUtils JDBC The class interacts directly with the database using the Java Database Connectivity (JDBC) API. It uses `PreparedStatement` to execute arbitrary SQL commands (CREATE, INSERT, DROP, CHECK) defined in external maps or strings.
PreparedStatement statement = connection.prepareStatement(sqlStatement);
if (parameterNames != null) {
  for (int i = 0; i < parameterNames.length; i++) {
    String value = handler.getValue(parameterNames[i]);
    statement.setString(i + 1, value);
  }
}
statement.execute();
com.sun.j2ee.blueprints.petstore.tools.populate.ProductDetailsPopulator JDBC The class interacts with the database using raw JDBC Connections passed into its methods. It does not contain hardcoded SQL but retrieves SQL statements from a `Map` passed during construction, using keys generated by `PopulateUtils`. It performs DDL (Create, Drop) and DML (Insert) operations.
PopulateUtils.executeSQLStatement(connection, sqlStatements, PopulateUtils.makeSQLStatementKey(PopulateUtils.INSERT_OPERATION, "product_details"), PARAMETER_NAMES, this);
com.sun.j2ee.blueprints.servicelocator.ejb.ServiceLocator JDBC The class acts as a factory to retrieve `javax.sql.DataSource` objects via JNDI lookup. It does not execute SQL itself, but it is the gateway for the application to obtain database connections managed by the application server.
dataSource = (DataSource)ic.lookup(dataSourceName);
com.sun.j2ee.blueprints.servicelocator.web.ServiceLocator JDBC The class acts as a factory to retrieve `javax.sql.DataSource` objects via JNDI lookup. It caches these references to optimize performance. It does not execute SQL itself, but provides the connection factory for other classes to do so.
dataSource = (DataSource)ic.lookup(dataSourceName);
dbstuff/forall-inserts-comparison.sql STORED-PROCEDURE The code is a native Oracle PL/SQL script that integrates directly with the database engine. It defines Data Definition Language (DDL) objects including tables and types, and uses a Stored Procedure to execute Data Manipulation Language (DML) operations. The integration leverages high-performance features such as Bulk Collect, FORALL, and Direct Path Inserts (via hints) to interact with the defined tables.
FORALL indx IN 1 .. num
   INSERT INTO parts
       VALUES (pnums (indx), pnames (indx) 
              );

show_elapsed_time ('FORALL (bulk)' || num);
dbstuff/forall-bulk-rowcount.sql STORED-PROCEDURE The code relies entirely on Oracle PL/SQL specific features. It integrates via stored procedures and anonymous blocks using bulk processing commands (`FORALL`, `BULK COLLECT`) to optimize database round-trips. It employs Dynamic SQL (`EXECUTE IMMEDIATE`) for schema changes and data insertion. It interacts with the `employees` table for updates and manages the lifecycle of the `empno_temp` table.
FORALL indx IN 1 .. n_in.COUNT
   EXECUTE IMMEDIATE 'insert into empno_temp values (:empno)'
      USING n_in (indx);
COMMIT;
dbstuff/cursors-in-plsql.sql STORED-PROCEDURE The code relies entirely on Oracle PL/SQL for database integration. It performs DDL to define schema objects and DML to manipulate data. It extensively uses stored procedures, packages, and anonymous blocks to interact with the database using various cursor mechanisms (Implicit, Explicit, REF CURSOR) and dynamic SQL methods (DBMS_SQL, EXECUTE IMMEDIATE patterns via OPEN FOR).
CURSOR species_cur (filter_in IN VARCHAR2) 
IS 
     SELECT * 
       FROM endangered_species 
      WHERE species_name LIKE filter_in;
dbstuff/cursor-for-loop.sql STORED-PROCEDURE The code integrates with an Oracle database using PL/SQL scripts and DDL. It defines a stored package ('emps_pkg') and executes anonymous blocks to manage data retrieval via cursors. The integration relies on standard SQL queries embedded within PL/SQL constructs to access the 'employees' table.
CURSOR emps_cur (department_id_in IN INTEGER) 
IS 
   SELECT * FROM employees 
    WHERE department_id = department_id_in;
dbstuff/cursor-for-loop-optimization.sql STORED-PROCEDURE The file defines a PL/SQL stored procedure that interacts with the Oracle database engine. It uses SELECT queries on the system table 'dual' to generate data. It also includes DDL statements (ALTER PROCEDURE) to modify compiler settings and anonymous PL/SQL blocks to execute the procedure.
CURSOR cur IS 
   SELECT * FROM dual 
   CONNECT BY LEVEL < 100001; 
FETCH cur BULK COLLECT INTO many_rows LIMIT 100;
ALTER PROCEDURE test_cursor_performance COMPILE plsql_optimize_level=2;
dbstuff/trigger-predicates.sql TRIGGER The code utilizes Oracle PL/SQL to define database triggers that respond to DML events (INSERT, UPDATE, DELETE). It integrates DDL for table creation, Stored Procedures for shared logic, and Triggers for event interception. The logic relies on Oracle-specific conditional predicates to determine the operation type dynamically.
CREATE OR REPLACE TRIGGER employee_changes_after 
   AFTER UPDATE OR INSERT  
   ON employees  
BEGIN  
   show_trigger_event;  
END;

Integration Points JSON

PetStore Admin Service

Namespace: com.sun.j2ee.blueprints.admin.client

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: N/A

Description: The interface defines a client proxy for interacting with a remote PetStore server.

PetStoreProxy

Namespace: com.sun.j2ee.blueprints.admin.client.DataSource

Mechanism: OTHER

Direction: BIDIRECTIONAL

Path/Topic: N/A

Description: Communicates with the backend server to retrieve orders and sales data, and to update order statuses.

ApplRequestProcessor

Namespace: com.sun.j2ee.blueprints.admin.client.HttpPostPetStoreProxy

Mechanism: REST

Direction: BIDIRECTIONAL

Path/Topic: /admin/ApplRequestProcessor

Description: The main entry point for the PetStore Admin backend. Although it uses XML payloads over HTTP POST (XML-RPC style), it functions as the primary HTTP integration point.

AdminRequestProcessor Servlet

Namespace: com.sun.j2ee.blueprints.admin.web

Mechanism: REST

Direction: CONSUMER

Path/Topic: /admin (inferred from JNLP codebase construction)

Description: Standard Java Servlet handling HTTP requests for the Admin module.

Order Approval Sender

Namespace: com.sun.j2ee.blueprints.admin.web.AdminRequestBD

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: Not directly specified, managed by the 'AsyncSender' EJB

Description: Produces a message to an asynchronous processing queue to handle order updates. The message payload is an XML representation of the 'OrderApproval' object. The actual sending is delegated to the 'AsyncSender' EJB.

ApplRequestProcessor

Namespace: com.sun.j2ee.blueprints.admin.web.ApplRequestProcessor

Mechanism: REST

Direction: N/A

Path/Topic: unknown (defined in web.xml)

Description: A single servlet endpoint that processes XML requests from a rich client. The specific action is determined by a `<Type>` element within the XML payload. It handles fetching orders by status, updating order statuses, and retrieving aggregated data for charts.

ASYNC_SENDER_QUEUE

Namespace: com.sun.j2ee.blueprints.asyncsender.ejb

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: JNDINames.ASYNC_SENDER_QUEUE

Description: Sends asynchronous text messages to a JMS queue defined by JNDI name.

AsyncSenderQueue

Namespace: com.sun.j2ee.blueprints.asyncsender.util.JNDINames

Mechanism: JMS-QUEUE

Direction: OTHER

Path/Topic: AsyncSenderQueue

Description: JNDI lookup name for the AsyncSender JMS Queue defined as a constant.

AsyncSender EJB

Namespace: com.sun.j2ee.blueprints.asyncsender.util.JNDINames

Mechanism: OTHER

Direction: N/A

Path/Topic: N/A

Description: JNDI lookup name for the AsyncSender Local EJB Home interface.

CatalogLocal EJB

Namespace: com.sun.j2ee.blueprints.catalog.client.CatalogHelper

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: JNDINames.CATALOG_EJBHOME

Description: Local Enterprise Java Bean interface for Catalog services

JNDI Configuration Lookup

Namespace: com.sun.j2ee.blueprints.catalog.dao

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: JNDINames.CATALOG_DAO_CLASS

Description: Looks up the implementation class name for the DAO from the JNDI context.

JNDI DataSource Lookup

Namespace: com.sun.j2ee.blueprints.catalog.dao.GenericCatalogDAO

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/jdbc/CatalogDataSource

Description: Looks up the JDBC DataSource using JNDI.

JNDI Configuration Lookup

Namespace: com.sun.j2ee.blueprints.catalog.dao.GenericCatalogDAO

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/url/CatalogDAOSQLURL

Description: Looks up the URL for the DAO SQL XML configuration file.

CatalogLocal

Namespace: com.sun.j2ee.blueprints.catalog.ejb

Mechanism: OTHER

Direction: BIDIRECTIONAL

Path/Topic: N/A

Description: EJB Local Interface defining the API for the Catalog service component.

java:comp/env/ejb/ContactInfo

Namespace: com.sun.j2ee.blueprints.customer.account.ejb

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/ContactInfo

Description: JNDI lookup for ContactInfo Local Home interface

java:comp/env/ejb/CreditCard

Namespace: com.sun.j2ee.blueprints.customer.account.ejb

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/CreditCard

Description: JNDI lookup for CreditCard Local Home interface

EJB Local Interface

Namespace: com.sun.j2ee.blueprints.customer.account.ejb.AccountLocal

Mechanism: OTHER

Direction: BIDIRECTIONAL

Path/Topic: N/A

Description: Exposes local business methods for the Account component within the EJB container.

java:comp/env/ejb/Account

Namespace: com.sun.j2ee.blueprints.customer.ejb.CustomerEJB

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/Account

Description: JNDI lookup for the Account EJB Local Home interface.

java:comp/env/ejb/Profile

Namespace: com.sun.j2ee.blueprints.customer.ejb.CustomerEJB

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/Profile

Description: JNDI lookup for the Profile EJB Local Home interface.

EncodingFilter

Namespace: com.sun.j2ee.blueprints.encodingfilter.web

Mechanism: REST

Direction: BOTH

Path/Topic: /* (configured in web.xml)

Description: A Servlet Filter that intercepts HTTP requests to set the character encoding.

mailer queue

Namespace: com.sun.j2ee.blueprints.mailer.ejb

Mechanism: JMS-QUEUE

Direction: CONSUMER

Path/Topic: N/A

Description: Receives email requests formatted as XML strings within JMS TextMessages.

JavaMail Service

Namespace: com.sun.j2ee.blueprints.mailer.ejb

Mechanism: OTHER

Direction: PRODUCER

Path/Topic: N/A

Description: Sends email messages via the configured J2EE Mail Session.

PurchaseOrder EJB

Namespace: com.sun.j2ee.blueprints.opc.admin.ejb

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/PurchaseOrder

Description: Local EJB interaction to retrieve purchase order data.

ProcessManager EJB

Namespace: com.sun.j2ee.blueprints.opc.admin.ejb

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/ProcessManager

Description: Local EJB interaction to retrieve process management data.

OPCAdminFacade EJB Remote Interface

Namespace: com.sun.j2ee.blueprints.opc.admin.ejb.OPCAdminFacade

Mechanism: OTHER

Direction: BIDIRECTIONAL

Path/Topic: N/A

Description: Defines the RMI-IIOP remote interface for the OPC Admin EJB, allowing remote clients to invoke administrative business logic.

OPCAdminFacadeHome

Namespace: com.sun.j2ee.blueprints.opc.admin.ejb.OPCAdminFacadeHome

Mechanism: OTHER

Direction: BIDIRECTIONAL

Path/Topic: N/A

Description: EJB Home Interface via RMI/IIOP

Invoice Listener

Namespace: com.sun.j2ee.blueprints.opc.customerrelations.ejb

Mechanism: JMS-QUEUE

Direction: CONSUMER

Path/Topic: N/A

Description: Receives JMS messages containing invoice XML data for processing.

MailInvoiceTransitionDelegate

Namespace: com.sun.j2ee.blueprints.opc.customerrelations.ejb

Mechanism: OTHER

Direction: PRODUCER

Path/Topic: N/A

Description: Delegates the sending of the generated email XML to the next step in the process (likely another JMS queue for the Mailer service).

MailCompletedOrderQueue

Namespace: com.sun.j2ee.blueprints.opc.customerrelations.ejb.MailCompletedOrderMDB

Mechanism: JMS-QUEUE

Direction: CONSUMER

Path/Topic: N/A

Description: Receives JMS messages containing the ID of completed orders.

OrderApprovalQueue

Namespace: com.sun.j2ee.blueprints.opc.customerrelations.ejb.MailOrderApprovalMDB

Mechanism: JMS-QUEUE

Direction: CONSUMER

Path/Topic: n/a

Description: Receives JMS messages containing OrderApproval XML documents.

MailerService

Namespace: com.sun.j2ee.blueprints.opc.customerrelations.ejb.MailOrderApprovalMDB

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: n/a

Description: Sends generated email XML messages to the mailer service via a TransitionDelegate.

PurchaseOrderQueue

Namespace: com.sun.j2ee.blueprints.opc.ejb

Mechanism: JMS-QUEUE

Direction: CONSUMER

Path/Topic: N/A

Description: Receives purchase order XML messages from the Pet Store frontend.

OrderApprovalQueue

Namespace: com.sun.j2ee.blueprints.opc.ejb

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: N/A

Description: Sends auto-approved order messages to the OrderApproval queue via the TransitionDelegate.

Invoice Queue

Namespace: com.sun.j2ee.blueprints.opc.ejb.InvoiceMDB

Mechanism: JMS-QUEUE

Direction: CONSUMER

Path/Topic: N/A

Description: Receives JMS messages containing XML invoices.

OrderApprovalQueue

Namespace: com.sun.j2ee.blueprints.opc.ejb.OrderApprovalMDB

Mechanism: JMS-QUEUE

Direction: CONSUMER

Path/Topic: N/A

Description: Receives order approval/denial notifications via JMS.

OrderApprovalQueue

Namespace: com.sun.j2ee.blueprints.opc.transitions

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: JNDINames.ORDER_APPROVAL_MDB_QUEUE

Description: Sends an order approval XML message to the Order Approval MDB Queue.

MAIL_SENDER_QUEUE

Namespace: com.sun.j2ee.blueprints.opc.transitions

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: JNDINames.MAIL_SENDER_QUEUE

Description: Sends an XML-formatted invoice email message to a JMS queue for asynchronous processing by a mailer service.

CR_MAIL_COMPLETED_ORDER_MDB_QUEUE

Namespace: com.sun.j2ee.blueprints.opc.transitions

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: CR_MAIL_COMPLETED_ORDER_MDB_QUEUE

Description: Queue used to send completed order messages for mailing.

JNDINames.MAIL_SENDER_QUEUE

Namespace: com.sun.j2ee.blueprints.opc.transitions

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: JNDINames.MAIL_SENDER_QUEUE

Description: Sends an XML-based email notification message to a JMS queue for asynchronous processing by a mailer service.

QueueConnectionFactory

Namespace: com.sun.j2ee.blueprints.opc.transitions.JNDINames

Mechanism: JMS-QUEUE

Direction: OTHER

Path/Topic: java:comp/env/jms/QueueConnectionFactory

Description: JNDI lookup name for the JMS Queue Connection Factory.

OrderApprovalQueue

Namespace: com.sun.j2ee.blueprints.opc.transitions.JNDINames

Mechanism: JMS-QUEUE

Direction: OTHER

Path/Topic: java:comp/env/jms/OrderApprovalQueue

Description: JNDI lookup name for the Order Approval MDB Queue.

OrderApprovalMailQueue

Namespace: com.sun.j2ee.blueprints.opc.transitions.JNDINames

Mechanism: JMS-QUEUE

Direction: OTHER

Path/Topic: java:comp/env/jms/OrderApprovalMailQueue

Description: JNDI lookup name for the Customer Relations Mail Order Approval Queue.

CompletedOrderMailQueue

Namespace: com.sun.j2ee.blueprints.opc.transitions.JNDINames

Mechanism: JMS-QUEUE

Direction: OTHER

Path/Topic: java:comp/env/jms/CompletedOrderMailQueue

Description: JNDI lookup name for the Customer Relations Mail Completed Order Queue.

PurchaseOrderQueue

Namespace: com.sun.j2ee.blueprints.opc.transitions.JNDINames

Mechanism: JMS-QUEUE

Direction: OTHER

Path/Topic: java:comp/env/jms/PurchaseOrderQueue

Description: JNDI lookup name for the Supplier Purchase Order Queue.

MailQueue

Namespace: com.sun.j2ee.blueprints.opc.transitions.JNDINames

Mechanism: JMS-QUEUE

Direction: OTHER

Path/Topic: java:comp/env/jms/MailQueue

Description: JNDI lookup name for the Mail Sender Queue.

MAIL_SENDER_QUEUE

Namespace: com.sun.j2ee.blueprints.opc.transitions.MailOrderApprovalTransitionDelegate

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: JNDINames.MAIL_SENDER_QUEUE

Description: Sends XML-formatted email messages to a JMS queue for asynchronous processing by a mailer service.

Supplier Purchase Order Queue

Namespace: com.sun.j2ee.blueprints.opc.transitions.OrderApprovalTD

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: JNDINames.SUPPLIER_PURCHASE_ORDER_QUEUE

Description: Queue used to send purchase orders to suppliers.

Mail Order Approval Queue

Namespace: com.sun.j2ee.blueprints.opc.transitions.OrderApprovalTD

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: JNDINames.CR_MAIL_ORDER_APPROVAL_MDB_QUEUE

Description: Queue used to send order approval/denial notices to customer relations for emailing.

Unknown (Dynamic)

Namespace: com.sun.j2ee.blueprints.opc.transitions.QueueHelper

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: n/a

Description: Sends a JMS TextMessage containing XML to a dynamically configured queue.

Customer Service

Namespace: com.sun.j2ee.blueprints.petstore.controller.ejb

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: JNDINames.CUSTOMER_EJBHOME

Description: Integration with the Customer EJB component via JNDI lookup.

Shopping Cart Service

Namespace: com.sun.j2ee.blueprints.petstore.controller.ejb

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: JNDINames.SHOPPING_CART_EJBHOME

Description: Integration with the Shopping Cart EJB component via JNDI lookup.

ShoppingClientFacadeLocal

Namespace: com.sun.j2ee.blueprints.petstore.controller.ejb.ShoppingClientFacadeLocal

Mechanism: OTHER

Direction: BIDIRECTIONAL

Path/Topic: N/A

Description: J2EE EJB Local Interface serving as a facade for shopping operations.

ShoppingCartLocal

Namespace: com.sun.j2ee.blueprints.petstore.controller.ejb.actions

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: N/A

Description: Invocation of EJB Local Interface for Shopping Cart operations

JNDINames.ASYNCSENDER_LOCAL_EJB_HOME

Namespace: com.sun.j2ee.blueprints.petstore.controller.ejb.actions.OrderEJBAction

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: unknown, encapsulated by AsyncSender EJB

Description: This action produces a message containing a purchase order in XML format. It uses the AsyncSender EJB, looked up via JNDI, to send the message to a message queue for asynchronous backend processing. This decouples the web front-end from order fulfillment tasks.

ShoppingControllerLocal

Namespace: com.sun.j2ee.blueprints.petstore.controller.web

Mechanism: OTHER

Direction: PRODUCER

Path/Topic: n/a

Description: Interaction with the EJB tier via the ShoppingControllerLocal interface.

HttpSessionAttributeListener

Namespace: com.sun.j2ee.blueprints.petstore.controller.web.SignOnNotifier

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: N/A

Description: Listens for changes to HTTP Session attributes to trigger application logic.

Servlet Request Processing

Namespace: com.sun.j2ee.blueprints.petstore.controller.web.actions.CustomerHTMLAction

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: N/A

Description: Processes standard Java Servlet HTTP requests to extract form data.

Order Processing Action

Namespace: com.sun.j2ee.blueprints.petstore.controller.web.actions.OrderHTMLAction

Mechanism: REST

Direction: CONSUMER

Path/Topic: unknown (dynamic)

Description: Consumes HTTP requests via the Servlet API to process form data.

User EJB

Namespace: com.sun.j2ee.blueprints.petstore.tools.populate

Mechanism: OTHER

Direction: BIDIRECTIONAL

Path/Topic: java:comp/env/ejb/User

Description: Integration with the EJB Container to manage User entities.

CreditCard EJB

Namespace: com.sun.j2ee.blueprints.petstore.tools.populate

Mechanism: OTHER

Direction: PRODUCER

Path/Topic: java:comp/env/ejb/CreditCard

Description: Integration with the CreditCard Enterprise Java Bean via JNDI lookup.

JNDI Account Lookup

Namespace: com.sun.j2ee.blueprints.petstore.tools.populate

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/Account

Description: Looks up the Account EJB Local Home interface using JNDI.

JNDI Lookup

Namespace: com.sun.j2ee.blueprints.petstore.tools.populate.AddressPopulator

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/Address

Description: Looks up the EJB Home interface using the Java Naming and Directory Interface.

JNDI_CONTACT_INFO_HOME

Namespace: com.sun.j2ee.blueprints.petstore.tools.populate.ContactInfoPopulator

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/ContactInfo

Description: Lookup of EJB Home interface via JNDI

JNDI Lookup

Namespace: com.sun.j2ee.blueprints.petstore.tools.populate.CustomerPopulator

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/Customer

Description: Lookups up the Local Home interface for the Customer EJB.

PopulateServlet

Namespace: com.sun.j2ee.blueprints.petstore.tools.populate.PopulateServlet

Mechanism: REST

Direction: CONSUMER

Path/Topic: /populate (inferred)

Description: Servlet endpoint that triggers the database population process.

EJB Local Interface

Namespace: com.sun.j2ee.blueprints.processmanager.ejb

Mechanism: OTHER

Direction: BIDIRECTIONAL

Path/Topic: N/A

Description: This interface acts as a local integration point for other components within the same JVM to access the Process Manager business logic via the EJB container.

Dynamic Queue Lookup

Namespace: com.sun.j2ee.blueprints.servicelocator.ejb.ServiceLocator

Mechanism: JMS-QUEUE

Direction: BOTH

Path/Topic: Dynamic (passed as parameter)

Description: Provides access to JMS Queues and QueueConnectionFactories via JNDI lookup.

Dynamic Topic Lookup

Namespace: com.sun.j2ee.blueprints.servicelocator.ejb.ServiceLocator

Mechanism: JMS-TOPIC

Direction: BOTH

Path/Topic: Dynamic (passed as parameter)

Description: Provides access to JMS Topics and TopicConnectionFactories via JNDI lookup.

java:comp/env/ejb/User

Namespace: com.sun.j2ee.blueprints.signon.ejb

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/User

Description: JNDI lookup for the User Entity Bean Home interface.

CreateUserServlet

Namespace: com.sun.j2ee.blueprints.signon.web

Mechanism: REST

Direction: BIDIRECTIONAL

Path/Topic: unknown

Description: HTTP Servlet endpoint for creating users.

SignOn Check Endpoint

Namespace: com.sun.j2ee.blueprints.signon.web.SignOnFilter

Mechanism: REST

Direction: CONSUMER

Path/Topic: j_signon_check

Description: Intercepts HTTP requests sent to the sign-on check URL to process login credentials.

RcvrRequestProcessor Servlet

Namespace: com.sun.j2ee.blueprints.supplier.inventory.web

Mechanism: REST

Direction: CONSUMER

Path/Topic: unknown (mapped in web.xml)

Description: Standard Java Servlet endpoint processing HTTP requests for supplier inventory and orders.

TransitionDelegate

Namespace: com.sun.j2ee.blueprints.supplier.inventory.web

Mechanism: OTHER

Direction: PRODUCER

Path/Topic: N/A

Description: Integration point for sending invoices, likely via messaging or XML transport, abstracted by the TransitionDelegate pattern.

Inventory EJB

Namespace: com.sun.j2ee.blueprints.supplier.inventory.web

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: JNDINames.INV_EJB

Description: Integration with a local Enterprise JavaBean via JNDI lookup.

INV_EJB

Namespace: com.sun.j2ee.blueprints.supplier.inventory.web.JNDINames

Mechanism: OTHER

Direction: N/A

Path/Topic: N/A

Description: JNDI Lookup Name for Inventory EJB

ORDERFACADE_EJB

Namespace: com.sun.j2ee.blueprints.supplier.inventory.web.JNDINames

Mechanism: OTHER

Direction: N/A

Path/Topic: N/A

Description: JNDI Lookup Name for OrderFulfillmentFacade EJB

USER_TRANSACTION

Namespace: com.sun.j2ee.blueprints.supplier.inventory.web.JNDINames

Mechanism: OTHER

Direction: N/A

Path/Topic: N/A

Description: JNDI Lookup Name for UserTransaction (JTA)

XML File Input

Namespace: com.sun.j2ee.blueprints.supplier.orderfulfillment.ejb

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: N/A

Description: Reads and parses XML files from the file system via the main method or input streams.

INVOICE_MDB_TOPIC

Namespace: com.sun.j2ee.blueprints.supplier.processpo.ejb.JNDINames

Mechanism: JMS-TOPIC

Direction: PRODUCER

Path/Topic: java:comp/env/jms/opc/InvoiceTopic

Description: JNDI name for the Invoice JMS Topic used to send invoices.

ORDERFACADE_EJB

Namespace: com.sun.j2ee.blueprints.supplier.processpo.ejb.JNDINames

Mechanism: OTHER

Direction: N/A

Path/Topic: java:comp/env/ejb/OrderFulfillmentFacade

Description: JNDI name for the OrderFulfillmentFacade EJB.

Supplier Order Queue

Namespace: com.sun.j2ee.blueprints.supplier.processpo.ejb.SupplierOrderMDB

Mechanism: JMS-QUEUE

Direction: CONSUMER

Path/Topic: N/A

Description: Receives purchase orders from the Order Processing Center.

Invoice Transition

Namespace: com.sun.j2ee.blueprints.supplier.processpo.ejb.SupplierOrderMDB

Mechanism: JMS-QUEUE

Direction: PRODUCER

Path/Topic: N/A

Description: Sends an invoice back to the OPC via a TransitionDelegate if the order is shipped.

PopulateServlet

Namespace: com.sun.j2ee.blueprints.supplier.tools.populate

Mechanism: REST

Direction: CONSUMER

Path/Topic: unknown (configured in web.xml)

Description: HTTP Servlet endpoint used to trigger data population.

INVOICE_MDB_TOPIC

Namespace: com.sun.j2ee.blueprints.supplier.transitions

Mechanism: JMS-TOPIC

Direction: PRODUCER

Path/Topic: INVOICE_MDB_TOPIC

Description: Publishes invoice XML messages to a JMS Topic for downstream processing.

TopicConnectionFactory

Namespace: com.sun.j2ee.blueprints.supplier.transitions

Mechanism: JMS-TOPIC

Direction: BOTH

Path/Topic: N/A

Description: Defines the JNDI location for the JMS Topic Connection Factory used to create connections for topic-based messaging.

InvoiceTopic

Namespace: com.sun.j2ee.blueprints.supplier.transitions

Mechanism: JMS-TOPIC

Direction: BOTH

Path/Topic: N/A

Description: Defines the JNDI location for the Invoice Topic, likely used for publishing or subscribing to invoice-related events.

Invoice MDB Topic

Namespace: com.sun.j2ee.blueprints.supplier.transitions.TopicSender

Mechanism: JMS-TOPIC

Direction: PRODUCER

Path/Topic: Configured via constructor (referenced as Invoice MDB Topic in Javadoc)

Description: Publishes XML text messages to a JMS Topic.

CounterLocal

Namespace: com.sun.j2ee.blueprints.uidgen.counter.ejb.CounterLocal

Mechanism: OTHER

Direction: BIDIRECTIONAL

Path/Topic: N/A

Description: EJB Local Interface definition for the Counter service, allowing local component integration.

java:comp/env/ejb/Counter

Namespace: com.sun.j2ee.blueprints.uidgen.ejb.UniqueIdGeneratorEJB

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: java:comp/env/ejb/Counter

Description: JNDI lookup for the Counter Entity Bean Home interface.

EJBControllerLocalEJB

Namespace: com.sun.j2ee.blueprints.waf.controller.ejb

Mechanism: OTHER

Direction: BOTH

Path/Topic: N/A

Description: EJB Session Bean implementation acting as a controller for the WAF framework.

MainServlet

Namespace: com.sun.j2ee.blueprints.waf.controller.web

Mechanism: REST

Direction: CONSUMER

Path/Topic: Defined in web.xml (not visible)

Description: Acts as the Front Controller Servlet handling HTTP requests for the application.

EJBControllerLocal

Namespace: com.sun.j2ee.blueprints.waf.controller.web

Mechanism: OTHER

Direction: BIDIRECTIONAL

Path/Topic: N/A

Description: Interaction with the EJB tier via a local interface to process business events.

HttpSessionListener

Namespace: com.sun.j2ee.blueprints.waf.controller.web

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: N/A

Description: Integrates with the Servlet Container lifecycle by extending the standard HttpSessionListener interface.

Servlet API Interaction

Namespace: com.sun.j2ee.blueprints.waf.controller.web.action.HTMLAction

Mechanism: REST

Direction: CONSUMER

Path/Topic: Dynamic (determined by implementing classes and controller mapping)

Description: This interface is designed to work within a Servlet container, processing HttpServletRequests. While it does not define a specific endpoint path itself, it is the contract for classes that handle HTTP requests in the web tier.

Servlet Request Dispatching

Namespace: com.sun.j2ee.blueprints.waf.controller.web.flow.ScreenFlowManager

Mechanism: OTHER

Direction: OTHER

Path/Topic: N/A

Description: Forwards HTTP requests to internal resources (JSPs or Servlets) based on flow logic.

TemplateServlet

Namespace: com.sun.j2ee.blueprints.waf.view.template.TemplateServlet

Mechanism: REST

Direction: CONSUMER

Path/Topic: /* (Dynamic based on configuration)

Description: Handles HTTP requests for UI screens, acting as a front controller.

Catalog Loader

Namespace: com.sun.j2ee.blueprints.xmldocuments.XMLDocumentEditorFactory

Mechanism: OTHER

Direction: CONSUMER

Path/Topic: n/a

Description: Loads configuration properties from a URL resource.