001package org.apache.maven.repository.legacy; 002 003/* 004 * Licensed to the Apache Software Foundation (ASF) under one 005 * or more contributor license agreements. See the NOTICE file 006 * distributed with this work for additional information 007 * regarding copyright ownership. The ASF licenses this file 008 * to you under the Apache License, Version 2.0 (the 009 * "License"); you may not use this file except in compliance 010 * with the License. You may obtain a copy of the License at 011 * 012 * http://www.apache.org/licenses/LICENSE-2.0 013 * 014 * Unless required by applicable law or agreed to in writing, 015 * software distributed under the License is distributed on an 016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 017 * KIND, either express or implied. See the License for the 018 * specific language governing permissions and limitations 019 * under the License. 020 */ 021 022import java.io.ByteArrayInputStream; 023import java.io.ByteArrayOutputStream; 024import java.io.UnsupportedEncodingException; 025import java.util.HashMap; 026import java.util.Map; 027 028import org.apache.maven.wagon.ConnectionException; 029import org.apache.maven.wagon.InputData; 030import org.apache.maven.wagon.OutputData; 031import org.apache.maven.wagon.ResourceDoesNotExistException; 032import org.apache.maven.wagon.StreamWagon; 033import org.apache.maven.wagon.TransferFailedException; 034import org.apache.maven.wagon.Wagon; 035import org.apache.maven.wagon.authentication.AuthenticationException; 036import org.apache.maven.wagon.authorization.AuthorizationException; 037import org.apache.maven.wagon.resource.Resource; 038import org.codehaus.plexus.component.annotations.Component; 039 040@Component(role=Wagon.class,hint="string") 041public class StringWagon 042 extends StreamWagon 043{ 044 private Map<String, String> expectedContent = new HashMap<String, String>(); 045 046 public void addExpectedContent( String resourceName, String expectedContent ) 047 { 048 this.expectedContent.put( resourceName, expectedContent ); 049 } 050 051 public String[] getSupportedProtocols() 052 { 053 return new String[] { "string" }; 054 } 055 056 @Override 057 public void closeConnection() 058 throws ConnectionException 059 { 060 } 061 062 @Override 063 public void fillInputData( InputData inputData ) 064 throws TransferFailedException, ResourceDoesNotExistException, AuthorizationException 065 { 066 Resource resource = inputData.getResource(); 067 068 String content = expectedContent.get( resource.getName() ); 069 070 if ( content != null ) 071 { 072 resource.setContentLength( content.length() ); 073 resource.setLastModified( System.currentTimeMillis() ); 074 075 try 076 { 077 inputData.setInputStream( new ByteArrayInputStream( content.getBytes( "UTF-8" ) ) ); 078 } 079 catch ( UnsupportedEncodingException e ) 080 { 081 throw new Error( "broken JVM", e ); 082 } 083 } 084 else 085 { 086 throw new ResourceDoesNotExistException( "No content provided for " + resource.getName() ); 087 } 088 } 089 090 @Override 091 public void fillOutputData( OutputData outputData ) 092 throws TransferFailedException 093 { 094 outputData.setOutputStream( new ByteArrayOutputStream() ); 095 } 096 097 @Override 098 protected void openConnectionInternal() 099 throws ConnectionException, AuthenticationException 100 { 101 } 102 103 public void clearExpectedContent() 104 { 105 expectedContent.clear(); 106 } 107}