Skip to content

Commit 8b56a26

Browse files
committed
Merge tag '0.13.6.16' into develop
0.13.6.16 Conflicts: pom.xml seqware-archetypes/seqware-archetype-decider/pom.xml seqware-archetypes/seqware-archetype-decider/src/main/resources/archetype-resources/pom.xml seqware-archetypes/seqware-archetype-java-workflow/pom.xml seqware-archetypes/seqware-archetype-java-workflow/src/main/resources/archetype-resources/pom.xml seqware-archetypes/seqware-archetype-legacy-ftl-workflow/pom.xml seqware-archetypes/seqware-archetype-legacy-ftl-workflow/src/main/resources/archetype-resources/pom.xml seqware-archetypes/seqware-archetype-module/pom.xml seqware-archetypes/seqware-archetype-module/src/main/resources/archetype-resources/pom.xml seqware-archetypes/seqware-archetype-simple-legacy-ftl-workflow/pom.xml seqware-archetypes/seqware-archetype-simple-legacy-ftl-workflow/src/main/resources/archetype-resources/pom.xml seqware-archetypes/seqware-archetype-simplified-ftl-workflow/pom.xml seqware-archetypes/seqware-archetype-simplified-ftl-workflow/src/main/resources/archetype-resources/pom.xml seqware-common/pom.xml seqware-common/src/main/java/net/sourceforge/seqware/common/metadata/MetadataWS.java seqware-common/src/main/java/net/sourceforge/seqware/common/model/Experiment.java seqware-common/src/main/java/net/sourceforge/seqware/common/model/File.java seqware-common/src/main/java/net/sourceforge/seqware/common/model/IUS.java seqware-common/src/main/java/net/sourceforge/seqware/common/model/Lane.java seqware-common/src/main/java/net/sourceforge/seqware/common/model/Processing.java seqware-common/src/main/java/net/sourceforge/seqware/common/model/Sample.java seqware-common/src/main/java/net/sourceforge/seqware/common/model/SequencerRun.java seqware-common/src/main/java/net/sourceforge/seqware/common/model/Study.java seqware-common/src/main/java/net/sourceforge/seqware/common/model/WorkflowRun.java seqware-distribution/pom.xml seqware-ext-testing/pom.xml seqware-meta-db/pom.xml seqware-pipeline/pom.xml seqware-portal/pom.xml seqware-queryengine-legacy/pom.xml seqware-queryengine/pom.xml seqware-webservice-dto/pom.xml seqware-webservice/pom.xml Former-commit-id: 08cada9
2 parents f534526 + e7b9eb5 commit 8b56a26

File tree

19 files changed

+191
-78
lines changed

19 files changed

+191
-78
lines changed

seqware-common/src/main/java/net/sourceforge/seqware/common/metadata/MetadataWS.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.io.IOException;
2020
import java.io.Reader;
21+
import java.net.SocketTimeoutException;
2122
import java.io.Writer;
2223
import java.security.KeyManagementException;
2324
import java.security.NoSuchAlgorithmException;
@@ -2766,6 +2767,9 @@ public SSLContext createSslContext() {
27662767
}
27672768
client.getContext().getParameters().add("useForwardedForHeader", "false");
27682769
client.getContext().getParameters().add("maxConnectionsPerHost", "100");
2770+
// if a low level call does not return in 20 minutes, disconnect
2771+
// default apache http client will retry three times and then throw an exception
2772+
client.getContext().getParameters().add("socketTimeout",Integer.toString(20*60*1000));
27692773

27702774
String[] pathElements = database.split("/");
27712775
resource = new ClientResource(database);
@@ -3393,7 +3397,10 @@ private void updateObject(String uri, String searchString, JaxbObject jaxb, Obje
33933397
try {
33943398
Document text = XmlTools.marshalToDocument(jaxb, parent);
33953399
result = cResource.put(XmlTools.getRepresentation(text));
3396-
} finally {
3400+
} catch(ResourceException ex){
3401+
Log.fatal("updateObject did not complete successfully: " + cResource);
3402+
throw new RuntimeException(ex);
3403+
}finally {
33973404
if (result != null) {
33983405
result.exhaust();
33993406
result.release();
@@ -3495,6 +3502,7 @@ private Object addObject(String uri, String searchString, JaxbObject jaxb, Objec
34953502
} catch (ResourceException e) {
34963503
Log.error("MetadataWS.addObject " + e.getMessage());
34973504
e.printStackTrace();
3505+
throw new RuntimeException(e);
34983506
}
34993507
if (result != null) {
35003508
result.exhaust();

seqware-common/src/main/java/net/sourceforge/seqware/common/model/Expense.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,8 @@
44
import java.math.BigDecimal;
55
import java.util.Date;
66
import java.util.Set;
7-
import java.util.SortedSet;
8-
import java.util.TreeSet;
97

108
import net.sourceforge.seqware.common.security.PermissionsAware;
11-
import net.sourceforge.seqware.common.util.jsontools.JsonUtil;
129

1310
import org.apache.commons.lang.builder.EqualsBuilder;
1411
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -21,7 +18,7 @@
2118
* @author boconnor
2219
* @version $Id: $Id
2320
*/
24-
public class Expense implements Serializable, Comparable<Expense>, PermissionsAware {
21+
public class Expense extends PermissionsAware implements Serializable, Comparable<Expense> {
2522

2623
private static final long serialVersionUID = 1L;
2724
private Integer expenseId;
@@ -95,15 +92,18 @@ public boolean equals(Object other) {
9592
* {@inheritDoc}
9693
*/
9794
@Override
98-
public boolean givesPermission(Registration registration) {
95+
public boolean givesPermissionInternal(Registration registration, Set<Integer> considered) {
9996
boolean hasPermission = true;
97+
String username = "unregistered user";
10098
if (registration == null) {
10199
hasPermission = false;
100+
} else{
101+
username = registration.getEmailAddress();
102102
}
103103

104104
if (!hasPermission) {
105105
Logger.getLogger(Workflow.class).info("Expense does not give permission");
106-
throw new SecurityException("User " + registration.getEmailAddress()
106+
throw new SecurityException("User " + username
107107
+ " does not have permission to modify aspects of invoice " + this.getSwAccession());
108108
} else {
109109
Logger.getLogger(Workflow.class).info("Expenses are public by default");

seqware-common/src/main/java/net/sourceforge/seqware/common/model/Experiment.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.io.Serializable;
44
import java.util.Date;
5+
import java.util.HashSet;
56
import java.util.Set;
67
import java.util.SortedSet;
78
import java.util.TreeSet;
@@ -13,6 +14,7 @@
1314
import net.sourceforge.seqware.common.business.StudyService;
1415
import net.sourceforge.seqware.common.factory.BeanFactory;
1516
import net.sourceforge.seqware.common.security.PermissionsAware;
17+
import net.sourceforge.seqware.common.util.Log;
1618
import net.sourceforge.seqware.common.util.jsontools.JsonUtil;
1719

1820
import org.apache.commons.lang.builder.EqualsBuilder;
@@ -26,7 +28,7 @@
2628
* @author boconnor
2729
* @version $Id: $Id
2830
*/
29-
public class Experiment implements Serializable, Comparable<Experiment>, PermissionsAware, ParentAccessionModel {
31+
public class Experiment extends PermissionsAware implements Serializable, Comparable<Experiment>, ParentAccessionModel {
3032

3133
private static final long serialVersionUID = 2L;
3234
private Integer experimentId;
@@ -1013,14 +1015,22 @@ public void setExperimentLinks(Set<ExperimentLink> experimentLinks) {
10131015
this.experimentLinks = experimentLinks;
10141016
}
10151017

1016-
/** {@inheritDoc} */
10171018
@Override
1018-
public boolean givesPermission(Registration registration) {
1019-
boolean hasPermission = false;
1019+
public boolean givesPermissionInternal(Registration registration, Set<Integer> considered){
1020+
boolean consideredBefore = considered.contains(this.getSwAccession());
1021+
if (!consideredBefore) {
1022+
considered.add(this.getSwAccession());
1023+
Log.debug("Checking permissions for experiment object " + swAccession);
1024+
} else {
1025+
Log.debug("Skipping permissions for experiment object " + swAccession + " , checked before");
1026+
return true;
1027+
}
1028+
1029+
boolean hasPermission = false;
10201030
if (study != null) {
10211031
StudyService ss = BeanFactory.getStudyServiceBean();
10221032
Study newStudy = ss.findBySWAccession(study.getSwAccession());
1023-
hasPermission = newStudy.givesPermission(registration);
1033+
hasPermission = newStudy.givesPermission(registration, considered);
10241034
} else {// orphaned Experiment
10251035
if (registration.equals(this.owner) || registration.isLIMSAdmin()) {
10261036
Logger.getLogger(Experiment.class).warn("Modifying Orphan Experiment: " + this.getName());

seqware-common/src/main/java/net/sourceforge/seqware/common/model/File.java

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import java.io.Serializable;
44
import java.sql.ResultSet;
55
import java.sql.SQLException;
6+
import java.util.HashSet;
67
import java.util.Set;
78
import java.util.TreeSet;
89

910
import net.sourceforge.seqware.common.factory.DBAccess;
1011
import net.sourceforge.seqware.common.security.PermissionsAware;
12+
import net.sourceforge.seqware.common.util.Log;
1113
import net.sourceforge.seqware.common.util.jsontools.JsonUtil;
1214
import org.apache.commons.dbutils.DbUtils;
1315

@@ -21,7 +23,7 @@
2123
* @author boconnor
2224
* @version $Id: $Id
2325
*/
24-
public class File implements Serializable, Comparable<File>, PermissionsAware {
26+
public class File extends PermissionsAware implements Serializable, Comparable<File> {
2527

2628
private static final long serialVersionUID = 3681322115923390568L;
2729
private Integer fileId;
@@ -343,17 +345,26 @@ public void setFileType(FileType fileType) {
343345
this.fileType = fileType;
344346
}
345347

346-
/** {@inheritDoc} */
348+
347349
@Override
348-
public boolean givesPermission(Registration registration) {
350+
public boolean givesPermissionInternal(Registration registration, Set<Integer> considered) {
351+
boolean consideredBefore = considered.contains(this.getSwAccession());
352+
if (!consideredBefore) {
353+
considered.add(this.getSwAccession());
354+
Log.debug("Checking permissions for File object " + swAccession);
355+
} else {
356+
Log.debug("Skipping permissions for File object " + swAccession + " , checked before");
357+
return true;
358+
}
359+
349360
boolean hasPermission = true;
350361
if (processings != null) {
351362
for (Processing p : processings) {
352-
if (!p.givesPermission(registration)) {
353-
hasPermission = false;
354-
break;
363+
if (!p.givesPermission(registration, considered)) {
364+
hasPermission = false;
365+
break;
366+
}
355367
}
356-
}
357368
} else {// orphaned File
358369
if (registration.equals(this.owner) || registration.isLIMSAdmin()) {
359370
Logger.getLogger(File.class).warn("Modifying Orphan File: " + toString());

seqware-common/src/main/java/net/sourceforge/seqware/common/model/IUS.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.io.Serializable;
44
import java.util.Date;
5+
import java.util.HashSet;
56
import java.util.Set;
67
import java.util.TreeSet;
78

@@ -24,7 +25,7 @@
2425
* @author boconnor
2526
* @version $Id: $Id
2627
*/
27-
public class IUS implements Serializable, Comparable<IUS>, PermissionsAware, ParentAccessionModel {
28+
public class IUS extends PermissionsAware implements Serializable, Comparable<IUS>, ParentAccessionModel {
2829

2930
private static final long serialVersionUID = 3472028115923390568L;
3031
private Integer iusId;
@@ -450,13 +451,21 @@ public void setSkip(Boolean skip) {
450451
this.skip = skip;
451452
}
452453
}
453-
454-
/** {@inheritDoc} */
454+
455455
@Override
456-
public boolean givesPermission(Registration registration) {
456+
public boolean givesPermissionInternal(Registration registration, Set<Integer> considered) {
457+
boolean consideredBefore = considered.contains(this.getSwAccession());
458+
if (!consideredBefore) {
459+
considered.add(this.getSwAccession());
460+
Log.debug("Checking permissions for IUS object " + swAccession);
461+
} else {
462+
Log.debug("Skipping permissions for IUS object " + swAccession + " , checked before");
463+
return true;
464+
}
465+
457466
boolean hasPermission = true;
458467
if (sample != null) {
459-
hasPermission = sample.givesPermission(registration);
468+
hasPermission = sample.givesPermission(registration, considered);
460469
} else {// orphaned IUS
461470
if (registration.equals(this.owner) || registration.isLIMSAdmin()) {
462471
Logger.getLogger(IUS.class).warn("Modifying Orphan IUS: " + this.getTag());

seqware-common/src/main/java/net/sourceforge/seqware/common/model/Invoice.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,12 @@
33
import java.io.Serializable;
44
import java.util.Date;
55
import java.util.Set;
6-
import java.util.SortedSet;
76
import java.util.TreeSet;
87

98
import javax.persistence.EnumType;
109
import javax.persistence.Enumerated;
1110

1211
import net.sourceforge.seqware.common.security.PermissionsAware;
13-
import net.sourceforge.seqware.common.util.jsontools.JsonUtil;
1412

1513
import org.apache.commons.lang.builder.EqualsBuilder;
1614
import org.apache.commons.lang.builder.HashCodeBuilder;
@@ -23,7 +21,7 @@
2321
* @author boconnor
2422
* @version $Id: $Id
2523
*/
26-
public class Invoice implements Serializable, Comparable<Invoice>, PermissionsAware {
24+
public class Invoice extends PermissionsAware implements Serializable, Comparable<Invoice> {
2725
/**
2826
* LEFT OFF WITH: this needs to be finished
2927
*/
@@ -87,9 +85,17 @@ public boolean equals(Object other) {
8785
return new EqualsBuilder().append(this.getSwAccession(), castOther.getSwAccession()).isEquals();
8886
}
8987

90-
/** {@inheritDoc} */
88+
89+
9190
@Override
92-
public boolean givesPermission(Registration registration) {
91+
public boolean givesPermissionInternal(Registration registration, Set<Integer> considered) {
92+
boolean consideredBefore = considered.contains(this.getSwAccession());
93+
if (!consideredBefore) {
94+
considered.add(this.getSwAccession());
95+
} else {
96+
return true;
97+
}
98+
9399
boolean hasPermission = true;
94100
if (registration == null) {
95101
hasPermission = false;

seqware-common/src/main/java/net/sourceforge/seqware/common/model/Lane.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
* @author boconnor
2626
* @version $Id: $Id
2727
*/
28-
public class Lane implements Serializable, Comparable<Lane>, PermissionsAware, ParentAccessionModel {
28+
public class Lane extends PermissionsAware implements Serializable, Comparable<Lane>, ParentAccessionModel {
2929

3030
private static final long serialVersionUID = 5681328115923390568L;
3131
private Integer laneId;
@@ -766,20 +766,28 @@ public void setLaneAttributes(Set<LaneAttribute> laneAttributes) {
766766
this.laneAttributes = laneAttributes;
767767
}
768768

769-
/** {@inheritDoc} */
770769
@Override
771-
public boolean givesPermission(Registration registration) {
770+
public boolean givesPermissionInternal(Registration registration, Set<Integer> considered) {
771+
boolean consideredBefore = considered.contains(this.getSwAccession());
772+
if (!consideredBefore) {
773+
considered.add(this.getSwAccession());
774+
Log.debug("Checking permissions for Lane object " + swAccession);
775+
} else {
776+
Log.debug("Skipping permissions for Lane object " + swAccession + " , checked before");
777+
return true;
778+
}
779+
772780
boolean hasPermission = true;
773781

774782
if (sample != null) {
775-
hasPermission = sample.givesPermission(registration);
783+
hasPermission = sample.givesPermission(registration, considered);
776784
}
777785

778786
// if one of the IUSes doesn't have permission, we can't touch this Lane
779787
// object...
780788
if (ius != null && !ius.isEmpty()) {
781789
for (IUS i : ius) {
782-
if (!i.givesPermission(registration)) {
790+
if (!i.givesPermission(registration, considered)) {
783791
hasPermission = false;
784792
}
785793
}

0 commit comments

Comments
 (0)