View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.cling.invoker.mvnenc.goals;
20  
21  import javax.inject.Inject;
22  import javax.inject.Named;
23  import javax.inject.Singleton;
24  
25  import org.apache.maven.api.services.MessageBuilderFactory;
26  import org.apache.maven.cling.invoker.mvnenc.EncryptContext;
27  import org.codehaus.plexus.components.secdispatcher.SecDispatcher;
28  
29  import static org.apache.maven.cling.invoker.mvnenc.EncryptInvoker.BAD_OPERATION;
30  import static org.apache.maven.cling.invoker.mvnenc.EncryptInvoker.OK;
31  
32  /**
33   * The "decrypt" goal.
34   */
35  @Singleton
36  @Named("decrypt")
37  public class Decrypt extends ConfiguredGoalSupport {
38      @Inject
39      public Decrypt(MessageBuilderFactory messageBuilderFactory, SecDispatcher secDispatcher) {
40          super(messageBuilderFactory, secDispatcher);
41      }
42  
43      @Override
44      protected int doExecute(EncryptContext context) throws Exception {
45          String encrypted = context.reader.readLine("Enter the password to decrypt: ");
46          if (secDispatcher.isAnyEncryptedString(encrypted)) {
47              context.terminal.writer().println(secDispatcher.decrypt(encrypted));
48              return OK;
49          } else {
50              context.terminal.writer().println(messageBuilderFactory.builder().error("Malformed encrypted string"));
51              return BAD_OPERATION;
52          }
53      }
54  }