Author: bbrodt
Date: 2010-08-14 00:42:33 -0400 (Sat, 14 Aug 2010)
New Revision: 24172
Added:
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/SAXParseDiagnostic.java
Modified:
trunk/bpel/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/util/DeployResourceSetImpl.java
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELReader.java
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELResource.java
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELResourceImpl.java
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/BPELEditor.java
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELReader.java
trunk/bpel/plugins/org.eclipse.bpel.validator/plugin.xml
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/BPELReader.java
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Builder.java
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/factory/AdapterFactory.java
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/IProblem.java
Log:
https://jira.jboss.org/browse/JBIDE-6825
Fixed a bunch of NPEs and missing error markers for malformed BPEL XML files
Modified:
trunk/bpel/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/util/DeployResourceSetImpl.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/util/DeployResourceSetImpl.java 2010-08-14
01:06:26 UTC (rev 24171)
+++
trunk/bpel/plugins/org.eclipse.bpel.apache.ode.deploy.ui/src/org/eclipse/bpel/apache/ode/deploy/ui/util/DeployResourceSetImpl.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -29,9 +29,9 @@
@Override
public Resource getResource(URI uri, boolean loadOnDemand) {
String name = uri.toString().toLowerCase();
- if (name.endsWith("wsdl"))
+ if (name.endsWith("?wsdl") || name.endsWith(".wsdl"))
return getResource(uri,true,"wsdl");
- if (name.endsWith("wsil"))
+ if (name.endsWith(".wsil"))
return getResource(uri,true,"wsil");
if (name.endsWith(".xsd"))
return getResource(uri,true,"xsd");
Modified:
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELReader.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELReader.java 2010-08-14
01:06:26 UTC (rev 24171)
+++
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELReader.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -165,7 +165,10 @@
// The process we are reading
private Process process = null;
+ //
https://jira.jboss.org/browse/JBIDE-6825
// The resource we are reading from
+ private Resource fCurrentResource = null;
+ // The successfully loaded resource
private Resource fResource = null;
// The document builder controls various DOM characteristics
private DocumentBuilder docBuilder = null;
@@ -302,6 +305,11 @@
inputSource.setPublicId( resource.getURI().toString() );
inputSource.setSystemId( resource.getURI().toString() );
+ resource.setErrorHandler(fErrorHandler != null ? fErrorHandler : this);
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // set the resource currently being loaded so the error handler can
+ // attach diagnostics to it
+ fCurrentResource = resource;
doc = read ( inputSource );
// After the document has successfully parsed, it's okay
// to assign the resource.
@@ -311,15 +319,14 @@
} catch (IOException ioe) {
BPELPlugin.log("I/O Error Reading BPEL XML", ioe ) ;
} finally {
-
+
}
- if (doc == null) {
- return ;
+ if (doc != null) {
+ pass1(doc);
+ pass2();
}
-
- pass1(doc);
- pass2();
+ fCurrentResource = null;
}
@@ -336,22 +343,26 @@
/**
* @param xmlSource the XML source
- * @param sourceDesciption some textual description of the source (for example
Clipboard).
+ * @param sourceDescription some textual description of the source (for example
Clipboard).
* @return a list of objects
*/
- public List<EObject> fromXML ( String xmlSource , String sourceDesciption ,
Resource resource ) {
+ public List<EObject> fromXML ( String xmlSource , String sourceDescription ,
Resource resource ) {
armErrorHandler ();
- if (sourceDesciption == null) {
- sourceDesciption = "String";
+ if (sourceDescription == null) {
+ sourceDescription = "String";
}
Document doc = null;
try {
InputSource inputSource = new InputSource(new StringReader ( xmlSource ));
- inputSource.setPublicId( sourceDesciption );
+ inputSource.setPublicId( sourceDescription );
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // set the resource currently being loaded so the error handler can
+ // attach diagnostics to it
+ fCurrentResource = resource;
doc = read (inputSource);
} catch (SAXException sax) {
@@ -363,6 +374,7 @@
}
if (doc == null) {
+ fCurrentResource = null;
return Collections.emptyList();
}
@@ -376,6 +388,7 @@
// pass 1 (for example, establishing object links to variables).
pass2();
+ fCurrentResource = null;
return result;
}
@@ -3502,8 +3515,6 @@
return LINK_RESOLVER.getLink(activity, linkName);
}
-
-
/**
* @see org.xml.sax.ErrorHandler#error(org.xml.sax.SAXParseException)
*/
@@ -3519,6 +3530,10 @@
exception.getLocalizedMessage()
);
BPELPlugin.logMessage(message, exception, IStatus.ERROR);
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // add the error to resource
+ if (fCurrentResource!=null)
+ fCurrentResource.getErrors().add(new SAXParseDiagnostic(exception,
SAXParseDiagnostic.ERROR));
}
/**
@@ -3535,6 +3550,10 @@
exception.getLocalizedMessage()
);
BPELPlugin.logMessage(message, exception, IStatus.ERROR);
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // add the error to resource
+ if (fCurrentResource!=null)
+ fCurrentResource.getErrors().add(new SAXParseDiagnostic(exception,
SAXParseDiagnostic.FATAL_ERROR));
}
/**
@@ -3551,7 +3570,9 @@
exception.getLocalizedMessage()
);
BPELPlugin.logMessage(message, exception, IStatus.WARNING);
-
-
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // add the error to resource
+ if (fCurrentResource!=null)
+ fCurrentResource.getErrors().add(new SAXParseDiagnostic(exception,
SAXParseDiagnostic.WARNING));
}
}
Modified:
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELResource.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELResource.java 2010-08-14
01:06:26 UTC (rev 24171)
+++
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELResource.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -15,6 +15,7 @@
import org.eclipse.bpel.model.Process;
import org.eclipse.emf.ecore.resource.Resource;
+import org.xml.sax.ErrorHandler;
/**
@@ -34,6 +35,20 @@
* @see org.eclipse.emf.ecore.resource.impl.ResourceImpl#doSave(OutputStream, Map)
*/
void doSave(OutputStream out, Map<?, ?> args) throws Exception;
+
+ /**
+ * Set an error handler for SAX Parser
+ * @param errorHandler
+ * @see
https://jira.jboss.org/browse/JBIDE-6825
+ */
+ void setErrorHandler(ErrorHandler errorHandler);
+
+ /**
+ * Return the current SAX Parser error handler
+ * @return error handler
+ * @see
https://jira.jboss.org/browse/JBIDE-6825
+ */
+ ErrorHandler getErrorHandler();
/**
* Returns the BPEL process contained by this resource or
<code>null</code> if there is none.
Modified:
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELResourceImpl.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELResourceImpl.java 2010-08-14
01:06:26 UTC (rev 24171)
+++
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/BPELResourceImpl.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -78,6 +78,19 @@
validating = true;
}
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ public void setErrorHandler(ErrorHandler errorHandler)
+ {
+ this.errorHandler = errorHandler;
+ validating = true;
+ }
+
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ public ErrorHandler getErrorHandler()
+ {
+ return errorHandler;
+ }
+
/**
* Convert the BPEL model to an XML DOM model and then write the DOM model
* to the output stream.
Added:
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/SAXParseDiagnostic.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/SAXParseDiagnostic.java
(rev 0)
+++
trunk/bpel/plugins/org.eclipse.bpel.model/src/org/eclipse/bpel/model/resource/SAXParseDiagnostic.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -0,0 +1,68 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site:
http://www.fsf.org.
+ */
+package org.eclipse.bpel.model.resource;
+
+import org.eclipse.emf.ecore.resource.Resource.Diagnostic;
+import org.xml.sax.SAXParseException;
+
+/*
+ * This class represents a SAX parser diagnostic. These are added to the EMF resource.
+ *
+ * @see
https://jira.jboss.org/browse/JBIDE-6825
+ * @author Bob Brodt
+ * @date Aug 13, 2010
+ */
+public class SAXParseDiagnostic implements Diagnostic
+{
+ protected SAXParseException exception;
+ protected int severity;
+
+ public static final int WARNING = 1;
+ public static final int ERROR = 2;
+ public static final int FATAL_ERROR = 3;
+
+ SAXParseDiagnostic(SAXParseException exception, int severity)
+ {
+ this.exception = exception;
+ this.severity = severity;
+ }
+
+ public int getColumn() {
+ return exception.getColumnNumber();
+ }
+
+ public int getLine() {
+ return exception.getLineNumber();
+ }
+
+ public String getLocation() {
+ return exception.getPublicId();
+ }
+
+ public String getMessage() {
+ return exception.getLocalizedMessage();
+ }
+
+ public int getSeverity() {
+ return severity;
+ }
+}
\ No newline at end of file
Modified: trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/BPELEditor.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/BPELEditor.java 2010-08-14
01:06:26 UTC (rev 24171)
+++
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/BPELEditor.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -552,11 +552,17 @@
updateTitle();
}
// Put the timestamp of the bpel file into the bpelex file.
- IFile bpelFile = BPELUtil.getBPELFile(getProcess());
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // if the Resource failed to parse then the Process is null.
+ // use the model client to get the IFile resource instead of getting it from Process
+ IFile bpelFile = getEditModelClient().getPrimaryResourceInfo().getFile();
long modificationStamp = bpelFile.getLocalTimeStamp();
ProcessExtension processExtension =
(ProcessExtension)ModelHelper.getExtension(getProcess());
- processExtension.setModificationStamp(modificationStamp);
- getExtensionsResource().setModified(true);
+ if (processExtension!=null)
+ {
+ processExtension.setModificationStamp(modificationStamp);
+ getExtensionsResource().setModified(true);
+ }
getEditModelClient().saveAll(progressMonitor);
}
Modified:
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELReader.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELReader.java 2010-08-14
01:06:26 UTC (rev 24171)
+++
trunk/bpel/plugins/org.eclipse.bpel.ui/src/org/eclipse/bpel/ui/util/BPELReader.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -71,6 +71,12 @@
IFile extensionsFile =
ResourcesPlugin.getWorkspace().getRoot().getFile(extensionsPath);
try {
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // At this point, the ResourceInfo.load() already loaded the process file
+ // but no parsing errors were logged in the Resource. This is because demand
+ // load was used by createResource(). Force a reload here, this time with
+ // proper error logging.
+ processResource.unload();
processResource.load(Collections.EMPTY_MAP);
EList<EObject> contents = processResource.getContents();
if (!contents.isEmpty())
@@ -175,6 +181,8 @@
IFile extensionsFile =
ResourcesPlugin.getWorkspace().getRoot().getFile(extensionsPath);
try {
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ processResource.unload();
processResource.load(Collections.EMPTY_MAP);
EList<EObject> contents = processResource.getContents();
if (!contents.isEmpty())
Modified: trunk/bpel/plugins/org.eclipse.bpel.validator/plugin.xml
===================================================================
--- trunk/bpel/plugins/org.eclipse.bpel.validator/plugin.xml 2010-08-14 01:06:26 UTC (rev
24171)
+++ trunk/bpel/plugins/org.eclipse.bpel.validator/plugin.xml 2010-08-14 04:42:33 UTC (rev
24172)
@@ -43,9 +43,12 @@
name="BPEL Validator"
point="org.eclipse.wst.validation.validator">
<validator>
- <filter
+ <runStrategy
+ project="true">
+ </runStrategy>
+ <filter
caseSensitive="false"
- nameFilter="*.bpel"
+ nameFilter="*.wsdl"
objectClass="org.eclipse.core.resources.IFile"/>
<run
async="true"
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/BPELReader.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/BPELReader.java 2010-08-14
01:06:26 UTC (rev 24171)
+++
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/BPELReader.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -17,6 +17,7 @@
import org.eclipse.bpel.common.extension.model.ExtensionMap;
import org.eclipse.bpel.model.Process;
+import org.eclipse.bpel.model.impl.BPELFactoryImpl;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
@@ -115,6 +116,12 @@
this.process = null;
try {
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // If the ResourceInfo.load() already loaded the process file
+ // but no parsing errors were logged in the Resource. This is because demand
+ // load was used by createResource(). Force a reload here, this time with
+ // proper error logging.
+ processResource.unload();
processResource.load (Collections.EMPTY_MAP);
EList contents = processResource.getContents();
if (!contents.isEmpty()) {
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Builder.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Builder.java 2010-08-14
01:06:26 UTC (rev 24171)
+++
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Builder.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -13,11 +13,13 @@
import org.eclipse.bpel.model.Import;
import org.eclipse.bpel.model.Process;
import org.eclipse.bpel.model.resource.BPELResourceSetImpl;
+import org.eclipse.bpel.model.resource.SAXParseDiagnostic;
import org.eclipse.bpel.validator.factory.AdapterFactory;
import org.eclipse.bpel.validator.helpers.ModelQueryImpl;
import org.eclipse.bpel.validator.model.INode;
import org.eclipse.bpel.validator.model.IProblem;
import org.eclipse.bpel.validator.model.Messages;
+import org.eclipse.bpel.validator.model.Problem;
import org.eclipse.bpel.validator.model.Runner;
import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
@@ -38,6 +40,7 @@
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.Resource.Diagnostic;
import org.eclipse.wst.wsdl.WSDLElement;
import org.w3c.dom.Element;
@@ -204,7 +207,7 @@
p("File Resource : " + file.getName() );
//
https://jira.jboss.org/jira/browse/JBIDE-6006
// use content type to check for BPEL files
- if ( isBPELFile(file) || file.getName().endsWith(".wsdl")) {
+ if ( isBPELFile(file) || "wsdl".equalsIgnoreCase(file.getFileExtension()) )
{
IProject project = file.getProject();
validate(project, monitor);
// file.deleteMarkers(IBPELMarker.ID, true, IResource.DEPTH_INFINITE);
@@ -258,6 +261,12 @@
Process process = fReader.getProcess();
p("Delete markers");
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // in case of XML parse errors, the Process will be null!
+ if (process == null) {
+ p ("Cannot read BPEL Process !!!");
+ return;
+ }
IContainer container = bpelFile.getParent();
for(Import impt : process.getImports()){
@@ -293,6 +302,34 @@
Process process = fReader.getProcess();
if (process == null) {
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // if the resource failed to parse because of malformed XML, the Process
+ // will be null. Fetch the SAXParseDiagnostics from the resource and build
+ // problem markers for this resource.
+ Resource resource = fReader.getProcessResource();
+ if ( resource!=null && !resource.getErrors().isEmpty() )
+ {
+ ArrayList<IProblem> problems = new
ArrayList<IProblem>(resource.getErrors().size());
+ for ( Diagnostic d : resource.getErrors())
+ {
+ IProblem problem = new Problem();
+ problem.setAttribute(IProblem.ERESOURCE,resource);
+ if (d instanceof SAXParseDiagnostic &&
+ ((SAXParseDiagnostic)d).getSeverity() == SAXParseDiagnostic.WARNING)
+ {
+ problem.setAttribute(IProblem.SEVERITY, IProblem.SEVERITY_WARNING);
+ }
+ else
+ problem.setAttribute(IProblem.SEVERITY, IProblem.SEVERITY_ERROR);
+ problem.setAttribute(IProblem.LINE_NUMBER, d.getLine());
+ problem.setAttribute(IProblem.COLUMN_NUMBER, d.getColumn());
+ problem.setAttribute(IProblem.MESSAGE, d.getMessage());
+
+ problems.add(problem);
+ }
+ return problems.toArray( new Problem[problems.size()] );
+ }
+
p ("Cannot read BPEL Process !!!");
return EMPTY_PROBLEMS ;
}
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/factory/AdapterFactory.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/factory/AdapterFactory.java 2010-08-14
01:06:26 UTC (rev 24171)
+++
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/factory/AdapterFactory.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -13,6 +13,7 @@
import org.eclipse.bpel.validator.helpers.DOMNodeAdapter;
import org.eclipse.bpel.validator.model.INode;
import org.eclipse.bpel.validator.model.IProblem;
+import org.eclipse.core.internal.resources.File;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
@@ -153,8 +154,17 @@
IMarker adapt_IProblem2IMarker (IProblem problem ) {
- INode node = (INode) problem.getAttribute( IProblem.NODE );
- IResource resource = (IResource) getAdapter(node.nodeValue(), IResource.class );
+ IResource resource = null;
+ INode node = (INode) problem.getAttribute( IProblem.NODE );
+ if (node!=null)
+ resource = (IResource) getAdapter(node.nodeValue(), IResource.class );
+ else
+ {
+ //
https://jira.jboss.org/browse/JBIDE-6825
+ // added a new ERESOURCE attribute
+ Resource modelResource = (Resource) problem.getAttribute( IProblem.ERESOURCE );
+ resource = getFileFromURI(modelResource.getURI());
+ }
Map<String,Object> props = new HashMap<String,Object>();
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/IProblem.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/IProblem.java 2010-08-14
01:06:26 UTC (rev 24171)
+++
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/model/IProblem.java 2010-08-14
04:42:33 UTC (rev 24172)
@@ -174,6 +174,13 @@
public static final String CONTEXT = "context.name"; //$NON-NLS-1$
+ /**
+ * In case the model is completely hoarked and we don't even have
+ * a Process or any sort of context, we still want to be able to
+ * report this as a problem. This is the emf Resource that is in error.
+ * @see
https://jira.jboss.org/browse/JBIDE-6825
+ */
+ public static final String ERESOURCE = "eResource"; //$NON-NLS-1$
/**
* This is the name of the Java Resource bundle