3.6.4 多节点权限操作示例

根据3.3节权限机制介绍,下面是一个操作节点的演示demo,请留意各自节点的权限范围,程序说明如下:

1)ParkServerDemo:启动parkserver(它的IP端口已经在配置文件的PARK部分的SERVERS指定。

2)ParkSet:往parkserver里创建了d1n1、d2n2、d3n3、d4n4共4个节点,分别对应只读、读写,所有,所有+强行删除权限。

3)ParkGet:依次对d1n1、d2n2、d3n3、d4n4进行读、写、删除、删除domain操作,观察结果输出,如果没有权限操作,parkserver会输出信息,并且操作返回的结果对象为空。

启动命令和顺序:

  1. Javac classpath fourinone.jar; *.java
  2. Java classpath fourinone.jar; ParkServerDemo
  3. Java classpath fourinone.jar; ParkSet
  4. Java classpath fourinone.jar; ParkGet

下面是demo源码:

  1. // ParkServerDemo
  2. import com.fourinone.BeanContext;
  3. public class ParkServerDemo{
  4. public static void main(String[] args){
  5. BeanContext.startPark();
  6. }
  7. }
  8.  
  9. // ParkSet
  10. import com.fourinone.BeanContext;
  11. import com.fourinone.ParkLocal;
  12. import com.fourinone.ObjectBean;
  13. import com.fourinone.AuthPolicy;
  14. public class ParkSet{
  15. public static void main(String[] args){
  16. //获取parkserver用户接口
  17. ParkLocal pl = BeanContext.getPark();
  18.  
  19. //在domain d1下创建节点node n1,指定权限为只读
  20. ObjectBean d1n1 = pl.create("d1","n1","v1",AuthPolicy.OP_READ);
  21. if(d1n1!=null)
  22. System.out.println("d1n1 with AuthPolicy.OP_READ create success!");
  23.  
  24. //在domain d2下创建节点node n2,指定权限为读写
  25. ObjectBean d2n2 = pl.create("d2","n2","v2",AuthPolicy.OP_READ_WRITE);
  26. if(d2n2!=null)
  27. System.out.println("d2n2 with AuthPolicy.OP_READ_WRITE create success!");
  28.  
  29. //在domain d3下创建节点node n3,指定权限为所有
  30. ObjectBean d3n3 = pl.create("d3","n3","v3",AuthPolicy.OP_ALL);
  31. if(d3n3!=null)
  32. System.out.println("d3n3 with AuthPolicy.OP_ALL create success!");
  33.  
  34. //在domain d4下创建节点node n4,指定权限为所有,并且创建完成强行设置为其他进程可删除
  35. ObjectBean d4n4 = pl.create("d4","n4","v4",AuthPolicy.OP_ALL);
  36. if(d4n4!=null)
  37. System.out.println("d4n4 with AuthPolicy.OP_ALL create success!");
  38. boolean r = pl.setDeletable("d4");
  39. if(r)
  40. System.out.println("set d4 deletable!");
  41. }
  42. }
  43.  
  44. // ParkGet
  45. import com.fourinone.BeanContext;
  46. import com.fourinone.ParkLocal;
  47. import com.fourinone.ObjectBean;
  48. import java.util.List;
  49. public class ParkGet{
  50. public static void main(String[] args){
  51. //获取parkserver用户接口
  52. ParkLocal pl = BeanContext.getPark();
  53.  
  54. //获取节点d1n1,节点权限为AuthPolicy.OP_READ
  55. ObjectBean d1n1 = pl.get("d1","n1");//获取节点
  56. System.out.println("get d1n1:"+(String)d1n1.toObject());
  57. d1n1 = pl.update("d1","n1","v1-update");//更新节点
  58. if(d1n1!=null)
  59. System.out.println("update node d1n1 success!");
  60. else
  61. System.out.println("update node d1n1 failure!");
  62. List<ObjectBean> d1 = pl.delete("d1");//删除domain
  63. if(d1!=null)
  64. System.out.println("delete domain d1 success!");
  65. else
  66. System.out.println("delete domain d1 failure!");
  67. d1n1 = pl.delete("d1","n1");//删除节点
  68. if(d1n1!=null)
  69. System.out.println("delete node d1n1 success!");
  70. else
  71. System.out.println("delete node d1n1 failure!");
  72.  
  73. //获取节点d2n2,节点权限为AuthPolicy.OP_READ_WRITE
  74. ObjectBean d2n2 = pl.get("d2","n2");
  75. System.out.println("get d2n2:"+(String)d2n2.toObject());
  76. d2n2 = pl.update("d2","n2","v2-update");
  77. if(d2n2!=null)
  78. System.out.println("update node d2n2 success!");
  79. else
  80. System.out.println("update node d2n2 failure!");
  81. List<ObjectBean> d2 = pl.delete("d2");
  82. if(d2!=null)
  83. System.out.println("delete domain d2 success!");
  84. else
  85. System.out.println("delete domain d2 failure!");
  86. d2n2 = pl.delete("d2","n2");
  87. if(d2n2!=null)
  88. System.out.println("delete node d2n2 success!");
  89. else
  90. System.out.println("delete node d2n2 failure!");
  91.  
  92. //获取节点d3n3, 节点权限为AuthPolicy.OP_ALL
  93. ObjectBean d3n3 = pl.get("d3","n3");
  94. System.out.println("get d3n3:"+(String)d3n3.toObject());
  95. d3n3 = pl.update("d3","n3","v3-update");
  96. if(d3n3!=null)
  97. System.out.println("update node d3n3 success!");
  98. else
  99. System.out.println("update node d3n3 failure!");
  100. List<ObjectBean> d3 = pl.delete("d3");
  101. if(d3!=null)
  102. System.out.println("delete domain d3 success!");
  103. else
  104. System.out.println("delete domain d3 failure!");
  105. d3n3 = pl.delete("d3","n3");
  106. if(d3n3!=null)
  107. System.out.println("delete node d3n3 success!");
  108. else
  109. System.out.println("delete node d3n3 failure!");
  110.  
  111. //获取节点d4n4,节点权限为AuthPolicy.OP_ALL
  112. ObjectBean d4n4 = pl.get("d4","n4");
  113. System.out.println("get d4n4:"+(String)d4n4.toObject());
  114. d4n4 = pl.update("d4","n4","v4-update");
  115. if(d4n4!=null)
  116. System.out.println("update node d4n4 success!");
  117. else
  118. System.out.println("update node d4n4 failure!");
  119. //由于创建进程已经强行指定该domain可删除setDeletable(d4),因此这里可以删除掉
  120. List<ObjectBean> d4 = pl.delete("d4");
  121. if(d4!=null)
  122. System.out.println("delete domain d4 success!");
  123. else
  124. System.out.println("delete domain d4 failure!");
  125. d4n4 = pl.delete("d4","n4");//这里删除节点会失败,因为上面已经删除了该domian下所有节点
  126. if(d4n4!=null)
  127. System.out.println("delete node d4n4 success!");
  128. else
  129. System.out.println("delete node d4n4 failure!");
  130. }
  131. }