[workspace-commit] CVS update: MODIFIED: status
Tim Freeman
commit at globus.org
Thu Apr 17 10:10:57 CDT 2008
, WorkspaceStatusResource.java
, WorkspaceStatusResourceImpl.java
, WorkspaceStatusService.java
...
User: tfreeman
Date: 08/04/17 10:10:57
Modified: vm/service/service/java/source/src/org/globus/workspace/status
WorkspaceStatusResource.java
WorkspaceStatusResourceImpl.java
WorkspaceStatusService.java
Log:
- alternate unpropagation target URL
- bulk status query
- file customizations
- fault can accompany state in RP/notification
- misc changes for new WSDL
- backend VM name prefix moved from "workspace" to "wrksp" (extends ebtables NIC length limit)
Revision Changes Path
1.3 +4 -0 workspace/vm/service/service/java/source/src/org/globus/workspace/status/WorkspaceStatusResource.java
http://viewcvs.globus.org/viewcvs.cgi/workspace/vm/service/service/java/source/src/org/globus/workspace/status/WorkspaceStatusResource.java.diff?r1=1.2&r2=1.3
(In the diff below, changes in quantity of whitespace are not shown.)
Index: WorkspaceStatusResource.java
===================================================================
RCS file: /home/globdev/CVS/globus-packages/workspace/vm/service/service/java/source/src/org/globus/workspace/status/WorkspaceStatusResource.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- WorkspaceStatusResource.java 2 Nov 2007 14:47:19 -0000 1.2
+++ WorkspaceStatusResource.java 17 Apr 2008 15:10:57 -0000 1.3
@@ -18,6 +18,7 @@
import org.globus.workspace.Locator;
import org.globus.workspace.WorkspaceException;
+import org.globus.workspace.generated.status.CurrentWorkspaces_Type;
import org.globus.workspace.accounting.ElapsedAndReservedMinutes;
import org.globus.wsrf.Resource;
import org.globus.wsrf.ResourceProperties;
@@ -29,4 +30,7 @@
public ElapsedAndReservedMinutes queryUsedAndReservedTime(String ownerDN)
throws WorkspaceException;
+
+ public CurrentWorkspaces_Type queryCurrentWorkspaces(String ownerDN)
+ throws WorkspaceException;
}
1.3 +20 -2 workspace/vm/service/service/java/source/src/org/globus/workspace/status/WorkspaceStatusResourceImpl.java
http://viewcvs.globus.org/viewcvs.cgi/workspace/vm/service/service/java/source/src/org/globus/workspace/status/WorkspaceStatusResourceImpl.java.diff?r1=1.2&r2=1.3
(In the diff below, changes in quantity of whitespace are not shown.)
Index: WorkspaceStatusResourceImpl.java
===================================================================
RCS file: /home/globdev/CVS/globus-packages/workspace/vm/service/service/java/source/src/org/globus/workspace/status/WorkspaceStatusResourceImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- WorkspaceStatusResourceImpl.java 2 Nov 2007 14:47:19 -0000 1.2
+++ WorkspaceStatusResourceImpl.java 17 Apr 2008 15:10:57 -0000 1.3
@@ -24,6 +24,9 @@
import org.globus.workspace.WorkspaceConstants;
import org.globus.workspace.WorkspaceException;
import org.globus.workspace.Locator;
+import org.globus.workspace.persistence.DataUtil;
+import org.globus.workspace.service.WorkspaceResource;
+import org.globus.workspace.generated.status.CurrentWorkspaces_Type;
import org.globus.workspace.accounting.AccountingReaderAdapter;
import org.globus.workspace.accounting.ElapsedAndReservedMinutes;
import org.apache.commons.logging.Log;
@@ -42,6 +45,7 @@
private ResourcePropertySet propSet;
private AccountingReaderAdapter reader;
+ private Locator locator;
public void initialize(Locator loc) throws ResourceException {
@@ -53,6 +57,8 @@
throw new IllegalArgumentException("locator is null");
}
+ this.locator = loc;
+
try {
this.reader = loc.getAccountingReaderAdapter();
} catch (Exception e) {
@@ -64,7 +70,7 @@
}
this.propSet = new SimpleResourcePropertySet(STATUS_RP_SET);
- ResourceProperty prop =
+ final ResourceProperty prop =
new SimpleResourceProperty(RP_STATUS_CHARGEGRAN);
prop.add(new Integer(this.reader.getChargeGranularity()));
this.propSet.add(prop);
@@ -78,11 +84,23 @@
throws WorkspaceException {
if (this.reader == null) {
- logger.error("WorkspaceStatusResourceImpl not initialized");
throw new WorkspaceException("cannot query without " +
"AccountingReaderAdapter");
}
return this.reader.totalElapsedAndReservedMinutesTuple(ownerDN);
}
+
+ public CurrentWorkspaces_Type queryCurrentWorkspaces(String ownerDN)
+ throws WorkspaceException {
+
+ if (this.locator.getHome() == null) {
+ throw new WorkspaceException("cannot query without WorkspaceHome");
+ }
+
+ final WorkspaceResource[] current =
+ this.locator.getHome().findByCaller(ownerDN);
+ return DataUtil.constructCurrentWorkspaces(current,
+ this.locator.getHome());
+ }
}
1.3 +70 -9 workspace/vm/service/service/java/source/src/org/globus/workspace/status/WorkspaceStatusService.java
http://viewcvs.globus.org/viewcvs.cgi/workspace/vm/service/service/java/source/src/org/globus/workspace/status/WorkspaceStatusService.java.diff?r1=1.2&r2=1.3
(In the diff below, changes in quantity of whitespace are not shown.)
Index: WorkspaceStatusService.java
===================================================================
RCS file: /home/globdev/CVS/globus-packages/workspace/vm/service/service/java/source/src/org/globus/workspace/status/WorkspaceStatusService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- WorkspaceStatusService.java 2 Nov 2007 14:47:19 -0000 1.2
+++ WorkspaceStatusService.java 17 Apr 2008 15:10:57 -0000 1.3
@@ -28,6 +28,7 @@
import org.globus.workspace.generated.status.UsedAndReservedTime_Type;
import org.globus.workspace.generated.status.WorkspaceStatusFault;
import org.globus.workspace.generated.status.VoidType;
+import org.globus.workspace.generated.status.CurrentWorkspaces_Type;
import org.globus.wsrf.ResourceContext;
import org.globus.wsrf.ResourceContextException;
import org.globus.wsrf.ResourceException;
@@ -39,18 +40,32 @@
*/
public class WorkspaceStatusService {
+ // -------------------------------------------------------------------------
+ // STATIC VARIABLES
+ // -------------------------------------------------------------------------
+
private static final Log logger =
LogFactory.getLog(WorkspaceStatusService.class.getName());
private static final Lager lager = Lager.getLager();
+
+ // -------------------------------------------------------------------------
+ // INSTANCE VARIABLES
+ // -------------------------------------------------------------------------
+
// currently assuming singleton, this will change in future
private WorkspaceStatusResource resource;
+
+ // -------------------------------------------------------------------------
+ // WS OPERATION: queryUsedAndReservedTime
+ // -------------------------------------------------------------------------
+
public UsedAndReservedTime_Type queryUsedAndReservedTime(VoidType none)
throws WorkspaceStatusFault {
- String callerDN = SecurityManager.getManager().getCaller();
+ final String callerDN = SecurityManager.getManager().getCaller();
if (lager.eventLog) {
logger.info(Lager.ev(-1) + "WS-queryUsedAndReservedTime " +
@@ -58,17 +73,17 @@
}
try {
- return this.queryUsedAndReservedTimeImpl(callerDN);
+ return this._queryUsedAndReservedTime(callerDN);
} catch (Exception e) {
throw makeFault(e.getMessage(), e);
}
}
- private UsedAndReservedTime_Type
- queryUsedAndReservedTimeImpl(String callerDN)
+ private UsedAndReservedTime_Type _queryUsedAndReservedTime(String callerDN)
throws Exception {
if (this.resource == null) {
+ // no race problem
this.resource = getStatusResource();
}
@@ -128,12 +143,58 @@
return new UsedAndReservedTime_Type(reservedDuration, elapsedDuration);
}
+
+ // -------------------------------------------------------------------------
+ // WS OPERATION: queryCurrentWorkspaces
+ // -------------------------------------------------------------------------
+
+ public CurrentWorkspaces_Type queryCurrentWorkspaces(VoidType none)
+ throws WorkspaceStatusFault {
+
+ final String callerDN = SecurityManager.getManager().getCaller();
+
+ if (lager.eventLog) {
+ logger.info(Lager.ev(-1) + "WS-queryCurrentWorkspaces " +
+ "invoked by " + callerDN);
+ }
+
+ try {
+ return this._queryCurrentWorkspaces(callerDN);
+ } catch (Throwable t) {
+ String err = t.getMessage();
+ if (err == null) {
+ err = "No description available";
+ logger.error(err, t);
+ }
+ throw makeFault(err, t);
+ }
+ }
+
+ private CurrentWorkspaces_Type _queryCurrentWorkspaces(String callerDN)
+ throws Exception {
+
+ if (this.resource == null) {
+ // no race problem
+ this.resource = getStatusResource();
+ }
+
+ // authorization check not necessary, no parameters to query yet,
+ // self-query implied.
+
+ return this.resource.queryCurrentWorkspaces(callerDN);
+ }
+
+ // -------------------------------------------------------------------------
+ // MISC
+ // -------------------------------------------------------------------------
+
private static WorkspaceStatusResource getStatusResource()
throws WorkspaceException {
try {
- ResourceContext context = ResourceContext.getResourceContext();
- WorkspaceStatusResource rsrc =
+ final ResourceContext context =
+ ResourceContext.getResourceContext();
+ final WorkspaceStatusResource rsrc =
(WorkspaceStatusResource)context.getResource();
if (rsrc == null) {
throw new ResourceException("could not find resource for " +
@@ -152,12 +213,12 @@
/**
* Helps with status fault and chained exceptions.
* @param errMsg error string
- * @param exp exception, can be chained
+ * @param t throwable, can be chained
* @return WorkspaceMetadataFault
*/
public static WorkspaceStatusFault makeFault(String errMsg,
- Exception exp) {
+ Throwable t) {
return (WorkspaceStatusFault) WorkspaceUtil.
- makeFault(WorkspaceStatusFault.class, errMsg, exp);
+ makeFault(WorkspaceStatusFault.class, errMsg, t);
}
}
More information about the workspace-commit
mailing list