1 package org.apache.maven.repository.legacy;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.ByteArrayInputStream;
23 import java.io.ByteArrayOutputStream;
24 import java.io.UnsupportedEncodingException;
25 import java.util.HashMap;
26 import java.util.Map;
27
28 import org.apache.maven.wagon.ConnectionException;
29 import org.apache.maven.wagon.InputData;
30 import org.apache.maven.wagon.OutputData;
31 import org.apache.maven.wagon.ResourceDoesNotExistException;
32 import org.apache.maven.wagon.StreamWagon;
33 import org.apache.maven.wagon.TransferFailedException;
34 import org.apache.maven.wagon.Wagon;
35 import org.apache.maven.wagon.authentication.AuthenticationException;
36 import org.apache.maven.wagon.authorization.AuthorizationException;
37 import org.apache.maven.wagon.resource.Resource;
38 import org.codehaus.plexus.component.annotations.Component;
39
40 @Component(role=Wagon.class,hint="string")
41 public class StringWagon
42 extends StreamWagon
43 {
44 private Map<String, String> expectedContent = new HashMap<String, String>();
45
46 public void addExpectedContent( String resourceName, String expectedContent )
47 {
48 this.expectedContent.put( resourceName, expectedContent );
49 }
50
51 public String[] getSupportedProtocols()
52 {
53 return new String[] { "string" };
54 }
55
56 @Override
57 public void closeConnection()
58 throws ConnectionException
59 {
60 }
61
62 @Override
63 public void fillInputData( InputData inputData )
64 throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException
65 {
66 Resource resource = inputData.getResource();
67
68 String content = expectedContent.get( resource.getName() );
69
70 if ( content != null )
71 {
72 resource.setContentLength( content.length() );
73 resource.setLastModified( System.currentTimeMillis() );
74
75 try
76 {
77 inputData.setInputStream( new ByteArrayInputStream( content.getBytes( "UTF-8" ) ) );
78 }
79 catch ( UnsupportedEncodingException e )
80 {
81 throw new Error( "broken JVM", e );
82 }
83 }
84 else
85 {
86 throw new ResourceDoesNotExistException( "No content provided for " + resource.getName() );
87 }
88 }
89
90 @Override
91 public void fillOutputData( OutputData outputData )
92 throws TransferFailedException
93 {
94 outputData.setOutputStream( new ByteArrayOutputStream() );
95 }
96
97 @Override
98 protected void openConnectionInternal()
99 throws ConnectionException, AuthenticationException
100 {
101 }
102
103 public void clearExpectedContent()
104 {
105 expectedContent.clear();
106 }
107 }