# Getting Started

This codebase is a collection of XML and Java fixture examples used to exercise code-reference extraction across web, EJB, JSP, and config-style files. The project is intentionally small and pattern-driven: most of the useful context lives in the XML descriptors and a few representative Java classes rather than in a large application framework.

## What This Project Does

The repository models how different file types declare class references, bean wiring, servlet/filter setup, and external schema or JNDI metadata. If you are new here, focus on understanding how a file’s structure signals a reference — that is the main theme across the fixtures.

## Recommended Reading Order

1. Start with [the manifest](../_manifest.json) to see the fixture families and which files belong together.
2. Read the “full” example set next: [web-full.xml](../full-fixture-codebase/koptWebA/WebContent/WEB-INF/web-full.xml), [ACA001SFLogic.java](../full-fixture-codebase/src/java/eo/web/webview/ACA001SF/ACA001SFLogic.java), and [ACA001SFBean.java](../full-fixture-codebase/src/java/eo/web/webview/ACA001SF/ACA001SFBean.java).
3. Then scan the smaller focused fixtures: [web.xml](../xml-web-xml-multi-pattern/koptWebA/WebContent/WEB-INF/web.xml), [faces-config.xml](../xml-faces-config/koptWebA/WebContent/WEB-INF/faces-config.xml), [sun-ejb-jar.xml](../xml-sun-ejb-jar/koptBp/ejbModule/META-INF/sun-ejb-jar.xml), and [pure-config.xml](../xml-no-java-refs/src/config/pure-config.xml).
4. Finish by reviewing the edge cases: [external-refs.xml](../xml-unresolved-fqn/src/config/external-refs.xml), [commented-classes.xml](../xml-comment-with-class/src/config/commented-classes.xml), [schema-only.xml](../xml-dtd-xsd-ref/src/config/schema-only.xml), and [broken.xml](../xml-malformed/src/config/broken.xml).

## Key Entry Points

There are no highly connected classes in this repository, so the best entry points are the representative classes that appear in multiple fixtures:

- [eo.web.webview.ACA001SF.ACA001SFLogic](../full-fixture-codebase/src/java/eo/web/webview/ACA001SF/ACA001SFLogic.java) — the main example of a view-logic class referenced from XML.
- [eo.web.webview.ACA001SF.ACA001SFBean](../full-fixture-codebase/src/java/eo/web/webview/ACA001SF/ACA001SFBean.java) — the companion managed bean used by JSF-style configuration.
- [com.fujitsu.futurity.web.x33.filter.X33JVRequestEncodingSjisFilter](../full-fixture-codebase/src/java/com/fujitsu/futurity/web/x33/filter/X33JVRequestEncodingSjisFilter.java) — the servlet filter example used in web descriptor fixtures.

## Project Structure

- `full-fixture-codebase/` contains the most complete end-to-end example, combining Java classes, web descriptors, and JSP content.
- `xml-web-xml-multi-pattern/` shows a compact `web.xml` with a filter, servlet, and listener.
- `xml-faces-config/` focuses on JSF managed-bean registration.
- `xml-sun-ejb-jar/` and `xml-jndi-only/` show EJB deployment descriptors and JNDI mapping patterns.
- `xml-build-excluded/` demonstrates a project where build metadata and runtime config are intentionally separated.
- `xml-unresolved-fqn/`, `xml-comment-with-class/`, `xml-dtd-xsd-ref/`, and `xml-no-java-refs/` cover reference edge cases, schema hints, comments, and config-only files.
- `xml-malformed/` exists to test parser resilience against invalid XML.

## Configuration

The most important config files are:

- [pom.xml](../xml-build-excluded/pom.xml) — minimal Maven metadata for the build-excluded fixture.
- [real-config.xml](../xml-build-excluded/src/config/real-config.xml) — the actual class reference used by that fixture.
- [web.xml](../xml-web-xml-multi-pattern/koptWebA/WebContent/WEB-INF/web.xml) — declares the servlet filter, Faces servlet, and application listener.
- [faces-config.xml](../xml-faces-config/koptWebA/WebContent/WEB-INF/faces-config.xml) — maps managed-bean names to Java classes and scopes.
- [sun-ejb-jar.xml](../xml-sun-ejb-jar/koptBp/ejbModule/META-INF/sun-ejb-jar.xml) and [sun-ejb-jar-jndi-only.xml](../xml-jndi-only/META-INF/sun-ejb-jar-jndi-only.xml) — define EJB names, classes, and JNDI bindings.
- [pure-config.xml](../xml-no-java-refs/src/config/pure-config.xml) — a config file with no Java references, useful as a baseline.
- [schema-only.xml](../xml-dtd-xsd-ref/src/config/schema-only.xml) — shows an XML file that relies on schema metadata instead of Java linkage.

## Common Patterns

- XML descriptors usually identify Java types through fully qualified class names in element text or attributes.
- Several fixtures intentionally hide or complicate references: comments, unresolved external classes, malformed markup, and schema-only declarations.
- The Java files are small on purpose, so the important signal is their package/class name and how descriptors point to them.
- Treat `full-fixture-codebase/` as the canonical example when you want to understand the expected wiring pattern before reading the edge cases.

If you only have time to read three things, read [web-full.xml](../full-fixture-codebase/koptWebA/WebContent/WEB-INF/web-full.xml), [faces-config.xml](../xml-faces-config/koptWebA/WebContent/WEB-INF/faces-config.xml), and [sun-ejb-jar.xml](../xml-sun-ejb-jar/koptBp/ejbModule/META-INF/sun-ejb-jar.xml).