this.profileAssertions = WSITestToolsProperties.getProfileAssertions(
getAnalyzerConfig().getTestAssertionsDocumentLocation());
if (this.profileAssertions == null)
{
throw new WSIException(messageList.getMessage("config20",
"The WS-I Test Assertion Document (TAD)document was either not found or could not be processed."));
}
// Create report from document factory
report = documentFactory.newReport();
report.setLocation(getAnalyzerConfig().getReportLocation());
// Create report context
ReportContext reportContext =
new ReportContext(
WSIConstants.DEFAULT_REPORT_TITLE,
profileAssertions,
this);
report.setReportContext(reportContext);
// Create report writer
reportWriter = documentFactory.newReportWriter();
// I18N: 2003.02.26 modified by K.Nakagome@BeaconIT
//reportWriter.setWriter(new FileWriter(analyzerConfig.getReportLocation()));
reportWriter.setWriter(getAnalyzerConfig().getReportLocation());
// Create reporter
this.reporter = new DefaultReporter(report, reportWriter);
// fetch WSDL if not set in constructor
// First, attempt to get the WSDL URI from a UDDI tModel
if ((wsdlDocument == null) && (getAnalyzerConfig().isUDDIReferenceSet()))
wsdlDocument = getWsdlFromUddi();
/* Next, try to use the WSDL settings from the config file. If we can't
* fetch that WSDL, and the config file is set up to test a WSDL, then the
* validator fails here. */
if ((wsdlDocument == null) && (getAnalyzerConfig().isWSDLReferenceSet()))
{
wsdlDocument = new WSDLDocument(getAnalyzerConfig().
getWSDLLocation());
if (wsdlDocument == null)
throw new WSIException(messageList.getMessage("config05",
"WSDL document was either not found or could not be " +
"processed."));
}
/*
* Only validate messages against a wsdl document if the wsdl document
* does not contain soap 1.2 bindings.
*/
if (WSDLUtils.isSOAP12WSDL(wsdlDocument) && getAnalyzerConfig().getLogLocation() != null)
getAnalyzerConfig().setWSDLReference(null);
else
analyzerContext.setWsdlDocument(wsdlDocument);
// Start writing report
this.reporter.startReport();
// Walk through the artifact elements from the TAD, validating each one
profileAssertions.getArtifactList().keySet().iterator();
for (Iterator i = profileAssertions.getArtifactList().keySet().iterator();
i.hasNext(); ) {
String artifactType = (String) i.next();
// Set current artifact
reportArtifact = setCurrentArtifact(ArtifactType.getArtifactType(
artifactType));
validate(reportArtifact, factory.getValidatorForArtifact(
artifactType));
this.reporter.endCurrentArtifact();
}
// Finish the conformance report
reporter.finishReport();
}
catch (Exception e)
{
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
String message =
messageList.getMessage(
"error03",
"The conformance validation process failed.");
// Finish report
if (reporter != null)
{
pw.println(message);
pw.println(
messageList.getMessage("exception01", "Exception: ")
+ e.getClass().getName());
e.printStackTrace(pw);
reporter.finishReportWithError(sw.toString());
}
if (e instanceof WSIException)
throw (WSIException) e;
else
throw new WSIException(message, e);
}
finally
{
if (reportWriter != null)
{