[Yanel-commits] rev 57579 - in public/yanel/trunk/src/build: java/org/wyona/yanel/ant targets
ioannis at wyona.com
ioannis at wyona.com
Wed Mar 30 18:57:27 CEST 2011
Author: ioannis
Date: 2011-03-30 18:57:27 +0200 (Wed, 30 Mar 2011)
New Revision: 57579
Modified:
public/yanel/trunk/src/build/java/org/wyona/yanel/ant/AddRealmTask.java
public/yanel/trunk/src/build/targets/add-third-party-realm.xml
Log:
Implemented the add-realm task
Modified: public/yanel/trunk/src/build/java/org/wyona/yanel/ant/AddRealmTask.java
===================================================================
--- public/yanel/trunk/src/build/java/org/wyona/yanel/ant/AddRealmTask.java 2011-03-30 16:46:49 UTC (rev 57578)
+++ public/yanel/trunk/src/build/java/org/wyona/yanel/ant/AddRealmTask.java 2011-03-30 16:57:27 UTC (rev 57579)
@@ -1,30 +1,81 @@
/*
- *
+ * Adding a new (third party) realm to a Yanel instance
*/
package org.wyona.yanel.ant;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.types.Path;
+import org.apache.commons.io.FileUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.wyona.commons.xml.XMLHelper;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import org.w3c.dom.Document;
+
/**
* Add a third party realm to the local realm configuration
*/
public class AddRealmTask extends Task {
- private Path newRealmConfig;
+ private Path newRealmConfig;
private String newRealmMountPoint;
private String newRealmId;
-
- /**
- *
- */
+ private Path defaultRealmsXml;
+ private Path localRealmsXml;
+
public void execute() throws BuildException {
- log("Not implemented yet!");
- log("New (third party) realm configuration: " + newRealmConfig);
+ log("New (third party) realm configuration: " + newRealmConfig);
log("New (third party) realm mount point: " + newRealmMountPoint);
log("New (third party) realm id: " + newRealmId);
- //RealmManager rm = new RealmManager();
+
+ log("defaultRealmsXml: " + defaultRealmsXml);
+ log("localRealmsXml: " + localRealmsXml);
+
+ if (!new File(localRealmsXml.toString()).exists()) {
+ try {
+ FileUtils.copyFile(new File(defaultRealmsXml.toString()), new File(localRealmsXml.toString()));
+ } catch (IOException e) {
+ log("Exception: " + e.getMessage());
+ }
+ }
+
+ try {
+ Document doc = XMLHelper.readDocument(new FileInputStream(new File(localRealmsXml.toString())));
+ Element rootElement = doc.getDocumentElement();
+ // TODO check if realm with this id already exists
+
+ Element realm = doc.createElementNS(rootElement.getNamespaceURI(), "realm");
+ realm.setAttribute("id", newRealmId);
+ realm.setAttribute("mount-point", newRealmMountPoint);
+ realm.appendChild(doc.createTextNode("\n ")); // formatting
+
+ Element config = doc.createElementNS(rootElement.getNamespaceURI(), "config");
+ String configSrcAttribute = newRealmConfig.toString();
+ if (!configSrcAttribute.endsWith("/")) {
+ configSrcAttribute += "/";
+ }
+ config.setAttribute("src", configSrcAttribute);
+
+ realm.appendChild(config);
+ realm.appendChild(doc.createTextNode("\n")); // formatting
+ rootElement.appendChild(doc.createComment("\nAnt Generated Entry Using:\n./build.sh add-realm -Drealm-config=" + newRealmConfig + " -Drealm-mount-point=" + newRealmMountPoint + " -Drealm-id=" + newRealmId + "\n"));
+ rootElement.appendChild(doc.createTextNode("\n")); // formatting
+ rootElement.appendChild(realm);
+ rootElement.appendChild(doc.createTextNode("\n\n")); // formatting
+
+ log("Write new file: " + localRealmsXml);
+ XMLHelper.writeDocument(doc, new FileOutputStream(localRealmsXml.toString()));
+
+ } catch (Exception e) {
+ log("Exception: " + e.getMessage());
+ }
+
}
/**
@@ -47,8 +98,19 @@
public void setNewRealmId(String newRealmId) {
this.newRealmId = newRealmId;
}
+
+ /**
+ * Ant file task attribute default realms.xml path
+ */
+ public void setDefaultRealmsXml(Path defaultRealmsXml) {
+ this.defaultRealmsXml = defaultRealmsXml;
+ }
+
+ /**
+ * Ant file task attribute local realms.xml path
+ */
+ public void setLocalRealmsXml(Path localRealmsXml) {
+ this.localRealmsXml = localRealmsXml;
+ }
}
-
-
-// TODO in the execude methods check whethere or not the directory exists
\ No newline at end of file
Modified: public/yanel/trunk/src/build/targets/add-third-party-realm.xml
===================================================================
--- public/yanel/trunk/src/build/targets/add-third-party-realm.xml 2011-03-30 16:46:49 UTC (rev 57578)
+++ public/yanel/trunk/src/build/targets/add-third-party-realm.xml 2011-03-30 16:57:27 UTC (rev 57579)
@@ -6,16 +6,20 @@
<target name="add-realm" description="Add third party realm" depends="init, build-add-realm-task">
<echo>Add third party realm ${realm-config} to local config ${local.config.home}</echo>
- <taskdef name="addrealm" classpath="${yanel.source.home}/build/classes" classname="org.wyona.yanel.ant.AddRealmTask"/>
+ <taskdef name="addrealm" classpath="${yanel.source.home}/build/classes" classname="org.wyona.yanel.ant.AddRealmTask">
+ <classpath refid="classpath.taskdef.merge-resource-types-configs"/>
+ <!--TODO use add-third-party-realm classpath -->
+ </taskdef>
- <addrealm newrealmconfig="${realm-config}" newrealmmountpoint="${realm-mount-point}" newrealmid="${realm-id}"/>
+ <addrealm newrealmconfig="${realm-config}" newrealmmountpoint="${realm-mount-point}" newrealmid="${realm-id}" defaultrealmsxml="${yanel.source.home}/conf/realms.xml" localrealmsxml="${local.config.home}/local.realms.xml"/>
</target>
<target name="build-add-realm-task" depends="init, compile-core">
<javac srcdir="${yanel.source.home}/src/build/java"
encoding="${javac.encoding}"
- destdir="${yanel.source.home}/build/classes"
- />
+ destdir="${yanel.source.home}/build/classes">
+ <classpath refid="classpath.compile"/>
+ </javac>
</target>
</project>
More information about the Yanel-commits
mailing list