1 package org.apache.maven.doxia.module.twiki.parser;
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 org.apache.maven.doxia.sink.Sink;
23
24 /**
25 * Block that represents an image.
26 *
27 * @author Christian Nardi
28 * @version $Id: ImageBlock.java 705065 2008-10-15 21:46:08Z vsiveton $
29 */
30 class ImageBlock
31 implements Block
32 {
33 /**
34 * img reference
35 */
36 private final String reference;
37
38 /**
39 * Creates the ImageBlock.
40 *
41 * @param imgReference img reference
42 * @throws IllegalArgumentException if the argument is <code>null</code>
43 */
44 ImageBlock( final String imgReference )
45 {
46 if ( imgReference == null )
47 {
48 throw new IllegalArgumentException( "arguments can't be null" );
49 }
50 this.reference = imgReference;
51 }
52
53 /** {@inheritDoc} */
54 public final void traverse( final Sink sink )
55 {
56 sink.figure();
57 sink.figureGraphics( reference );
58 sink.figure_();
59 }
60
61 /** {@inheritDoc} */
62 public final boolean equals( final Object obj )
63 {
64 boolean ret = false;
65
66 if ( obj == this )
67 {
68 ret = true;
69 }
70 else if ( obj instanceof ImageBlock )
71 {
72 final ImageBlock l = (ImageBlock) obj;
73 ret = reference.equals( l.reference );
74 }
75
76 return ret;
77 }
78
79 /** {@inheritDoc} */
80 public final int hashCode()
81 {
82 final int magic1 = 17;
83 final int magic2 = 37;
84
85 return magic1 + magic2 * reference.hashCode();
86 }
87 }