DoxiaSwizzleMacro - wendysmoak/wiki GitHub Wiki

In maven/site/pom.xml :

  <build>
  <plugins>
  <plugin>
  <artifactId>maven-site-plugin</artifactId>
  <dependencies>
    <dependency>
      <groupId>org.apache.maven.doxia</groupId>
      <artifactId>doxia-core</artifactId>
      <version>1.0-alpha-9-SNAPSHOT</version>
    </dependency>
  </dependencies>
  </plugin>
  </plugins>
  </build>

In doxia-core,


package org.apache.maven.doxia.macro.swizzle;

/*
 * Copyright 2006 The Apache Software Foundation.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import org.apache.maven.doxia.macro.AbstractMacro;
import org.apache.maven.doxia.macro.MacroExecutionException;
import org.apache.maven.doxia.macro.MacroRequest;
import org.apache.maven.doxia.sink.Sink;
import org.codehaus.swizzle.jira.Version;
import org.codehaus.swizzle.jira.Jira;

import java.util.*;

/**
 * apt usage: %{swizzle|project=STR}
 * @plexus.component role="org.apache.maven.doxia.macro.Macro"
 * role-hint="swizzle"
 */
public class SwizzleMacro
        extends AbstractMacro {

    public void execute(Sink sink, MacroRequest request)
            throws MacroExecutionException {
        String project = (String) request.getParameter("project");

        System.out.println( "******************* SWIZZLE MACRO **********************" );

        required(project, "project");

        StringBuffer response = new StringBuffer();

        try {
            Jira jira = new Jira("http://issues.apache.org/struts/rpc/xmlrpc");
            jira.login("user", "pass");
            List versions = jira.getVersions(project);
            response.append("The latest release is ");
            response.append(getLatest(getReleasedVersions(versions)).getName());
        } catch (Exception ex) {
            throw new MacroExecutionException(ex.toString());
        }

        sink.verbatim(true);

        sink.text(response.toString());

        sink.verbatim_();
    }

    private void required(String id, String param) {
        if (id == null || "".equals(id)) {
            throw new IllegalArgumentException(param + " is a required parameter");
        }
    }

    private List getReleasedVersions(List list) {
        List newlist = new ArrayList();
        Iterator iter = list.iterator();
        while (iter.hasNext()) {
            Version v = (Version) iter.next();
            if (v.getReleased()) {
                newlist.add(v);
            }
        }
        return newlist;
    }

    private Version getLatest(List list) {

        Collections.sort(list);
        System.out.println("last release is " + list.get(list.size() - 1));
        return (Version) list.get(list.size() - 1);
    }

}

⚠️ **GitHub.com Fallback** ⚠️