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 + } +}