]> source.dussan.org Git - archiva.git/blob
ab7387b75e12ae913bd1b0bff8b76a55f2c3615d
[archiva.git] /
1 package org.apache.maven.archiva.web.tags;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *  http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import java.io.IOException;
23
24 import javax.servlet.jsp.JspException;
25 import javax.servlet.jsp.JspWriter;
26 import javax.servlet.jsp.PageContext;
27
28 import org.apache.commons.lang.StringEscapeUtils;
29 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
30 import org.apache.maven.archiva.web.util.ContextUtils;
31 import org.slf4j.Logger;
32 import org.slf4j.LoggerFactory;
33
34 /**
35  * CopyPasteSnippet
36  *
37  * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
38  * @version $Id$
39  * @plexus.component role="org.apache.maven.archiva.web.tags.CopyPasteSnippet"
40  */
41 public class CopyPasteSnippet
42 {
43     private Logger log = LoggerFactory.getLogger( CopyPasteSnippet.class );
44     
45     public static final String PRE = "pre";
46     
47     public static final String TOGGLE = "toggle";
48     
49     public void write( String wrapper, Object o, PageContext pageContext )
50         throws JspException
51     {
52         StringBuffer prefix = new StringBuffer();
53         StringBuffer buf = new StringBuffer();
54         StringBuffer suffix = new StringBuffer();
55
56         if ( o == null )
57         {
58             buf.append( "Error generating snippet." );
59             log.error( "Unable to generate snippet for null object." );
60         }
61         else if ( o instanceof ManagedRepositoryConfiguration )
62         {
63             ManagedRepositoryConfiguration repo = (ManagedRepositoryConfiguration) o;
64             
65             if ( TOGGLE.equals( wrapper ) )
66             {
67                 prefix.append( "<a href=\"#\" onclick=\"Effect.toggle('repoPom" );
68                 prefix.append( repo.getId() ).append( "','slide'); return false;\">Show POM Snippet</a><br/>" );
69                 prefix.append( "<pre class=\"pom\" style=\"display: none;\" id=\"repoPom" ).append( repo.getId() );
70                 prefix.append( "\"><code>" );
71
72                 suffix.append( "</code></pre>" );
73             }
74             else if ( PRE.equals( wrapper ) )
75             {
76                 prefix.append( "<pre>" );
77                 suffix.append( "</pre>" );
78             }
79             
80             createSnippet( buf, repo, pageContext );
81         }
82         else
83         {
84             buf.append( "Unable to generate snippet for object " ).append( o.getClass().getName() );
85         }
86
87         try
88         {
89             JspWriter out = pageContext.getOut();
90
91             out.write( prefix.toString() );
92             out.write( StringEscapeUtils.escapeXml( buf.toString() ) );
93             out.write( suffix.toString() );
94             
95             out.flush();
96         }
97         catch ( IOException e )
98         {
99             throw new JspException( "Unable to write snippet to output: " + e.getMessage(), e );
100         }
101     }
102
103     private void createSnippet( StringBuffer snippet, ManagedRepositoryConfiguration repo, PageContext pageContext )
104     {
105         snippet.append( "<project>\n" );
106         snippet.append( "  ...\n" );
107         snippet.append( "  <distributionManagement>\n" );
108
109         String distRepoName = "repository";
110         if ( repo.isSnapshots() )
111         {
112             distRepoName = "snapshotRepository";
113         }
114
115         snippet.append( "    <" ).append( distRepoName ).append( ">\n" );
116         snippet.append( "      <id>" ).append( repo.getId() ).append( "</id>\n" );
117         snippet.append( "      <url>dav:" ).append( ContextUtils.getBaseURL( pageContext, "repository" ) );
118         snippet.append( "/" ).append( repo.getId() ).append( "/" ).append( "</url>\n" );
119
120         if ( !"default".equals( repo.getLayout() ) )
121         {
122             snippet.append( "      <layout>" ).append( repo.getLayout() ).append( "</layout>" );
123         }
124
125         snippet.append( "    </" ).append( distRepoName ).append( ">\n" );
126         snippet.append( "  </distributionManagement>\n" );
127         snippet.append( "\n" );
128
129         snippet.append( "  <repositories>\n" );
130         snippet.append( "    <repository>\n" );
131         snippet.append( "      <id>" ).append( repo.getId() ).append( "</id>\n" );
132         snippet.append( "      <name>" ).append( repo.getName() ).append( "</name>\n" );
133
134         snippet.append( "      <url>" );
135         snippet.append( ContextUtils.getBaseURL( pageContext, "repository" ) );
136         snippet.append( "/" ).append( repo.getId() ).append( "/" );
137
138         snippet.append( "</url>\n" );
139
140         if ( !"default".equals( repo.getLayout() ) )
141         {
142             snippet.append( "      <layout>" ).append( repo.getLayout() ).append( "</layout>\n" );
143         }
144
145         snippet.append( "      <releases>\n" );
146         snippet.append( "        <enabled>" ).append( Boolean.valueOf( repo.isReleases() ) ).append( "</enabled>\n" );
147         snippet.append( "      </releases>\n" );
148         snippet.append( "      <snapshots>\n" );
149         snippet.append( "        <enabled>" ).append( Boolean.valueOf( repo.isSnapshots() ) ).append( "</enabled>\n" );
150         snippet.append( "      </snapshots>\n" );
151         snippet.append( "    </repository>\n" );
152         snippet.append( "  </repositories>\n" );
153
154         snippet.append( "  ...\n" );
155         snippet.append( "</project>\n" );
156     }
157 }