Explorar el Código

优化客户端请求服务端知识包操作,服务端在响应读取知识包时不再访问用户登录信息

jacky6024 hace 8 años
padre
commit
90c6c79880

+ 7 - 2
urule-console/src/main/java/com/bstek/urule/console/DefaultKnowledgePackageService.java

@@ -36,7 +36,12 @@ public class DefaultKnowledgePackageService implements KnowledgePackageService{
 	private KnowledgeBuilder knowledgeBuilder;
 	private RepositoryService repositoryService;
 	
-	public KnowledgePackage buildKnowledgePackage(String packageInfo) throws IOException{
+	@Override
+	public KnowledgePackage buildKnowledgePackage(String packageInfo) throws IOException {
+		return buildKnowledgePackage(packageInfo,true);
+	}
+	@Override
+	public KnowledgePackage buildKnowledgePackage(String packageInfo,boolean withPermission) throws IOException{
 		try{
 			String[] info=packageInfo.split("/");
 			if(info.length!=2){
@@ -57,7 +62,7 @@ public class DefaultKnowledgePackageService implements KnowledgePackageService{
 			}
 			ResourceBase resourceBase=knowledgeBuilder.newResourceBase();
 			for(ResourceItem item:list){
-				resourceBase.addResource(item.getPath(),item.getVersion());
+				resourceBase.addResource(item.getPath(),item.getVersion(),withPermission);
 			}
 			KnowledgeBase knowledgeBase=knowledgeBuilder.buildKnowledgeBase(resourceBase);
 			KnowledgePackage knowledgePackage=knowledgeBase.getKnowledgePackage();

+ 9 - 3
urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryResourceProvider.java

@@ -32,13 +32,19 @@ import com.bstek.urule.builder.resource.ResourceProvider;
 public class RepositoryResourceProvider implements ResourceProvider {
 	public static final String JCR="jcr:";
 	private RepositoryService repositoryService;
-	public Resource provide(String path,String version) {
+	
+	@Override
+	public Resource provide(String path, String version) {
+		return null;
+	}
+	@Override
+	public Resource provide(String path,String version,boolean withPermiossion) {
 		String newpath=path.substring(4,path.length());
 		InputStream inputStream=null;
 		if(StringUtils.isEmpty(version) || version.equals("LATEST")){
-			inputStream=repositoryService.readFile(newpath,null);			
+			inputStream=repositoryService.readFile(newpath,null,withPermiossion);											
 		}else{
-			inputStream=repositoryService.readFile(newpath,version);						
+			inputStream=repositoryService.readFile(newpath,version,withPermiossion);														
 		}
 		try {
 			String content=IOUtils.toString(inputStream,"utf-8");

+ 1 - 0
urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryService.java

@@ -44,6 +44,7 @@ public interface RepositoryService {
 	List<RepositoryFile> loadProject(String companyId);
 	void fileRename(String path, String newPath,User user);
 	List<String> getReferenceFiles(String path,String searchText);
+	InputStream readFile(String path,String version,boolean withPermission);
 	InputStream readFile(String path,String version);
 	List<ResourcePackage> loadProjectResourcePackages(String project) throws Exception;
 	List<VersionFile> getVersionFiles(String path);

+ 7 - 2
urule-console/src/main/java/com/bstek/urule/console/repository/RepositoryServiceImpl.java

@@ -1046,10 +1046,15 @@ public class RepositoryServiceImpl implements RepositoryService, ApplicationCont
 		} finally {
 		}
 	}
+	
+	@Override
+	public InputStream readFile(String path, String version) {
+		return readFile(path,version,true);
+	}
 
 	@Override
-	public InputStream readFile(String path,String version) {
-		if(!permissionService.fileHasReadPermission(path)){
+	public InputStream readFile(String path,String version,boolean withPermission) {
+		if(withPermission && !permissionService.fileHasReadPermission(path)){
 			throw new NoPermissionException();
 		}
 		

+ 1 - 1
urule-console/src/main/java/com/bstek/urule/console/servlet/knowledge/LoadKnowledgeServletHandler.java

@@ -58,7 +58,7 @@ public class LoadKnowledgeServletHandler  extends RenderPageServletHandler{
 		String timestamp=req.getParameter("timestamp");
 		KnowledgePackage knowledgePackage=CacheUtils.getKnowledgeCache().getKnowledge(packageId);
 		if(knowledgePackage==null){
-			knowledgePackage=knowledgePackageService.buildKnowledgePackage(packageId);
+			knowledgePackage=knowledgePackageService.buildKnowledgePackage(packageId,false);
 			CacheUtils.getKnowledgeCache().putKnowledge(packageId, knowledgePackage);
 		}
 		if(StringUtils.isNotEmpty(timestamp)){

+ 1 - 0
urule-core/.gitignore

@@ -0,0 +1 @@
+/target/

+ 4 - 1
urule-core/src/main/java/com/bstek/urule/builder/ResourceBase.java

@@ -34,11 +34,14 @@ public class ResourceBase {
 		this.providers=providers;
 	}
 	public ResourceBase addResource(String path,String version){
+		return addResource(path,version,true);
+	}
+	public ResourceBase addResource(String path,String version,boolean withPermission){
 		boolean support=false;
 		for(ResourceProvider provider:providers){
 			if(provider.support(path)){
 				support=true;
-				resources.add(provider.provide(path,version));
+				resources.add(provider.provide(path,version,withPermission));
 				break;
 			}
 		}

+ 6 - 0
urule-core/src/main/java/com/bstek/urule/builder/resource/FileResourceProvider.java

@@ -31,6 +31,12 @@ import com.bstek.urule.RuleException;
  */
 public class FileResourceProvider implements ResourceProvider,ApplicationContextAware {
 	private ApplicationContext applicationContext;
+	
+	@Override
+	public Resource provide(String path, String version, boolean withPermiossion) {
+		return provide(path,version);
+	}
+	@Override
 	public Resource provide(String path,String version) {
 		try {
 			InputStream inputStream=applicationContext.getResource(path).getInputStream();

+ 1 - 0
urule-core/src/main/java/com/bstek/urule/builder/resource/ResourceProvider.java

@@ -21,5 +21,6 @@ package com.bstek.urule.builder.resource;
  */
 public interface ResourceProvider {
 	Resource provide(String path,String version);
+	Resource provide(String path,String version,boolean withPermiossion);
 	boolean support(String path);
 }

+ 1 - 0
urule-core/src/main/java/com/bstek/urule/runtime/service/KnowledgePackageService.java

@@ -26,4 +26,5 @@ import com.bstek.urule.runtime.KnowledgePackage;
 public interface KnowledgePackageService {
 	public static final String BEAN_ID="urule.knowledgePackageService";
 	KnowledgePackage buildKnowledgePackage(String packageInfo) throws IOException;
+	KnowledgePackage buildKnowledgePackage(String packageInfo,boolean withPermission) throws IOException;
 }