diff --git a/pom.xml b/pom.xml
index 973de30..181a5e2 100755
--- a/pom.xml
+++ b/pom.xml
@@ -40,7 +40,7 @@
true
- net.fortuna.ical4j.vcard.*
+ net.fortuna.ical4j.extensions.*
net.fortuna.ical4j.*,org.apache.commons.lang.*,org.apache.commons.logging,*;resolution:=optional
@@ -82,6 +82,21 @@
+
+
+ org.codehaus.groovy.maven
+ gmaven-plugin
+
+
+
+ generateStubs
+ compile
+ generateTestStubs
+ testCompile
+
+
+
+
@@ -97,8 +112,12 @@
4.7
test
-
-
+
+ org.codehaus.groovy.maven.runtime
+ gmaven-runtime-1.6
+ 1.0-rc-5
+ provided
+
diff --git a/src/main/groovy/net/fortuna/ical4j/extensions/ContentBuilder.groovy b/src/main/groovy/net/fortuna/ical4j/extensions/ContentBuilder.groovy
new file mode 100755
index 0000000..eb04e8b
--- /dev/null
+++ b/src/main/groovy/net/fortuna/ical4j/extensions/ContentBuilder.groovy
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2009, Ben Fortuna
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * o Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * o Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * o Neither the name of Ben Fortuna nor the names of any other contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.fortuna.ical4j.extensions
+
+import net.fortuna.ical4j.extensions.property.WrCalNameFactory
+
+/**
+ * @author fortuna
+ *
+ */
+public class ContentBuilder extends net.fortuna.ical4j.model.ContentBuilder {
+
+ public ContentBuilder() {
+ // register property factories..
+ registerFactory('wrcalname', new WrCalNameFactory())
+ }
+
+}
diff --git a/src/main/groovy/net/fortuna/ical4j/extensions/property/WrCalNameFactory.groovy b/src/main/groovy/net/fortuna/ical4j/extensions/property/WrCalNameFactory.groovy
new file mode 100755
index 0000000..91b31b0
--- /dev/null
+++ b/src/main/groovy/net/fortuna/ical4j/extensions/property/WrCalNameFactory.groovy
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2009, Ben Fortuna
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * o Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * o Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * o Neither the name of Ben Fortuna nor the names of any other contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.fortuna.ical4j.extensions.property
+
+import net.fortuna.ical4j.model.Parameter
+import net.fortuna.ical4j.model.ParameterList
+import net.fortuna.ical4j.model.property.AbstractPropertyFactory
+
+/**
+ * $Id$
+ *
+ * Created on: 02/08/2009
+ *
+ * @author fortuna
+ *
+ */
+public class WrCalNameFactory extends AbstractPropertyFactory {
+
+ public Object newInstance(FactoryBuilderSupport builder, Object name, Object value, Map attributes) throws InstantiationException, IllegalAccessException {
+ WrCalName instance
+ if (FactoryBuilderSupport.checkValueIsTypeNotString(value, name, WrCalName.class)) {
+ instance = (WrCalName) value
+ }
+ else {
+ String instanceValue = attributes.remove('value')
+ if (instanceValue != null) {
+ attributes.put('value', instanceValue)
+ instance = super.newInstance(builder, name, value, attributes)
+ }
+ else {
+ instance = super.newInstance(builder, name, value, attributes)
+ }
+ }
+ return instance
+ }
+
+ protected Object newInstance(ParameterList parameters, String value) {
+ return new WrCalName(parameters, null, value)
+ }
+}
diff --git a/src/main/java/net/fortuna/ical4j/extensions/property/WrCalName.java b/src/main/java/net/fortuna/ical4j/extensions/property/WrCalName.java
index c614740..2340ffd 100755
--- a/src/main/java/net/fortuna/ical4j/extensions/property/WrCalName.java
+++ b/src/main/java/net/fortuna/ical4j/extensions/property/WrCalName.java
@@ -93,6 +93,14 @@ public String getValue() {
return value;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean isCalendarProperty() {
+ return true;
+ }
+
private static class Factory implements PropertyFactory {
private static final long serialVersionUID = -202687610325706085L;
diff --git a/src/test/groovy/net/fortuna/ical4j/extensions/ContentBuilderTest.groovy b/src/test/groovy/net/fortuna/ical4j/extensions/ContentBuilderTest.groovy
new file mode 100755
index 0000000..223223d
--- /dev/null
+++ b/src/test/groovy/net/fortuna/ical4j/extensions/ContentBuilderTest.groovy
@@ -0,0 +1,66 @@
+/*
+ * Copyright (c) 2009, Ben Fortuna
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * o Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * o Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * o Neither the name of Ben Fortuna nor the names of any other contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.fortuna.ical4j.extensions
+
/**
+ * $Id$
+ *
+ * Created on: 03/08/2009
+ *
+ * @author fortuna
+ *
+ */
+public class ContentBuilderTest extends GroovyTestCase {
+
+ void testBuildCalendar() {
+ def builder = new ContentBuilder()
+ def calendar = builder.calendar() {
+ prodid('-//Ben Fortuna//iCal4j 1.0//EN')
+ version('2.0')
+ wrcalname('Test Calendar')
+ vevent() {
+ uid('1')
+ dtstamp()
+ dtstart('20090810', parameters: parameters() {
+ value('DATE')})
+ action('DISPLAY')
+ attach('http://example.com/attachment', parameters: parameters() {
+ value('URI')})
+ }
+ }
+ calendar.validate()
+
+ assert calendar.properties.size() == 3
+ assert calendar.components.size() == 1
+
+ println calendar
+ }
+}