重點是記錄Spring Bean XML的差異性。
Spring Bean XML
重點在於property標籤設定,如果你參考了foundation的api請記得把他加進來!!,
所以這個範例要使用了Repository,請設定rel=repositoryHelper。
<bean
id="webscript.org.example.simplejavadir.get"
class="org.example.SimpleJavaDir"
parent="webscript">
<property name="repository" ref="repositoryHelper"/>
</bean>
Java backed controller
透過xml的設定, 就可以透過 public void setRepository(Repository repository) {}直接呼叫alfresco的核心api了。
package org.example;
import java.util.HashMap;
import java.util.Map;
import org.alfresco.repo.model.Repository;
import org.alfresco.service.cmr.repository.NodeRef;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.extensions.webscripts.Cache;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptException;
import org.springframework.extensions.webscripts.WebScriptRequest;
public class SimpleJavaDir extends DeclarativeWebScript {
private Repository repository;
private static Log s_logger = LogFactory.getLog(SimpleJavaDir.class);
public void setRepository(Repository repository) {
this.repository = repository;
}
@Override
protected Map<string, object> executeImpl(WebScriptRequest req,
Status status, Cache cache) {
s_logger.debug("SimpleJavaDir entry");
// extract folder listing arguments from URI
String verboseArg = req.getParameter("verbose");
Boolean verbose = Boolean.parseBoolean(verboseArg);
Map<string, string> templateArgs = req.getServiceMatch().getTemplateVars();
String folderPath = templateArgs.get("folderpath");
String nodePath = "workspace/SpacesStore/" + folderPath;
// @param1 one of "node", "path", or "avmpath"
NodeRef folder = repository.findNodeRef("path", nodePath.split("/"));
// validate that folder has been found
if (folder == null) {
throw new WebScriptException(Status.STATUS_NOT_FOUND, "Folder "
+ folderPath + " not found");
//you will see the followning messages in your server
// ERROR [extensions.webscripts.AbstractRuntime] Exception from executeScript - redirecting to status template error: 05190001 Folder Company Homes not found
}
// construct model for response template to render
Map<string, object> model = new HashMap<string, object>();
model.put("verbose", verbose);
model.put("folder", folder);
model.put("nodePath", nodePath);
return model;
}
}
沒有留言:
張貼留言
留個話吧:)