Revision 5027
Added by daigle over 15 years ago
test/JDBCTest.java | ||
---|---|---|
29 | 29 |
import java.lang.*; |
30 | 30 |
import java.sql.*; |
31 | 31 |
import edu.ucsb.nceas.metacat.*; |
32 |
import edu.ucsb.nceas.metacat.database.*; |
|
32 | 33 |
import edu.ucsb.nceas.metacat.service.PropertyService; |
33 | 34 |
import edu.ucsb.nceas.utilities.PropertyNotFoundException; |
34 | 35 |
|
test/MaxmumDBConnection.java | ||
---|---|---|
31 | 31 |
import java.lang.*; |
32 | 32 |
import java.sql.*; |
33 | 33 |
import edu.ucsb.nceas.metacat.*; |
34 |
import edu.ucsb.nceas.metacat.database.*; |
|
34 | 35 |
|
35 | 36 |
|
36 | 37 |
/** |
test/test.properties | ||
---|---|---|
1 | 1 |
# Set this to the location of the metacat application context |
2 | 2 |
# directory. The tests will use this to find metacat.properties |
3 |
#metacat.contextDir=/usr/local/tomcat/webapps/knb |
|
4 |
metacat.contextDir=/usr/share/tomcat5.5/webapps/knb |
|
3 |
metacat.contextDir=/usr/local/tomcat/webapps/knb |
|
4 |
#metacat.contextDir=/usr/share/tomcat5.5/webapps/knb |
test/edu/ucsb/nceas/MCTestCase.java | ||
---|---|---|
55 | 55 |
import edu.ucsb.nceas.metacat.client.MetacatFactory; |
56 | 56 |
import edu.ucsb.nceas.metacat.client.MetacatInaccessibleException; |
57 | 57 |
import edu.ucsb.nceas.metacat.service.PropertyService; |
58 |
import edu.ucsb.nceas.metacat.service.ServiceException;
|
|
58 |
import edu.ucsb.nceas.metacat.shared.ServiceException;
|
|
59 | 59 |
import edu.ucsb.nceas.metacat.util.RequestUtil; |
60 | 60 |
import edu.ucsb.nceas.utilities.IOUtil; |
61 | 61 |
import edu.ucsb.nceas.utilities.PropertyNotFoundException; |
... | ... | |
381 | 381 |
protected void setUp() throws Exception { |
382 | 382 |
try { |
383 | 383 |
if (metacatConnectionNeeded) |
384 |
debug("Test Metacat: " + metacatUrl);
|
|
384 |
debug("setUp() - Testing Metacat Url: " + metacatUrl);
|
|
385 | 385 |
m = MetacatFactory.createMetacatConnection(metacatUrl); |
386 | 386 |
} catch (MetacatInaccessibleException mie) { |
387 | 387 |
System.err.println("Metacat is: " + metacatUrl); |
... | ... | |
520 | 520 |
|
521 | 521 |
protected String insertDocumentId(String docid, String docText, boolean result, |
522 | 522 |
boolean expectKarmaException) { |
523 |
debug("insertDocid(): docid=" + docid + " expectedResult=" + result
|
|
523 |
debug("insertDocumentId() - docid=" + docid + " expectedResult=" + result
|
|
524 | 524 |
+ " expectKarmaException=" + expectKarmaException); |
525 | 525 |
String response = null; |
526 | 526 |
try { |
... | ... | |
552 | 552 |
|
553 | 553 |
protected String uploadDocumentId(String docid, String filePath, boolean result, |
554 | 554 |
boolean expectedKarmaException) { |
555 |
debug("uploadDocid(): docid=" + docid + " filePath=" + filePath
|
|
555 |
debug("uploadDocumentId() - docid=" + docid + " filePath=" + filePath
|
|
556 | 556 |
+ " expectedResult=" + result + " expectedKarmaException=" |
557 | 557 |
+ expectedKarmaException); |
558 | 558 |
String response = null; |
... | ... | |
588 | 588 |
*/ |
589 | 589 |
protected String updateDocumentId(String docid, String docText, boolean result, |
590 | 590 |
boolean expectedKarmaFailure) { |
591 |
debug("updateDocid(): docid=" + docid + " expectedResult=" + result
|
|
591 |
debug("updateDocumentId() - docid=" + docid + " expectedResult=" + result
|
|
592 | 592 |
+ " expectedKarmaFailure=" + expectedKarmaFailure); |
593 | 593 |
String response = null; |
594 | 594 |
try { |
595 | 595 |
response = m.update(docid, new StringReader(testdocument), null); |
596 |
|
|
596 |
debug("updateDocumentId() - response=" + response); |
|
597 |
|
|
597 | 598 |
if (result) { |
598 | 599 |
assertTrue(response, (response.indexOf("<success>") != -1)); |
599 | 600 |
assertTrue(response, response.indexOf(docid) != -1); |
600 | 601 |
} else { |
601 | 602 |
assertTrue(response, (response.indexOf("<success>") == -1)); |
602 |
} |
|
603 |
debug("updateDocid(): response=" + response); |
|
603 |
} |
|
604 | 604 |
} catch (MetacatInaccessibleException mie) { |
605 | 605 |
fail("Metacat Inaccessible:\n" + mie.getMessage()); |
606 | 606 |
} catch (InsufficientKarmaException ike) { |
... | ... | |
624 | 624 |
* Delete a document into metacat. The expected result is passed as result |
625 | 625 |
*/ |
626 | 626 |
protected void deleteDocumentId(String docid, boolean result, boolean expectedKarmaFailure) { |
627 |
debug("deleteDocid(): docid=" + docid + " expectedResult=" + result
|
|
627 |
debug("deleteDocumentId() - docid=" + docid + " expectedResult=" + result
|
|
628 | 628 |
+ " expectedKarmaFailure=" + expectedKarmaFailure); |
629 | 629 |
try { |
630 | 630 |
Thread.sleep(5000); |
631 | 631 |
String response = m.delete(docid); |
632 |
debug("deleteDocumentId() - response=" + response); |
|
633 |
|
|
632 | 634 |
if (result) { |
633 | 635 |
assertTrue(response, response.indexOf("<success>") != -1); |
634 | 636 |
} else { |
635 | 637 |
assertTrue(response, response.indexOf("<success>") == -1); |
636 | 638 |
} |
637 |
debug("deleteDocid(): response=" + response); |
|
638 | 639 |
} catch (MetacatInaccessibleException mie) { |
639 | 640 |
fail("Metacat Inaccessible:\n" + mie.getMessage()); |
640 | 641 |
} catch (InsufficientKarmaException ike) { |
... | ... | |
658 | 659 |
*/ |
659 | 660 |
protected void readDocumentIdWhichEqualsDoc(String docid, String testDoc, boolean result, |
660 | 661 |
boolean expectedKarmaFailure) { |
661 |
debug("readDocidWhichEqualsDoc(): docid=" + docid + " expectedResult=" + result
|
|
662 |
debug("readDocumentIdWhichEqualsDoc() - docid=" + docid + " expectedResult=" + result
|
|
662 | 663 |
+ " expectedKarmaFailure=" + expectedKarmaFailure); |
663 | 664 |
try { |
664 | 665 |
Reader r = m.read(docid); |
665 | 666 |
String doc = IOUtil.getAsString(r, true); |
667 |
debug("readDocumentIdWhichEqualsDoc() - doc=" + doc); |
|
668 |
|
|
666 | 669 |
if (result) { |
667 | 670 |
|
668 | 671 |
if (!testDoc.equals(doc)) { |
... | ... | |
678 | 681 |
} else { |
679 | 682 |
assertTrue(doc.indexOf("<error>") != -1); |
680 | 683 |
} |
681 |
debug("readDocidWhichEqualsDoc(): doc=" + doc); |
|
682 | 684 |
} catch (MetacatInaccessibleException mie) { |
683 | 685 |
fail("Metacat Inaccessible:\n" + mie.getMessage()); |
684 | 686 |
} catch (InsufficientKarmaException ike) { |
test/edu/ucsb/nceas/metacattest/AccessControlTest.java | ||
---|---|---|
1570 | 1570 |
/** |
1571 | 1571 |
* Tests Tests a version 2.1.0 EML document when permission order is |
1572 | 1572 |
* denyFirst, the combination of allow and deny rules affect user to read, |
1573 |
* update and delete a document. Here are test cases 1.An user inserts a |
|
1574 |
* document with access rules (denyFirst) - allow READ rule for another |
|
1575 |
* user, deny READ rule for public. Another user reads this document - |
|
1576 |
* success Another user updates this document(except access part) -failure |
|
1577 |
* Another user updates this document(access part) -failure Another user |
|
1578 |
* deletes this document - failure 2. The user updates this documents with |
|
1579 |
* access rules (denyFirst) - allow READ and WRITE rule for another user, |
|
1580 |
* deny READ and WRITE rule for public. Another user reads this document - |
|
1581 |
* success Another user updates this document(except access part) -success |
|
1582 |
* Another user updates this document(access part) -failure Another user |
|
1583 |
* deletes this document - failure 3. The user updates this documents with |
|
1584 |
* access rules (denyFirst) - allow ALL rule for another user, deny ALL rule |
|
1585 |
* for public. Another user reads this document - success Another user |
|
1586 |
* updates this document(except access part) -success Another user updates |
|
1587 |
* this document(access part) -success Another user deletes this document - |
|
1588 |
* success 4. The user updates this documents with access rules (denyFirst) - |
|
1573 |
* update and delete a document. Here are test cases |
|
1574 |
* |
|
1575 |
* 1. A user inserts a document with access rules (denyFirst) - allow READ |
|
1576 |
* rule for another user, deny READ rule for public. Another user reads this |
|
1577 |
* document - success. Another user updates this document(except access part) |
|
1578 |
* - failure. Another user updates this document(access part) -failure Another |
|
1579 |
* user deletes this document - failure |
|
1580 |
* |
|
1581 |
* 2. The user updates this documents with access rules (denyFirst) - allow |
|
1582 |
* READ and WRITE rule for another user, deny READ and WRITE rule for public. |
|
1583 |
* Another user reads this document - success. Another user updates this |
|
1584 |
* document(except access part) - success. Another user updates this |
|
1585 |
* document(access part) -failure. Another user deletes this document - failure. |
|
1586 |
* |
|
1587 |
* 3. The user updates this documents with access rules (denyFirst) - allow |
|
1588 |
* ALL rule for another user, deny ALL rule for public. Another user reads |
|
1589 |
* this document - success. Another user updates this document(except access part) |
|
1590 |
* - success. Another user updates this document(access part) - success. Another |
|
1591 |
* user deletes this document - success. |
|
1592 |
* |
|
1593 |
* 4. The user updates this documents with access rules (denyFirst) - |
|
1589 | 1594 |
* allow READ and WRITE rule for another user, deny WRITE rule for public. |
1590 |
* Another user reads this document - success Another user updates this |
|
1591 |
* document(except access part) -success Another user updates this |
|
1592 |
* document(access part) -failure Another user deletes this document - |
|
1593 |
* failure 5. The user updates this documents with access rules (denyFirst) - |
|
1595 |
* Another user reads this document - success. Another user updates this |
|
1596 |
* document(except access part) - success. Another user updates this |
|
1597 |
* document(access part) -failure. Another user deletes this document - |
|
1598 |
* failure. |
|
1599 |
* |
|
1600 |
* 5. The user updates this documents with access rules (denyFirst) - |
|
1594 | 1601 |
* allow READ and WRITE rule for another user, deny READ rule for public. |
1595 |
* Another user reads this document - success Another user updates this |
|
1596 |
* document(except access part) - success Another user updates this |
|
1597 |
* document(access part) -failure Another user deletes this document - |
|
1598 |
* failure 6. The user updates this documents with access rules (denyFirst) - |
|
1602 |
* Another user reads this document - success. Another user updates this |
|
1603 |
* document(except access part) - success. Another user updates this |
|
1604 |
* document(access part) - failure. Another user deletes this document - |
|
1605 |
* failure. |
|
1606 |
* |
|
1607 |
* 6. The user updates this documents with access rules (denyFirst) - |
|
1599 | 1608 |
* allow READ rule for another user, deny READ rule for a group (which |
1600 |
* another user is in the group) Another user reads this document - success |
|
1601 |
* Another user updates this document(except access part) -failure Another |
|
1602 |
* user updates this document(access part) -failure Another user deletes |
|
1603 |
* this document - failure 7. The user updates this documents with access |
|
1604 |
* rules (denyFirst) - allow READ and WRITE rule for another user, deny READ |
|
1605 |
* and WRITE rule for a group (which another user is in the group) Another |
|
1606 |
* user reads this document - success Another user updates this |
|
1607 |
* document(except access part) - success Another user updates this |
|
1608 |
* document(access part) -failure Another user deletes this document - |
|
1609 |
* failure 8. The user updates this documents with access rules (denyFirst) - |
|
1609 |
* another user is in the group). Another user reads this document - success. |
|
1610 |
* Another user updates this document(except access part) - failure. Another |
|
1611 |
* user updates this document(access part) -failure. Another user deletes |
|
1612 |
* this document - failure. |
|
1613 |
* |
|
1614 |
* 7. The user updates this documents with access rules (denyFirst) - allow |
|
1615 |
* READ and WRITE rule for another user, deny READ and WRITE rule for a |
|
1616 |
* group (which another user is in the group). Another user reads this document |
|
1617 |
* - success. Another user updates this document(except access part) - success. |
|
1618 |
* Another user updates this document(access part) -failure. Another user deletes |
|
1619 |
* this document - failure. |
|
1620 |
* |
|
1621 |
* 8. The user updates this documents with access rules (denyFirst) - |
|
1610 | 1622 |
* allow ALL rule for another user, deny ALL rule for a group (which another |
1611 |
* user is in the group) Another user reads this document - success Another |
|
1612 |
* user updates this document(except access part) - success Another user |
|
1613 |
* updates this document(access part) - success Another user deletes this |
|
1614 |
* document - success 9. The user updates this documents with access rules |
|
1615 |
* (denyFirst) - allow READ and WRITE rule for another user, deny WRITE rule |
|
1616 |
* for a group (which another user is in the group) Another user reads this |
|
1617 |
* document - success Another user updates this document(except access part) - |
|
1618 |
* success Another user updates this document(access part) - failure Another |
|
1619 |
* user deletes this document - failure 10. The user updates this documents |
|
1620 |
* with access rules (denyFirst) - allow READ and WRITE rule for another |
|
1621 |
* user, deny READ rule for a group (which another user is in the group) |
|
1622 |
* Another user reads this document - success Another user updates this |
|
1623 |
* document(except access part) - success Another user updates this |
|
1624 |
* document(access part) -failure Another user deletes this document - |
|
1625 |
* failure |
|
1623 |
* user is in the group). Another user reads this document - success. Another |
|
1624 |
* user updates this document(except access part) - success. Another user |
|
1625 |
* updates this document(access part) - success. Another user deletes this |
|
1626 |
* document - success. |
|
1627 |
* |
|
1628 |
* 9. The user updates this documents with access rules (denyFirst) - allow |
|
1629 |
* READ and WRITE rule for another user, deny WRITE rule for a group (which |
|
1630 |
* another user is in the group). Another user reads this document - success. |
|
1631 |
* Another user updates this document(except access part) - success. Another |
|
1632 |
* user updates this document(access part) - failure. Another user deletes |
|
1633 |
* this document - failure. |
|
1634 |
* |
|
1635 |
* 10. The user updates this documents with access rules (denyFirst) - allow |
|
1636 |
* READ and WRITE rule for another user, deny READ rule for a group (which |
|
1637 |
* another user is in the group). Another user reads this document - success. |
|
1638 |
* Another user updates this document(except access part) - success. Another |
|
1639 |
* user updates this document(access part) -failure. Another user deletes |
|
1640 |
* this document - failure. |
|
1626 | 1641 |
*/ |
1627 | 1642 |
public void test210DenyFirst() { |
1628 | 1643 |
debug("\nRunning: test210DenyFirst()"); |
... | ... | |
2062 | 2077 |
|
2063 | 2078 |
/*************************************************************************** |
2064 | 2079 |
* Test the case when no access is specified and owner is logged in No |
2065 |
* online or inline data is involved -> an user inserts a document and is |
|
2066 |
* able to read it, update it, set permissions on it and delete it -> |
|
2067 |
* another user is not able to do anything with the document when no access |
|
2080 |
* online or inline data is involved |
|
2081 |
* |
|
2082 |
* 1) a user inserts a document and is able to read it, update it, set |
|
2083 |
* permissions on it and delete it. |
|
2084 |
* |
|
2085 |
* 2) another user is not able to do anything with the document when no access |
|
2068 | 2086 |
* is specified for that user -> test what all the other user can do when |
2069 | 2087 |
* read only, write only and change permissions only permissions are |
2070 | 2088 |
* specified |
... | ... | |
2072 | 2090 |
*/ |
2073 | 2091 |
public void document201Test() { |
2074 | 2092 |
try { |
2075 |
debug("\nRunning: document201Test()");
|
|
2093 |
debug("\ndocument201Test() : Starting");
|
|
2076 | 2094 |
String emlVersion = EML2_0_1; |
2077 | 2095 |
|
2078 | 2096 |
newdocid = generateDocumentId(); |
test/edu/ucsb/nceas/metacattest/SubTreeTest.java | ||
---|---|---|
28 | 28 |
|
29 | 29 |
import edu.ucsb.nceas.MCTestCase; |
30 | 30 |
import edu.ucsb.nceas.metacat.*; |
31 |
import edu.ucsb.nceas.metacat.database.*; |
|
32 |
import edu.ucsb.nceas.metacat.replication.*; |
|
31 | 33 |
import edu.ucsb.nceas.metacat.service.PropertyService; |
32 | 34 |
import edu.ucsb.nceas.metacat.util.MetacatUtil; |
33 | 35 |
|
test/edu/ucsb/nceas/metacattest/UploadIPCCDataTest.java | ||
---|---|---|
29 | 29 |
import edu.ucsb.nceas.metacat.*; |
30 | 30 |
import edu.ucsb.nceas.metacat.client.Metacat; |
31 | 31 |
import edu.ucsb.nceas.metacat.client.MetacatFactory; |
32 |
import edu.ucsb.nceas.metacat.replication.*; |
|
32 | 33 |
import edu.ucsb.nceas.metacat.service.PropertyService; |
33 | 34 |
import edu.ucsb.nceas.metacat.util.MetacatUtil; |
34 | 35 |
import edu.ucsb.nceas.utilities.IOUtil; |
test/edu/ucsb/nceas/metacattest/BuildIndexTest.java | ||
---|---|---|
45 | 45 |
import edu.ucsb.nceas.metacat.client.MetacatInaccessibleException; |
46 | 46 |
import edu.ucsb.nceas.metacat.database.DatabaseService; |
47 | 47 |
import edu.ucsb.nceas.metacat.service.PropertyService; |
48 |
import edu.ucsb.nceas.metacat.service.ServiceException;
|
|
48 |
import edu.ucsb.nceas.metacat.shared.ServiceException;
|
|
49 | 49 |
import edu.ucsb.nceas.metacat.util.MetacatUtil; |
50 | 50 |
import edu.ucsb.nceas.utilities.IOUtil; |
51 | 51 |
import edu.ucsb.nceas.utilities.PropertyNotFoundException; |
test/edu/ucsb/nceas/metacattest/ReplicationServerListTest.java | ||
---|---|---|
28 | 28 |
|
29 | 29 |
import edu.ucsb.nceas.MCTestCase; |
30 | 30 |
import edu.ucsb.nceas.metacat.*; |
31 |
import edu.ucsb.nceas.metacat.database.*; |
|
32 |
import edu.ucsb.nceas.metacat.replication.*; |
|
31 | 33 |
import edu.ucsb.nceas.metacat.service.PropertyService; |
32 | 34 |
import edu.ucsb.nceas.metacat.util.MetacatUtil; |
33 | 35 |
import junit.framework.Test; |
lib/workflowscheduler.properties.metadata.xml | ||
---|---|---|
1 |
<?xml version="1.0"?> |
|
2 |
|
|
3 |
<metadataConfig> |
|
4 |
<group> |
|
5 |
<index>1</index> |
|
6 |
<name>Database</name> |
|
7 |
<description>Database Configuration Values.</description> |
|
8 |
</group> |
|
9 |
<group> |
|
10 |
<index>2</index> |
|
11 |
<name>Server Configuration</name> |
|
12 |
<description>Server Configuration Values.</description> |
|
13 |
</group> |
|
14 |
<group> |
|
15 |
<index>3</index> |
|
16 |
<name>Application Configuration</name> |
|
17 |
<description>Application Configuration Values.</description> |
|
18 |
</group> |
|
19 |
<group> |
|
20 |
<index>4</index> |
|
21 |
<name>Data Manager Configuration</name> |
|
22 |
<description>Data Manager Configuration Values.</description> |
|
23 |
</group> |
|
24 |
|
|
25 |
<config> |
|
26 |
<key>database.user</key> |
|
27 |
<label>Database Username</label> |
|
28 |
<group>1</group> |
|
29 |
<index>1</index> |
|
30 |
<description> |
|
31 |
Name of database user to own all tables. |
|
32 |
</description> |
|
33 |
<helpFile>properties.html#database.user</helpFile> |
|
34 |
</config> |
|
35 |
|
|
36 |
<config> |
|
37 |
<key>database.password</key> |
|
38 |
<label>Database Password</label> |
|
39 |
<group>1</group> |
|
40 |
<index>2</index> |
|
41 |
<fieldType>password</fieldType> |
|
42 |
<description>Password for database user.</description> |
|
43 |
<helpFile>properties.html#database.password</helpFile> |
|
44 |
</config> |
|
45 |
|
|
46 |
<config> |
|
47 |
<key>database.type</key> |
|
48 |
<label>Database Type</label> |
|
49 |
<group>1</group> |
|
50 |
<index>3</index> |
|
51 |
<fieldType>select</fieldType> |
|
52 |
<option> |
|
53 |
<name>PostgreSQL</name> |
|
54 |
<value>postgres</value> |
|
55 |
</option> |
|
56 |
<option> |
|
57 |
<name>Oracle</name> |
|
58 |
<value>oracle</value> |
|
59 |
</option> |
|
60 |
<!-- option> |
|
61 |
<name>SQL Server</name> |
|
62 |
<value>sqlserver</value> |
|
63 |
</option --> |
|
64 |
<description>What kind of database is running.</description> |
|
65 |
<helpFile>properties.html#database.type</helpFile> |
|
66 |
</config> |
|
67 |
|
|
68 |
<config> |
|
69 |
<key>database.driver</key> |
|
70 |
<label>Database Driver</label> |
|
71 |
<group>1</group> |
|
72 |
<index>4</index> |
|
73 |
<fieldType>select</fieldType> |
|
74 |
<option> |
|
75 |
<name>org.postgresql.Driver</name> |
|
76 |
<value>org.postgresql.Driver</value> |
|
77 |
</option> |
|
78 |
<option> |
|
79 |
<name>oracle.jdbc.driver.OracleDriver</name> |
|
80 |
<value>oracle.jdbc.driver.OracleDriver</value> |
|
81 |
</option> |
|
82 |
<!-- option> |
|
83 |
<name>com.microsoft.jdbc.sqlserver.SQLServerDriver</name> |
|
84 |
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value> |
|
85 |
</option --> |
|
86 |
<description> |
|
87 |
Which driver is required. This should conform to your |
|
88 |
database type. |
|
89 |
</description> |
|
90 |
<helpFile>properties.html#database.driver</helpFile> |
|
91 |
</config> |
|
92 |
|
|
93 |
<config> |
|
94 |
<key>database.adapter</key> |
|
95 |
<label>Database Adapter</label> |
|
96 |
<group>1</group> |
|
97 |
<index>5</index> |
|
98 |
<fieldType>select</fieldType> |
|
99 |
<option> |
|
100 |
<name>edu.ucsb.nceas.dbadapter.PostgresqlAdapter</name> |
|
101 |
<value>edu.ucsb.nceas.dbadapter.PostgresqlAdapter</value> |
|
102 |
</option> |
|
103 |
<option> |
|
104 |
<name>edu.ucsb.nceas.dbadapter.OracleAdapter</name> |
|
105 |
<value>edu.ucsb.nceas.dbadapter.OracleAdapter</value> |
|
106 |
</option> |
|
107 |
<!-- option> |
|
108 |
<name>edu.ucsb.nceas.dbadapter.SqlserverAdapter</name> |
|
109 |
<value>edu.ucsb.nceas.dbadapter.SqlserverAdapter</value> |
|
110 |
</option --> |
|
111 |
<description> |
|
112 |
Which adapter is required. This should conform to your |
|
113 |
database type. |
|
114 |
</description> |
|
115 |
<helpFile>properties.html#database.adapter</helpFile> |
|
116 |
</config> |
|
117 |
|
|
118 |
<config> |
|
119 |
<key>database.connectionURI</key> |
|
120 |
<label>JDBC Connection String</label> |
|
121 |
<group>1</group> |
|
122 |
<index>6</index> |
|
123 |
<description>Database connection string.</description> |
|
124 |
<helpFile>properties.html#database.connectionURI</helpFile> |
|
125 |
</config> |
|
126 |
|
|
127 |
<config> |
|
128 |
<key>server.name</key> |
|
129 |
<label>Server Name</label> |
|
130 |
<group>2</group> |
|
131 |
<index>1</index> |
|
132 |
<description> |
|
133 |
Name of the server where Metacat will be available. |
|
134 |
</description> |
|
135 |
<helpFile>properties.html#server.name</helpFile> |
|
136 |
</config> |
|
137 |
|
|
138 |
<config> |
|
139 |
<key>server.httpPort</key> |
|
140 |
<label>HTTP Port</label> |
|
141 |
<group>2</group> |
|
142 |
<index>2</index> |
|
143 |
<description> |
|
144 |
Non secure port where Metacat will be available. |
|
145 |
</description> |
|
146 |
<helpFile>properties.html#server.httpPort</helpFile> |
|
147 |
</config> |
|
148 |
|
|
149 |
<config> |
|
150 |
<key>server.httpSSLPort</key> |
|
151 |
<label>HTTP SSL Port</label> |
|
152 |
<group>2</group> |
|
153 |
<index>3</index> |
|
154 |
<description> |
|
155 |
Secure port where Metacat will be available. |
|
156 |
</description> |
|
157 |
<helpFile>properties.html#server.httpSSLPort</helpFile> |
|
158 |
</config> |
|
159 |
|
|
160 |
<config> |
|
161 |
<key>application.deployDir</key> |
|
162 |
<label>Deploy Location</label> |
|
163 |
<group>2</group> |
|
164 |
<index>4</index> |
|
165 |
<description> |
|
166 |
The directory where the application is deployed. |
|
167 |
</description> |
|
168 |
<helpFile>properties.html#application.deployDir</helpFile> |
|
169 |
</config> |
|
170 |
|
|
171 |
<config> |
|
172 |
<key>auth.allowedSubmitters</key> |
|
173 |
<label>Allowed Submitters</label> |
|
174 |
<group>3</group> |
|
175 |
<index>1</index> |
|
176 |
<description>Allowed Submitters</description> |
|
177 |
<helpFile>properties.html#auth.allowedSubmitters</helpFile> |
|
178 |
</config> |
|
179 |
|
|
180 |
<config> |
|
181 |
<key>auth.deniedSubmitters</key> |
|
182 |
<label>Denied Submitters</label> |
|
183 |
<group>3</group> |
|
184 |
<index>2</index> |
|
185 |
<description>Denied Submitters</description> |
|
186 |
<helpFile>properties.html#auth.deniedSubmitters</helpFile> |
|
187 |
</config> |
|
188 |
|
|
189 |
<config> |
|
190 |
<key>application.context</key> |
|
191 |
<label>Metacat Context</label> |
|
192 |
<group>3</group> |
|
193 |
<index>3</index> |
|
194 |
<description> |
|
195 |
Name of the context under which Metacat will run. This is |
|
196 |
the directory in which the Metacat war file is deployed. |
|
197 |
</description> |
|
198 |
<helpFile>properties.html#application.context</helpFile> |
|
199 |
</config> |
|
200 |
|
|
201 |
<config> |
|
202 |
<key>application.knbSiteURL</key> |
|
203 |
<label>KNB Site URL</label> |
|
204 |
<group>3</group> |
|
205 |
<index>4</index> |
|
206 |
<description> |
|
207 |
Location of KNB website. Usually left as |
|
208 |
http://knb.ecoinformatics.org |
|
209 |
</description> |
|
210 |
<helpFile>properties.html#application.knbSiteURL</helpFile> |
|
211 |
</config> |
|
212 |
|
|
213 |
<config> |
|
214 |
<key>application.datafilepath</key> |
|
215 |
<label>Data File Path</label> |
|
216 |
<group>3</group> |
|
217 |
<index>5</index> |
|
218 |
<description> |
|
219 |
Where to store data. This should be some location outside |
|
220 |
the knb install direcories. |
|
221 |
</description> |
|
222 |
<helpFile>properties.html#application.datafilepath</helpFile> |
|
223 |
</config> |
|
224 |
|
|
225 |
<config> |
|
226 |
<key>application.inlinedatafilepath</key> |
|
227 |
<label>Inline Data File Path</label> |
|
228 |
<group>3</group> |
|
229 |
<index>6</index> |
|
230 |
<description> |
|
231 |
Where to store inline data. This should be some location |
|
232 |
outside the knb install direcories. |
|
233 |
</description> |
|
234 |
<helpFile>properties.html#application.inlinedatafilepath</helpFile> |
|
235 |
</config> |
|
236 |
|
|
237 |
<config> |
|
238 |
<key>application.documentfilepath</key> |
|
239 |
<label>Document File Path</label> |
|
240 |
<group>3</group> |
|
241 |
<index>7</index> |
|
242 |
<description> |
|
243 |
Where to store metadata documents. This should be some location |
|
244 |
outside the knb install direcories. |
|
245 |
</description> |
|
246 |
<helpFile>properties.html#application.documentfilepath</helpFile> |
|
247 |
</config> |
|
248 |
|
|
249 |
<config> |
|
250 |
<key>application.tempDir</key> |
|
251 |
<label>Temporary File Path</label> |
|
252 |
<group>3</group> |
|
253 |
<index>8</index> |
|
254 |
<description> |
|
255 |
Where to store temporary documents. This is primarily used by |
|
256 |
the data registry code. <font color="red"> Note: this must be |
|
257 |
set to a directory that is dedicated solely to temporary data, |
|
258 |
since the contents may be deleted programatically.</font> |
|
259 |
</description> |
|
260 |
<helpFile>properties.html#application.tempDir</helpFile> |
|
261 |
</config> |
|
262 |
|
|
263 |
<config> |
|
264 |
<key>replication.logdir</key> |
|
265 |
<label>Replication Log Directory</label> |
|
266 |
<group>3</group> |
|
267 |
<index>9</index> |
|
268 |
<description> |
|
269 |
The directory where replication log should be located. |
|
270 |
</description> |
|
271 |
<helpFile>properties.html#replication.logdir</helpFile> |
|
272 |
</config> |
|
273 |
|
|
274 |
<!-- START Data Manager configuration --> |
|
275 |
<config> |
|
276 |
<key>datamanager.server</key> |
|
277 |
<label>Database Server</label> |
|
278 |
<group>4</group> |
|
279 |
<index>1</index> |
|
280 |
<description> |
|
281 |
Host or IP of database server |
|
282 |
</description> |
|
283 |
<helpFile>properties.html#datamanager.server</helpFile> |
|
284 |
</config> |
|
285 |
|
|
286 |
<config> |
|
287 |
<key>datamanager.database</key> |
|
288 |
<label>Database Name</label> |
|
289 |
<group>4</group> |
|
290 |
<index>2</index> |
|
291 |
<description> |
|
292 |
Name of the data manager database |
|
293 |
</description> |
|
294 |
<helpFile>properties.html#datamanager.database</helpFile> |
|
295 |
</config> |
|
296 |
|
|
297 |
<config> |
|
298 |
<key>datamanager.user</key> |
|
299 |
<label>Database Username</label> |
|
300 |
<group>4</group> |
|
301 |
<index>3</index> |
|
302 |
<description> |
|
303 |
Name of database user to own all tables. |
|
304 |
</description> |
|
305 |
<helpFile>properties.html#datamanager.user</helpFile> |
|
306 |
</config> |
|
307 |
|
|
308 |
<config> |
|
309 |
<key>datamanager.password</key> |
|
310 |
<label>Database Password</label> |
|
311 |
<group>4</group> |
|
312 |
<index>4</index> |
|
313 |
<fieldType>password</fieldType> |
|
314 |
<description>Password for database user.</description> |
|
315 |
<helpFile>properties.html#datamanager.password</helpFile> |
|
316 |
</config> |
|
317 |
<!-- END Data Manager configuration --> |
|
318 |
|
|
319 |
</metadataConfig> |
|
0 | 320 |
lib/workflowscheduler.web.xml | ||
---|---|---|
1 |
<!DOCTYPE web-app |
|
2 |
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" |
|
3 |
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd"> |
|
4 |
|
|
5 |
<web-app> |
|
6 |
|
|
7 |
<display-name>Workflow Scheduler</display-name> |
|
8 |
|
|
9 |
<context-param> |
|
10 |
<param-name>jones</param-name> |
|
11 |
<param-value>jones@nceas.ucsb.edu</param-value> |
|
12 |
<description></description> |
|
13 |
</context-param> |
|
14 |
|
|
15 |
<context-param> |
|
16 |
<param-name>configFileName</param-name> |
|
17 |
<param-value>workflowscheduler.properties</param-value> |
|
18 |
<description>The main configuration file for application</description> |
|
19 |
</context-param> |
|
20 |
|
|
21 |
<context-param> |
|
22 |
<param-name>serviceStratagy</param-name> |
|
23 |
<!-- Meaning of the different values : |
|
24 |
|
|
25 |
PARTIAL-BUFFER |
|
26 |
- Partially buffers the first xKb to disk. Once that has buffered, the the |
|
27 |
result is streamed to the user. This will allow for most errors to be caught |
|
28 |
early. |
|
29 |
|
|
30 |
BUFFER |
|
31 |
- stores the entire response in memory first, before sending it off to |
|
32 |
the user (may run out of memory) |
|
33 |
|
|
34 |
SPEED |
|
35 |
- outputs directly to the response (and cannot recover in the case of an |
|
36 |
error) |
|
37 |
|
|
38 |
FILE |
|
39 |
- outputs to the local filesystem first, before sending it off to the user |
|
40 |
--> |
|
41 |
<param-value>PARTIAL-BUFFER</param-value> |
|
42 |
</context-param> |
|
43 |
<context-param> |
|
44 |
<param-name>PARTIAL_BUFFER_STRATEGY_SIZE</param-name> |
|
45 |
<param-value>50</param-value> |
|
46 |
</context-param> |
|
47 |
|
|
48 |
<servlet> |
|
49 |
<servlet-name>WorkflowScheduler</servlet-name> |
|
50 |
<servlet-class> |
|
51 |
edu.ucsb.nceas.metacat.workflow.WorkflowSchedulerServlet |
|
52 |
</servlet-class> |
|
53 |
<init-param> |
|
54 |
<param-name>debug</param-name> |
|
55 |
<param-value>1</param-value> |
|
56 |
</init-param> |
|
57 |
<init-param> |
|
58 |
<param-name>listings</param-name> |
|
59 |
<param-value>true</param-value> |
|
60 |
</init-param> |
|
61 |
<load-on-startup>1</load-on-startup> |
|
62 |
</servlet> |
|
63 |
|
|
64 |
<servlet-mapping> |
|
65 |
<servlet-name>WorkflowScheduler</servlet-name> |
|
66 |
<url-pattern>/scheduler</url-pattern> |
|
67 |
</servlet-mapping> |
|
68 |
|
|
69 |
<servlet-mapping> |
|
70 |
<servlet-name>WorkflowScheduler</servlet-name> |
|
71 |
<url-pattern>/scheduler/*</url-pattern> |
|
72 |
</servlet-mapping> |
|
73 |
|
|
74 |
<servlet-mapping> |
|
75 |
<servlet-name>WorkflowScheduler</servlet-name> |
|
76 |
<url-pattern>/servlet/scheduler</url-pattern> |
|
77 |
</servlet-mapping> |
|
78 |
|
|
79 |
<session-config> |
|
80 |
<session-timeout>30000</session-timeout> |
|
81 |
</session-config> |
|
82 |
|
|
83 |
|
|
84 |
<!-- currently the W3C havent settled on a media type for WSDL; |
|
85 |
http://www.w3.org/TR/2003/WD-wsdl12-20030303/#ietf-draft |
|
86 |
for now we go with the basic 'it's XML' response --> |
|
87 |
<mime-mapping> |
|
88 |
<extension>wsdl</extension> |
|
89 |
<mime-type>text/xml</mime-type> |
|
90 |
</mime-mapping> |
|
91 |
|
|
92 |
<mime-mapping> |
|
93 |
<extension>xsd</extension> |
|
94 |
<mime-type>text/xml</mime-type> |
|
95 |
</mime-mapping> |
|
96 |
|
|
97 |
<mime-mapping> |
|
98 |
<extension>xsl</extension> |
|
99 |
<mime-type>text/xml</mime-type> |
|
100 |
</mime-mapping> |
|
101 |
|
|
102 |
|
|
103 |
<welcome-file-list> |
|
104 |
<welcome-file>index.jsp</welcome-file> |
|
105 |
<welcome-file>index.html</welcome-file> |
|
106 |
</welcome-file-list> |
|
107 |
|
|
108 |
|
|
109 |
<taglib> |
|
110 |
<taglib-uri> |
|
111 |
http://jakarta.apache.org/taglibs/xtags-1.0 |
|
112 |
</taglib-uri> |
|
113 |
<taglib-location>/WEB-INF/xtags.tld</taglib-location> |
|
114 |
</taglib> |
|
115 |
|
|
116 |
<taglib> |
|
117 |
<taglib-uri>/tags/struts-bean</taglib-uri> |
|
118 |
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location> |
|
119 |
</taglib> |
|
120 |
|
|
121 |
<taglib> |
|
122 |
<taglib-uri>/tags/struts-html</taglib-uri> |
|
123 |
<taglib-location>/WEB-INF/struts-html.tld</taglib-location> |
|
124 |
</taglib> |
|
125 |
|
|
126 |
<taglib> |
|
127 |
<taglib-uri>/tags/struts-logic</taglib-uri> |
|
128 |
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location> |
|
129 |
</taglib> |
|
130 |
|
|
131 |
<taglib> |
|
132 |
<taglib-uri>/tags/struts-nested</taglib-uri> |
|
133 |
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location> |
|
134 |
</taglib> |
|
135 |
|
|
136 |
<taglib> |
|
137 |
<taglib-uri>/tags/struts-tiles</taglib-uri> |
|
138 |
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location> |
|
139 |
</taglib> |
|
140 |
|
|
141 |
<!-- spring taglib --> |
|
142 |
<taglib> |
|
143 |
<taglib-uri>/tags/spring</taglib-uri> |
|
144 |
<taglib-location>/WEB-INF/tld/spring.tld</taglib-location> |
|
145 |
</taglib> |
|
146 |
|
|
147 |
<!-- |
|
148 |
<error-page> |
|
149 |
<exception-type>java.lang.Exception</exception-type> |
|
150 |
<location>/WEB-INF/pages/errors/Exception.jsp</location> |
|
151 |
</error-page> |
|
152 |
<error-page> |
|
153 |
<exception-type>javax.servlet.ServletException</exception-type> |
|
154 |
<location>/WEB-INF/pages/errors/Exception.jsp</location> |
|
155 |
</error-page> |
|
156 |
<error-page> |
|
157 |
<exception-type>org.vfny.geoserver.global.ConfigurationException</exception-type> |
|
158 |
<location>/WEB-INF/pages/errors/Exception.jsp</location> |
|
159 |
</error-page> |
|
160 |
--> |
|
161 |
|
|
162 |
<security-constraint> |
|
163 |
<web-resource-collection> |
|
164 |
<web-resource-name>CFG</web-resource-name> |
|
165 |
<url-pattern>*.cfg</url-pattern> |
|
166 |
</web-resource-collection> |
|
167 |
<auth-constraint /> |
|
168 |
</security-constraint> |
|
169 |
|
|
170 |
<security-constraint> |
|
171 |
<web-resource-collection> |
|
172 |
<web-resource-name>PROPERTIES</web-resource-name> |
|
173 |
<url-pattern>*.properties</url-pattern> |
|
174 |
</web-resource-collection> |
|
175 |
<auth-constraint /> |
|
176 |
</security-constraint> |
|
177 |
|
|
178 |
</web-app> |
|
0 | 179 |
src/edu/ucsb/nceas/metacat/database/DBConnection.java | ||
---|---|---|
359 | 359 |
} |
360 | 360 |
catch (ClassNotFoundException e) |
361 | 361 |
{ |
362 |
logMetacat.error("Error in DBConnectionPool "+e.getMessage());
|
|
362 |
logMetacat.error("DBConnectionPool.openConnection - Class not found: " + e.getMessage());
|
|
363 | 363 |
return null; |
364 | 364 |
} |
365 | 365 |
// Connect to the database |
src/edu/ucsb/nceas/metacat/admin/PropertiesAdmin.java | ||
---|---|---|
35 | 35 |
|
36 | 36 |
import org.apache.log4j.Logger; |
37 | 37 |
|
38 |
import edu.ucsb.nceas.metacat.MetaCatVersion;
|
|
38 |
import edu.ucsb.nceas.metacat.MetacatVersion;
|
|
39 | 39 |
import edu.ucsb.nceas.metacat.database.DBVersion; |
40 | 40 |
import edu.ucsb.nceas.metacat.service.PropertyService; |
41 | 41 |
import edu.ucsb.nceas.metacat.service.ServiceService; |
... | ... | |
53 | 53 |
* Control the display of the main properties configuration page and the |
54 | 54 |
* processing of the configuration values. |
55 | 55 |
*/ |
56 |
public class PropertiesAdmin extends MetaCatAdmin {
|
|
56 |
public class PropertiesAdmin extends MetacatAdmin {
|
|
57 | 57 |
|
58 | 58 |
private static PropertiesAdmin propertiesAdmin = null; |
59 | 59 |
private static Logger logMetacat = Logger.getLogger(PropertiesAdmin.class); |
... | ... | |
157 | 157 |
|
158 | 158 |
// Forward the request to the JSP page |
159 | 159 |
RequestUtil.forwardRequest(request, response, |
160 |
"/admin/properties-configuration.jsp"); |
|
160 |
"/admin/properties-configuration.jsp", null);
|
|
161 | 161 |
|
162 | 162 |
} catch (GeneralPropertyException gpe) { |
163 | 163 |
throw new AdminException("Problem getting or setting property while " |
... | ... | |
179 | 179 |
Vector<String> processingErrors = new Vector<String>(); |
180 | 180 |
Vector<String> processingSuccess = new Vector<String>(); |
181 | 181 |
|
182 |
MetaCatVersion metacatVersion = null;
|
|
182 |
MetacatVersion metacatVersion = null;
|
|
183 | 183 |
|
184 | 184 |
try { |
185 | 185 |
metacatVersion = SystemUtil.getMetacatVersion(); |
... | ... | |
273 | 273 |
RequestUtil.clearRequestMessages(request); |
274 | 274 |
RequestUtil.setRequestFormErrors(request, validationErrors); |
275 | 275 |
RequestUtil.setRequestErrors(request, processingErrors); |
276 |
RequestUtil.forwardRequest(request, response, "/admin"); |
|
276 |
RequestUtil.forwardRequest(request, response, "/admin", null);
|
|
277 | 277 |
} else { |
278 | 278 |
// Now that the options have been set, change the |
279 | 279 |
// 'propertiesConfigured' option to 'true' |
... | ... | |
295 | 295 |
RequestUtil.clearRequestMessages(request); |
296 | 296 |
RequestUtil.setRequestSuccess(request, processingSuccess); |
297 | 297 |
RequestUtil.forwardRequest(request, response, |
298 |
"/admin?configureType=configure&processForm=false"); |
|
298 |
"/admin?configureType=configure&processForm=false", null);
|
|
299 | 299 |
} |
300 | 300 |
|
301 | 301 |
} catch (ServletException se) { |
src/edu/ucsb/nceas/metacat/admin/BackupAdmin.java | ||
---|---|---|
48 | 48 |
/** |
49 | 49 |
* Control the display of the login page |
50 | 50 |
*/ |
51 |
public class BackupAdmin extends MetaCatAdmin {
|
|
51 |
public class BackupAdmin extends MetacatAdmin {
|
|
52 | 52 |
|
53 | 53 |
private static BackupAdmin Admin = null; |
54 | 54 |
private static Logger logMetacat = Logger.getLogger(BackupAdmin.class); |
... | ... | |
113 | 113 |
|
114 | 114 |
// Forward the request to the JSP page |
115 | 115 |
RequestUtil.forwardRequest(request, response, |
116 |
"/admin/backup-configuration.jsp"); |
|
116 |
"/admin/backup-configuration.jsp", null);
|
|
117 | 117 |
} catch (IOException ioe) { |
118 | 118 |
throw new AdminException("IO problem while initializing " |
119 | 119 |
+ "backup configuration page:" + ioe.getMessage()); |
... | ... | |
174 | 174 |
RequestUtil.clearRequestMessages(request); |
175 | 175 |
RequestUtil.setRequestFormErrors(request, validationErrors); |
176 | 176 |
RequestUtil.setRequestErrors(request, processingErrors); |
177 |
RequestUtil.forwardRequest(request, response, "/admin"); |
|
177 |
RequestUtil.forwardRequest(request, response, "/admin", null);
|
|
178 | 178 |
} else { |
179 | 179 |
// Reload the main metacat configuration page |
180 | 180 |
processingSuccess.add("Directory: " + backupDir + " configured."); |
181 | 181 |
RequestUtil.clearRequestMessages(request); |
182 | 182 |
RequestUtil.setRequestSuccess(request, processingSuccess); |
183 | 183 |
RequestUtil.forwardRequest(request, response, |
184 |
"/admin?configureType=configure&processForm=false"); |
|
184 |
"/admin?configureType=configure&processForm=false", null);
|
|
185 | 185 |
} |
186 | 186 |
} catch (IOException ioe) { |
187 | 187 |
throw new AdminException("IO problem while processing login page: " |
src/edu/ucsb/nceas/metacat/service/PropertyService.java | ||
---|---|---|
61 | 61 |
public static final String UNCONFIGURED = "false"; |
62 | 62 |
public static final String BYPASSED = "bypassed"; |
63 | 63 |
|
64 |
private static final String MAIN_CONFIG_NAME = "metacat.properties";
|
|
64 |
private static String MAIN_CONFIG_NAME = "";
|
|
65 | 65 |
private static final String AUTH_CONFIG_NAME = "auth.properties"; |
66 | 66 |
|
67 | 67 |
private static boolean bypassAlreadyChecked = false; |
... | ... | |
96 | 96 |
private PropertyService() throws ServiceException { |
97 | 97 |
_serviceName = "PropertyService"; |
98 | 98 |
|
99 |
MAIN_CONFIG_NAME = ServiceService.CONFIG_FILE_NAME; |
|
100 |
|
|
99 | 101 |
initialize(); |
100 | 102 |
} |
101 | 103 |
|
src/edu/ucsb/nceas/metacat/workflow/WorkflowScheduler.java | ||
---|---|---|
27 | 27 |
package edu.ucsb.nceas.metacat.workflow; |
28 | 28 |
|
29 | 29 |
import java.io.IOException; |
30 |
import java.io.PrintWriter; |
|
30 | 31 |
import java.util.Calendar; |
31 | 32 |
import java.util.Hashtable; |
32 | 33 |
import java.util.HashMap; |
33 | 34 |
|
34 | 35 |
import javax.servlet.http.HttpServletRequest; |
35 | 36 |
import javax.servlet.http.HttpServletResponse; |
36 |
import javax.servlet.ServletException; |
|
37 | 37 |
|
38 | 38 |
import org.apache.log4j.Logger; |
39 | 39 |
|
40 |
import edu.ucsb.nceas.metacat.MetaCatServlet; |
|
41 | 40 |
import edu.ucsb.nceas.metacat.scheduler.BaseScheduler; |
42 | 41 |
import edu.ucsb.nceas.metacat.scheduler.ScheduledJobAccess; |
43 | 42 |
import edu.ucsb.nceas.metacat.scheduler.ScheduledJobDAO; |
44 |
import edu.ucsb.nceas.metacat.scheduler.ScheduledJobParamDAO; |
|
45 | 43 |
import edu.ucsb.nceas.metacat.scheduler.SchedulerService; |
46 | 44 |
import edu.ucsb.nceas.metacat.scheduler.MetacatSchedulerException; |
47 | 45 |
import edu.ucsb.nceas.metacat.shared.AccessException; |
48 | 46 |
import edu.ucsb.nceas.metacat.shared.ServiceException; |
49 | 47 |
import edu.ucsb.nceas.metacat.util.ErrorSendingErrorException; |
50 | 48 |
import edu.ucsb.nceas.metacat.util.ResponseUtil; |
51 |
import edu.ucsb.nceas.metacat.util.RequestUtil; |
|
52 | 49 |
import edu.ucsb.nceas.utilities.DateUtil; |
53 | 50 |
import edu.ucsb.nceas.utilities.UtilException; |
54 | 51 |
|
... | ... | |
56 | 53 |
* @author daigle |
57 | 54 |
* |
58 | 55 |
*/ |
59 |
/** |
|
60 |
* @author daigle |
|
61 |
* |
|
62 |
*/ |
|
63 | 56 |
public class WorkflowScheduler extends BaseScheduler { |
64 | 57 |
|
65 | 58 |
private static WorkflowScheduler workflowScheduler = null; |
... | ... | |
177 | 170 |
// Schedule the job |
178 | 171 |
String xmlResult = schedulerService.scheduleJob(jobName, startCal, endCal, intervalValue, intervalUnit, |
179 | 172 |
WORKFLOW_JOB_CLASS, WORKFLOW_JOB_GROUP, jobParams, username, groups); |
180 |
|
|
181 |
// if there is a forwardto param on the request, then send the user to the page |
|
182 |
// referenced in that param, otherwise, just send the xml back. |
|
183 |
String forwardtos[] = params.get("forwardto"); |
|
184 |
String forwardto = null; |
|
185 |
if (forwardtos != null && forwardtos.length > 0) { |
|
186 |
forwardto = forwardtos[0]; |
|
187 |
} |
|
188 | 173 |
|
189 |
if (forwardto != null) { |
|
190 |
String qformats[] = params.get("qformat"); |
|
191 |
String qformat = null; |
|
192 |
if (qformats != null && qformats.length > 0) { |
|
193 |
qformat = qformats[0]; |
|
194 |
} |
|
195 |
|
|
196 |
String destination = "/style/skins/" + qformat + "/" + forwardto |
|
197 |
+ "?workflowid=" + jobParams.get("workflowid") |
|
198 |
+ "&karid=" + jobParams.get("karid"); |
|
199 |
RequestUtil.forwardRequest(request, response, destination); |
|
200 |
} else { |
|
201 |
ResponseUtil.sendSuccessXML(response, xmlResult); |
|
202 |
} |
|
174 |
ResponseUtil.sendSuccessXML(response, xmlResult); |
|
203 | 175 |
|
204 | 176 |
} catch (UtilException ue) { |
205 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - Utility issue when scheduling job: " + ue.getMessage()); |
|
177 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - " |
|
178 |
+ "Utility issue when scheduling job: " + ue.getMessage()); |
|
206 | 179 |
} catch (ServiceException se) { |
207 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - Service issue when scheduling job", se); |
|
208 |
} catch (IOException ioe) { |
|
209 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - I/O issue when scheduling job: " + ioe.getMessage()); |
|
210 |
} catch (ServletException se) { |
|
211 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - Servlet issue when scheduling job: " + se.getMessage()); |
|
180 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - " |
|
181 |
+ "Service issue when scheduling job", se); |
|
212 | 182 |
} catch (ErrorSendingErrorException esee) { |
213 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - Issue sending error when scheduling job: " + esee.getMessage()); |
|
183 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - " |
|
184 |
+ "Issue sending error when scheduling job: " + esee.getMessage()); |
|
214 | 185 |
} |
215 | 186 |
} |
216 | 187 |
|
... | ... | |
244 | 215 |
SchedulerService schedulerService = SchedulerService.getInstance(); |
245 | 216 |
String xmlResult = schedulerService.unScheduleJob(jobName, username, groups); |
246 | 217 |
|
247 |
|
|
248 |
String forwardtos[] = params.get("forwardto"); |
|
249 |
String forwardto = null; |
|
250 |
if (forwardtos != null && forwardtos.length > 0) { |
|
251 |
forwardto = forwardtos[0]; |
|
252 |
} |
|
253 |
|
|
254 |
// if there is a forwardto param on the request, then send the user to the page |
|
255 |
// referenced in that param, otherwise, just send the xml back. |
|
256 |
if (forwardto != null) { |
|
257 |
String qformats[] = params.get("qformat"); |
|
258 |
String qformat = null; |
|
259 |
if (qformats != null && qformats.length > 0) { |
|
260 |
qformat = qformats[0]; |
|
261 |
} |
|
262 |
|
|
263 |
ScheduledJobAccess jobAccess = new ScheduledJobAccess(); |
|
264 |
ScheduledJobDAO jobDAO = jobAccess.getJobByName(jobName); |
|
265 |
|
|
266 |
// we need to include the workflow id in the forward url |
|
267 |
ScheduledJobParamDAO workflowIdJobParamDAO = jobDAO.getJobParam("workflowid"); |
|
268 |
if (workflowIdJobParamDAO == null) { |
|
269 |
throw new MetacatSchedulerException("WorkflowScheduler.unScheduleJob - could not find workflow " |
|
270 |
+ "id when unscheduling job: " + jobName); |
|
271 |
} |
|
272 |
|
|
273 |
// we need to include the workflow id in the forward url |
|
274 |
ScheduledJobParamDAO karJobParamDAO = jobDAO.getJobParam("karid"); |
|
275 |
if (karJobParamDAO == null) { |
|
276 |
throw new MetacatSchedulerException("WorkflowScheduler.unScheduleJob - could not find kar " |
|
277 |
+ "id when unscheduling job: " + jobName); |
|
278 |
} |
|
279 |
|
|
280 |
// we need to include the workflow id in the url |
|
281 |
ScheduledJobParamDAO workflowNameJobParamDAO = jobDAO.getJobParam("workflowname"); |
|
282 |
if (workflowNameJobParamDAO == null) { |
|
283 |
throw new MetacatSchedulerException("WorkflowScheduler.unScheduleJob - could not find workflow " |
|
284 |
+ "name when unscheduling job: " + jobName); |
|
285 |
} |
|
286 |
|
|
287 |
String destination = "/style/skins/" + qformat + "/" + forwardto |
|
288 |
+ "?workflowid=" + workflowIdJobParamDAO.getValue() |
|
289 |
+ "&karid=" + karJobParamDAO.getValue() |
|
290 |
+ "&workflowname=" + workflowNameJobParamDAO.getValue(); |
|
291 |
|
|
292 |
RequestUtil.forwardRequest(request, response, destination.toString()); |
|
293 |
} else { |
|
294 |
ResponseUtil.sendSuccessXML(response, xmlResult); |
|
295 |
} |
|
296 | 218 |
ResponseUtil.sendSuccessXML(response, xmlResult); |
219 |
|
|
297 | 220 |
} catch (ServiceException se) { |
298 |
throw new MetacatSchedulerException( |
|
299 |
"WorkflowScheduler.unScheduleJob - Service issue unscheduling job", |
|
300 |
se); |
|
221 |
throw new MetacatSchedulerException("WorkflowScheduler.unScheduleJob - " |
|
222 |
+ "Service issue unscheduling job", se); |
|
301 | 223 |
} catch (Exception e) { |
302 |
throw new MetacatSchedulerException( |
|
303 |
"WorkflowScheduler.unScheduleJob - Generic issue unscheduling job: " |
|
304 |
+ e.getMessage()); |
|
224 |
throw new MetacatSchedulerException("WorkflowScheduler.unScheduleJob - " |
|
225 |
+ "Generic issue unscheduling job: " + e.getMessage()); |
|
305 | 226 |
} |
306 | 227 |
} |
307 | 228 |
|
... | ... | |
339 | 260 |
SchedulerService schedulerService = SchedulerService.getInstance(); |
340 | 261 |
String result = schedulerService.rescheduleJob(jobDAO, username, groups); |
341 | 262 |
|
342 |
// if there is a forwardto param on the request, then send the user to the page |
|
343 |
// referenced in that param, otherwise, just send the xml back. |
|
344 |
String forwardtos[] = params.get("forwardto"); |
|
345 |
String forwardto = null; |
|
346 |
if (forwardtos != null && forwardtos.length > 0) { |
|
347 |
forwardto = forwardtos[0]; |
|
348 |
} |
|
263 |
ResponseUtil.sendSuccessXML(response, result); |
|
349 | 264 |
|
350 |
if (forwardto != null) { |
|
351 |
String qformats[] = params.get("qformat"); |
|
352 |
String qformat = null; |
|
353 |
if (qformats != null && qformats.length > 0) { |
|
354 |
qformat = qformats[0]; |
|
355 |
} |
|
356 |
|
|
357 |
// we need to include the workflow id in the url |
|
358 |
ScheduledJobParamDAO workflowIdJobParamDAO = jobDAO.getAllJobParams().get("workflowid"); |
|
359 |
if (workflowIdJobParamDAO == null) { |
|
360 |
throw new MetacatSchedulerException("WorkflowScheduler.reScheduleJob - could not find workflow " |
|
361 |
+ "id when deleting job: " + jobName); |
|
362 |
|
|
363 |
} |
|
364 |
|
|
365 |
// we need to include the workflow id in the url |
|
366 |
ScheduledJobParamDAO karJobParamDAO = jobDAO.getJobParam("karid"); |
|
367 |
if (karJobParamDAO == null) { |
|
368 |
throw new MetacatSchedulerException("WorkflowScheduler.reScheduleJob - could not find kar " |
|
369 |
+ "id when deleting job: " + jobName); |
|
370 |
} |
|
371 |
|
|
372 |
// we need to include the workflow id in the url |
|
373 |
ScheduledJobParamDAO workflowNameJobParamDAO = jobDAO.getJobParam("workflowname"); |
|
374 |
if (workflowNameJobParamDAO == null) { |
|
375 |
throw new MetacatSchedulerException("WorkflowScheduler.reScheduleJob - could not find workflow " |
|
376 |
+ "name when deleting job: " + jobName); |
|
377 |
} |
|
378 |
|
|
379 |
String destination = "/style/skins/" + qformat + "/" + forwardto |
|
380 |
+ "?workflowid=" + workflowIdJobParamDAO.getValue() |
|
381 |
+ "&karid=" + karJobParamDAO.getValue() |
|
382 |
+ "&workflowname=" + workflowNameJobParamDAO.getValue(); |
|
383 |
|
|
384 |
RequestUtil.forwardRequest(request, response, destination); |
|
385 |
} else { |
|
386 |
ResponseUtil.sendSuccessXML(response, result); |
|
387 |
} |
|
388 |
|
|
389 | 265 |
} catch (AccessException ae) { |
390 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - DB access issue when scheduling job : ", ae); |
|
266 |
throw new MetacatSchedulerException("WorkflowScheduler.reScheduleJob - " |
|
267 |
+ "DB access issue when scheduling job : ", ae); |
|
391 | 268 |
} catch (ServiceException se) { |
392 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - Service issue scheduling job", se); |
|
393 |
} catch (IOException ioe) { |
|
394 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - I/O issue scheduling job: " + ioe.getMessage()); |
|
395 |
} catch (ServletException se) { |
|
396 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - Servlet issue scheduling job: " + se.getMessage()); |
|
269 |
throw new MetacatSchedulerException("WorkflowScheduler.reScheduleJob - " |
|
270 |
+ "Service issue scheduling job", se); |
|
397 | 271 |
} catch (ErrorSendingErrorException esee) { |
398 |
throw new MetacatSchedulerException("WorkflowScheduler.scheduleJob - Issue sending erro when scheduling job: " + esee.getMessage()); |
|
272 |
throw new MetacatSchedulerException("WorkflowScheduler.reScheduleJob - " |
|
273 |
+ "Issue sending erro when scheduling job: " + esee.getMessage()); |
|
399 | 274 |
} |
400 | 275 |
} |
401 | 276 |
|
... | ... | |
405 | 280 |
public void deleteJob(HttpServletRequest request, HttpServletResponse response, |
406 | 281 |
Hashtable<String, String[]> params, String username, String[] groups) throws MetacatSchedulerException { |
407 | 282 |
try { |
408 |
// workflow job id must exist |
|
409 |
String jobNames[] = params.get("workflowjobid"); |
|
410 |
if (jobNames == null || jobNames.length == 0) { |
|
411 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - workflowjobid field must be populated " |
|
412 |
+ "in scheduler parameters when deleting job."); |
|
413 |
} |
|
414 |
String jobName = jobNames[0]; |
|
283 |
// workflow job id must exist |
|
284 |
String jobNames[] = params.get("workflowjobid"); |
|
285 |
if (jobNames == null || jobNames.length == 0) { |
|
286 |
throw new MetacatSchedulerException( |
|
287 |
"WorkflowScheduler.deleteJob - workflowname field must be populated " |
|
288 |
+ "in scheduler parameters when deleting job."); |
|
289 |
} |
|
290 |
String jobName = jobNames[0]; |
|
415 | 291 |
|
416 |
ScheduledJobAccess jobAccess = new ScheduledJobAccess(); |
|
417 |
ScheduledJobDAO jobDAO = jobAccess.getJobByName(jobName); |
|
418 |
|
|
419 |
// delete the job |
|
420 |
SchedulerService schedulerService = SchedulerService.getInstance(); |
|
421 |
String result = schedulerService.deleteJob(jobDAO, username, groups); |
|
422 |
|
|
423 |
// if there is a forwardto param on the request, then send the user to the page |
|
424 |
// referenced in that param, otherwise, just send the xml back. |
|
425 |
String forwardtos[] = params.get("forwardto"); |
|
426 |
String forwardto = null; |
|
427 |
if (forwardtos != null && forwardtos.length > 0) { |
|
428 |
forwardto = forwardtos[0]; |
|
429 |
} |
|
430 |
|
|
431 |
if (forwardto != null) { |
|
432 |
String qformats[] = params.get("qformat"); |
|
433 |
String qformat = null; |
|
434 |
if (qformats != null && qformats.length > 0) { |
|
435 |
qformat = qformats[0]; |
|
436 |
} |
|
437 |
|
|
438 |
// we need to include the workflow id in the url |
|
439 |
ScheduledJobParamDAO workflowIdJobParamDAO = jobDAO.getAllJobParams().get("workflowid"); |
|
440 |
if (workflowIdJobParamDAO == null) { |
|
441 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - could not find workflow " |
|
442 |
+ "id when deleting job: " + jobName); |
|
443 |
|
|
444 |
} |
|
445 |
|
|
446 |
// we need to include the workflow id in the url |
|
447 |
ScheduledJobParamDAO karJobParamDAO = jobDAO.getJobParam("karid"); |
|
448 |
if (karJobParamDAO == null) { |
|
449 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - could not find kar " |
|
450 |
+ "id when deleting job: " + jobName); |
|
451 |
} |
|
452 |
|
|
453 |
// we need to include the workflow id in the url |
|
454 |
ScheduledJobParamDAO workflowNameJobParamDAO = jobDAO.getJobParam("workflowname"); |
|
455 |
if (workflowNameJobParamDAO == null) { |
|
456 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - could not find workflow " |
|
457 |
+ "name when deleting job: " + jobName); |
|
458 |
} |
|
459 |
|
|
460 |
String destination = "/style/skins/" + qformat + "/" + forwardto |
|
461 |
+ "?workflowid=" + workflowIdJobParamDAO.getValue() |
|
462 |
+ "&karid=" + karJobParamDAO.getValue() |
|
463 |
+ "&workflowname=" + workflowNameJobParamDAO.getValue(); |
|
464 |
|
|
465 |
RequestUtil.forwardRequest(request, response, destination); |
|
466 |
} else { |
|
292 |
ScheduledJobAccess jobAccess = new ScheduledJobAccess(); |
|
293 |
ScheduledJobDAO jobDAO = jobAccess.getJobByName(jobName); |
|
294 |
|
|
295 |
// delete the job |
|
296 |
SchedulerService schedulerService = SchedulerService.getInstance(); |
|
297 |
String result = schedulerService.deleteJob(jobDAO, username, groups); |
|
298 |
|
|
467 | 299 |
ResponseUtil.sendSuccessXML(response, result); |
468 |
} |
|
469 |
|
|
300 |
|
|
470 | 301 |
} catch (AccessException ae) { |
471 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - DB access issue when deleting job : ", ae); |
|
302 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - " |
|
303 |
+ "DB access issue when deleting job : ", ae); |
|
472 | 304 |
} catch (ServiceException se) { |
473 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - Service issue deleting job", se); |
|
474 |
} catch (IOException ioe) { |
|
475 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - I/O issue deleting job: " + ioe.getMessage()); |
|
476 |
} catch (ServletException se) { |
|
477 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - Servlet issue deleting job: " + se.getMessage()); |
|
305 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - " |
|
306 |
+ "Service issue deleting job", se); |
|
478 | 307 |
} catch (ErrorSendingErrorException esee) { |
479 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - Issue sending erro when deleting job: " + esee.getMessage()); |
|
308 |
throw new MetacatSchedulerException("WorkflowScheduler.deleteJob - " |
|
309 |
+ "Issue sending erro when deleting job: " + esee.getMessage()); |
|
480 | 310 |
} |
481 | 311 |
} |
482 | 312 |
|
... | ... | |
497 | 327 |
public void getJobs(HttpServletRequest request, HttpServletResponse response, |
498 | 328 |
Hashtable<String, String[]> params, String username, String[] groups) throws MetacatSchedulerException { |
499 | 329 |
|
500 |
String workFlowId = null; |
|
501 |
String qformat = ""; |
|
330 |
String workflowId = null; |
|
502 | 331 |
|
503 |
String workFlowIds[] = params.get("workflowid");
|
|
504 |
if (workFlowIds != null && workFlowIds.length != 0) {
|
|
505 |
workFlowId = workFlowIds[0];
|
|
332 |
String workflowIds[] = params.get("workflowid");
|
|
333 |
if (workflowIds != null && workflowIds.length != 0) {
|
|
334 |
workflowId = workflowIds[0];
|
|
506 | 335 |
} |
507 | 336 |
|
508 |
if (params.containsKey("qformat")) { |
|
509 |
qformat = params.get("qformat")[0]; |
|
510 |
} |
|
511 |
|
|
337 |
PrintWriter out = null; |
|
512 | 338 |
try { |
513 | 339 |
// get the job info in xml format |
514 |
String xmlResult = SchedulerService.getInstance().getJobsInfoXML(WORKFLOW_JOB_GROUP, "workflowid", workFlowId); |
|
515 |
logMetacat.debug("WorkflowScheduler.getJobs - xmlResult: " + xmlResult); |
|
516 |
|
|
517 |
if (qformat == null || qformat.equals(MetaCatServlet.XMLFORMAT)) { |
|
518 |
ResponseUtil.send(response, xmlResult); |
|
519 |
} else { |
|
520 |
ResponseUtil.transformAndSendXML(response, xmlResult, "-//NCEAS//scheduledWorkflowResultset//EN", |
|
521 |
"-//W3C//HTML//EN", qformat, params); |
|
340 |
out = response.getWriter(); |
|
341 |
SchedulerService.getInstance().getJobsInfoXML(WORKFLOW_JOB_GROUP, |
|
342 |
"workflowid", workflowId, out); |
|
343 |
} catch (ServiceException se) { |
|
344 |
throw new MetacatSchedulerException("WorkflowScheduler.getJobs - " |
|
345 |
+ "Service error when transforming XML for workflow id: " |
|
346 |
+ workflowId + " : " + se.getMessage()); |
|
347 |
} catch (IOException ioe) { |
|
348 |
throw new MetacatSchedulerException("WorkflowScheduler.getJobs - " |
|
349 |
+ "I/O error when transforming XML for workflow id: " |
|
350 |
+ workflowId + " : " + ioe.getMessage()); |
|
351 |
} finally { |
|
352 |
if (out != null) { |
|
353 |
out.close(); |
|
522 | 354 |
} |
523 |
} catch (ServiceException se) { |
|
524 |
throw new MetacatSchedulerException("WorkflowScheduler.getJobs - Service issue getting jobs", se); |
|
525 |
} catch (Exception e) { |
|
526 |
throw new MetacatSchedulerException("WorkflowScheduler.getJobs - Generic issue getting jobs: " |
|
527 |
+ e.getMessage()); |
|
528 |
} |
|
529 |
} |
|
355 |
} |
|
356 |
} |
|
530 | 357 |
} |
src/edu/ucsb/nceas/metacat/util/SystemUtil.java | ||
---|---|---|
34 | 34 |
|
35 | 35 |
import org.apache.log4j.Logger; |
36 | 36 |
|
37 |
import edu.ucsb.nceas.metacat.MetaCatVersion;
|
|
37 |
import edu.ucsb.nceas.metacat.MetacatVersion;
|
|
38 | 38 |
import edu.ucsb.nceas.metacat.service.PropertyService; |
39 | 39 |
import edu.ucsb.nceas.metacat.service.ServiceService; |
40 | 40 |
import edu.ucsb.nceas.metacat.shared.MetacatUtilException; |
... | ... | |
48 | 48 |
|
49 | 49 |
private static Logger logMetacat = Logger.getLogger(SystemUtil.class); |
50 | 50 |
private static String METACAT_SERVLET = "metacat"; |
51 |
private static String METACAT_WEB_SERVLET = "metacatweb"; |
|
51 | 52 |
private static int OS_CLASS = 0; |
52 | 53 |
|
53 | 54 |
// Class of OS. If we need more granularity, we should create a version |
... | ... | |
222 | 223 |
public static String getServletURL() throws PropertyNotFoundException { |
223 | 224 |
return getContextURL() + "/" + METACAT_SERVLET; |
224 | 225 |
} |
226 |
|
|
227 |
/** |
|
228 |
* Get the web front end servlet URL. This is made up of the server URL with |
|
229 |
* context + file separator + the metacat web servlet name |
|
230 |
* |
|
231 |
* @return string holding the web servlet URL |
|
232 |
*/ |
|
233 |
public static String getWebServletURL() throws PropertyNotFoundException { |
|
234 |
return getContextURL() + "/" + METACAT_WEB_SERVLET; |
|
235 |
} |
|
225 | 236 |
|
226 | 237 |
/** |
227 | 238 |
* Get the style skins URL. This is made up of the server URL with context + |
... | ... | |
251 | 262 |
* |
252 | 263 |
* @return a MetaCatVersion object holding metacat version information |
253 | 264 |
*/ |
254 |
public static MetaCatVersion getMetacatVersion() throws PropertyNotFoundException {
|
|
265 |
public static MetacatVersion getMetacatVersion() throws PropertyNotFoundException {
|
|
255 | 266 |
String metacatVersionString = |
256 | 267 |
PropertyService.getProperty("application.metacatVersion"); |
257 |
return new MetaCatVersion(metacatVersionString);
|
|
268 |
return new MetacatVersion(metacatVersionString);
|
|
258 | 269 |
} |
259 | 270 |
|
260 | 271 |
/** |
src/edu/ucsb/nceas/metacat/util/RequestUtil.java | ||
---|---|---|
26 | 26 |
|
27 | 27 |
package edu.ucsb.nceas.metacat.util; |
28 | 28 |
|
29 |
import java.io.InputStreamReader; |
|
29 | 30 |
import java.io.IOException; |
31 |
import java.io.BufferedReader; |
|
32 |
import java.io.PrintWriter; |
|
33 |
import java.io.StringReader; |
|
34 |
import java.net.MalformedURLException; |
|
35 |
import java.net.URL; |
|
36 |
import java.net.URLConnection; |
|
30 | 37 |
import java.util.Enumeration; |
31 | 38 |
import java.util.HashMap; |
32 | 39 |
import java.util.Hashtable; |
... | ... | |
46 | 53 |
import org.apache.log4j.Logger; |
47 | 54 |
|
48 | 55 |
import edu.ucsb.nceas.metacat.service.SessionService; |
56 |
import edu.ucsb.nceas.metacat.shared.MetacatUtilException; |
|
49 | 57 |
|
50 | 58 |
public class RequestUtil { |
51 | 59 |
|
... | ... | |
69 | 77 |
* the context-relative URL to which the request is forwarded |
70 | 78 |
*/ |
71 | 79 |
public static void forwardRequest(HttpServletRequest request, |
72 |
HttpServletResponse response, String destination) |
|
80 |
HttpServletResponse response, String destinationUrl, Hashtable<String, String[]> params)
|
|
73 | 81 |
throws IOException, ServletException { |
74 | 82 |
|
75 |
logMetacat.debug("Forwarding request to " + destination); |
|
83 |
destinationUrl += "?" + paramsToQuery(params); |
|
84 |
|
|
85 |
logMetacat.debug("Forwarding request to " + destinationUrl); |
|
76 | 86 |
ServletContext servletContext = request.getSession() |
77 | 87 |
.getServletContext(); |
78 | 88 |
|
79 |
servletContext.getRequestDispatcher(destination).forward(request, |
|
89 |
servletContext.getRequestDispatcher(destinationUrl).forward(request,
|
|
80 | 90 |
response); |
81 | 91 |
} |
82 | 92 |
|
... | ... | |
116 | 126 |
return null; |
117 | 127 |
} |
118 | 128 |
|
129 |
public static String get(String urlString, Hashtable<String, String[]> params) throws MetacatUtilException { |
|
130 |
try { |
Also available in: Unified diff
Change MetaCatVersion to MetacatVersion