Subversion Repositories XServices

Compare Revisions

Regard whitespace Rev 186 → Rev 182

/xservices/trunk/src/java/net/brutex/xservices/ws/impl/XmlServiceImpl.java
26,12 → 26,17
import java.nio.charset.IllegalCharsetNameException;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;
 
import javax.jws.WebService;
import javax.ws.rs.NotAuthorizedException;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
 
import net.brutex.xservices.security.DirectoryPermission;
import net.brutex.xservices.types.AttributeType;
import net.brutex.xservices.types.NamespaceListType;
import net.brutex.xservices.types.NamespaceType;
53,9 → 58,9
import org.apache.axiom.om.OMText;
import org.apache.axiom.om.OMXMLBuilderFactory;
import org.apache.axiom.om.xpath.AXIOMXPath;
 
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.log4j.Logger;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.UnauthorizedException;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.jaxen.JaxenException;
import org.jaxen.SimpleNamespaceContext;
66,17 → 71,18
*/
@WebService(targetNamespace = "http://ws.xservices.brutex.net", endpointInterface = "net.brutex.xservices.ws.XmlService", serviceName = "XmlService")
public class XmlServiceImpl implements XmlService {
private static final Logger logger = LogManager.getLogger();
final Logger logger = Logger.getLogger(XmlServiceImpl.class);
 
public String insertNodesFromFile(FileResource res, NamespaceListType nsList, String xpath, String xmlFragment)
throws XServicesFault {
public String insertNodesFromFile(FileResource res, NamespaceListType nsList, String xpath, String xmlFragment) throws XServicesFault {
try {
AXIOMXPath axp = new AXIOMXPath(xpath);
InputStream is = res.getAntResource(null).getInputStream();
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is)
.getDocument();
OMDocument fragdoc = null;
if ((xmlFragment != null) && (new String(xmlFragment).length() > 0)) {
fragdoc = OMXMLBuilderFactory.createOMBuilder(new StringReader("<XS>" + xmlFragment + "</XS>"))
fragdoc = OMXMLBuilderFactory.createOMBuilder(
new StringReader("<XS>" + xmlFragment + "</XS>"))
.getDocument();
} else {
throw new XServicesFault("No xmldata to insert.");
108,8 → 114,7
}
}
 
public String replaceNodesFromFile(FileResource res, NamespaceListType nsList, String xpath, String xmlFragment)
throws XServicesFault {
public String replaceNodesFromFile(FileResource res, NamespaceListType nsList, String xpath, String xmlFragment) throws XServicesFault {
try {
AXIOMXPath axp = new AXIOMXPath(xpath);
InputStream is = res.getAntResource(null).getInputStream();
116,7 → 121,8
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
OMDocument fragdoc = null;
if ((xmlFragment != null) && (new String(xmlFragment).length() > 0)) {
fragdoc = OMXMLBuilderFactory.createOMBuilder(new StringReader("<XS>" + xmlFragment + "</XS>"))
fragdoc = OMXMLBuilderFactory.createOMBuilder(
new StringReader("<XS>" + xmlFragment + "</XS>"))
.getDocument();
} else {
throw new XServicesFault("No xmldata to insert.");
148,16 → 154,17
}
}
 
public String replaceNodes(String source, String encoding, NamespaceListType nsList, String xpath,
String xmlFragment) throws XServicesFault {
public String replaceNodes(String source, String encoding, NamespaceListType nsList, String xpath, String xmlFragment) throws XServicesFault {
encoding = validateEncoding(encoding);
try {
AXIOMXPath axp = new AXIOMXPath(xpath);
InputStream is = new ByteArrayInputStream(source.getBytes(encoding));
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is)
.getDocument();
OMDocument fragdoc = null;
if ((xmlFragment != null) && (new String(xmlFragment).length() > 0)) {
fragdoc = OMXMLBuilderFactory.createOMBuilder(new StringReader("<XS>" + xmlFragment + "</XS>"))
fragdoc = OMXMLBuilderFactory.createOMBuilder(
new StringReader("<XS>" + xmlFragment + "</XS>"))
.getDocument();
} else {
throw new XServicesFault("No xmldata to insert.");
189,16 → 196,17
}
 
@RequiresPermissions("insertNodes")
public String insertNodes(String source, String encoding, NamespaceListType nsList, String xpath,
String xmlFragment) throws XServicesFault {
public String insertNodes(String source, String encoding, NamespaceListType nsList, String xpath, String xmlFragment) throws XServicesFault {
encoding = validateEncoding(encoding);
try {
AXIOMXPath axp = new AXIOMXPath(xpath);
InputStream is = new ByteArrayInputStream(source.getBytes(encoding));
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is).getDocument();
OMDocument sourcedoc = OMXMLBuilderFactory.createOMBuilder(is)
.getDocument();
OMDocument fragdoc = null;
if ((xmlFragment != null) && (new String(xmlFragment).length() > 0)) {
fragdoc = OMXMLBuilderFactory.createOMBuilder(new StringReader("<XS>" + xmlFragment + "</XS>"))
fragdoc = OMXMLBuilderFactory.createOMBuilder(
new StringReader("<XS>" + xmlFragment + "</XS>"))
.getDocument();
} else {
throw new XServicesFault("No xmldata to insert.");
235,8 → 243,7
 
for (int i = 0; i < tokens.length; i++) {
result += tokens[i];
if (i + 1 < tokens.length)
result += "]]]]><![CDATA[>";
if (i+1 < tokens.length ) result += "]]]]><![CDATA[>";
}
 
result = "<![CDATA[" + result + "]]>";
243,8 → 250,7
return result;
}
 
public StringSplitType selectXPath(String source, String encoding, NamespaceListType nsList, String xpath)
throws XServicesFault {
public StringSplitType selectXPath(String source, String encoding, NamespaceListType nsList, String xpath) throws XServicesFault {
encoding = validateEncoding(encoding);
try {
StringSplitType rarray = new StringSplitType();
287,6 → 293,7
rarray.addStringMatch(text);
}
 
 
return rarray;
} catch (JaxenException e) {
e.printStackTrace();
299,8 → 306,7
}
}
 
public String setAttribute(String source, String encoding, NamespaceListType nsList, String xpath,
AttributeType attr) throws XServicesFault {
public String setAttribute(String source, String encoding, NamespaceListType nsList, String xpath, AttributeType attr) throws XServicesFault {
encoding = validateEncoding(encoding);
try {
StringSplitType rarray = new StringSplitType();
352,18 → 358,20
}
}
 
private OMDocument insertNodes(OMDocument xmldocument, AXIOMXPath axp, OMDocument xmlfragment)
throws XServicesFault {
private OMDocument insertNodes(OMDocument xmldocument, AXIOMXPath axp,OMDocument xmlfragment) throws XServicesFault {
List<?> olist = null;
try {
olist = axp.selectNodes(xmldocument.getOMDocumentElement());
this.logger.debug("XPath '" + axp.toString() + "' has " + olist.size() + " matches.");
this.logger.trace("XPath root expression is: '" + axp.debug() + "'.");
this.logger.debug("XPath '" + axp.toString() + "' has "
+ olist.size() + " matches.");
this.logger.trace("XPath root expression is: '" + axp.debug()
+ "'.");
} catch (JaxenException e) {
throw new XServicesFault(e.getMessage(), e);
}
if (olist.size() == 0)
throw new XServicesFault(Messages.getString("XmlService.no_match", new Object[] { axp.toString() }));
throw new XServicesFault(Messages.getString("XmlService.no_match",
new Object[] { axp.toString() }));
 
// Prepare children to insert
xmlfragment.build();
371,7 → 379,8
// Determine what has been matched
OMContainer match = null;
for (Object o : olist) {
Iterator<?> children = xmlfragment.getOMDocumentElement().getChildren();
Iterator<?> children = xmlfragment.getOMDocumentElement()
.getChildren();
if ((o instanceof OMNode)) {
OMNode node = (OMNode) o;
switch (node.getType()) {
392,13 → 401,16
this.logger.debug(Messages.getString("XmlService.10"));
break;
default:
this.logger
.error("XPath matched " + o.getClass().getCanonicalName() + " Node Type:" + node.getType());
this.logger.error("XPath matched "
+ o.getClass().getCanonicalName() + " Node Type:"
+ node.getType());
this.logger.error(Messages.getString("XmlService.11"));
throw new XServicesFault(Messages.getString("XmlService.12"));
throw new XServicesFault(
Messages.getString("XmlService.12"));
}
} else {
this.logger.error("XPath matched " + o.getClass().getCanonicalName());
this.logger.error("XPath matched "
+ o.getClass().getCanonicalName());
this.logger.error(Messages.getString("XmlService.11"));
throw new XServicesFault(Messages.getString("XmlService.12"));
}
413,19 → 425,22
return xmldocument;
}
 
private OMDocument replaceNodes(OMDocument xmldocument, AXIOMXPath axp, OMDocument xmlfragment)
throws XServicesFault {
 
private OMDocument replaceNodes(OMDocument xmldocument, AXIOMXPath axp, OMDocument xmlfragment) throws XServicesFault {
List<?> olist = null;
try {
olist = axp.selectNodes(xmldocument.getOMDocumentElement());
this.logger.debug("XPath '" + axp.toString() + "' has " + olist.size() + " matches.");
this.logger.trace("XPath root expression is: '" + axp.debug() + "'.");
this.logger.debug("XPath '" + axp.toString() + "' has "
+ olist.size() + " matches.");
this.logger.trace("XPath root expression is: '" + axp.debug()
+ "'.");
} catch (JaxenException e) {
throw new XServicesFault(e.getMessage(), e);
}
if (olist.size() == 0)
throw new XServicesFault(Messages.getString("XmlService.no_match", new Object[] { axp.toString() }));
throw new XServicesFault(Messages.getString("XmlService.no_match",
new Object[] { axp.toString() }));
 
// Prepare children to insert
xmlfragment.build();
433,7 → 448,8
// Determine what has been matched
OMNode match = null;
for (Object o : olist) {
Iterator<?> children = xmlfragment.getOMDocumentElement().getChildren();
Iterator<?> children = xmlfragment.getOMDocumentElement()
.getChildren();
if ((o instanceof OMNode)) {
OMNode node = (OMNode) o;
switch (node.getType()) {
445,13 → 461,16
this.logger.debug(Messages.getString("XmlService.8"));
break;
default:
this.logger
.error("XPath matched " + o.getClass().getCanonicalName() + " Node Type:" + node.getType());
this.logger.error("XPath matched "
+ o.getClass().getCanonicalName() + " Node Type:"
+ node.getType());
this.logger.error(Messages.getString("XmlService.11"));
throw new XServicesFault(Messages.getString("XmlService.12"));
throw new XServicesFault(
Messages.getString("XmlService.12"));
}
} else {
this.logger.error("XPath matched " + o.getClass().getCanonicalName());
this.logger.error("XPath matched "
+ o.getClass().getCanonicalName());
this.logger.error(Messages.getString("XmlService.11"));
throw new XServicesFault(Messages.getString("XmlService.12"));
}
472,8 → 491,9
if (nsList != null) {
for (NamespaceType ns : nsList.getNamespaces()) {
context.addNamespace(ns.getPrefix(), ns.getUri().toString());
this.logger.debug(
Messages.getString("XmlService.0") + ns.getPrefix() + "=\"" + ns.getUri().toString() + "\"'");
this.logger.debug(Messages.getString("XmlService.0")
+ ns.getPrefix() + "=\"" + ns.getUri().toString()
+ "\"'");
}
} else {
logger.debug("No namespaces defined.");
482,9 → 502,7
}
 
private String validateEncoding(String encoding) throws XServicesFault {
if (encoding == null || encoding.equals("")) {
encoding = Charset.defaultCharset().displayName();
}
if(encoding == null || encoding.equals("")) { encoding=Charset.defaultCharset().displayName(); }
try {
Charset.isSupported(encoding);
} catch (IllegalCharsetNameException e) {
494,4 → 512,5
return encoding;
}
 
 
}
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/FileInfoImpl.java
51,11 → 51,9
import net.brutex.xservices.types.FileInfoType;
import net.brutex.xservices.util.FileWalker;
 
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.CacheAccess;
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.jcs.JCS;
import org.apache.jcs.access.exception.CacheException;
import org.apache.log4j.Logger;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.UnauthorizedException;
 
67,7 → 65,7
public class FileInfoImpl implements FileInfo {
Logger logger = LogManager.getLogger();
Logger logger = Logger.getLogger(FileInfoImpl.class);
 
/* (non-Javadoc)
90,7 → 88,7
String cachekey = level + "||" + withFiles + "||" + withDir + "||" + search + "||" + dir;
try {
logger.debug(String.format("Hitting cache with cachekey '%s'", cachekey));
CacheAccess<Object, Object> jcs = JCS.getInstance("FileCache");
JCS jcs = JCS.getInstance("FileCache");
 
/*Try to retrieve the file list from the cache*/
List<FileInfoType> list = (List<FileInfoType>)jcs.get(cachekey);
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/DIMCMInfo.java
28,7 → 28,7
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
 
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.jcs.access.exception.CacheException;
 
import net.brutex.xservices.ws.XServicesFault;
 
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/DIMCMInfoImpl.java
33,20 → 33,16
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
 
import org.apache.commons.configuration2.PropertiesConfiguration;
import org.apache.commons.configuration2.builder.fluent.Configurations;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.CacheAccess;
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
import net.brutex.xservices.cmtypes.ItemType;
import net.brutex.xservices.cmtypes.ItemTypeList;
import net.brutex.xservices.types.FileInfoType;
import net.brutex.xservices.util.FileWalker;
 
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
import org.apache.jcs.JCS;
import org.apache.jcs.access.exception.CacheException;
import org.apache.log4j.Logger;
 
 
/*
80,7 → 76,7
*/
public class DIMCMInfoImpl implements DIMCMInfo {
 
Logger logger = LogManager.getLogger();
Logger logger = Logger.getLogger(DIMCMInfoImpl.class);
 
/*
* (non-Javadoc)
97,7 → 93,7
/*
* try to hit cache first
*/
CacheAccess<Object, Object> cache = JCS.getInstance("DIMCM");
JCS cache = JCS.getInstance("DIMCM");
String cachekey = projSpec + directory + String.valueOf(recursive);
if(useCache) {
ItemTypeList cacheresult = (ItemTypeList) cache.get(cachekey);
332,8 → 328,7
*/
PropertiesConfiguration props;
try {
props = new Configurations().properties(this.getClass()
props = new PropertiesConfiguration(this.getClass()
.getClassLoader().getResource("/../dimcm.properties"));
} catch (ConfigurationException e) {
e.printStackTrace();
354,13 → 349,11
private String getBaseURL() {
final String CACHE_BASEURL = "DIMCM.conf.baseurl";
try {
CacheAccess<Object, Object> cache = JCS.getInstance("DIMCM");
JCS cache = JCS.getInstance("DIMCM");
String baseurl = (String) cache.get(CACHE_BASEURL);
if(baseurl != null) return baseurl;
Configurations configs = new Configurations();
PropertiesConfiguration props = configs.properties((this.getClass().getClassLoader().getResource("/../dimcm.properties")));
PropertiesConfiguration props = new PropertiesConfiguration(this.getClass().getClassLoader().getResource("/../dimcm.properties"));
baseurl = props.getString("baseurl");
cache.put(CACHE_BASEURL, baseurl);
return baseurl;
/xservices/trunk/src/java/net/brutex/xservices/ws/rs/CVSInfoImpl.java
8,10 → 8,9
import java.net.URI;
import java.util.List;
import java.util.StringTokenizer;
 
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
 
import javax.ws.rs.core.Response.ResponseBuilder;
import net.brutex.xservices.types.scm.AttributeType;
import net.brutex.xservices.types.scm.ItemListType;
import net.brutex.xservices.types.scm.ItemType;
24,13 → 23,10
import net.brutex.xservices.util.BasicCVSListener;
import net.brutex.xservices.util.CVSClient;
import net.brutex.xservices.util.CVSRoot;
 
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.jcs.JCS;
import org.apache.commons.jcs.access.CacheAccess;
import org.apache.commons.jcs.access.exception.CacheException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.jcs.JCS;
import org.apache.jcs.access.exception.CacheException;
import org.apache.log4j.Logger;
import org.netbeans.lib.cvsclient.Client;
import org.netbeans.lib.cvsclient.command.CommandAbortedException;
import org.netbeans.lib.cvsclient.command.CommandException;
46,7 → 42,7
import org.netbeans.lib.cvsclient.event.FileInfoEvent;
 
public class CVSInfoImpl implements CVSInfo {
private static final Logger logger = LogManager.getLogger();
final Logger logger = Logger.getLogger(CVSInfoImpl.class);
final ObjectFactory FACTORY = new ObjectFactory();
final ItemListType list = this.FACTORY.createItemListType();
 
53,7 → 49,7
public Response getRepositoryFiles(HttpHeaders h, File f, String modules,
boolean isRecursive, boolean showRevisions, boolean forceNoCache) {
String cachekey = "getFiles" + f.toURI().toString();
CVSInfoImpl.logger.debug("forceNoCache=" + forceNoCache);
this.logger.debug("forceNoCache=" + forceNoCache);
ItemListType cacheresult = (ItemListType) getCacheInstance().get(
cachekey);
 
121,7 → 117,7
try {
CVSInfoImpl.this.getCacheInstance().put(key, cvsfile);
} catch (CacheException e) {
CVSInfoImpl.logger.error("Could not cache item '"
CVSInfoImpl.this.logger.error("Could not cache item '"
+ key + "'", e);
}
}
142,7 → 138,7
 
rlog.setRecursive(isRecursive);
 
CVSInfoImpl.logger.info("Executing CVS command '" + rlog.getCVSCommand()
this.logger.info("Executing CVS command '" + rlog.getCVSCommand()
+ "' against '" + cvsclient.getRoot().host + "@"
+ cvsclient.getRoot().repository + "'");
client.executeCommand(rlog, cvsclient.getGlobalOptions());
149,7 → 145,7
 
getCacheInstance().put(cachekey, this.list);
} catch (ConfigurationException e) {
CVSInfoImpl.logger.error("CVS Configuration File '" + f.getAbsolutePath()
this.logger.error("CVS Configuration File '" + f.getAbsolutePath()
+ f.getName() + "'not found.", e);
} catch (CommandAbortedException e) {
e.printStackTrace();
172,7 → 168,7
 
public Response getModules(HttpHeaders h, File f, boolean forceNoCache) {
String cachekey = "Modules" + f.toURI().toString();
CVSInfoImpl.logger.debug("forceNoCache=" + forceNoCache);
this.logger.debug("forceNoCache=" + forceNoCache);
 
ModuleListType response = (ModuleListType) getCacheInstance().get(
cachekey);
200,12 → 196,12
CheckoutCommand co = new CheckoutCommand();
co.setShowModulesWithStatus(true);
 
CVSInfoImpl.logger.info("Executing CVS command '" + co.getCVSCommand()
this.logger.info("Executing CVS command '" + co.getCVSCommand()
+ "' against '" + cvsclient.getRoot().host + "@"
+ cvsclient.getRoot().repository + "'");
client.executeCommand(co, cvsclient.getGlobalOptions());
if (list.getModules().size() == 0) {
CVSInfoImpl.logger.warn("Repository '"
this.logger.warn("Repository '"
+ cvsclient.getRoot().repository
+ "' does not have modules");
}
220,14 → 216,14
 
public Response getTags(HttpHeaders h, File f, boolean withFiles) {
String cachekey = f.toURI().toString() + ":taglist";
CVSInfoImpl.logger.debug("Retrieving Tags from cache using key '" + cachekey
this.logger.debug("Retrieving Tags from cache using key '" + cachekey
+ "'");
TagListType tags = (TagListType) getCacheInstance().get(cachekey);
if (tags != null) {
CVSInfoImpl.logger.debug("Delivering Tags from cache.");
this.logger.debug("Delivering Tags from cache.");
return Response.ok(tags).build();
}
CVSInfoImpl.logger.warn("Taglist not found in cache.");
this.logger.warn("Taglist not found in cache.");
return Response.noContent().build();
}
 
239,17 → 235,17
ItemListType list = null;
 
if (!forceNoCache) {
CVSInfoImpl.logger.debug("Retrieving file content from cache using key '"
this.logger.debug("Retrieving file content from cache using key '"
+ cachekey + "'");
list = (ItemListType) getCacheInstance().get(cachekey);
}
 
if (list != null) {
CVSInfoImpl.logger.debug("Delivering file content from cache.");
this.logger.debug("Delivering file content from cache.");
return Response.ok(list).build();
}
 
CVSInfoImpl.logger.warn("File content not found in cache.");
this.logger.warn("File content not found in cache.");
list = this.FACTORY.createItemListType();
try {
CVSClient cvsclient = new CVSClient(f);
306,7 → 302,7
checkout.setModule(filestring);
checkout.setPipeToOutput(true);
 
CVSInfoImpl.logger.info("Execute CVS command '" + checkout.getCVSCommand()
this.logger.info("Execute CVS command '" + checkout.getCVSCommand()
+ "' against '" + cvsclient.getRoot().host + "@"
+ cvsclient.getRoot().repository + "'");
client.executeCommand(checkout, cvsclient.getGlobalOptions());
326,14 → 322,14
return Response.noContent().build();
}
 
public CacheAccess<Object, Object> getCacheInstance() {
CacheAccess<Object, Object> jcs = null;
public JCS getCacheInstance() {
JCS jcs = null;
String cacheinstance = "CVSCache";
try {
CVSInfoImpl.logger.trace("Getting cache instance named 'CVSCache'");
this.logger.trace("Getting cache instance named 'CVSCache'");
jcs = JCS.getInstance("CVSCache");
} catch (CacheException e) {
CVSInfoImpl.logger.error("Failed to get cache instance", e);
this.logger.error("Failed to get cache instance", e);
e.printStackTrace();
}
return jcs;
347,16 → 343,16
+ client.getRoot().repository;
 
String cachestring = "FINDINGS-" + cvsroot;
CVSInfoImpl.logger
this.logger
.debug("Fetch searchFileContent response from cache using cachekey '"
+ cachestring + "'");
FindingsListType result = (FindingsListType) getCacheInstance()
.get(cachestring);
if (result != null)
CVSInfoImpl.logger.debug("Found object for key '" + cachestring
this.logger.debug("Found object for key '" + cachestring
+ "' in cache.");
else {
CVSInfoImpl.logger.debug("Found no object for key '" + cachestring
this.logger.debug("Found no object for key '" + cachestring
+ "' in cache.");
}