Skip to content

Commit

Permalink
Added groovy support
Browse files Browse the repository at this point in the history
  • Loading branch information
fortuna committed Mar 6, 2010
1 parent 811414b commit 45d6e4d
Show file tree
Hide file tree
Showing 5 changed files with 212 additions and 3 deletions.
25 changes: 22 additions & 3 deletions pom.xml
Expand Up @@ -40,7 +40,7 @@
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>net.fortuna.ical4j.vcard.*</Export-Package>
<Export-Package>net.fortuna.ical4j.extensions.*</Export-Package>
<Import-Package>net.fortuna.ical4j.*,org.apache.commons.lang.*,org.apache.commons.logging,*;resolution:=optional</Import-Package>
</instructions>
</configuration>
Expand Down Expand Up @@ -82,6 +82,21 @@
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.codehaus.groovy.maven</groupId>
<artifactId>gmaven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>generateTestStubs</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

Expand All @@ -97,8 +112,12 @@
<version>4.7</version>
<scope>test</scope>
</dependency>
<!-- -->
<!-- -->
<dependency>
<groupId>org.codehaus.groovy.maven.runtime</groupId>
<artifactId>gmaven-runtime-1.6</artifactId>
<version>1.0-rc-5</version>
<scope>provided</scope>
</dependency>
</dependencies>

<repositories>
Expand Down
@@ -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())
}

}
@@ -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)
}
}
Expand Up @@ -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;
Expand Down
@@ -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
}
}
Expand Down

0 comments on commit 45d6e4d

Please sign in to comment.