[prev in list] [next in list] [prev in thread] [next in thread]
List: forgerock-openicf-commit
Subject: [Commitopenicf] [6508] trunk/framework/java: The build fails after the previous commit.
From: anonymous () forgerock ! org
Date: 2014-04-14 21:18:25
Message-ID: 20140414211825.18CC140994 () sources ! internal ! forgerock ! com
[Download RAW message or body]
[Attachment #2 (text/html)]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[6508] trunk/framework/java: The build fails after the previous \
commit.</title> </head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: \
verdana,arial,helvetica,sans-serif; font-size: 10pt; } #msg dl a { font-weight: \
bold} #msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: \
bold; } #msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: \
6px; } #logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em \
0; } #logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg \
h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; } \
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; \
} #logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: \
-1.5em; padding-left: 1.5em; } #logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em \
1em 0 1em; background: white;} #logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid \
#fa0; border-bottom: 1px solid #fa0; background: #fff; } #logmsg table th { \
text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted \
#fa0; } #logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: \
0.2em 0.5em; } #logmsg table thead th { text-align: center; border-bottom: 1px solid \
#fa0; } #logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: \
6px; } #patch { width: 100%; }
#patch h4 {font-family: \
verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, \
#patch .copfile {border:1px solid #ccc;margin:10px 0;} #patch ins \
{background:#dfd;text-decoration:none;display:block;padding:0 10px;} #patch del \
{background:#fdd;text-decoration:none;display:block;padding:0 10px;} #patch .lines, \
.info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a \
href="http://sources.forgerock.org/changelog/openicf/?cs=6508">6508</a></dd> \
<dt>Author</dt> <dd>Laszlo</dd> <dt>Date</dt> <dd>2014-04-14 22:18:24 +0100 (Mon, 14 \
Apr 2014)</dd> </dl>
<h3>Log Message</h3>
<pre>The build fails after the previous commit. The failure can not be reproduced on \
other machines. This commit contains some diagnostic logging and fix the build on \
Java 7 platform.</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkframeworkjavaconnectorframeworkinternalsrctestjavaorgidentityconnec \
torsframeworkimplapiConnectorInfoManagerTestBasejava">trunk/framework/java/connector-f \
ramework-internal/src/test/java/org/identityconnectors/framework/impl/api/ConnectorInfoManagerTestBase.java</a></li>
<li><a href="#trunkframeworkjavaconnectorframeworkinternalsrctestjavaorgidentityconne \
ctorsframeworkimplapiLocalConnectorInfoManagerTestsjava">trunk/framework/java/connecto \
r-framework-internal/src/test/java/org/identityconnectors/framework/impl/api/LocalConnectorInfoManagerTests.java</a></li>
<li><a href="#trunkframeworkjavaconnectorframeworkinternalsrctestresourcesMessagespro \
perties">trunk/framework/java/connector-framework-internal/src/test/resources/Messages.properties</a></li>
<li><a href="#trunkframeworkjavaconnectorframeworkosgisrcmainjavaorgforgerockopenicff \
rameworkimplapiosgiinternalActivatorjava">trunk/framework/java/connector-framework-osg \
i/src/main/java/org/forgerock/openicf/framework/impl/api/osgi/internal/Activator.java</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkframeworkjavaconnectorframeworkinternalsrctestjavaorgidentityconnectorsframeworkimplapiConnectorInfoManagerTestBasejava"></a>
<div class="modfile"><h4>Modified: \
trunk/framework/java/connector-framework-internal/src/test/java/org/identityconnectors/framework/impl/api/ConnectorInfoManagerTestBase.java \
(6507 => 6508)</h4> <pre class="diff"><span>
<span class="info">--- \
trunk/framework/java/connector-framework-internal/src/test/java/org/identityconnectors/framework/impl/api/ConnectorInfoManagerTestBase.java 2014-04-14 \
09:10:41 UTC (rev 6507)
+++ trunk/framework/java/connector-framework-internal/src/test/java/org/identityconnectors/framework/impl/api/ConnectorInfoManagerTestBase.java 2014-04-14 \
21:18:24 UTC (rev 6508) </span><span class="lines">@@ -94,7 +94,7 @@
</span><span class="cx"> public abstract class ConnectorInfoManagerTestBase {
</span><span class="cx">
</span><span class="cx"> protected static ConnectorInfo \
findConnectorInfo(ConnectorInfoManager manager, String version, </span><del>- \
String connectorName) { </del><ins>+ \
String connectorName) { </ins><span class="cx"> for (ConnectorInfo info : \
manager.getConnectorInfos()) { </span><span class="cx"> ConnectorKey key \
= info.getConnectorKey(); </span><span class="cx"> if \
(version.equals(key.getBundleVersion()) </span><span class="lines">@@ -141,13 +141,13 \
@@ </span><span class="cx"> property.setValue(1);
</span><span class="cx">
</span><span class="cx"> ConnectorFacade facade1 = \
ConnectorFacadeFactory.getInstance().newInstance( </span><del>- \
apiConfig1); </del><ins>+ apiConfig1);
</ins><span class="cx">
</span><span class="cx"> ConnectorFacade facade2 =
</span><span class="cx"> \
ConnectorFacadeFactory.getInstance().newInstance( </span><span class="cx"> \
info2.createDefaultAPIConfiguration()); </span><span class="cx">
</span><del>- Set<Attribute> attrs = CollectionUtil.<Attribute> \
newReadOnlySet(); </del><ins>+ Set<Attribute> attrs = \
CollectionUtil.<Attribute>newReadOnlySet(); </ins><span class="cx"> \
assertEquals(facade1.create(ObjectClass.ACCOUNT, attrs, null).getUidValue(), \
"1.0"); </span><span class="cx"> \
assertEquals(facade2.create(ObjectClass.ACCOUNT, attrs, null).getUidValue(), \
"2.0"); </span><span class="cx">
</span><span class="lines">@@ -193,13 +193,17 @@
</span><span class="cx"> // platform-independent).
</span><span class="cx"> \
assertTrue(e.getMessage().contains(errorMessageBundle.getString("filetooshort"))
</span><span class="cx"> || e.getMessage()
</span><del>- \
.contains(errorMessageBundle.getString("nosuitableimagefound"))); \
</del><ins>+ \
.contains(errorMessageBundle.getString("nosuitableimagefound")) + \
|| e.getMessage() + \
.contains(errorMessageBundle.getString("nonativein"))); </ins><span \
class="cx"> } catch (RuntimeException e) { </span><span class="cx"> \
// Remote framework serializes UnsatisfiedLinkError as </span><span class="cx"> \
// RuntimeException. </span><span class="cx"> \
assertTrue(e.getMessage().contains(errorMessageBundle.getString("filetooshort"))
</span><span class="cx"> || e.getMessage()
</span><del>- \
.contains(errorMessageBundle.getString("nosuitableimagefound"))); \
</del><ins>+ \
.contains(errorMessageBundle.getString("nosuitableimagefound")) + \
|| e.getMessage() + \
.contains(errorMessageBundle.getString("nonativein"))); </ins><span \
class="cx"> } </span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -207,7 +211,7 @@
</span><span class="cx"> * Attempt to test the information from the \
configuration. </span><span class="cx"> *
</span><span class="cx"> * @throws Exception
</span><del>- * if there is an issue.
</del><ins>+ * if there is an issue.
</ins><span class="cx"> */
</span><span class="cx"> @Test
</span><span class="cx"> public void testAPIConfiguration() throws Exception {
</span><span class="lines">@@ -260,7 +264,7 @@
</span><span class="cx"> * Attempt to test the information from the \
configuration. </span><span class="cx"> *
</span><span class="cx"> * @throws Exception
</span><del>- * if there is an issue.
</del><ins>+ * if there is an issue.
</ins><span class="cx"> */
</span><span class="cx"> @Test
</span><span class="cx"> public void testValidate() throws Exception {
</span><span class="lines">@@ -306,10 +310,9 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span><del>- * Main purpose of this is to test searching with many results and \
that we
- * can properly handle stopping in the middle of this. There's a bunch of
- * code in the remote stuff that is there to handle this in particular that
- * we want to excercise.
</del><ins>+ * Main purpose of this is to test searching with many results and \
that we can properly handle stopping in the + * middle of this. There's a bunch \
of code in the remote stuff that is there to handle this in particular that we + \
* want to excercise. </ins><span class="cx"> */
</span><span class="cx"> @Test
</span><span class="cx"> public void testSearchWithManyResults() throws Exception \
{ </span><span class="lines">@@ -433,14 +436,13 @@
</span><span class="cx"> for (int j = 0; j < 50; j++) {
</span><span class="cx"> \
attrs.add(AttributeBuilder.build("myattributename" + j, \
"myattributevalue" + j)); </span><span class="cx"> }
</span><del>- return new Object[][] { { attrs } };
</del><ins>+ return new Object[][]{{attrs}};
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> /**
</span><del>- * Main purpose of this is to test sync with many results and that \
we can
- * properly handle stopping in the middle of this. There's a bunch of code
- * in the remote stuff that is there to handle this in particular that we
- * want to excercise.
</del><ins>+ * Main purpose of this is to test sync with many results and that we \
can properly handle stopping in the middle of + * this. There's a bunch of code \
in the remote stuff that is there to handle this in particular that we want to + \
* excercise. </ins><span class="cx"> */
</span><span class="cx"> @Test
</span><span class="cx"> public void testSyncWithManyResults() throws Exception {
</span><span class="lines">@@ -503,7 +505,7 @@
</span><span class="cx"> @Test(dataProvider = "statefulConnectors")
</span><span class="cx"> public void testSyncTokenResults(ConnectorFacade facade) \
{ </span><span class="cx"> Uid uid =
</span><del>- facade.create(ObjectClass.ACCOUNT, \
CollectionUtil.<Attribute> newReadOnlySet(), </del><ins>+ \
facade.create(ObjectClass.ACCOUNT, CollectionUtil.<Attribute>newReadOnlySet(), \
</ins><span class="cx"> null); </span><span class="cx">
</span><span class="cx"> SyncToken latest = \
facade.getLatestSyncToken(ObjectClass.ACCOUNT); </span><span class="lines">@@ -610,7 \
+612,7 @@ </span><span class="cx"> OperationOptionsBuilder builder = new \
OperationOptionsBuilder(); </span><span class="cx"> \
builder.setOption("testPooling", "true"); </span><span \
class="cx"> OperationOptions options = builder.build(); </span><del>- \
Set<Attribute> attrs = CollectionUtil.<Attribute> newReadOnlySet(); \
</del><ins>+ Set<Attribute> attrs = \
CollectionUtil.<Attribute>newReadOnlySet(); </ins><span class="cx"> \
assertEquals(facade1.create(ObjectClass.ACCOUNT, attrs, options).getUidValue(), \
"1"); </span><span class="cx"> \
assertEquals(facade1.create(ObjectClass.ACCOUNT, attrs, options).getUidValue(), \
"2"); </span><span class="cx"> \
assertEquals(facade1.create(ObjectClass.ACCOUNT, attrs, options).getUidValue(), \
"3"); </span><span class="lines">@@ -641,7 +643,7 @@
</span><span class="cx">
</span><span class="cx"> ConnectorFacade facade1 = \
ConnectorFacadeFactory.getInstance().newInstance(config); </span><span class="cx">
</span><del>- Set<Attribute> attrs = CollectionUtil.<Attribute> \
newReadOnlySet(); </del><ins>+ Set<Attribute> attrs = \
CollectionUtil.<Attribute>newReadOnlySet(); </ins><span class="cx"> \
String uid = facade1.create(ObjectClass.ACCOUNT, attrs, null).getUidValue(); \
</span><span class="cx"> assertEquals(facade1.create(ObjectClass.ACCOUNT, \
attrs, null).getUidValue(), uid); </span><span class="cx"> \
assertEquals(facade1.create(ObjectClass.ACCOUNT, attrs, null).getUidValue(), uid); \
</span><span class="lines">@@ -692,7 +694,7 @@ </span><span class="cx"> \
ConnectorObject co = facade.getObject(ObjectClass.ACCOUNT, new Uid("0"), \
null); </span><span class="cx"> Object value = \
AttributeUtil.getSingleValue(co.getAttributeByName("emails")); </span><span \
class="cx"> assertTrue(value instanceof Map); </span><del>- \
assertTrue(((Map)value).get("usage") instanceof List); </del><ins>+ \
assertTrue(((Map) value).get("usage") instanceof List); </ins><span \
class="cx"> } </span><span class="cx">
</span><span class="cx"> @Test
</span><span class="lines">@@ -808,7 +810,7 @@
</span><span class="cx">
</span><span class="cx"> ConnectorFacade facade1 = \
ConnectorFacadeFactory.getInstance().newInstance(config); </span><span class="cx">
</span><del>- Set<Attribute> attrs = CollectionUtil.<Attribute> \
newReadOnlySet(); </del><ins>+ Set<Attribute> attrs = \
CollectionUtil.<Attribute>newReadOnlySet(); </ins><span class="cx"> try \
{ </span><span class="cx"> facade1.create(ObjectClass.ACCOUNT, attrs, \
opBuilder.build()).getUidValue(); </span><span class="cx"> \
fail("expected timeout"); </span><span class="lines">@@ -832,7 +834,7 @@
</span><span class="cx"> @Test(dataProvider = "statefulConnectors")
</span><span class="cx"> public void testMVCCControl(AbstractConnectorFacade \
facade) { </span><span class="cx"> Uid uid =
</span><del>- facade.create(ObjectClass.ACCOUNT, \
CollectionUtil.<Attribute> newReadOnlySet(), </del><ins>+ \
facade.create(ObjectClass.ACCOUNT, CollectionUtil.<Attribute>newReadOnlySet(), \
</ins><span class="cx"> null); </span><span class="cx">
</span><span class="cx"> if (facade instanceof LocalConnectorFacadeImpl) {
</span><span class="lines">@@ -886,7 +888,7 @@
</span><span class="cx">
</span><span class="cx"> APIConfiguration config = \
info.createDefaultAPIConfiguration(); </span><span class="cx">
</span><del>- test.add(new Object[] { \
ConnectorFacadeFactory.getInstance().newInstance(config) }); </del><ins>+ \
test.add(new Object[]{ConnectorFacadeFactory.getInstance().newInstance(config)}); \
</ins><span class="cx"> </span><span class="cx"> info =
</span><span class="cx"> findConnectorInfo(manager, \
"1.0.0.0", </span><span class="lines">@@ -898,7 +900,7 @@
</span><span class="cx"> \
config.getConnectorPoolConfiguration().setMinIdle(0); </span><span class="cx"> \
config.getConnectorPoolConfiguration().setMaxIdle(0); </span><span class="cx">
</span><del>- test.add(new Object[] { \
ConnectorFacadeFactory.getInstance().newInstance(config) }); </del><ins>+ \
test.add(new Object[]{ConnectorFacadeFactory.getInstance().newInstance(config)}); \
</ins><span class="cx"> </span><span class="cx"> return test.iterator();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkframeworkjavaconnectorframeworkinternalsrctestjavaorgidentityconnectorsframeworkimplapiLocalConnectorInfoManagerTestsjava"></a>
<div class="modfile"><h4>Modified: \
trunk/framework/java/connector-framework-internal/src/test/java/org/identityconnectors/framework/impl/api/LocalConnectorInfoManagerTests.java \
(6507 => 6508)</h4> <pre class="diff"><span>
<span class="info">--- \
trunk/framework/java/connector-framework-internal/src/test/java/org/identityconnectors/framework/impl/api/LocalConnectorInfoManagerTests.java 2014-04-14 \
09:10:41 UTC (rev 6507)
+++ trunk/framework/java/connector-framework-internal/src/test/java/org/identityconnectors/framework/impl/api/LocalConnectorInfoManagerTests.java 2014-04-14 \
21:18:24 UTC (rev 6508) </span><span class="lines">@@ -26,9 +26,12 @@
</span><span class="cx"> import java.util.List;
</span><span class="cx">
</span><span class="cx"> import org.identityconnectors.common.Version;
</span><ins>+import org.identityconnectors.common.logging.Log;
</ins><span class="cx"> import \
org.identityconnectors.framework.api.ConnectorFacadeFactory; </span><ins>+import \
org.identityconnectors.framework.api.ConnectorInfo; </ins><span class="cx"> import \
org.identityconnectors.framework.api.ConnectorInfoManager; </span><span class="cx"> \
import org.identityconnectors.framework.api.ConnectorInfoManagerFactory; \
</span><ins>+import org.identityconnectors.framework.common.FrameworkUtil; \
</ins><span class="cx"> import \
org.identityconnectors.framework.common.FrameworkUtilTestHelpers; </span><span \
class="cx"> import org.identityconnectors.framework.common.exceptions.ConfigurationException;
</span><span class="cx"> import org.testng.Assert;
</span><span class="lines">@@ -38,16 +41,28 @@
</span><span class="cx"> public class LocalConnectorInfoManagerTests extends \
ConnectorInfoManagerTestBase { </span><span class="cx">
</span><span class="cx"> /**
</span><del>- * Tests that the framework refuses to load a bundle that requests
- * a framework version newer than the one present.
</del><ins>+ * Setup logging for the {@link LocalConnectorInfoManagerTests}.
</ins><span class="cx"> */
</span><ins>+ private static final Log logger = \
Log.getLog(LocalConnectorInfoManagerTests.class); +
+ /**
+ * Tests that the framework refuses to load a bundle that requests a framework \
version newer than the one present. + */
</ins><span class="cx"> @Test(priority = -1)
</span><span class="cx"> public void testCheckVersion() throws Exception {
</span><span class="cx"> // The test bundles require framework 1.0, so \
pretend the framework is older. </span><span class="cx"> \
FrameworkUtilTestHelpers.setFrameworkVersion(Version.parse("0.5")); \
</span><span class="cx"> try { </span><del>- \
getConnectorInfoManager();
- Assert.fail();
</del><ins>+ ConnectorInfoManager manager = getConnectorInfoManager();
+ try {
+ //We should not get here. If we get here then display some \
diagnostic information. + for (ConnectorInfo info : \
manager.getConnectorInfos()) { + logger.error("TEST FAIL: \
Found connector key: {0}", info.getConnectorKey()); + }
+ } finally {
+ Assert.fail("Require framework 1.0, so pretend the framework is \
0.5 but found: " + FrameworkUtil + \
.getFrameworkVersion()); + }
</ins><span class="cx"> } catch (ConfigurationException e) {
</span><span class="cx"> if (!e.getMessage().contains("unrecognized \
framework version")) { </span><span class="cx"> Assert.fail();
</span><span class="lines">@@ -57,6 +72,7 @@
</span><span class="cx">
</span><span class="cx"> /**
</span><span class="cx"> * To be overridden by subclasses to get different \
ConnectorInfoManagers </span><ins>+ *
</ins><span class="cx"> * @return
</span><span class="cx"> * @throws Exception
</span><span class="cx"> */
</span></span></pre></div>
<a id="trunkframeworkjavaconnectorframeworkinternalsrctestresourcesMessagesproperties"></a>
<div class="modfile"><h4>Modified: \
trunk/framework/java/connector-framework-internal/src/test/resources/Messages.properties \
(6507 => 6508)</h4> <pre class="diff"><span>
<span class="info">--- \
trunk/framework/java/connector-framework-internal/src/test/resources/Messages.properties 2014-04-14 \
09:10:41 UTC (rev 6507)
+++ trunk/framework/java/connector-framework-internal/src/test/resources/Messages.properties 2014-04-14 \
21:18:24 UTC (rev 6508) </span><span class="lines">@@ -23,3 +23,5 @@
</span><span class="cx">
</span><span class="cx"> filetooshort=file too short
</span><span class="cx"> nosuitableimagefound=no suitable image found
</span><ins>+#Java 1.7
+nonativein=no native in java.library.path
</ins></span></pre></div>
<a id="trunkframeworkjavaconnectorframeworkosgisrcmainjavaorgforgerockopenicfframeworkimplapiosgiinternalActivatorjava"></a>
<div class="modfile"><h4>Modified: \
trunk/framework/java/connector-framework-osgi/src/main/java/org/forgerock/openicf/framework/impl/api/osgi/internal/Activator.java \
(6507 => 6508)</h4> <pre class="diff"><span>
<span class="info">--- \
trunk/framework/java/connector-framework-osgi/src/main/java/org/forgerock/openicf/framework/impl/api/osgi/internal/Activator.java 2014-04-14 \
09:10:41 UTC (rev 6507)
+++ trunk/framework/java/connector-framework-osgi/src/main/java/org/forgerock/openicf/framework/impl/api/osgi/internal/Activator.java 2014-04-14 \
21:18:24 UTC (rev 6508) </span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> /**
</span><span class="cx"> *
</span><span class="cx"> */
</span><del>- private ServiceRegistration<?> connectorInfoManager;
</del><ins>+ private ServiceRegistration connectorInfoManager;
</ins><span class="cx">
</span><span class="cx"> @SuppressWarnings("unchecked")
</span><span class="cx"> public void start(BundleContext context) throws \
Exception { </span></span></pre>
</div>
</div>
<div id="footer">Copyright (c) by ForgeRock. All rights reserved.</div>
</body>
</html>
_______________________________________________
Commitopenicf mailing list
Commitopenicf@forgerock.org
https://lists.forgerock.org/mailman/listinfo/commitopenicf
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic